+
+
总充值
+{n(summary.totalRecharge, 2)}
+
总消费
-{n(summary.totalConsume, 2)}
+
总回退
+{n(summary.totalRefund, 2)}
+
交易 / 生成
{n(summary.transactionCount)} / {n(summary.generationCount)}
- );
+
+ 图片生成:{n(summary.imageGenerationCount)} 条 / {n(summary.imageConsume, 2)} 积分
+ 视频生成:{n(summary.videoGenerationCount)} 条 / {n(summary.videoConsume, 2)} 积分
+ 提词消费:{n(summary.textConsume, 2)} 积分
+ 视频分析:{n(summary.analysisConsume, 2)} 积分
+
+
+ 输入附件(图/视/音):{n(summary.attachmentImageCount)} / {n(summary.attachmentVideoCount)} / {n(summary.attachmentAudioCount)}
+ 实际产出(图/视):{n(summary.generatedImageCount)} / {n(summary.generatedVideoCount)}
+ 已核算成本:¥{n(summary.providerCostCalculatedTotal, 8)}
+ 估算成本:{n(summary.providerCostEstimatedCount)} 条 / ¥{n(summary.providerCostEstimatedTotal, 8)}
+
+
+ 总 Token:{n(summary.totalTokens)}
+ 待核算:{n(summary.providerCostPendingCount)} 条
+ 异常成本:{n(summary.providerCostAbnormalCount)} 条
+ 成本参考合计:¥{n(summary.providerCostCombinedTotal, 8)}
+
+
+
+
+
+
+ } onClick={load}>刷新} loading={exporting} onClick={exportExcel}>下载 Excel
+
+ {exportProgress && {exportProgress}
}
+ { setPage(p); setPageSize(ps); }, showTotal: t => `共 ${t} 条` }} />
+
+
+ setDetail(null)}>
+ {detail && <>
+
+ {detail.id}
+ {detail.username || '-'} / {detail.phone || '-'}
+ {formatDate(detail.createdAt || '')}
+ {n(detail.amount, 2)}
+ {n(detail.balanceAfter, 2)}
+ {detail.engineProvider || '-'} / {detail.engineModelName || detail.engineName || '-'}
+ {detail.pricingVersionCode || '-'}
+ {detail.pricingBillingModeLabel || '-'}
+ {detail.pricingCalculatorVersion || '-'}
+ {detail.pricingUsageSource || '-'}
+ {formatDate(detail.pricingReferenceAt || '')}
+ {formatDate(detail.pricingEffectiveFrom || '')} ~ {detail.pricingEffectiveTo ? formatDate(detail.pricingEffectiveTo) : '长期'}
+ {detail.providerCostCurrency || 'CNY'} {n(detail.providerCostAmount, 8)}
+ {detail.providerCostStatusLabel || '-'}
+ {formatDate(detail.providerCostFinalizedAt || '')}
+ {detail.providerUsagePrimary ? '是' : '否'}
+ 图 {detail.attachmentImageCount} / 视 {detail.attachmentVideoCount} / 音 {detail.attachmentAudioCount}
+ 请求 {detail.requestedOutputCount} / 图 {detail.generatedImageCount} / 视 {detail.generatedVideoCount}
+ 入 {detail.inputTokens} / 出 {detail.outputTokens} / 总 {detail.totalTokens}
+ {detail.ownerType || '-'} / {detail.ownerId || '-'}
+
+ 计价快照
+ 标准化用量
+ 附件快照
+ 生成快照
+ >}
+
+ ;
};
export default AdminCreditRecords;
diff --git a/video-gen-admin/src/pages/AdminModelPricingRules.tsx b/video-gen-admin/src/pages/AdminModelPricingRules.tsx
new file mode 100644
index 00000000..9daee995
--- /dev/null
+++ b/video-gen-admin/src/pages/AdminModelPricingRules.tsx
@@ -0,0 +1,146 @@
+import React, { useEffect, useState } from 'react';
+import { Button, Card, Drawer, Input, message, Modal, Popconfirm, Select, Space, Table, Tag, Typography } from 'antd';
+import { CopyOutlined, EyeOutlined, PlusOutlined, ReloadOutlined } from '@ant-design/icons';
+import dayjs from 'dayjs';
+import {
+ createModelPricingRule,
+ disableModelPricingRule,
+ getModelPricingRules,
+ publishModelPricingRule,
+ updateModelPricingRule,
+} from '../api';
+import type { ModelPricingRule, ModelPricingRulePayload } from '../types';
+import PricingRuleForm from '../components/modelPricing/PricingRuleForm';
+import PricingRulePreview from '../components/modelPricing/PricingRulePreview';
+import { formatDate } from '../utils/formatDate';
+
+const statusMap: Record = {
+ draft: { color: 'default', text: '草稿' },
+ published: { color: 'green', text: '已发布' },
+ disabled: { color: 'red', text: '已停用' },
+};
+
+const modeMap: Record = {
+ text_token_tiered: '文本分档 Token',
+ image_per_output: '按成功输出图片',
+ image_input_output_tiered: '输入图 + 输出像素',
+ video_token_rate: '视频 Token',
+};
+
+const AdminModelPricingRules: React.FC = () => {
+ const [rows, setRows] = useState([]);
+ const [loading, setLoading] = useState(false);
+ const [saving, setSaving] = useState(false);
+ const [total, setTotal] = useState(0);
+ const [page, setPage] = useState(1);
+ const [pageSize, setPageSize] = useState(50);
+ const [modelName, setModelName] = useState('');
+ const [status, setStatus] = useState('');
+ const [category, setCategory] = useState('');
+ const [editing, setEditing] = useState(null);
+ const [formOpen, setFormOpen] = useState(false);
+ const [detail, setDetail] = useState(null);
+
+ const load = async () => {
+ setLoading(true);
+ try {
+ const res = await getModelPricingRules({
+ page,
+ pageSize,
+ modelName: modelName || undefined,
+ publishStatus: status || undefined,
+ modelCategory: category || undefined,
+ });
+ setRows(res.items || []);
+ setTotal(res.total || 0);
+ } catch (e: any) {
+ message.error(e?.message || '加载模型计价规则失败');
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => { load(); }, [page, pageSize, modelName, status, category]);
+
+ const submit = async (payload: ModelPricingRulePayload) => {
+ setSaving(true);
+ try {
+ if (editing?.id && editing.publishStatus === 'draft') {
+ await updateModelPricingRule(editing.id, payload);
+ } else {
+ await createModelPricingRule(payload);
+ }
+ message.success('价格草稿已保存');
+ setFormOpen(false);
+ setEditing(null);
+ await load();
+ } catch (e: any) {
+ message.error(e?.message || '保存失败');
+ } finally {
+ setSaving(false);
+ }
+ };
+
+ const cloneRule = (rule: ModelPricingRule) => {
+ setEditing({
+ ...rule,
+ id: '',
+ publishStatus: 'draft',
+ versionCode: `${rule.versionCode}_copy_${dayjs().format('YYYYMMDDHHmm')}`,
+ effectiveFrom: dayjs().add(1, 'minute').toISOString(),
+ effectiveTo: null,
+ referencedCount: 0,
+ });
+ setFormOpen(true);
+ };
+
+ const columns = [
+ { title: '模型', dataIndex: 'modelName', width: 280, fixed: 'left' as const, render: (v: string, r: ModelPricingRule) => {v}{r.provider} / {r.modelCategory}
},
+ { title: '价格版本', dataIndex: 'versionCode', width: 180 },
+ { title: '计价模式/计算器', key: 'calculator', width: 230, render: (_: any, r: ModelPricingRule) => {modeMap[r.billingMode] || r.billingMode}
{r.calculatorVersion}
},
+ { title: '生效时间', key: 'effective', width: 290, render: (_: any, r: ModelPricingRule) => {formatDate(r.effectiveFrom)}
至 {r.effectiveTo ? formatDate(r.effectiveTo) : '长期有效'}
},
+ { title: '状态', dataIndex: 'publishStatus', width: 100, render: (v: string) => {(statusMap[v] || {}).text || v} },
+ { title: '规则Hash/引用', key: 'hash', width: 190, render: (_: any, r: ModelPricingRule) => {r.ruleContentHash ? `${r.ruleContentHash.slice(0, 12)}…` : '-'}
{r.referencedCount || 0} 条引用
},
+ { title: '来源更新时间', dataIndex: 'sourceUpdatedAt', width: 170, render: (v: string) => v ? formatDate(v) : '-' },
+ { title: '操作', key: 'action', width: 310, fixed: 'right' as const, render: (_: any, r: ModelPricingRule) =>
+ } onClick={() => setDetail(r)}>详情/试算
+ {r.publishStatus === 'draft' && }
+ } onClick={() => cloneRule(r)}>克隆新版本
+ {r.publishStatus === 'draft' && { await publishModelPricingRule(r.id); message.success('已发布'); load(); }}>}
+ {r.publishStatus === 'published' && { await disableModelPricingRule(r.id); message.success('已停用'); load(); }}>}
+ },
+ ];
+
+ return
+
+
+
+ { setPage(1); setModelName(e.target.value); }} style={{ width: 260 }} />
+ { setPage(1); setCategory(v); }} style={{ width: 130 }} options={[{ value: '', label: '全部类型' }, { value: 'text', label: '文本' }, { value: 'image', label: '图片' }, { value: 'video', label: '视频' }]} />
+ { setPage(1); setStatus(v); }} style={{ width: 130 }} options={[{ value: '', label: '全部状态' }, { value: 'draft', label: '草稿' }, { value: 'published', label: '已发布' }, { value: 'disabled', label: '已停用' }]} />
+
+
+ } onClick={load}>刷新
+ } onClick={() => { setEditing(null); setFormOpen(true); }}>新增价格版本
+
+
+ { setPage(p); setPageSize(ps); } }} />
+
+
+ { setFormOpen(false); setEditing(null); }}>
+ { setFormOpen(false); setEditing(null); }} />
+
+
+ setDetail(null)}>
+ {detail && <>
+ {detail.provider}{detail.modelCategory}{modeMap[detail.billingMode] || detail.billingMode}{(statusMap[detail.publishStatus] || {}).text}
+ 生效:{formatDate(detail.effectiveFrom)} ~ {detail.effectiveTo ? formatDate(detail.effectiveTo) : '长期有效'}
计算器:{detail.calculatorVersion}
规则 Hash:{detail.ruleContentHash || '-'}
+ 来源:{detail.sourceUrl || '-'}
官方更新时间:{detail.sourceUpdatedAt ? formatDate(detail.sourceUpdatedAt) : '-'}
+ {JSON.stringify(detail.ruleJson, null, 2)}
+
+ >}
+
+ ;
+};
+
+export default AdminModelPricingRules;
diff --git a/video-gen-admin/src/types/index.ts b/video-gen-admin/src/types/index.ts
index ca5682b4..6c7aab13 100644
--- a/video-gen-admin/src/types/index.ts
+++ b/video-gen-admin/src/types/index.ts
@@ -796,6 +796,20 @@ export interface AdminCreditRecordSummary {
totalTokens: number;
inputTokens: number;
outputTokens: number;
+ attachmentImageCount: number;
+ attachmentVideoCount: number;
+ attachmentAudioCount: number;
+ attachmentTotalCount: number;
+ generatedImageCount: number;
+ generatedVideoCount: number;
+ generatedTotalCount: number;
+ providerCostCalculatedTotal: string;
+ providerCostEstimatedTotal: string;
+ providerCostCombinedTotal: string;
+ providerCostTotal: string;
+ providerCostPendingCount: number;
+ providerCostEstimatedCount: number;
+ providerCostAbnormalCount: number;
}
export interface AdminCreditRecord {
@@ -848,6 +862,38 @@ export interface AdminCreditRecord {
engineName?: string;
engineProvider?: string;
engineModelName?: string;
+ pricingRuleId?: string;
+ pricingVersionCode?: string;
+ pricingBillingMode?: string;
+ pricingBillingModeLabel?: string;
+ pricingCalculatorVersion?: ModelPricingCalculatorVersion;
+ pricingUsageSource?: string;
+ pricingReferenceAt?: string;
+ pricingEffectiveFrom?: string;
+ pricingEffectiveTo?: string;
+ pricingSnapshotHash?: string;
+ providerCostCurrency?: string;
+ providerCostAmount?: string;
+ providerCostStatus?: string;
+ providerCostStatusLabel?: string;
+ providerCostCalculatedAt?: string;
+ providerCostFinalizedAt?: string;
+ providerCostIsEstimated?: boolean;
+ providerUsagePrimary?: boolean;
+ attachmentImageCount: number;
+ attachmentVideoCount: number;
+ attachmentAudioCount: number;
+ attachmentTotalCount: number;
+ attachmentVideoDurationSeconds?: string;
+ attachmentAudioDurationSeconds?: string;
+ requestedOutputCount: number;
+ generatedImageCount: number;
+ generatedVideoCount: number;
+ generatedTotalCount: number;
+ pricingSnapshotJson?: Record | null;
+ usageSnapshotJson?: Record | null;
+ attachmentSnapshotJson?: Record | null;
+ generationSnapshotJson?: Record | null;
createdAt?: string;
}
@@ -873,10 +919,83 @@ export interface AdminCreditRecordQueryParams {
sourceModule?: string;
sourceStepCode?: string;
billingScene?: string;
+ engineProvider?: string;
+ engineModelName?: string;
+ pricingVersionCode?: string;
+ providerCostStatus?: string;
+ providerCostIsEstimated?: boolean;
+ hasAttachment?: boolean;
startDate?: string;
endDate?: string;
}
+export type ModelPricingCategory = 'text' | 'image' | 'video';
+export type ModelPricingBillingMode =
+ | 'text_token_tiered'
+ | 'image_per_output'
+ | 'image_input_output_tiered'
+ | 'video_token_rate';
+export type ModelPricingRuleStatus = 'draft' | 'published' | 'disabled';
+export type ModelPricingCalculatorVersion =
+ | 'text_token_tiered_v1'
+ | 'image_per_output_v1'
+ | 'image_input_output_tiered_v1'
+ | 'video_pixel_token_v1';
+
+export interface ModelPricingRule {
+ id: string;
+ provider: string;
+ modelName: string;
+ modelCategory: ModelPricingCategory;
+ billingMode: ModelPricingBillingMode;
+ calculatorVersion: ModelPricingCalculatorVersion;
+ versionCode: string;
+ effectiveFrom: string;
+ effectiveTo?: string | null;
+ publishStatus: ModelPricingRuleStatus;
+ currency: string;
+ ruleSchemaVersion: number;
+ ruleContentHash: string;
+ ruleJson: Record;
+ sourceUrl?: string | null;
+ sourceUpdatedAt?: string | null;
+ remark?: string | null;
+ referencedCount: number;
+ createdAt?: string;
+ updatedAt?: string;
+}
+
+export interface ModelPricingRulePayload {
+ provider: string;
+ model_name: string;
+ model_category: ModelPricingCategory;
+ billing_mode: ModelPricingBillingMode;
+ calculator_version: ModelPricingCalculatorVersion;
+ version_code: string;
+ effective_from: string;
+ effective_to?: string | null;
+ currency: string;
+ rule_schema_version: number;
+ rule_json: Record;
+ source_url?: string | null;
+ source_updated_at?: string | null;
+ remark?: string | null;
+}
+
+export interface ModelPricingRuleListResponse {
+ items: ModelPricingRule[];
+ total: number;
+}
+
+export interface ModelPricingPreviewResponse {
+ amount: string;
+ currency: string;
+ isEstimated: boolean;
+ selectedRate?: string | null;
+ usageSource: string;
+ breakdown: Record;
+}
+
// ── 首页素材行业装修 ──────────────────────────────────────
diff --git a/video-gen-api/alembic/versions/1c93b40133f0_add_model_pricing_rules_and_credit_.py b/video-gen-api/alembic/versions/1c93b40133f0_add_model_pricing_rules_and_credit_.py
new file mode 100644
index 00000000..b8274522
--- /dev/null
+++ b/video-gen-api/alembic/versions/1c93b40133f0_add_model_pricing_rules_and_credit_.py
@@ -0,0 +1,582 @@
+"""add model pricing rules and credit pricing snapshots
+
+Revision ID: 1c93b40133f0
+Revises: 2026070902
+Create Date: 2026-07-10 15:10:44.983521
+"""
+
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import postgresql
+
+
+# revision identifiers, used by Alembic.
+revision: str = "1c93b40133f0"
+down_revision: Union[str, None] = "2026070902"
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+FK_CREDIT_RECORD_PRICING_RULE = (
+ "fk_credit_records_pricing_rule_id_model_pricing_rules"
+)
+
+
+def _json_type() -> sa.types.TypeEngine:
+ """Use JSONB on PostgreSQL and JSON on other supported development DBs."""
+ return sa.JSON().with_variant(
+ postgresql.JSONB(astext_type=sa.Text()),
+ "postgresql",
+ )
+
+
+def upgrade() -> None:
+ # 1. Versioned model pricing rules.
+ op.create_table(
+ "model_pricing_rules",
+ sa.Column("id", sa.String(length=32), nullable=False),
+ sa.Column("provider", sa.String(length=32), nullable=False),
+ sa.Column("model_name", sa.String(length=128), nullable=False),
+ sa.Column("model_category", sa.String(length=16), nullable=False),
+ sa.Column("billing_mode", sa.String(length=48), nullable=False),
+ sa.Column("calculator_version", sa.String(length=64), nullable=False),
+ sa.Column("version_code", sa.String(length=64), nullable=False),
+ sa.Column("effective_from", sa.DateTime(timezone=True), nullable=False),
+ sa.Column("effective_to", sa.DateTime(timezone=True), nullable=True),
+ sa.Column("publish_status", sa.String(length=16), nullable=False),
+ sa.Column("currency", sa.String(length=8), nullable=False),
+ sa.Column("rule_schema_version", sa.Integer(), nullable=False),
+ sa.Column("rule_json", _json_type(), nullable=False),
+ sa.Column("rule_content_hash", sa.String(length=64), nullable=False),
+ sa.Column("source_url", sa.Text(), nullable=True),
+ sa.Column("source_updated_at", sa.DateTime(timezone=True), nullable=True),
+ sa.Column("remark", sa.Text(), nullable=True),
+ sa.Column("created_by", sa.String(length=32), nullable=True),
+ sa.Column("updated_by", sa.String(length=32), nullable=True),
+ sa.Column(
+ "created_at",
+ sa.DateTime(timezone=True),
+ server_default=sa.text("now()"),
+ nullable=False,
+ ),
+ sa.Column(
+ "updated_at",
+ sa.DateTime(timezone=True),
+ server_default=sa.text("now()"),
+ nullable=False,
+ ),
+ # A disabled future rule is represented by an empty interval where
+ # effective_to == effective_from, so equality must be allowed.
+ sa.CheckConstraint(
+ "effective_to IS NULL OR effective_to >= effective_from",
+ name="ck_model_pricing_rules_effective_range",
+ ),
+ sa.PrimaryKeyConstraint("id"),
+ )
+
+ op.create_index(
+ "uq_model_pricing_rules_provider_model_version",
+ "model_pricing_rules",
+ ["provider", "model_name", "version_code"],
+ unique=True,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_resolve",
+ "model_pricing_rules",
+ [
+ "provider",
+ "model_name",
+ "publish_status",
+ "effective_from",
+ "effective_to",
+ ],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_category_status",
+ "model_pricing_rules",
+ ["model_category", "publish_status"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_provider",
+ "model_pricing_rules",
+ ["provider"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_model_name",
+ "model_pricing_rules",
+ ["model_name"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_model_category",
+ "model_pricing_rules",
+ ["model_category"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_billing_mode",
+ "model_pricing_rules",
+ ["billing_mode"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_calculator_version",
+ "model_pricing_rules",
+ ["calculator_version"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_effective_from",
+ "model_pricing_rules",
+ ["effective_from"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_effective_to",
+ "model_pricing_rules",
+ ["effective_to"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_publish_status",
+ "model_pricing_rules",
+ ["publish_status"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_model_pricing_rules_rule_content_hash",
+ "model_pricing_rules",
+ ["rule_content_hash"],
+ unique=False,
+ )
+
+ # 2. Bind provider callbacks to the exact billing attempt.
+ op.add_column(
+ "chat_generation_tasks",
+ sa.Column("current_billing_attempt_no", sa.Integer(), nullable=True),
+ )
+ op.create_index(
+ "ix_chat_generation_tasks_current_billing_attempt_no",
+ "chat_generation_tasks",
+ ["current_billing_attempt_no"],
+ unique=False,
+ )
+
+ # 3. Immutable pricing, usage, attachment, and output snapshots.
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_rule_id", sa.String(length=32), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_version_code", sa.String(length=64), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_billing_mode", sa.String(length=48), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "pricing_calculator_version",
+ sa.String(length=64),
+ nullable=True,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_usage_source", sa.String(length=32), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_reference_at", sa.DateTime(timezone=True), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_effective_from", sa.DateTime(timezone=True), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_effective_to", sa.DateTime(timezone=True), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_snapshot_schema_version", sa.Integer(), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_snapshot_hash", sa.String(length=64), nullable=True),
+ )
+
+ op.add_column(
+ "credit_records",
+ sa.Column("provider_cost_currency", sa.String(length=8), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "provider_cost_amount",
+ sa.Numeric(precision=20, scale=8),
+ nullable=True,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("provider_cost_status", sa.String(length=32), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "provider_cost_calculated_at",
+ sa.DateTime(timezone=True),
+ nullable=True,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "provider_cost_finalized_at",
+ sa.DateTime(timezone=True),
+ nullable=True,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "provider_usage_primary",
+ sa.Boolean(),
+ server_default=sa.text("true"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "provider_cost_is_estimated",
+ sa.Boolean(),
+ server_default=sa.text("false"),
+ nullable=False,
+ ),
+ )
+
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "attachment_image_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "attachment_video_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "attachment_audio_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "attachment_total_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "attachment_video_duration_seconds",
+ sa.Numeric(precision=20, scale=6),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "attachment_audio_duration_seconds",
+ sa.Numeric(precision=20, scale=6),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "requested_output_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "generated_image_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "generated_video_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column(
+ "generated_total_count",
+ sa.Integer(),
+ server_default=sa.text("0"),
+ nullable=False,
+ ),
+ )
+
+ op.add_column(
+ "credit_records",
+ sa.Column("pricing_snapshot_json", _json_type(), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("usage_snapshot_json", _json_type(), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("attachment_snapshot_json", _json_type(), nullable=True),
+ )
+ op.add_column(
+ "credit_records",
+ sa.Column("generation_snapshot_json", _json_type(), nullable=True),
+ )
+
+ op.create_index(
+ "ix_credit_records_pricing_rule_id",
+ "credit_records",
+ ["pricing_rule_id"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_pricing_version_code",
+ "credit_records",
+ ["pricing_version_code"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_pricing_usage_source",
+ "credit_records",
+ ["pricing_usage_source"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_pricing_reference_at",
+ "credit_records",
+ ["pricing_reference_at"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_provider_cost_status",
+ "credit_records",
+ ["provider_cost_status"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_pricing_status_time",
+ "credit_records",
+ ["provider_cost_status", "created_at"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_pricing_model_time",
+ "credit_records",
+ ["engine_provider", "engine_model_name", "pricing_reference_at"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_credit_records_pricing_version",
+ "credit_records",
+ ["pricing_version_code", "pricing_rule_id"],
+ unique=False,
+ )
+ op.create_foreign_key(
+ FK_CREDIT_RECORD_PRICING_RULE,
+ "credit_records",
+ "model_pricing_rules",
+ ["pricing_rule_id"],
+ ["id"],
+ ondelete="RESTRICT",
+ )
+
+ # 4. Lock the engine and billing attempt for legacy project generations.
+ op.add_column(
+ "generation_records",
+ sa.Column("engine_id", sa.String(length=32), nullable=True),
+ )
+ op.add_column(
+ "generation_records",
+ sa.Column("engine_snapshot_json", sa.Text(), nullable=True),
+ )
+ op.add_column(
+ "generation_records",
+ sa.Column("provider_response_json", sa.Text(), nullable=True),
+ )
+ op.add_column(
+ "generation_records",
+ sa.Column("current_billing_attempt_no", sa.Integer(), nullable=True),
+ )
+ op.create_index(
+ "ix_generation_records_engine_id",
+ "generation_records",
+ ["engine_id"],
+ unique=False,
+ )
+ op.create_index(
+ "ix_generation_records_current_billing_attempt_no",
+ "generation_records",
+ ["current_billing_attempt_no"],
+ unique=False,
+ )
+
+
+def downgrade() -> None:
+ # Reverse legacy generation record extensions.
+ op.drop_index(
+ "ix_generation_records_current_billing_attempt_no",
+ table_name="generation_records",
+ )
+ op.drop_index(
+ "ix_generation_records_engine_id",
+ table_name="generation_records",
+ )
+ op.drop_column("generation_records", "current_billing_attempt_no")
+ op.drop_column("generation_records", "provider_response_json")
+ op.drop_column("generation_records", "engine_snapshot_json")
+ op.drop_column("generation_records", "engine_id")
+
+ # Reverse credit pricing snapshots before dropping the referenced rule table.
+ op.drop_constraint(
+ FK_CREDIT_RECORD_PRICING_RULE,
+ "credit_records",
+ type_="foreignkey",
+ )
+ op.drop_index("ix_credit_records_pricing_version", table_name="credit_records")
+ op.drop_index("ix_credit_records_pricing_model_time", table_name="credit_records")
+ op.drop_index("ix_credit_records_pricing_status_time", table_name="credit_records")
+ op.drop_index("ix_credit_records_provider_cost_status", table_name="credit_records")
+ op.drop_index("ix_credit_records_pricing_reference_at", table_name="credit_records")
+ op.drop_index("ix_credit_records_pricing_usage_source", table_name="credit_records")
+ op.drop_index("ix_credit_records_pricing_version_code", table_name="credit_records")
+ op.drop_index("ix_credit_records_pricing_rule_id", table_name="credit_records")
+
+ op.drop_column("credit_records", "generation_snapshot_json")
+ op.drop_column("credit_records", "attachment_snapshot_json")
+ op.drop_column("credit_records", "usage_snapshot_json")
+ op.drop_column("credit_records", "pricing_snapshot_json")
+ op.drop_column("credit_records", "generated_total_count")
+ op.drop_column("credit_records", "generated_video_count")
+ op.drop_column("credit_records", "generated_image_count")
+ op.drop_column("credit_records", "requested_output_count")
+ op.drop_column("credit_records", "attachment_audio_duration_seconds")
+ op.drop_column("credit_records", "attachment_video_duration_seconds")
+ op.drop_column("credit_records", "attachment_total_count")
+ op.drop_column("credit_records", "attachment_audio_count")
+ op.drop_column("credit_records", "attachment_video_count")
+ op.drop_column("credit_records", "attachment_image_count")
+ op.drop_column("credit_records", "provider_cost_is_estimated")
+ op.drop_column("credit_records", "provider_usage_primary")
+ op.drop_column("credit_records", "provider_cost_finalized_at")
+ op.drop_column("credit_records", "provider_cost_calculated_at")
+ op.drop_column("credit_records", "provider_cost_status")
+ op.drop_column("credit_records", "provider_cost_amount")
+ op.drop_column("credit_records", "provider_cost_currency")
+ op.drop_column("credit_records", "pricing_snapshot_hash")
+ op.drop_column("credit_records", "pricing_snapshot_schema_version")
+ op.drop_column("credit_records", "pricing_effective_to")
+ op.drop_column("credit_records", "pricing_effective_from")
+ op.drop_column("credit_records", "pricing_reference_at")
+ op.drop_column("credit_records", "pricing_usage_source")
+ op.drop_column("credit_records", "pricing_calculator_version")
+ op.drop_column("credit_records", "pricing_billing_mode")
+ op.drop_column("credit_records", "pricing_version_code")
+ op.drop_column("credit_records", "pricing_rule_id")
+
+ # Reverse exact billing-attempt binding.
+ op.drop_index(
+ "ix_chat_generation_tasks_current_billing_attempt_no",
+ table_name="chat_generation_tasks",
+ )
+ op.drop_column("chat_generation_tasks", "current_billing_attempt_no")
+
+ # Reverse pricing-rule storage.
+ op.drop_index(
+ "ix_model_pricing_rules_rule_content_hash",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_publish_status",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_effective_to",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_effective_from",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_calculator_version",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_billing_mode",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_model_category",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_model_name",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_provider",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_category_status",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "ix_model_pricing_rules_resolve",
+ table_name="model_pricing_rules",
+ )
+ op.drop_index(
+ "uq_model_pricing_rules_provider_model_version",
+ table_name="model_pricing_rules",
+ )
+ op.drop_table("model_pricing_rules")
\ No newline at end of file
diff --git a/video-gen-api/app/api/admin/__init__.py b/video-gen-api/app/api/admin/__init__.py
index 359841ab..2b311187 100644
--- a/video-gen-api/app/api/admin/__init__.py
+++ b/video-gen-api/app/api/admin/__init__.py
@@ -8,6 +8,7 @@ from app.api.admin.private_portrait import router as private_portrait_router
from app.api.admin.recharge_package import router as recharge_package_router
from app.api.admin.menu_config import router as menu_config_router
from app.api.admin.upload import router as admin_upload_router
+from app.api.admin.model_pricing import router as model_pricing_router
router = APIRouter()
router.include_router(video_prompt_schema_config_router)
@@ -18,3 +19,4 @@ router.include_router(private_portrait_router)
router.include_router(recharge_package_router)
router.include_router(menu_config_router)
router.include_router(admin_upload_router)
+router.include_router(model_pricing_router)
diff --git a/video-gen-api/app/api/admin/model_pricing.py b/video-gen-api/app/api/admin/model_pricing.py
new file mode 100644
index 00000000..5bbb1afe
--- /dev/null
+++ b/video-gen-api/app/api/admin/model_pricing.py
@@ -0,0 +1,238 @@
+from __future__ import annotations
+
+import json
+
+from fastapi import APIRouter, Depends, HTTPException, Query
+from sqlalchemy.exc import IntegrityError
+from sqlalchemy.ext.asyncio import AsyncSession
+
+from app.dependencies import get_admin_user, get_db
+from app.models.user import User
+from app.schemas.model_pricing import (
+ ModelPricingPreviewOut,
+ ModelPricingPreviewRequest,
+ ModelPricingRuleCreate,
+ ModelPricingRuleListOut,
+ ModelPricingRuleOut,
+ ModelPricingRuleUpdate,
+)
+from app.services.model_pricing.calculator import PricingCalculationError, calculate_pricing
+from app.services.model_pricing.rule_service import (
+ PricingRuleError,
+ create_rule,
+ disable_rule,
+ get_rule_snapshot,
+ list_rules,
+ publish_rule,
+ update_draft_rule,
+)
+from app.services.operation_log import log_operation
+from app.services.operation_log_service import log_model_pricing_event
+
+
+router = APIRouter(prefix="/admin/model-pricing", tags=["admin-model-pricing"])
+
+
+def _http_error(exc: Exception) -> HTTPException:
+ return HTTPException(status_code=400, detail=str(exc))
+
+
+@router.get("/rules", response_model=ModelPricingRuleListOut)
+async def admin_list_model_pricing_rules(
+ page: int = Query(1, ge=1),
+ page_size: int = Query(50, ge=1, le=500),
+ provider: str | None = Query(None),
+ model_name: str | None = Query(None),
+ model_category: str | None = Query(None),
+ publish_status: str | None = Query(None),
+ admin: User = Depends(get_admin_user),
+ db: AsyncSession = Depends(get_db),
+):
+ return await list_rules(
+ db,
+ page=page,
+ page_size=page_size,
+ provider=provider,
+ model_name=model_name,
+ model_category=model_category,
+ publish_status=publish_status,
+ )
+
+
+@router.get("/rules/{rule_id}", response_model=ModelPricingRuleOut)
+async def admin_get_model_pricing_rule(
+ rule_id: str,
+ admin: User = Depends(get_admin_user),
+ db: AsyncSession = Depends(get_db),
+):
+ try:
+ snapshot = await get_rule_snapshot(db, rule_id)
+ return {**snapshot, "referenced_count": 0}
+ except PricingRuleError as exc:
+ raise HTTPException(status_code=404, detail=str(exc)) from exc
+
+
+@router.post("/rules", response_model=ModelPricingRuleOut)
+async def admin_create_model_pricing_rule(
+ req: ModelPricingRuleCreate,
+ admin: User = Depends(get_admin_user),
+ db: AsyncSession = Depends(get_db),
+):
+ admin_id = str(admin.id)
+ admin_username = str(admin.username or "")
+ try:
+ snapshot = await create_rule(db, payload=req.model_dump(), operator_id=admin_id)
+ await log_operation(
+ db,
+ admin_id,
+ admin_username,
+ f"创建模型计价草稿 {snapshot['model_name']}/{snapshot['version_code']}",
+ "POST",
+ "/admin/model-pricing/rules",
+ detail=json.dumps(snapshot, ensure_ascii=False, default=str),
+ )
+ await db.commit()
+ log_model_pricing_event(
+ event_type="pricing_rule_validate",
+ user_id=admin_id,
+ pricing_rule_id=snapshot["id"],
+ pricing_version=snapshot["version_code"],
+ provider=snapshot["provider"],
+ model_name=snapshot["model_name"],
+ billing_mode=snapshot["billing_mode"],
+ message="模型计价草稿创建成功",
+ )
+ return {**snapshot, "referenced_count": 0}
+ except IntegrityError as exc:
+ await db.rollback()
+ raise HTTPException(status_code=409, detail="模型计价版本或生效区间发生并发冲突") from exc
+ except PricingRuleError as exc:
+ await db.rollback()
+ raise _http_error(exc) from exc
+
+
+@router.put("/rules/{rule_id}", response_model=ModelPricingRuleOut)
+async def admin_update_model_pricing_rule(
+ rule_id: str,
+ req: ModelPricingRuleUpdate,
+ admin: User = Depends(get_admin_user),
+ db: AsyncSession = Depends(get_db),
+):
+ admin_id = str(admin.id)
+ admin_username = str(admin.username or "")
+ try:
+ snapshot = await update_draft_rule(
+ db,
+ rule_id=rule_id,
+ payload=req.model_dump(exclude_unset=True),
+ operator_id=admin_id,
+ )
+ await log_operation(
+ db,
+ admin_id,
+ admin_username,
+ f"更新模型计价草稿 {snapshot['model_name']}/{snapshot['version_code']}",
+ "PUT",
+ f"/admin/model-pricing/rules/{rule_id}",
+ detail=json.dumps(snapshot, ensure_ascii=False, default=str),
+ )
+ await db.commit()
+ return {**snapshot, "referenced_count": 0}
+ except IntegrityError as exc:
+ await db.rollback()
+ raise HTTPException(status_code=409, detail="模型计价版本或生效区间发生并发冲突") from exc
+ except PricingRuleError as exc:
+ await db.rollback()
+ raise _http_error(exc) from exc
+
+
+@router.post("/rules/{rule_id}/publish", response_model=ModelPricingRuleOut)
+async def admin_publish_model_pricing_rule(
+ rule_id: str,
+ admin: User = Depends(get_admin_user),
+ db: AsyncSession = Depends(get_db),
+):
+ admin_id = str(admin.id)
+ admin_username = str(admin.username or "")
+ try:
+ snapshot = await publish_rule(db, rule_id=rule_id, operator_id=admin_id)
+ await log_operation(
+ db,
+ admin_id,
+ admin_username,
+ f"发布模型计价版本 {snapshot['model_name']}/{snapshot['version_code']}",
+ "POST",
+ f"/admin/model-pricing/rules/{rule_id}/publish",
+ detail=json.dumps(snapshot, ensure_ascii=False, default=str),
+ )
+ await db.commit()
+ log_model_pricing_event(
+ event_type="pricing_rule_publish",
+ user_id=admin_id,
+ pricing_rule_id=snapshot["id"],
+ pricing_version=snapshot["version_code"],
+ provider=snapshot["provider"],
+ model_name=snapshot["model_name"],
+ billing_mode=snapshot["billing_mode"],
+ )
+ return {**snapshot, "referenced_count": 0}
+ except IntegrityError as exc:
+ await db.rollback()
+ raise HTTPException(status_code=409, detail="模型计价版本或生效区间发生并发冲突") from exc
+ except PricingRuleError as exc:
+ await db.rollback()
+ raise _http_error(exc) from exc
+
+
+@router.post("/rules/{rule_id}/disable", response_model=ModelPricingRuleOut)
+async def admin_disable_model_pricing_rule(
+ rule_id: str,
+ admin: User = Depends(get_admin_user),
+ db: AsyncSession = Depends(get_db),
+):
+ admin_id = str(admin.id)
+ admin_username = str(admin.username or "")
+ try:
+ snapshot = await disable_rule(db, rule_id=rule_id, operator_id=admin_id)
+ await log_operation(
+ db,
+ admin_id,
+ admin_username,
+ f"停用模型计价版本 {snapshot['model_name']}/{snapshot['version_code']}",
+ "POST",
+ f"/admin/model-pricing/rules/{rule_id}/disable",
+ detail=json.dumps(snapshot, ensure_ascii=False, default=str),
+ )
+ await db.commit()
+ return {**snapshot, "referenced_count": 0}
+ except IntegrityError as exc:
+ await db.rollback()
+ raise HTTPException(status_code=409, detail="模型计价版本或生效区间发生并发冲突") from exc
+ except PricingRuleError as exc:
+ await db.rollback()
+ raise _http_error(exc) from exc
+
+
+@router.post("/preview", response_model=ModelPricingPreviewOut)
+async def admin_preview_model_pricing(
+ req: ModelPricingPreviewRequest,
+ admin: User = Depends(get_admin_user),
+):
+ try:
+ result = calculate_pricing(
+ billing_mode=req.billing_mode,
+ calculator_version=req.calculator_version,
+ rule_json=req.rule_json,
+ usage=req.usage,
+ currency=req.currency,
+ )
+ return {
+ "amount": str(result.amount),
+ "currency": result.currency,
+ "is_estimated": result.is_estimated,
+ "selected_rate": str(result.selected_rate) if result.selected_rate is not None else None,
+ "usage_source": result.usage_source,
+ "breakdown": result.breakdown,
+ }
+ except PricingCalculationError as exc:
+ raise _http_error(exc) from exc
diff --git a/video-gen-api/app/api/v1/admin.py b/video-gen-api/app/api/v1/admin.py
index f37562c2..ff49c53d 100644
--- a/video-gen-api/app/api/v1/admin.py
+++ b/video-gen-api/app/api/v1/admin.py
@@ -37,6 +37,7 @@ from app.schemas.admin import (
ResetPasswordRequest,
UpdateFrontendUserKindRequest,
OperationLogOut,
+ AdminCreditRecordListOut,
)
from app.schemas.team import UpdateUserTeamRequest
from app.schemas.industry import IndustryConfigCreate, IndustryConfigOut
@@ -61,6 +62,7 @@ from app.services.generation_billing_service import (
get_next_credit_attempt_no,
)
from app.services.generation_refund_service import mark_generation_record_failed_and_refund_once
+from app.services.generation_ai_service import _build_image_snapshot, _build_video_snapshot
from app.utils.id_gen import generate_id
from app.schemas.generation import GenerationType, ASPECT_RATIOS, RESOLUTIONS
@@ -481,7 +483,7 @@ async def admin_change_password(
# ── Credit Records ───────────────────────────────────────
-@router.get("/credit-records")
+@router.get("/credit-records", response_model=AdminCreditRecordListOut)
async def list_credit_records(
page: int = Query(1, ge=1),
page_size: int = Query(20, ge=1, le=1000),
@@ -498,6 +500,12 @@ async def list_credit_records(
source_module: str | None = Query(None),
source_step_code: str | None = Query(None),
billing_scene: str | None = Query(None),
+ engine_provider: str | None = Query(None),
+ engine_model_name: str | None = Query(None),
+ pricing_version_code: str | None = Query(None),
+ provider_cost_status: str | None = Query(None),
+ provider_cost_is_estimated: bool | None = Query(None),
+ has_attachment: bool | None = Query(None),
start_date: str = Query(None),
end_date: str = Query(None),
admin: User = Depends(get_admin_user),
@@ -520,6 +528,12 @@ async def list_credit_records(
source_module=source_module,
source_step_code=source_step_code,
billing_scene=billing_scene,
+ engine_provider=engine_provider,
+ engine_model_name=engine_model_name,
+ pricing_version_code=pricing_version_code,
+ provider_cost_status=provider_cost_status,
+ provider_cost_is_estimated=provider_cost_is_estimated,
+ has_attachment=has_attachment,
start_date=start_date,
end_date=end_date,
)
@@ -2046,6 +2060,9 @@ async def admin_generate_video(
raise HTTPException(status_code=400, detail="不支持的分辨率")
duration = record.duration or 5
+ from app.services.video_gen import get_active_engine, submit_video_task
+ engine = await get_active_engine(db)
+ engine_snapshot = _build_video_snapshot(engine, aspect_ratio, resolution, duration)
media_billing = await charge_generation_media_by_params(
db,
user_id=record.user_id,
@@ -2053,14 +2070,21 @@ async def admin_generate_video(
gen_type="video",
duration=duration,
resolution=resolution,
+ aspect_ratio=aspect_ratio,
+ fps=24,
+ engine_id=engine.id,
project_name=project_name,
description_prefix="视频生成(管理后台)",
owner_type=OWNER_GENERATION_RECORD,
attempt_no=attempt_no,
+ media_references=record.media_references,
)
record.aspect_ratio = aspect_ratio
record.resolution = resolution
+ record.engine_id = engine.id
+ record.engine_snapshot_json = json.dumps(engine_snapshot, ensure_ascii=False, default=str)
+ record.current_billing_attempt_no = attempt_no
record.credits_cost = round(float(record.credits_cost or 0) + media_billing.total_charged, 2)
record.status = "generating"
record.error_message = None
@@ -2071,8 +2095,6 @@ async def admin_generate_video(
await db.flush()
try:
- from app.services.video_gen import get_active_engine, submit_video_task
- engine = await get_active_engine(db)
task_id = await submit_video_task(
db,
engine,
@@ -2095,19 +2117,31 @@ async def admin_generate_video(
post_image_size = body.get("image_size", "")
image_size = post_image_size or record.image_size or "2K"
+ from app.services.image_gen import get_active_image_engine
+ engine = await get_active_image_engine(db)
+ image_proportion = record.image_proportion or "1:1"
+ image_px = record.image_px or "2048x2048"
+ engine_snapshot = _build_image_snapshot(engine, image_size, image_proportion, image_px)
media_billing = await charge_generation_media_by_params(
db,
user_id=record.user_id,
record_id=record.id,
gen_type="image",
image_size=image_size,
+ image_px=image_px,
+ aspect_ratio=image_proportion,
+ engine_id=engine.id,
project_name=project_name,
description_prefix="图片生成(管理后台)",
owner_type=OWNER_GENERATION_RECORD,
attempt_no=attempt_no,
+ media_references=record.media_references,
)
record.image_size = image_size
+ record.engine_id = engine.id
+ record.engine_snapshot_json = json.dumps(engine_snapshot, ensure_ascii=False, default=str)
+ record.current_billing_attempt_no = attempt_no
record.credits_cost = round(float(record.credits_cost or 0) + media_billing.total_charged, 2)
record.status = "generating"
record.error_message = None
diff --git a/video-gen-api/app/api/v1/generation.py b/video-gen-api/app/api/v1/generation.py
index 92fa81a4..d8941468 100644
--- a/video-gen-api/app/api/v1/generation.py
+++ b/video-gen-api/app/api/v1/generation.py
@@ -49,6 +49,7 @@ from app.services.generation_billing_service import (
)
from app.services.generation_refund_service import mark_generation_record_failed_and_refund_once
from app.services.media_token_usage_snapshot_service import sync_generation_record_media_token_snapshot
+from app.services.generation_ai_service import _build_image_snapshot, _build_video_snapshot
from app.services.credit_record_meta_service import build_generation_record_prompt_meta
from app.services.video_cover_service import async_create_video_cover_for_local_video
from app.enums.audio_reference import (
@@ -431,6 +432,9 @@ async def generate(
raise HTTPException(status_code=400, detail="不支持的分辨率")
duration = record.duration or 5
+ from app.services.video_gen import get_active_engine, submit_video_task
+ engine = await get_active_engine(db)
+ engine_snapshot = _build_video_snapshot(engine, req.aspect_ratio, req.resolution, duration)
media_billing = await charge_generation_media_by_params(
db,
user_id=current_user.id,
@@ -438,14 +442,21 @@ async def generate(
gen_type="video",
duration=duration,
resolution=req.resolution,
+ aspect_ratio=req.aspect_ratio,
+ fps=24,
+ engine_id=engine.id,
project_name=project_name,
description_prefix=project_name+"-",
owner_type=OWNER_GENERATION_RECORD,
attempt_no=attempt_no,
+ media_references=record.media_references,
)
record.aspect_ratio = req.aspect_ratio
record.resolution = req.resolution
+ record.engine_id = engine.id
+ record.engine_snapshot_json = json.dumps(engine_snapshot, ensure_ascii=False, default=str)
+ record.current_billing_attempt_no = attempt_no
record.credits_cost = round(float(record.credits_cost or 0) + media_billing.total_charged, 2)
record.status = "generating"
record.error_message = None
@@ -456,11 +467,9 @@ async def generate(
await db.flush()
try:
- from app.services.video_gen import get_active_engine, submit_video_task
from app.services.error_codes import extract_error_message
from app.services.video_queue import task_queue
- engine = await get_active_engine(db)
task_id = await submit_video_task(
db,
engine,
@@ -480,19 +489,31 @@ async def generate(
elif record.gen_type == GenerationType.image:
image_size = req.image_size or record.image_size or "2K"
+ from app.services.image_gen import get_active_image_engine
+ engine = await get_active_image_engine(db)
+ image_proportion = record.image_proportion or "1:1"
+ image_px = record.image_px or "2048x2048"
+ engine_snapshot = _build_image_snapshot(engine, image_size, image_proportion, image_px)
media_billing = await charge_generation_media_by_params(
db,
user_id=current_user.id,
record_id=record.id,
gen_type="image",
image_size=image_size,
+ image_px=image_px,
+ aspect_ratio=image_proportion,
+ engine_id=engine.id,
project_name=project_name,
description_prefix=project_name+"-",
owner_type=OWNER_GENERATION_RECORD,
attempt_no=attempt_no,
+ media_references=record.media_references,
)
record.image_size = image_size
+ record.engine_id = engine.id
+ record.engine_snapshot_json = json.dumps(engine_snapshot, ensure_ascii=False, default=str)
+ record.current_billing_attempt_no = attempt_no
record.credits_cost = round(float(record.credits_cost or 0) + media_billing.total_charged, 2)
record.status = "generating"
record.error_message = None
@@ -549,14 +570,46 @@ async def retry_generation(
owner_type=OWNER_GENERATION_RECORD,
owner_id=record.id,
)
- media_billing = await charge_generation_media_for_record(
+ if record.gen_type == GenerationType.video:
+ from app.services.video_gen import get_active_engine
+ engine = await get_active_engine(db)
+ engine_snapshot = _build_video_snapshot(
+ engine,
+ record.aspect_ratio or "16:9",
+ record.resolution or "720p",
+ record.duration or 5,
+ )
+ else:
+ from app.services.image_gen import get_active_image_engine
+ engine = await get_active_image_engine(db)
+ engine_snapshot = _build_image_snapshot(
+ engine,
+ record.image_size or "2K",
+ record.image_proportion or "1:1",
+ record.image_px or "2048x2048",
+ )
+ media_billing = await charge_generation_media_by_params(
db,
- record=record,
+ user_id=record.user_id,
+ record_id=record.id,
+ gen_type=record.gen_type,
+ image_size=record.image_size,
+ image_px=record.image_px,
+ aspect_ratio=record.aspect_ratio or record.image_proportion,
+ duration=record.duration,
+ resolution=record.resolution,
+ fps=24 if record.gen_type == GenerationType.video else None,
+ engine_id=engine.id,
project_name=project_name,
- description_prefix="视频重试",
+ description_prefix="生成重试-",
+ owner_type=OWNER_GENERATION_RECORD,
attempt_no=attempt_no,
+ media_references=record.media_references,
)
+ record.engine_id = engine.id
+ record.engine_snapshot_json = json.dumps(engine_snapshot, ensure_ascii=False, default=str)
+ record.current_billing_attempt_no = attempt_no
record.status = "generating"
record.error_message = None
record.video_url = None
@@ -570,8 +623,7 @@ async def retry_generation(
try:
from app.services.video_queue import task_queue
if record.gen_type == GenerationType.video:
- from app.services.video_gen import get_active_engine, submit_video_task, extract_error_message
- engine = await get_active_engine(db)
+ from app.services.video_gen import submit_video_task, extract_error_message
task_id = await submit_video_task(
db,
engine,
diff --git a/video-gen-api/app/api/v1/generation_ai.py b/video-gen-api/app/api/v1/generation_ai.py
index 072848ee..5ecbbcd7 100644
--- a/video-gen-api/app/api/v1/generation_ai.py
+++ b/video-gen-api/app/api/v1/generation_ai.py
@@ -689,15 +689,20 @@ async def retry_task(
record_id=task.id,
gen_type=task.gen_type,
image_size=task.image_size,
+ image_px=task.image_px,
+ aspect_ratio=task.aspect_ratio or task.image_proportion,
duration=task.duration,
resolution=task.resolution,
+ fps=24 if task.gen_type == "video" else None,
engine_id=task.engine_id,
project_name="AI生成任务",
description_prefix="Chat任务重试",
owner_type=OWNER_CHAT_GENERATION_TASK,
attempt_no=attempt_no,
+ media_references=task.media_references,
)
+ task.current_billing_attempt_no = attempt_no
task.status = "generating"
task.pipeline_stage = "queued"
task.error_message = None
diff --git a/video-gen-api/app/cmd/backfill_credit_record_snapshots.py b/video-gen-api/app/cmd/backfill_credit_record_snapshots.py
new file mode 100644
index 00000000..12c12559
--- /dev/null
+++ b/video-gen-api/app/cmd/backfill_credit_record_snapshots.py
@@ -0,0 +1,981 @@
+from __future__ import annotations
+
+import argparse
+import asyncio
+from copy import deepcopy
+from datetime import datetime, timezone
+from decimal import Decimal
+from typing import Any, Mapping
+
+from sqlalchemy import or_, select
+
+from app.enums.credit_record import (
+ CreditRecordAction,
+ CreditRecordChargeKind,
+ CreditRecordOwnerType,
+ CreditRecordType,
+)
+from app.enums.model_pricing import (
+ ModelPricingRuleStatus,
+ PricingSnapshotStage,
+ ProviderCostStatus,
+)
+from app.models.base import async_session
+from app.models.chat_generation_task import ChatGenerationTask
+from app.models.credit_record import CreditRecord
+from app.models.generated_resource import GeneratedResource
+from app.models.generation_record import GenerationRecord
+from app.models.image_engine import ImageEngine
+from app.models.model_config import ModelConfig
+from app.models.model_pricing_rule import ModelPricingRule
+from app.models.module_generation_project import ModuleGenerationProject
+from app.models.module_generation_step import ModuleGenerationStep
+from app.models.shot_replicate_segment import ShotReplicateSegment
+from app.models.shot_replicate_task_set import ShotReplicateTaskSet
+from app.models.token_usage import TokenUsage
+from app.models.video_engine import VideoEngine
+from app.services.model_pricing.attachment_snapshot_service import (
+ build_attachment_snapshot,
+ build_generation_snapshot,
+)
+from app.services.model_pricing.rule_service import normalize_provider
+from app.services.model_pricing.snapshot_service import finalize_credit_record_pricing
+from app.services.model_pricing.usage_normalizer import (
+ normalize_provider_media_usage,
+ parse_size,
+ safe_float,
+ safe_int,
+ safe_json_dict,
+)
+from app.services.operation_log_service import log_model_pricing_event
+from app.services.resource_accounting_service import (
+ SOURCE_MODEL_CHAT_TASK,
+ SOURCE_MODEL_GENERATION_RECORD,
+)
+
+
+PROCESSABLE_CHARGE_KINDS = {
+ CreditRecordChargeKind.MEDIA.value,
+ CreditRecordChargeKind.TEXT_PROMPT.value,
+ CreditRecordChargeKind.VIDEO_ANALYSIS.value,
+}
+
+NON_PROVIDER_CHARGE_KINDS = {
+ CreditRecordChargeKind.FILE_PARSE.value,
+ CreditRecordChargeKind.VISION_INPUT.value,
+ CreditRecordChargeKind.MODULE_CREATE.value,
+ CreditRecordChargeKind.VIDEO_SPLIT.value,
+ CreditRecordChargeKind.RECHARGE.value,
+ CreditRecordChargeKind.REFUND.value,
+ CreditRecordChargeKind.ADMIN_ADJUST.value,
+ CreditRecordChargeKind.TEAM_INTERNAL.value,
+}
+
+INCOMPLETE_COST_STATUSES = {
+ None,
+ "",
+ ProviderCostStatus.PENDING.value,
+ ProviderCostStatus.UNMATCHED_RULE.value,
+ ProviderCostStatus.USAGE_MISSING.value,
+ ProviderCostStatus.ERROR.value,
+ ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value,
+ ProviderCostStatus.HISTORICAL_PRICE_UNAVAILABLE.value,
+ ProviderCostStatus.HISTORICAL_ENGINE_UNAVAILABLE.value,
+}
+
+
+class BackfillContext:
+ def __init__(self) -> None:
+ self.owner_maps: dict[str, dict[str, Any]] = {}
+ self.linked_chat_tasks: dict[str, ChatGenerationTask] = {}
+ self.token_usage_by_id: dict[str, TokenUsage] = {}
+ self.token_usage_by_owner: dict[tuple[str, str], TokenUsage] = {}
+ self.model_configs: dict[str, ModelConfig] = {}
+ self.image_engines: dict[str, ImageEngine] = {}
+ self.video_engines: dict[str, VideoEngine] = {}
+ self.resource_counts: dict[tuple[str, str], dict[str, int]] = {}
+ self.current_rules_by_category: dict[str, list[ModelPricingRule]] = {}
+
+
+class BackfillStats:
+ def __init__(self) -> None:
+ self.scanned = 0
+ self.changed = 0
+ self.calculated = 0
+ self.estimated = 0
+ self.rule_bound = 0
+ self.missing_engine = 0
+ self.missing_usage = 0
+ self.unmatched_rule = 0
+ self.not_applicable = 0
+ self.skipped_completed = 0
+ self.skipped_non_provider = 0
+ self.failed = 0
+ self.force_repriced = 0
+
+ def merge(self, other: "BackfillStats") -> None:
+ for key in vars(self):
+ setattr(self, key, getattr(self, key) + getattr(other, key))
+
+ def as_dict(self) -> dict[str, int]:
+ return {key: int(value) for key, value in vars(self).items()}
+
+
+def _parse_date(value: str | None, *, end: bool = False) -> datetime | None:
+ if not value:
+ return None
+ parsed = datetime.fromisoformat(value)
+ if parsed.tzinfo is None:
+ parsed = parsed.replace(tzinfo=timezone.utc)
+ if end and len(value) <= 10:
+ parsed = parsed.replace(hour=23, minute=59, second=59, microsecond=999999)
+ return parsed
+
+
+def _utcnow() -> datetime:
+ return datetime.now(timezone.utc)
+
+
+def _owner_key(record: CreditRecord) -> tuple[str, str] | None:
+ owner_type = str(record.owner_type or "").strip()
+ owner_id = str(record.owner_id or record.related_id or "").strip()
+ return (owner_type, owner_id) if owner_type and owner_id else None
+
+
+def _is_provider_cost_candidate(record: CreditRecord) -> bool:
+ if record.type != CreditRecordType.CONSUME.value:
+ return False
+ if record.charge_action not in {None, "", CreditRecordAction.CHARGE.value}:
+ return False
+ charge_kind = str(record.charge_kind or "").strip()
+ if charge_kind in NON_PROVIDER_CHARGE_KINDS:
+ return False
+ if charge_kind in PROCESSABLE_CHARGE_KINDS:
+ return True
+ if str(record.media_type or "").lower() in {"image", "video"}:
+ return True
+ if any(int(value or 0) > 0 for value in (record.input_tokens, record.output_tokens, record.total_tokens)):
+ return True
+ return bool(record.token_usage_id or _owner_key(record))
+
+
+def _raw_references(owner: Any) -> Any:
+ if owner is None:
+ return None
+ if isinstance(owner, ShotReplicateTaskSet):
+ return [
+ {
+ "type": "video",
+ "url": owner.video_url,
+ "path": owner.video_path,
+ "duration_seconds": owner.video_duration_seconds,
+ "role": "reference_video",
+ "billable_input": True,
+ }
+ ]
+ if isinstance(owner, ShotReplicateSegment):
+ return [
+ {
+ "type": "video",
+ "url": owner.segment_video_url,
+ "path": owner.segment_video_path,
+ "duration_seconds": owner.duration_seconds,
+ "role": "reference_video",
+ "billable_input": True,
+ }
+ ]
+ if hasattr(owner, "media_references"):
+ return getattr(owner, "media_references", None)
+ if hasattr(owner, "input_json"):
+ return getattr(owner, "input_json", None)
+ return None
+
+
+def _provider_response(owner: Any) -> Any:
+ if owner is None:
+ return None
+ for name in (
+ "provider_response_json",
+ "output_json",
+ "analysis_raw_json",
+ "analysis_result_json",
+ "analysis_json",
+ ):
+ value = getattr(owner, name, None)
+ if value:
+ return value
+ return None
+
+
+def _nested_usage(value: Any) -> dict[str, Any]:
+ data = safe_json_dict(value)
+ if not data:
+ return {}
+ usage = data.get("usage")
+ if isinstance(usage, Mapping):
+ return deepcopy(dict(usage))
+ for key in ("result", "payload", "data", "response"):
+ child = data.get(key)
+ if isinstance(child, Mapping):
+ found = _nested_usage(child)
+ if found:
+ return found
+ return {}
+
+
+def _select_token_usage(record: CreditRecord, owner: Any, ctx: BackfillContext) -> TokenUsage | None:
+ token_usage_id = (
+ record.token_usage_id
+ or getattr(owner, "token_usage_id", None)
+ )
+ if token_usage_id and token_usage_id in ctx.token_usage_by_id:
+ return ctx.token_usage_by_id[token_usage_id]
+ key = _owner_key(record)
+ if key and key in ctx.token_usage_by_owner:
+ return ctx.token_usage_by_owner[key]
+ return None
+
+
+def _usage_from_record(record: CreditRecord, owner: Any, token_usage: TokenUsage | None) -> dict[str, Any]:
+ usage = deepcopy(dict(record.usage_snapshot_json or {}))
+ payload_usage = _nested_usage(_provider_response(owner))
+ for key, value in payload_usage.items():
+ usage.setdefault(key, value)
+
+ owner_input = safe_int(getattr(owner, "input_tokens", None))
+ owner_output = safe_int(getattr(owner, "output_tokens", None))
+ owner_total = safe_int(getattr(owner, "total_tokens", None))
+ token_input = safe_int(getattr(token_usage, "input_tokens", None))
+ token_output = safe_int(getattr(token_usage, "output_tokens", None))
+ token_total = safe_int(getattr(token_usage, "total_tokens", None))
+
+ input_tokens = max(0, safe_int(record.input_tokens, token_input or owner_input))
+ output_tokens = max(0, safe_int(record.output_tokens, token_output or owner_output))
+ total_tokens = max(
+ 0,
+ safe_int(record.total_tokens, token_total or owner_total or (input_tokens + output_tokens)),
+ )
+ if total_tokens <= 0:
+ total_tokens = input_tokens + output_tokens
+ if output_tokens <= 0 and total_tokens > input_tokens:
+ output_tokens = total_tokens - input_tokens
+
+ usage.update(
+ {
+ "input_tokens": input_tokens,
+ "output_tokens": output_tokens,
+ "total_tokens": total_tokens,
+ "context_tokens": max(0, safe_int(usage.get("context_tokens"), input_tokens)),
+ "usage_source": "backfill",
+ "provider_usage_primary": bool(record.provider_usage_primary),
+ }
+ )
+ return usage
+
+
+def _get_engine_object(record: CreditRecord, owner: Any, ctx: BackfillContext) -> Any:
+ engine_id = str(record.engine_id or getattr(owner, "engine_id", None) or "").strip()
+ if not engine_id:
+ return None
+ media_type = str(record.media_type or getattr(owner, "gen_type", None) or "").lower()
+ if media_type == "image":
+ return ctx.image_engines.get(engine_id)
+ if media_type == "video":
+ return ctx.video_engines.get(engine_id)
+ return ctx.image_engines.get(engine_id) or ctx.video_engines.get(engine_id)
+
+
+def _restore_engine_snapshot(
+ record: CreditRecord,
+ *,
+ owner: Any,
+ linked_chat: ChatGenerationTask | None,
+ token_usage: TokenUsage | None,
+ ctx: BackfillContext,
+) -> None:
+ response = safe_json_dict(_provider_response(linked_chat or owner))
+ owner_snapshot = safe_json_dict(getattr(owner, "engine_snapshot_json", None))
+ chat_snapshot = safe_json_dict(getattr(linked_chat, "engine_snapshot_json", None))
+ engine = _get_engine_object(record, linked_chat or owner, ctx)
+
+ model_config_id = (
+ getattr(owner, "model_config_id", None)
+ or getattr(token_usage, "model_config_id", None)
+ or (record.engine_id if record.engine_type == "model" else None)
+ or response.get("model_config_id")
+ )
+ model_config = ctx.model_configs.get(str(model_config_id)) if model_config_id else None
+
+ model_name = (
+ record.engine_model_name
+ or response.get("model")
+ or response.get("model_name")
+ or chat_snapshot.get("model_name")
+ or chat_snapshot.get("engine_model_name")
+ or owner_snapshot.get("model_name")
+ or owner_snapshot.get("engine_model_name")
+ or getattr(engine, "model_name", None)
+ or getattr(model_config, "model_name", None)
+ )
+ provider = (
+ record.engine_provider
+ or chat_snapshot.get("provider")
+ or chat_snapshot.get("engine_provider")
+ or owner_snapshot.get("provider")
+ or owner_snapshot.get("engine_provider")
+ or getattr(engine, "provider", None)
+ or getattr(model_config, "provider", None)
+ )
+ if not provider and str(model_name or "").lower().startswith("doubao-"):
+ provider = "volcengine"
+
+ engine_id = (
+ record.engine_id
+ or getattr(linked_chat, "engine_id", None)
+ or getattr(owner, "engine_id", None)
+ or chat_snapshot.get("engine_id")
+ or chat_snapshot.get("id")
+ or owner_snapshot.get("engine_id")
+ or owner_snapshot.get("id")
+ or getattr(engine, "id", None)
+ or getattr(model_config, "id", None)
+ )
+ engine_name = (
+ record.engine_name
+ or chat_snapshot.get("engine_name")
+ or chat_snapshot.get("name")
+ or owner_snapshot.get("engine_name")
+ or owner_snapshot.get("name")
+ or getattr(engine, "name", None)
+ or getattr(model_config, "name", None)
+ )
+
+ record.engine_id = str(engine_id) if engine_id else None
+ record.engine_name = str(engine_name) if engine_name else None
+ record.engine_model_name = str(model_name) if model_name else None
+ record.engine_provider = (
+ normalize_provider(str(provider), record.engine_model_name)
+ if provider or record.engine_model_name
+ else None
+ )
+ if not record.engine_type:
+ if model_config is not None:
+ record.engine_type = "model"
+ else:
+ record.engine_type = str(record.media_type or getattr(linked_chat or owner, "gen_type", None) or "") or None
+
+
+def _infer_category(record: CreditRecord, owner: Any) -> str | None:
+ charge_kind = str(record.charge_kind or "").strip()
+ if charge_kind in {CreditRecordChargeKind.TEXT_PROMPT.value, CreditRecordChargeKind.VIDEO_ANALYSIS.value}:
+ return "text"
+ media_type = str(record.media_type or getattr(owner, "gen_type", None) or "").lower()
+ if media_type in {"image", "video"}:
+ return media_type
+ if any(int(value or 0) > 0 for value in (record.input_tokens, record.output_tokens, record.total_tokens)):
+ return "text"
+ return None
+
+
+def _apply_unique_current_rule_fallback(record: CreditRecord, owner: Any, ctx: BackfillContext) -> None:
+ if record.engine_model_name:
+ return
+ category = _infer_category(record, owner)
+ rules = ctx.current_rules_by_category.get(category or "", [])
+ unique_models = {(rule.provider, rule.model_name) for rule in rules}
+ if len(unique_models) != 1:
+ return
+ provider, model_name = next(iter(unique_models))
+ record.engine_provider = provider
+ record.engine_model_name = model_name
+ record.engine_type = record.engine_type or ("model" if category == "text" else category)
+
+
+def _apply_snapshot_fields(
+ record: CreditRecord,
+ *,
+ attachment_snapshot: dict[str, Any] | None,
+ attachment_counts: dict[str, Any] | None,
+ generation_snapshot: dict[str, Any] | None,
+ generation_counts: dict[str, Any] | None,
+) -> None:
+ if attachment_snapshot is not None:
+ record.attachment_snapshot_json = deepcopy(attachment_snapshot)
+ for key, value in (attachment_counts or {}).items():
+ if hasattr(record, key):
+ setattr(record, key, value)
+
+ if generation_snapshot is not None:
+ record.generation_snapshot_json = deepcopy(generation_snapshot)
+ for key, value in (generation_counts or {}).items():
+ if hasattr(record, key):
+ setattr(record, key, value)
+
+
+def _merge_resource_counts(
+ *,
+ record: CreditRecord,
+ generation_snapshot: dict[str, Any] | None,
+ generation_counts: dict[str, Any] | None,
+ resource_counts: dict[tuple[str, str], dict[str, int]],
+) -> tuple[dict[str, Any] | None, dict[str, Any] | None]:
+ source_model_by_owner_type = {
+ CreditRecordOwnerType.CHAT_GENERATION_TASK.value: SOURCE_MODEL_CHAT_TASK,
+ CreditRecordOwnerType.GENERATION_RECORD.value: SOURCE_MODEL_GENERATION_RECORD,
+ }
+ source_model = source_model_by_owner_type.get(record.owner_type or "")
+ bucket = (
+ resource_counts.get((source_model, record.owner_id))
+ if source_model and record.owner_id
+ else None
+ )
+ if not bucket:
+ return generation_snapshot, generation_counts
+
+ counts = deepcopy(dict(generation_counts or {}))
+ counts.update(
+ {
+ "generated_image_count": int(bucket["image"]),
+ "generated_video_count": int(bucket["video"]),
+ "generated_total_count": int(bucket["image"] + bucket["video"]),
+ }
+ )
+ snapshot = deepcopy(dict(generation_snapshot or {}))
+ snapshot["generated_image_count"] = counts["generated_image_count"]
+ snapshot["generated_video_count"] = counts["generated_video_count"]
+ snapshot["generated_total_count"] = counts["generated_total_count"]
+ snapshot["output_count_source"] = "generated_resource"
+ return snapshot, counts
+
+
+def _ensure_image_output_items(
+ *,
+ usage: dict[str, Any],
+ owner: Any,
+ successful_count: int,
+) -> None:
+ if successful_count <= 0:
+ return
+ items = usage.get("output_items")
+ if isinstance(items, list) and len(items) >= successful_count:
+ return
+ width, height = parse_size(getattr(owner, "image_px", None))
+ if width <= 0 or height <= 0:
+ return
+ usage["output_items"] = [
+ {
+ "index": index,
+ "width": width,
+ "height": height,
+ "pixels": width * height,
+ "size_source": "request_explicit_backfill",
+ }
+ for index in range(successful_count)
+ ]
+ usage["output_pixels_are_estimated"] = True
+
+
+async def _load_context(
+ db,
+ records: list[CreditRecord],
+ *,
+ backfill_reference_at: datetime,
+) -> BackfillContext:
+ ctx = BackfillContext()
+ ids_by_type: dict[str, set[str]] = {}
+ for record in records:
+ key = _owner_key(record)
+ if key:
+ ids_by_type.setdefault(key[0], set()).add(key[1])
+ if record.source_step_id:
+ ids_by_type.setdefault(CreditRecordOwnerType.MODULE_GENERATION_STEP.value, set()).add(record.source_step_id)
+
+ model_by_owner = {
+ CreditRecordOwnerType.CHAT_GENERATION_TASK.value: ChatGenerationTask,
+ CreditRecordOwnerType.GENERATION_RECORD.value: GenerationRecord,
+ CreditRecordOwnerType.MODULE_GENERATION_PROJECT.value: ModuleGenerationProject,
+ CreditRecordOwnerType.MODULE_GENERATION_STEP.value: ModuleGenerationStep,
+ CreditRecordOwnerType.SHOT_REPLICATE_TASK_SET.value: ShotReplicateTaskSet,
+ CreditRecordOwnerType.SHOT_REPLICATE_SEGMENT.value: ShotReplicateSegment,
+ }
+ for owner_type, model in model_by_owner.items():
+ ids = ids_by_type.get(owner_type) or set()
+ if not ids:
+ ctx.owner_maps[owner_type] = {}
+ continue
+ rows = (await db.execute(select(model).where(model.id.in_(ids)))).scalars().all()
+ ctx.owner_maps[owner_type] = {row.id: row for row in rows}
+
+ step_rows = list(ctx.owner_maps.get(CreditRecordOwnerType.MODULE_GENERATION_STEP.value, {}).values())
+ linked_chat_ids = {str(step.chat_task_id) for step in step_rows if getattr(step, "chat_task_id", None)}
+ if linked_chat_ids:
+ rows = (
+ await db.execute(select(ChatGenerationTask).where(ChatGenerationTask.id.in_(linked_chat_ids)))
+ ).scalars().all()
+ ctx.linked_chat_tasks = {row.id: row for row in rows}
+
+ token_usage_ids = {str(record.token_usage_id) for record in records if record.token_usage_id}
+ token_usage_ids.update(
+ str(step.token_usage_id)
+ for step in step_rows
+ if getattr(step, "token_usage_id", None)
+ )
+ owner_ids = {key[1] for record in records if (key := _owner_key(record))}
+ token_filters = []
+ if token_usage_ids:
+ token_filters.append(TokenUsage.id.in_(token_usage_ids))
+ if owner_ids:
+ token_filters.append(TokenUsage.owner_id.in_(owner_ids))
+ if token_filters:
+ token_rows = (
+ await db.execute(
+ select(TokenUsage)
+ .where(or_(*token_filters))
+ .order_by(TokenUsage.created_at.desc())
+ )
+ ).scalars().all()
+ for row in token_rows:
+ ctx.token_usage_by_id[row.id] = row
+ if row.owner_type and row.owner_id:
+ ctx.token_usage_by_owner.setdefault((row.owner_type, row.owner_id), row)
+
+ model_config_ids = {
+ str(row.model_config_id)
+ for row in ctx.token_usage_by_id.values()
+ if row.model_config_id
+ }
+ model_config_ids.update(
+ str(step.model_config_id)
+ for step in step_rows
+ if getattr(step, "model_config_id", None)
+ )
+ model_config_ids.update(
+ str(record.engine_id)
+ for record in records
+ if record.engine_type == "model" and record.engine_id
+ )
+ if model_config_ids:
+ rows = (
+ await db.execute(select(ModelConfig).where(ModelConfig.id.in_(model_config_ids)))
+ ).scalars().all()
+ ctx.model_configs = {row.id: row for row in rows}
+
+ engine_ids = {str(record.engine_id) for record in records if record.engine_id}
+ for owner_map in ctx.owner_maps.values():
+ engine_ids.update(str(row.engine_id) for row in owner_map.values() if getattr(row, "engine_id", None))
+ engine_ids.update(str(row.engine_id) for row in ctx.linked_chat_tasks.values() if row.engine_id)
+ if engine_ids:
+ image_rows = (
+ await db.execute(select(ImageEngine).where(ImageEngine.id.in_(engine_ids)))
+ ).scalars().all()
+ video_rows = (
+ await db.execute(select(VideoEngine).where(VideoEngine.id.in_(engine_ids)))
+ ).scalars().all()
+ ctx.image_engines = {row.id: row for row in image_rows}
+ ctx.video_engines = {row.id: row for row in video_rows}
+
+ source_ids = {
+ record.owner_id
+ for record in records
+ if record.owner_id
+ and record.owner_type
+ in {
+ CreditRecordOwnerType.CHAT_GENERATION_TASK.value,
+ CreditRecordOwnerType.GENERATION_RECORD.value,
+ }
+ }
+ if source_ids:
+ resources = (
+ await db.execute(
+ select(GeneratedResource)
+ .where(GeneratedResource.source_id.in_(source_ids))
+ .where(GeneratedResource.deleted_at.is_(None))
+ )
+ ).scalars().all()
+ for resource in resources:
+ key = (str(resource.source_model or ""), resource.source_id)
+ bucket = ctx.resource_counts.setdefault(key, {"image": 0, "video": 0})
+ resource_type = str(resource.resource_type or "").lower()
+ if resource_type in bucket:
+ bucket[resource_type] += 1
+
+ current_rules = (
+ await db.execute(
+ select(ModelPricingRule)
+ .where(ModelPricingRule.publish_status == ModelPricingRuleStatus.PUBLISHED.value)
+ .where(ModelPricingRule.effective_from <= backfill_reference_at)
+ .where(
+ or_(
+ ModelPricingRule.effective_to.is_(None),
+ ModelPricingRule.effective_to > backfill_reference_at,
+ )
+ )
+ .order_by(ModelPricingRule.model_category, ModelPricingRule.model_name)
+ )
+ ).scalars().all()
+ for rule in current_rules:
+ ctx.current_rules_by_category.setdefault(rule.model_category, []).append(rule)
+
+ return ctx
+
+
+def _record_state(record: CreditRecord) -> tuple[Any, ...]:
+ return (
+ record.engine_id,
+ record.engine_provider,
+ record.engine_model_name,
+ record.pricing_rule_id,
+ record.pricing_version_code,
+ record.provider_cost_status,
+ record.provider_cost_amount,
+ record.pricing_snapshot_hash,
+ record.attachment_total_count,
+ record.generated_total_count,
+ deepcopy(record.usage_snapshot_json),
+ deepcopy(record.attachment_snapshot_json),
+ deepcopy(record.generation_snapshot_json),
+ )
+
+
+def _classify_result(record: CreditRecord, stats: BackfillStats, *, previous_rule_id: str | None, forced: bool) -> None:
+ status = record.provider_cost_status
+ if record.pricing_rule_id and record.pricing_rule_id != previous_rule_id:
+ stats.rule_bound += 1
+ if status == ProviderCostStatus.CALCULATED.value:
+ stats.calculated += 1
+ if forced:
+ stats.force_repriced += 1
+ elif status == ProviderCostStatus.ESTIMATED.value:
+ stats.estimated += 1
+ if forced:
+ stats.force_repriced += 1
+ elif status == ProviderCostStatus.HISTORICAL_ENGINE_UNAVAILABLE.value:
+ stats.missing_engine += 1
+ elif status == ProviderCostStatus.USAGE_MISSING.value:
+ stats.missing_usage += 1
+ elif status == ProviderCostStatus.UNMATCHED_RULE.value:
+ stats.unmatched_rule += 1
+ elif status == ProviderCostStatus.NOT_APPLICABLE.value:
+ stats.not_applicable += 1
+
+
+async def run(args) -> None:
+ start_at = _parse_date(args.start_date)
+ end_at = _parse_date(args.end_date, end=True)
+ backfill_reference_at = _utcnow()
+ total = BackfillStats()
+ last_id: str | None = None
+
+ async with async_session() as db:
+ while True:
+ filters = [CreditRecord.type == CreditRecordType.CONSUME.value]
+ filters.append(
+ or_(
+ CreditRecord.charge_action == CreditRecordAction.CHARGE.value,
+ CreditRecord.charge_action.is_(None),
+ CreditRecord.charge_action == "",
+ )
+ )
+ filters.append(CreditRecord.created_at <= backfill_reference_at)
+ if last_id:
+ filters.append(CreditRecord.id > last_id)
+ if start_at:
+ filters.append(CreditRecord.created_at >= start_at)
+ if end_at:
+ filters.append(CreditRecord.created_at <= end_at)
+ if args.only_user_id:
+ filters.append(CreditRecord.user_id == args.only_user_id)
+ if args.only_owner_type:
+ filters.append(CreditRecord.owner_type == args.only_owner_type)
+ if args.only_missing and not args.force:
+ filters.append(
+ or_(
+ CreditRecord.pricing_rule_id.is_(None),
+ CreditRecord.provider_cost_status.is_(None),
+ CreditRecord.provider_cost_status.in_([value for value in INCOMPLETE_COST_STATUSES if value]),
+ CreditRecord.attachment_snapshot_json.is_(None),
+ CreditRecord.generation_snapshot_json.is_(None),
+ )
+ )
+
+ records = (
+ await db.execute(
+ select(CreditRecord)
+ .where(*filters)
+ .order_by(CreditRecord.id)
+ .limit(args.batch_size)
+ .with_for_update(skip_locked=True)
+ )
+ ).scalars().all()
+ if not records:
+ break
+
+ ctx = await _load_context(
+ db,
+ records,
+ backfill_reference_at=backfill_reference_at,
+ )
+ batch = BackfillStats()
+
+ for record in records:
+ batch.scanned += 1
+ record_id = str(record.id)
+ user_id = str(record.user_id) if record.user_id else None
+ owner_type = str(record.owner_type or "") or None
+ owner_id = str(record.owner_id or record.related_id or "") or None
+
+ if not _is_provider_cost_candidate(record):
+ batch.skipped_non_provider += 1
+ continue
+ if (
+ not args.force
+ and record.provider_cost_status == ProviderCostStatus.CALCULATED.value
+ and record.pricing_rule_id
+ and record.attachment_snapshot_json is not None
+ and record.generation_snapshot_json is not None
+ ):
+ batch.skipped_completed += 1
+ continue
+
+ before = _record_state(record)
+ previous_rule_id = record.pricing_rule_id
+ try:
+ async with db.begin_nested():
+ key = _owner_key(record)
+ owner = ctx.owner_maps.get(key[0], {}).get(key[1]) if key else None
+ if owner is None and record.source_step_id:
+ owner = ctx.owner_maps.get(
+ CreditRecordOwnerType.MODULE_GENERATION_STEP.value,
+ {},
+ ).get(record.source_step_id)
+
+ linked_chat = None
+ if isinstance(owner, ModuleGenerationStep) and owner.chat_task_id:
+ linked_chat = ctx.linked_chat_tasks.get(owner.chat_task_id)
+ media_owner = linked_chat or owner
+ token_usage = _select_token_usage(record, owner, ctx)
+
+ usage = _usage_from_record(record, owner, token_usage)
+ attachment_snapshot, attachment_counts = build_attachment_snapshot(
+ _raw_references(media_owner or owner)
+ )
+ generation_snapshot: dict[str, Any] | None = deepcopy(record.generation_snapshot_json)
+ generation_counts: dict[str, Any] | None = None
+
+ gen_type = str(
+ record.media_type
+ or getattr(media_owner, "gen_type", None)
+ or ""
+ ).lower()
+ response = _provider_response(media_owner or owner)
+ if gen_type in {"image", "video"} and media_owner is not None:
+ generation_snapshot, generation_counts, generation_usage = build_generation_snapshot(
+ media_owner,
+ provider_response=response,
+ stage=PricingSnapshotStage.BACKFILL.value,
+ )
+ provider_usage = normalize_provider_media_usage(
+ response,
+ gen_type=gen_type,
+ fallback_total_tokens=max(
+ safe_int(record.total_tokens),
+ safe_int(getattr(media_owner, "video_tokens_used", None)),
+ ),
+ request_image_px=getattr(media_owner, "image_px", None),
+ requested_output_count=max(
+ 1,
+ safe_int((generation_counts or {}).get("requested_output_count"), 1),
+ ),
+ provider_input_image_count=safe_int(
+ attachment_counts.get("provider_input_image_count")
+ ),
+ )
+ usage.update(generation_usage)
+ usage.update(provider_usage)
+ usage.update(
+ {
+ "has_input_video": bool(
+ attachment_counts.get("provider_input_video_count")
+ ),
+ "provider_input_image_count": safe_int(
+ provider_usage.get("provider_input_image_count"),
+ safe_int(attachment_counts.get("provider_input_image_count")),
+ ),
+ "input_image_count": safe_int(
+ provider_usage.get("provider_input_image_count"),
+ safe_int(attachment_counts.get("provider_input_image_count")),
+ ),
+ "input_video_duration_seconds": float(
+ attachment_counts.get("attachment_video_duration_seconds") or 0
+ ),
+ "input_audio_duration_seconds": float(
+ attachment_counts.get("attachment_audio_duration_seconds") or 0
+ ),
+ "usage_stage": PricingSnapshotStage.BACKFILL.value,
+ }
+ )
+
+ generation_snapshot, generation_counts = _merge_resource_counts(
+ record=record,
+ generation_snapshot=generation_snapshot,
+ generation_counts=generation_counts,
+ resource_counts=ctx.resource_counts,
+ )
+ if generation_counts:
+ successful_count = (
+ int(generation_counts.get("generated_image_count") or 0)
+ if gen_type == "image"
+ else int(generation_counts.get("generated_video_count") or 0)
+ )
+ usage["successful_output_count"] = successful_count
+ usage["generated_image_count"] = int(
+ generation_counts.get("generated_image_count") or 0
+ )
+ usage["generated_video_count"] = int(
+ generation_counts.get("generated_video_count") or 0
+ )
+ if gen_type == "image":
+ _ensure_image_output_items(
+ usage=usage,
+ owner=media_owner,
+ successful_count=successful_count,
+ )
+
+ _restore_engine_snapshot(
+ record,
+ owner=owner,
+ linked_chat=linked_chat,
+ token_usage=token_usage,
+ ctx=ctx,
+ )
+ _apply_unique_current_rule_fallback(record, media_owner or owner, ctx)
+
+ if record.charge_action in {None, ""}:
+ record.charge_action = CreditRecordAction.CHARGE.value
+
+ _apply_snapshot_fields(
+ record,
+ attachment_snapshot=attachment_snapshot,
+ attachment_counts=attachment_counts,
+ generation_snapshot=generation_snapshot,
+ generation_counts=generation_counts,
+ )
+
+ await finalize_credit_record_pricing(
+ db,
+ charge=record,
+ usage=usage,
+ stage=PricingSnapshotStage.BACKFILL.value,
+ attachment_snapshot=attachment_snapshot,
+ attachment_counts=attachment_counts,
+ generation_snapshot=generation_snapshot,
+ generation_counts=generation_counts,
+ allow_upgrade_estimated=True,
+ pricing_reference_at=backfill_reference_at,
+ use_locked_rule=False,
+ force_reprice=bool(args.force),
+ backfill_metadata={
+ "is_backfilled": True,
+ "pricing_basis": "current_published_rule",
+ "backfill_reference_at": backfill_reference_at.isoformat(),
+ "original_credit_created_at": (
+ record.created_at.isoformat() if record.created_at else None
+ ),
+ "command": "backfill_credit_record_snapshots",
+ },
+ )
+
+ after = _record_state(record)
+ if before != after:
+ batch.changed += 1
+ _classify_result(
+ record,
+ batch,
+ previous_rule_id=previous_rule_id,
+ forced=bool(args.force),
+ )
+ except Exception as exc:
+ batch.failed += 1
+ log_model_pricing_event(
+ event_type="pricing_backfill_record_failed",
+ event_status="failed",
+ user_id=user_id,
+ credit_record_id=record_id,
+ owner_type=owner_type,
+ owner_id=owner_id,
+ error=str(exc),
+ detail={
+ "backfill_reference_at": backfill_reference_at.isoformat(),
+ "force": bool(args.force),
+ },
+ )
+
+ last_id = str(records[-1].id)
+ total.merge(batch)
+ log_model_pricing_event(
+ event_type="pricing_backfill_batch",
+ event_status="success" if batch.failed == 0 else "warning",
+ detail={
+ **batch.as_dict(),
+ "batch_size": len(records),
+ "last_id": last_id,
+ "commit": bool(args.commit),
+ "force": bool(args.force),
+ "backfill_reference_at": backfill_reference_at.isoformat(),
+ },
+ )
+ if args.commit:
+ await db.commit()
+ else:
+ await db.rollback()
+
+ print(
+ f"batch={len(records)} scanned={batch.scanned} changed={batch.changed} "
+ f"bound={batch.rule_bound} calculated={batch.calculated} estimated={batch.estimated} "
+ f"missing_engine={batch.missing_engine} missing_usage={batch.missing_usage} "
+ f"unmatched_rule={batch.unmatched_rule} skipped_completed={batch.skipped_completed} "
+ f"skipped_non_provider={batch.skipped_non_provider} failed={batch.failed} last_id={last_id}"
+ )
+
+ mode = "COMMIT" if args.commit else "DRY-RUN"
+ summary = " ".join(f"{key}={value}" for key, value in total.as_dict().items())
+ print(
+ f"{mode} DONE backfill_reference_at={backfill_reference_at.isoformat()} "
+ f"force={bool(args.force)} {summary}"
+ )
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser(
+ description=(
+ "一次性将历史消费流水按执行时当前已发布的模型计价规则补齐:"
+ "同时恢复模型、附件/产出快照、绑定规则并计算供应商成本。"
+ )
+ )
+ group = parser.add_mutually_exclusive_group(required=True)
+ group.add_argument("--dry-run", action="store_true", help="执行完整计算但最终回滚")
+ group.add_argument("--commit", action="store_true", help="分批提交补录结果")
+ parser.add_argument("--batch-size", type=int, default=500)
+ parser.add_argument("--start-date")
+ parser.add_argument("--end-date")
+ parser.add_argument("--only-user-id")
+ parser.add_argument("--only-owner-type")
+ parser.add_argument(
+ "--only-missing",
+ action="store_true",
+ default=False,
+ help="仅扫描规则/成本或附件/产出快照尚未完整的流水",
+ )
+ parser.add_argument(
+ "--force",
+ action="store_true",
+ default=False,
+ help="按当前发布规则覆盖已经核算过的历史计价结果",
+ )
+ args = parser.parse_args()
+ args.batch_size = max(1, min(args.batch_size, 5000))
+ asyncio.run(run(args))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/video-gen-api/app/cmd/seed_model_pricing_rules.py b/video-gen-api/app/cmd/seed_model_pricing_rules.py
new file mode 100644
index 00000000..546c90c7
--- /dev/null
+++ b/video-gen-api/app/cmd/seed_model_pricing_rules.py
@@ -0,0 +1,115 @@
+from __future__ import annotations
+
+import argparse
+import asyncio
+
+from sqlalchemy import select
+
+from app.models.base import async_session
+from app.models.menu_config import MenuConfig
+from app.models.model_pricing_rule import ModelPricingRule
+from app.services.model_pricing.rule_service import create_rule
+from app.services.model_pricing.seed_data import volcengine_pricing_seed_rules
+from app.utils.id_gen import generate_id
+
+
+async def _ensure_admin_menu(db) -> bool:
+ exists = (
+ await db.execute(
+ select(MenuConfig.id)
+ .where(MenuConfig.menu_target == "admin")
+ .where(MenuConfig.path == "/model-pricing")
+ .limit(1)
+ )
+ ).scalar_one_or_none()
+ if exists:
+ return False
+
+ group_id = (
+ await db.execute(
+ select(MenuConfig.id)
+ .where(MenuConfig.menu_target == "admin")
+ .where(MenuConfig.menu_type == "group")
+ .where(MenuConfig.label == "模型设置")
+ .limit(1)
+ )
+ ).scalar_one_or_none()
+ if not group_id:
+ group_id = generate_id()
+ db.add(
+ MenuConfig(
+ id=group_id,
+ path="",
+ label="模型设置",
+ icon="RobotOutlined",
+ sort_order=98,
+ is_active=True,
+ menu_type="group",
+ menu_target="admin",
+ )
+ )
+ await db.flush()
+
+ db.add(
+ MenuConfig(
+ id=generate_id(),
+ path="/model-pricing",
+ label="模型计价",
+ icon="DollarOutlined",
+ sort_order=4,
+ is_active=True,
+ menu_type="page",
+ menu_target="admin",
+ parent_id=group_id,
+ )
+ )
+ await db.flush()
+ return True
+
+
+async def run(*, commit: bool) -> None:
+ async with async_session() as db:
+ created = skipped = 0
+ menu_created = await _ensure_admin_menu(db)
+ for payload in volcengine_pricing_seed_rules():
+ exists = (
+ await db.execute(
+ select(ModelPricingRule.id)
+ .where(ModelPricingRule.provider == payload["provider"])
+ .where(ModelPricingRule.model_name == payload["model_name"])
+ .where(ModelPricingRule.version_code == payload["version_code"])
+ .limit(1)
+ )
+ ).scalar_one_or_none()
+ if exists:
+ skipped += 1
+ print(f"SKIP {payload['model_name']} {payload['version_code']} id={exists}")
+ continue
+ draft_payload = dict(payload)
+ draft_payload.pop("publish_status", None)
+ snapshot = await create_rule(db, payload=draft_payload, operator_id=None)
+ created += 1
+ effective_from = snapshot["effective_from"]
+ print(
+ f"CREATE_DRAFT {snapshot['model_name']} {snapshot['version_code']} id={snapshot['id']} "
+ f"effective_from={effective_from.isoformat()}"
+ )
+ if commit:
+ await db.commit()
+ print(f"COMMIT created={created} skipped={skipped} menu_created={menu_created}")
+ else:
+ await db.rollback()
+ print(f"DRY-RUN created={created} skipped={skipped} menu_created={menu_created}")
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser(description="初始化火山模型计价草稿(不会自动发布,需人工核价后在后台发布)")
+ group = parser.add_mutually_exclusive_group(required=True)
+ group.add_argument("--dry-run", action="store_true")
+ group.add_argument("--commit", action="store_true")
+ args = parser.parse_args()
+ asyncio.run(run(commit=bool(args.commit)))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/video-gen-api/app/config.py b/video-gen-api/app/config.py
index cf044acf..7f4621f8 100644
--- a/video-gen-api/app/config.py
+++ b/video-gen-api/app/config.py
@@ -112,6 +112,8 @@ class Settings(BaseSettings):
# ChatAPI async generation pipeline settings
CELERY_BROKER_URL: str = ""
CELERY_RESULT_BACKEND: str = ""
+ # Celery result backend 仅保留近期排障状态;业务恢复以数据库状态和业务日志为准。
+ CELERY_RESULT_EXPIRES_SECONDS: int = 7200
# Celery async 兼容配置。
# single_loop:每个 Celery 子进程一个专用 event loop,推荐线上/本地统一使用。
# direct:旧版线程本地 loop 降级模式,建议配合 CELERY_DB_USE_NULLPOOL=true。
diff --git a/video-gen-api/app/enums/model_pricing.py b/video-gen-api/app/enums/model_pricing.py
new file mode 100644
index 00000000..409eac6f
--- /dev/null
+++ b/video-gen-api/app/enums/model_pricing.py
@@ -0,0 +1,114 @@
+from __future__ import annotations
+
+from enum import Enum
+
+
+class ModelPricingProvider(str, Enum):
+ VOLCENGINE = "volcengine"
+
+
+class ModelPricingCategory(str, Enum):
+ TEXT = "text"
+ IMAGE = "image"
+ VIDEO = "video"
+
+
+class ModelPricingBillingMode(str, Enum):
+ TEXT_TOKEN_TIERED = "text_token_tiered"
+ IMAGE_PER_OUTPUT = "image_per_output"
+ IMAGE_INPUT_OUTPUT_TIERED = "image_input_output_tiered"
+ VIDEO_TOKEN_RATE = "video_token_rate"
+
+
+class ModelPricingCalculatorVersion(str, Enum):
+ TEXT_TOKEN_TIERED_V1 = "text_token_tiered_v1"
+ IMAGE_PER_OUTPUT_V1 = "image_per_output_v1"
+ IMAGE_INPUT_OUTPUT_TIERED_V1 = "image_input_output_tiered_v1"
+ VIDEO_PIXEL_TOKEN_V1 = "video_pixel_token_v1"
+
+
+class ModelPricingRuleStatus(str, Enum):
+ DRAFT = "draft"
+ PUBLISHED = "published"
+ DISABLED = "disabled"
+
+
+class ProviderCostStatus(str, Enum):
+ NOT_APPLICABLE = "not_applicable"
+ NOT_INCURRED = "not_incurred"
+ PENDING = "pending"
+ CALCULATED = "calculated"
+ ESTIMATED = "estimated"
+ UNMATCHED_RULE = "unmatched_rule"
+ USAGE_MISSING = "usage_missing"
+ ERROR = "error"
+ PROVIDER_RESULT_UNCERTAIN = "provider_result_uncertain"
+ HISTORICAL_PRICE_UNAVAILABLE = "historical_price_unavailable"
+ HISTORICAL_ENGINE_UNAVAILABLE = "historical_engine_unavailable"
+
+
+class PricingUsageSource(str, Enum):
+ PROVIDER = "provider"
+ PROVIDER_RESPONSE = "provider_response"
+ REQUEST_FORMULA = "request_formula"
+ ENGINE_SNAPSHOT = "engine_snapshot"
+ PRICING_RULE_MAP = "pricing_rule_map"
+ BACKFILL = "backfill"
+ MANUAL = "manual"
+ UNAVAILABLE = "unavailable"
+
+
+class PricingSnapshotStage(str, Enum):
+ REQUEST_LOCKED = "request_locked"
+ PROVIDER_SYNC_COMPLETED = "provider_sync_completed"
+ PROVIDER_ASYNC_COMPLETED = "provider_async_completed"
+ RESOURCE_DOWNLOAD_COMPLETED = "resource_download_completed"
+ BACKFILL = "backfill"
+
+
+class PricingDimensionSource(str, Enum):
+ PROVIDER_RESPONSE = "provider_response"
+ REQUEST_EXPLICIT = "request_explicit"
+ ENGINE_SNAPSHOT = "engine_snapshot"
+ PRICING_RULE_MAP = "pricing_rule_map"
+ UNAVAILABLE = "unavailable"
+
+
+class PricingBillBy(str, Enum):
+ SUCCESSFUL_OUTPUT_COUNT = "successful_output_count"
+ REQUESTED_OUTPUT_COUNT = "requested_output_count"
+ PROVIDER_BILLED_COUNT = "provider_billed_count"
+
+
+class PricingInferenceMode(str, Enum):
+ ONLINE = "online"
+ FLEX = "flex"
+ BATCH = "batch"
+
+
+MODEL_PRICING_BILLING_MODE_LABELS = {
+ ModelPricingBillingMode.TEXT_TOKEN_TIERED.value: "文本分档 Token 计价",
+ ModelPricingBillingMode.IMAGE_PER_OUTPUT.value: "图片按输出数量计价",
+ ModelPricingBillingMode.IMAGE_INPUT_OUTPUT_TIERED.value: "输入图片 + 输出像素分档计价",
+ ModelPricingBillingMode.VIDEO_TOKEN_RATE.value: "视频像素 Token 计价",
+}
+
+MODEL_PRICING_RULE_STATUS_LABELS = {
+ ModelPricingRuleStatus.DRAFT.value: "草稿",
+ ModelPricingRuleStatus.PUBLISHED.value: "已发布",
+ ModelPricingRuleStatus.DISABLED.value: "已停用",
+}
+
+PROVIDER_COST_STATUS_LABELS = {
+ ProviderCostStatus.NOT_APPLICABLE.value: "不涉及供应商成本",
+ ProviderCostStatus.NOT_INCURRED.value: "供应商费用未发生",
+ ProviderCostStatus.PENDING.value: "待核算",
+ ProviderCostStatus.CALCULATED.value: "已核算",
+ ProviderCostStatus.ESTIMATED.value: "估算",
+ ProviderCostStatus.UNMATCHED_RULE.value: "未匹配价格",
+ ProviderCostStatus.USAGE_MISSING.value: "用量缺失",
+ ProviderCostStatus.ERROR.value: "核算异常",
+ ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value: "供应商结果不确定",
+ ProviderCostStatus.HISTORICAL_PRICE_UNAVAILABLE.value: "历史价格缺失",
+ ProviderCostStatus.HISTORICAL_ENGINE_UNAVAILABLE.value: "历史引擎缺失",
+}
diff --git a/video-gen-api/app/models/__init__.py b/video-gen-api/app/models/__init__.py
index 2d5744ba..b6efceb0 100644
--- a/video-gen-api/app/models/__init__.py
+++ b/video-gen-api/app/models/__init__.py
@@ -7,6 +7,7 @@ from app.models.project import Project
from app.models.generation_record import GenerationRecord
from app.models.credit_record import CreditRecord
from app.models.model_config import ModelConfig
+from app.models.model_pricing_rule import ModelPricingRule
from app.models.system_config import SystemConfig
from app.models.notification import Notification
from app.models.notification_read import NotificationRead
@@ -41,7 +42,7 @@ __all__ = [
"Base", "TimestampMixin", "SoftDeleteMixin", "engine", "async_session",
"init_database", "close_database",
"User", "Team", "TeamInvitation", "TeamJoinRequest", "Project", "GenerationRecord", "CreditRecord",
- "ModelConfig", "SystemConfig", "Notification", "PaymentOrder",
+ "ModelConfig", "ModelPricingRule", "SystemConfig", "Notification", "PaymentOrder",
"TokenUsage", "IndustryConfig", "VideoEngine", "CreditRatio",
"MenuConfig", "RechargePackage", "OperationLog", "ContactRequest",
"ChatGenerationTask", "ChatGenerationTaskEvent", "ChatProviderCallLog",
diff --git a/video-gen-api/app/models/chat_generation_task.py b/video-gen-api/app/models/chat_generation_task.py
index 4bb3e1c3..6ad7ebd6 100644
--- a/video-gen-api/app/models/chat_generation_task.py
+++ b/video-gen-api/app/models/chat_generation_task.py
@@ -73,6 +73,8 @@ class ChatGenerationTask(Base, TimestampMixin, SoftDeleteMixin):
engine_id: Mapped[str | None] = mapped_column(String(32), nullable=True, index=True)
engine_snapshot_json: Mapped[str | None] = mapped_column(Text, nullable=True)
provider_response_json: Mapped[str | None] = mapped_column(Text, nullable=True)
+ # 当前媒体扣费尝试号;Provider 回调必须按 owner + attempt_no 精确回填。
+ current_billing_attempt_no: Mapped[int | None] = mapped_column(Integer, nullable=True, index=True)
credits_cost: Mapped[float] = mapped_column(Float, default=0.0)
text_credits_cost: Mapped[float] = mapped_column(Float, default=0.0)
diff --git a/video-gen-api/app/models/credit_record.py b/video-gen-api/app/models/credit_record.py
index 45d4322b..cb7ce1c6 100644
--- a/video-gen-api/app/models/credit_record.py
+++ b/video-gen-api/app/models/credit_record.py
@@ -1,14 +1,22 @@
-from sqlalchemy import Float, ForeignKey, Index, Integer, String
+from __future__ import annotations
+
+from datetime import datetime
+from decimal import Decimal
+from typing import Any
+
+from sqlalchemy import Boolean, DateTime, Float, ForeignKey, Index, Integer, JSON, Numeric, String
+from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, mapped_column
from app.models.base import Base, TimestampMixin
+JsonType = JSON().with_variant(JSONB, "postgresql")
+
+
class CreditRecord(Base, TimestampMixin):
__tablename__ = "credit_records"
__table_args__ = (
- # 正式计费幂等键:同一用户同一个业务流水只能写入一次。
- # PostgreSQL/MySQL/SQLite 对 nullable unique 的处理都允许多条 NULL,兼容历史数据。
Index("uq_credit_records_user_biz_key", "user_id", "biz_key", unique=True),
Index("ix_credit_records_user_refund_for_biz_key", "user_id", "refund_for_biz_key"),
Index("ix_credit_records_related_type", "related_id", "type"),
@@ -18,12 +26,13 @@ class CreditRecord(Base, TimestampMixin):
Index("ix_credit_records_user_kind_time", "user_type_snapshot", "frontend_user_kind_snapshot", "created_at"),
Index("ix_credit_records_team_time", "team_id_snapshot", "created_at"),
Index("ix_credit_records_user_kind_team_time", "user_type_snapshot", "frontend_user_kind_snapshot", "team_id_snapshot", "created_at"),
+ Index("ix_credit_records_pricing_status_time", "provider_cost_status", "created_at"),
+ Index("ix_credit_records_pricing_model_time", "engine_provider", "engine_model_name", "pricing_reference_at"),
+ Index("ix_credit_records_pricing_version", "pricing_version_code", "pricing_rule_id"),
)
id: Mapped[str] = mapped_column(String(32), primary_key=True)
- user_id: Mapped[str] = mapped_column(
- String(32), ForeignKey("users.id", ondelete="CASCADE"), index=True
- )
+ user_id: Mapped[str] = mapped_column(String(32), ForeignKey("users.id", ondelete="CASCADE"), index=True)
type: Mapped[str] = mapped_column(String(16), index=True)
amount: Mapped[float] = mapped_column(Float)
balance_after: Mapped[float] = mapped_column(Float)
@@ -59,15 +68,53 @@ class CreditRecord(Base, TimestampMixin):
output_tokens: Mapped[int | None] = mapped_column(Integer, nullable=True)
total_tokens: Mapped[int | None] = mapped_column(Integer, nullable=True)
-
engine_type: Mapped[str | None] = mapped_column(String(16), nullable=True)
engine_id: Mapped[str | None] = mapped_column(String(32), nullable=True, index=True)
engine_name: Mapped[str | None] = mapped_column(String(128), nullable=True)
engine_provider: Mapped[str | None] = mapped_column(String(64), nullable=True)
engine_model_name: Mapped[str | None] = mapped_column(String(128), nullable=True)
+ # 不可变计价版本快照。后续调价不得基于规则表重新计算历史流水。
+ pricing_rule_id: Mapped[str | None] = mapped_column(
+ String(32), ForeignKey("model_pricing_rules.id", ondelete="RESTRICT"), nullable=True, index=True
+ )
+ pricing_version_code: Mapped[str | None] = mapped_column(String(64), nullable=True, index=True)
+ pricing_billing_mode: Mapped[str | None] = mapped_column(String(48), nullable=True)
+ pricing_calculator_version: Mapped[str | None] = mapped_column(String(64), nullable=True)
+ pricing_usage_source: Mapped[str | None] = mapped_column(String(32), nullable=True, index=True)
+ pricing_reference_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True, index=True)
+ pricing_effective_from: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
+ pricing_effective_to: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
+ pricing_snapshot_schema_version: Mapped[int | None] = mapped_column(Integer, nullable=True)
+ pricing_snapshot_hash: Mapped[str | None] = mapped_column(String(64), nullable=True)
+
+ provider_cost_currency: Mapped[str | None] = mapped_column(String(8), nullable=True)
+ provider_cost_amount: Mapped[Decimal | None] = mapped_column(Numeric(20, 8), nullable=True)
+ provider_cost_status: Mapped[str | None] = mapped_column(String(32), nullable=True, index=True)
+ provider_cost_calculated_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
+ provider_cost_finalized_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
+ provider_usage_primary: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True, server_default="true")
+ provider_cost_is_estimated: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default="false")
+
+ # 财务高频聚合字段平铺,避免列表/导出时逐条解析 JSON 或回查任务链。
+ attachment_image_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ attachment_video_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ attachment_audio_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ attachment_total_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ attachment_video_duration_seconds: Mapped[Decimal] = mapped_column(Numeric(20, 6), nullable=False, default=0, server_default="0")
+ attachment_audio_duration_seconds: Mapped[Decimal] = mapped_column(Numeric(20, 6), nullable=False, default=0, server_default="0")
+
+ requested_output_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ generated_image_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ generated_video_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+ generated_total_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+
+ pricing_snapshot_json: Mapped[dict[str, Any] | None] = mapped_column(JsonType, nullable=True)
+ usage_snapshot_json: Mapped[dict[str, Any] | None] = mapped_column(JsonType, nullable=True)
+ attachment_snapshot_json: Mapped[dict[str, Any] | None] = mapped_column(JsonType, nullable=True)
+ generation_snapshot_json: Mapped[dict[str, Any] | None] = mapped_column(JsonType, nullable=True)
+
user_type_snapshot: Mapped[str | None] = mapped_column(String(16), nullable=True, index=True)
frontend_user_kind_snapshot: Mapped[str | None] = mapped_column(String(16), nullable=True, index=True)
- # 交易流水发生时的团队归属冷备快照;用户后续改团队不影响历史流水展示与筛选。
team_id_snapshot: Mapped[str | None] = mapped_column(String(32), nullable=True, index=True)
team_name_snapshot: Mapped[str | None] = mapped_column(String(128), nullable=True)
diff --git a/video-gen-api/app/models/generation_record.py b/video-gen-api/app/models/generation_record.py
index 0aa585eb..c0a2eb64 100644
--- a/video-gen-api/app/models/generation_record.py
+++ b/video-gen-api/app/models/generation_record.py
@@ -35,6 +35,11 @@ class GenerationRecord(Base, TimestampMixin, SoftDeleteMixin):
DateTime(timezone=True), nullable=True
)
seedance_task_id: Mapped[str | None] = mapped_column(String(128), nullable=True)
+ # 生成开始时锁定实际引擎,后续提交、轮询和计价均使用同一快照。
+ engine_id: Mapped[str | None] = mapped_column(String(32), nullable=True, index=True)
+ engine_snapshot_json: Mapped[str | None] = mapped_column(Text, nullable=True)
+ provider_response_json: Mapped[str | None] = mapped_column(Text, nullable=True)
+ current_billing_attempt_no: Mapped[int | None] = mapped_column(Integer, nullable=True, index=True)
credits_cost: Mapped[float] = mapped_column(Float, default=0.0)
text_credits_cost: Mapped[float] = mapped_column(Float, default=0.0)
text_tokens_used: Mapped[int] = mapped_column(Integer, default=0)
diff --git a/video-gen-api/app/models/model_pricing_rule.py b/video-gen-api/app/models/model_pricing_rule.py
new file mode 100644
index 00000000..32022a01
--- /dev/null
+++ b/video-gen-api/app/models/model_pricing_rule.py
@@ -0,0 +1,63 @@
+from __future__ import annotations
+
+from datetime import datetime
+from typing import Any
+
+from sqlalchemy import CheckConstraint, DateTime, Index, Integer, JSON, String, Text
+from sqlalchemy.dialects.postgresql import JSONB
+from sqlalchemy.orm import Mapped, mapped_column
+
+from app.models.base import Base, TimestampMixin
+
+
+JsonType = JSON().with_variant(JSONB, "postgresql")
+
+
+class ModelPricingRule(Base, TimestampMixin):
+ __tablename__ = "model_pricing_rules"
+ __table_args__ = (
+ Index(
+ "uq_model_pricing_rules_provider_model_version",
+ "provider",
+ "model_name",
+ "version_code",
+ unique=True,
+ ),
+ Index(
+ "ix_model_pricing_rules_resolve",
+ "provider",
+ "model_name",
+ "publish_status",
+ "effective_from",
+ "effective_to",
+ ),
+ Index("ix_model_pricing_rules_category_status", "model_category", "publish_status"),
+ CheckConstraint(
+ "effective_to IS NULL OR effective_to >= effective_from",
+ name="ck_model_pricing_rules_effective_range",
+ ),
+ )
+
+ id: Mapped[str] = mapped_column(String(32), primary_key=True)
+ provider: Mapped[str] = mapped_column(String(32), nullable=False, index=True)
+ model_name: Mapped[str] = mapped_column(String(128), nullable=False, index=True)
+ model_category: Mapped[str] = mapped_column(String(16), nullable=False, index=True)
+ billing_mode: Mapped[str] = mapped_column(String(48), nullable=False, index=True)
+ calculator_version: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
+ version_code: Mapped[str] = mapped_column(String(64), nullable=False)
+
+ effective_from: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, index=True)
+ effective_to: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True, index=True)
+ publish_status: Mapped[str] = mapped_column(String(16), nullable=False, default="draft", index=True)
+
+ currency: Mapped[str] = mapped_column(String(8), nullable=False, default="CNY")
+ rule_schema_version: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
+ # 规则 JSON 统一使用“构建新 dict 后整体赋值”,禁止嵌套原地修改。
+ rule_json: Mapped[dict[str, Any]] = mapped_column(JsonType, nullable=False, default=dict)
+ rule_content_hash: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
+
+ source_url: Mapped[str | None] = mapped_column(Text, nullable=True)
+ source_updated_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
+ remark: Mapped[str | None] = mapped_column(Text, nullable=True)
+ created_by: Mapped[str | None] = mapped_column(String(32), nullable=True)
+ updated_by: Mapped[str | None] = mapped_column(String(32), nullable=True)
diff --git a/video-gen-api/app/schemas/admin.py b/video-gen-api/app/schemas/admin.py
index 429864b9..728da38b 100644
--- a/video-gen-api/app/schemas/admin.py
+++ b/video-gen-api/app/schemas/admin.py
@@ -135,6 +135,20 @@ class AdminCreditRecordSummaryOut(BaseModel):
total_tokens: int = 0
input_tokens: int = 0
output_tokens: int = 0
+ attachment_image_count: int = 0
+ attachment_video_count: int = 0
+ attachment_audio_count: int = 0
+ attachment_total_count: int = 0
+ generated_image_count: int = 0
+ generated_video_count: int = 0
+ generated_total_count: int = 0
+ provider_cost_calculated_total: str = "0.00000000"
+ provider_cost_estimated_total: str = "0.00000000"
+ provider_cost_combined_total: str = "0.00000000"
+ provider_cost_total: str = "0.00000000"
+ provider_cost_pending_count: int = 0
+ provider_cost_estimated_count: int = 0
+ provider_cost_abnormal_count: int = 0
class AdminCreditRecordOut(BaseModel):
@@ -187,6 +201,38 @@ class AdminCreditRecordOut(BaseModel):
engine_name: str | None = None
engine_provider: str | None = None
engine_model_name: str | None = None
+ pricing_rule_id: str | None = None
+ pricing_version_code: str | None = None
+ pricing_billing_mode: str | None = None
+ pricing_billing_mode_label: str | None = None
+ pricing_calculator_version: str | None = None
+ pricing_usage_source: str | None = None
+ pricing_reference_at: str | None = None
+ pricing_effective_from: str | None = None
+ pricing_effective_to: str | None = None
+ pricing_snapshot_hash: str | None = None
+ provider_cost_currency: str = "CNY"
+ provider_cost_amount: str = "0.00000000"
+ provider_cost_status: str | None = None
+ provider_cost_status_label: str | None = None
+ provider_cost_calculated_at: str | None = None
+ provider_cost_finalized_at: str | None = None
+ provider_cost_is_estimated: bool = False
+ provider_usage_primary: bool = False
+ attachment_image_count: int = 0
+ attachment_video_count: int = 0
+ attachment_audio_count: int = 0
+ attachment_total_count: int = 0
+ attachment_video_duration_seconds: str = "0.000000"
+ attachment_audio_duration_seconds: str = "0.000000"
+ requested_output_count: int = 0
+ generated_image_count: int = 0
+ generated_video_count: int = 0
+ generated_total_count: int = 0
+ pricing_snapshot_json: dict | None = None
+ usage_snapshot_json: dict | None = None
+ attachment_snapshot_json: dict | None = None
+ generation_snapshot_json: dict | None = None
created_at: str | None = None
diff --git a/video-gen-api/app/schemas/model_pricing.py b/video-gen-api/app/schemas/model_pricing.py
new file mode 100644
index 00000000..fc8cf58c
--- /dev/null
+++ b/video-gen-api/app/schemas/model_pricing.py
@@ -0,0 +1,86 @@
+from __future__ import annotations
+
+from datetime import datetime
+from typing import Any
+
+from pydantic import BaseModel, Field, model_validator
+
+
+CALCULATOR_PATTERN = "^(text_token_tiered_v1|image_per_output_v1|image_input_output_tiered_v1|video_pixel_token_v1)$"
+
+
+class ModelPricingRuleBase(BaseModel):
+ provider: str = Field(default="volcengine", max_length=32)
+ model_name: str = Field(..., min_length=1, max_length=128)
+ model_category: str = Field(..., pattern="^(text|image|video)$")
+ billing_mode: str = Field(..., pattern="^(text_token_tiered|image_per_output|image_input_output_tiered|video_token_rate)$")
+ calculator_version: str = Field(..., pattern=CALCULATOR_PATTERN)
+ version_code: str = Field(..., min_length=1, max_length=64)
+ effective_from: datetime
+ effective_to: datetime | None = None
+ currency: str = Field(default="CNY", min_length=3, max_length=8)
+ rule_schema_version: int = Field(default=1, ge=1, le=100)
+ rule_json: dict[str, Any]
+ source_url: str | None = None
+ source_updated_at: datetime | None = None
+ remark: str | None = None
+
+ @model_validator(mode="after")
+ def validate_time_range(self):
+ if self.effective_to and self.effective_to <= self.effective_from:
+ raise ValueError("effective_to 必须晚于 effective_from")
+ return self
+
+
+class ModelPricingRuleCreate(ModelPricingRuleBase):
+ pass
+
+
+class ModelPricingRuleUpdate(BaseModel):
+ provider: str | None = Field(None, max_length=32)
+ model_name: str | None = Field(None, min_length=1, max_length=128)
+ model_category: str | None = Field(None, pattern="^(text|image|video)$")
+ billing_mode: str | None = Field(None, pattern="^(text_token_tiered|image_per_output|image_input_output_tiered|video_token_rate)$")
+ calculator_version: str | None = Field(None, pattern=CALCULATOR_PATTERN)
+ version_code: str | None = Field(None, min_length=1, max_length=64)
+ effective_from: datetime | None = None
+ effective_to: datetime | None = None
+ currency: str | None = Field(None, min_length=3, max_length=8)
+ rule_schema_version: int | None = Field(None, ge=1, le=100)
+ rule_json: dict[str, Any] | None = None
+ source_url: str | None = None
+ source_updated_at: datetime | None = None
+ remark: str | None = None
+
+
+class ModelPricingRuleOut(ModelPricingRuleBase):
+ id: str
+ publish_status: str
+ rule_content_hash: str
+ referenced_count: int = 0
+ created_by: str | None = None
+ updated_by: str | None = None
+ created_at: datetime | None = None
+ updated_at: datetime | None = None
+
+
+class ModelPricingRuleListOut(BaseModel):
+ items: list[ModelPricingRuleOut]
+ total: int
+
+
+class ModelPricingPreviewRequest(BaseModel):
+ billing_mode: str
+ calculator_version: str = Field(..., pattern=CALCULATOR_PATTERN)
+ rule_json: dict[str, Any]
+ usage: dict[str, Any]
+ currency: str = "CNY"
+
+
+class ModelPricingPreviewOut(BaseModel):
+ amount: str
+ currency: str
+ is_estimated: bool
+ selected_rate: str | None = None
+ usage_source: str
+ breakdown: dict[str, Any]
diff --git a/video-gen-api/app/services/admin_credit_record_service.py b/video-gen-api/app/services/admin_credit_record_service.py
index 33e9deac..f859f6cd 100644
--- a/video-gen-api/app/services/admin_credit_record_service.py
+++ b/video-gen-api/app/services/admin_credit_record_service.py
@@ -1,6 +1,7 @@
from __future__ import annotations
from datetime import datetime, timezone, timedelta
+from decimal import Decimal
from typing import Any
from sqlalchemy import and_, case, distinct, func, or_, select
@@ -16,6 +17,10 @@ from app.enums.credit_record import (
CREDIT_RECORD_TYPE_LABELS,
CreditRecordSubject,
)
+from app.enums.model_pricing import (
+ MODEL_PRICING_BILLING_MODE_LABELS,
+ PROVIDER_COST_STATUS_LABELS,
+)
from app.enums.user import FRONTEND_USER_KIND_LABELS, USER_TYPE_LABELS, UserType
from app.enums.team import TEAM_UNASSIGNED_VALUE
from app.models.chat_generation_task import ChatGenerationTask
@@ -34,19 +39,16 @@ CST = timezone(timedelta(hours=8))
def _iso(dt: Any) -> str | None:
if dt is None:
return None
-
if isinstance(dt, datetime):
if dt.tzinfo is None:
- # 数据库已经按东八区业务时间返回但丢了 tzinfo 时,不再额外 +8
return dt.replace(tzinfo=CST).isoformat()
-
return dt.astimezone(CST).isoformat()
-
try:
return dt.isoformat()
except Exception:
return str(dt)
+
def _round2(value: Any) -> float:
try:
return round(float(value or 0), 2)
@@ -54,11 +56,19 @@ def _round2(value: Any) -> float:
return 0.0
+def _decimal_string(value: Any, scale: int = 8) -> str:
+ try:
+ quant = Decimal("1").scaleb(-scale)
+ return format(Decimal(str(value or 0)).quantize(quant), "f")
+ except Exception:
+ return format(Decimal("0").quantize(Decimal("1").scaleb(-scale)), "f")
+
+
def _as_date_start(value: str | None) -> datetime | None:
if not value:
return None
try:
- return datetime.strptime(value, "%Y-%m-%d")
+ return datetime.strptime(value, "%Y-%m-%d").replace(tzinfo=CST).astimezone(timezone.utc)
except Exception:
return None
@@ -67,7 +77,11 @@ def _as_date_end(value: str | None) -> datetime | None:
if not value:
return None
try:
- return datetime.strptime(value, "%Y-%m-%d").replace(hour=23, minute=59, second=59, microsecond=999999)
+ return (
+ datetime.strptime(value, "%Y-%m-%d")
+ .replace(tzinfo=CST, hour=23, minute=59, second=59, microsecond=999999)
+ .astimezone(timezone.utc)
+ )
except Exception:
return None
@@ -92,6 +106,12 @@ def _build_filters(
source_module: str | None = None,
source_step_code: str | None = None,
billing_scene: str | None = None,
+ engine_provider: str | None = None,
+ engine_model_name: str | None = None,
+ pricing_version_code: str | None = None,
+ provider_cost_status: str | None = None,
+ provider_cost_is_estimated: bool | None = None,
+ has_attachment: bool | None = None,
start_date: str | None = None,
end_date: str | None = None,
) -> list[Any]:
@@ -107,10 +127,7 @@ def _build_filters(
filters.append(CreditRecord.frontend_user_kind_snapshot == frontend_user_kind)
filters.append(CreditRecord.user_type_snapshot == UserType.FRONTEND.value)
if team_id:
- if team_id == TEAM_UNASSIGNED_VALUE:
- filters.append(CreditRecord.team_id_snapshot.is_(None))
- else:
- filters.append(CreditRecord.team_id_snapshot == team_id)
+ filters.append(CreditRecord.team_id_snapshot.is_(None) if team_id == TEAM_UNASSIGNED_VALUE else CreditRecord.team_id_snapshot == team_id)
if record_type:
filters.append(CreditRecord.type == record_type)
if credit_subject:
@@ -125,6 +142,18 @@ def _build_filters(
filters.append(CreditRecord.source_step_code == source_step_code)
if billing_scene:
filters.append(CreditRecord.billing_scene == billing_scene)
+ if engine_provider:
+ filters.append(CreditRecord.engine_provider == engine_provider)
+ if engine_model_name:
+ filters.append(CreditRecord.engine_model_name.ilike(f"%{engine_model_name.strip()}%"))
+ if pricing_version_code:
+ filters.append(CreditRecord.pricing_version_code == pricing_version_code)
+ if provider_cost_status:
+ filters.append(CreditRecord.provider_cost_status == provider_cost_status)
+ if provider_cost_is_estimated is not None:
+ filters.append(CreditRecord.provider_cost_is_estimated.is_(provider_cost_is_estimated))
+ if has_attachment is not None:
+ filters.append(CreditRecord.attachment_total_count > 0 if has_attachment else CreditRecord.attachment_total_count == 0)
start = _as_date_start(start_date)
end = _as_date_end(end_date)
if start:
@@ -139,7 +168,6 @@ async def _load_deleted_map(db: AsyncSession, records: list[CreditRecord]) -> di
for record in records:
if record.owner_type and record.owner_id:
grouped.setdefault(record.owner_type, set()).add(record.owner_id)
-
model_map: dict[str, Any] = {
"chat_generation_task": ChatGenerationTask,
"generation_record": GenerationRecord,
@@ -166,7 +194,6 @@ def _record_to_item(record: CreditRecord, user: User | None, deleted_map: dict[t
owner_deleted_at = None
if record.owner_type and record.owner_id:
owner_deleted, owner_deleted_at = deleted_map.get((record.owner_type, record.owner_id), (False, None))
-
user_type = record.user_type_snapshot or (user.user_type if user else None)
frontend_kind = record.frontend_user_kind_snapshot or (getattr(user, "frontend_user_kind", None) if user else None)
return {
@@ -219,6 +246,38 @@ def _record_to_item(record: CreditRecord, user: User | None, deleted_map: dict[t
"engine_name": record.engine_name,
"engine_provider": record.engine_provider,
"engine_model_name": record.engine_model_name,
+ "pricing_rule_id": record.pricing_rule_id,
+ "pricing_version_code": record.pricing_version_code,
+ "pricing_billing_mode": record.pricing_billing_mode,
+ "pricing_billing_mode_label": _label(MODEL_PRICING_BILLING_MODE_LABELS, record.pricing_billing_mode),
+ "pricing_calculator_version": record.pricing_calculator_version,
+ "pricing_usage_source": record.pricing_usage_source,
+ "pricing_reference_at": _iso(record.pricing_reference_at),
+ "pricing_effective_from": _iso(record.pricing_effective_from),
+ "pricing_effective_to": _iso(record.pricing_effective_to),
+ "pricing_snapshot_hash": record.pricing_snapshot_hash,
+ "provider_cost_currency": record.provider_cost_currency or "CNY",
+ "provider_cost_amount": _decimal_string(record.provider_cost_amount, 8),
+ "provider_cost_status": record.provider_cost_status,
+ "provider_cost_status_label": _label(PROVIDER_COST_STATUS_LABELS, record.provider_cost_status),
+ "provider_cost_calculated_at": _iso(record.provider_cost_calculated_at),
+ "provider_cost_finalized_at": _iso(record.provider_cost_finalized_at),
+ "provider_cost_is_estimated": bool(record.provider_cost_is_estimated),
+ "provider_usage_primary": bool(record.provider_usage_primary),
+ "attachment_image_count": int(record.attachment_image_count or 0),
+ "attachment_video_count": int(record.attachment_video_count or 0),
+ "attachment_audio_count": int(record.attachment_audio_count or 0),
+ "attachment_total_count": int(record.attachment_total_count or 0),
+ "attachment_video_duration_seconds": _decimal_string(record.attachment_video_duration_seconds, 6),
+ "attachment_audio_duration_seconds": _decimal_string(record.attachment_audio_duration_seconds, 6),
+ "requested_output_count": int(record.requested_output_count or 0),
+ "generated_image_count": int(record.generated_image_count or 0),
+ "generated_video_count": int(record.generated_video_count or 0),
+ "generated_total_count": int(record.generated_total_count or 0),
+ "pricing_snapshot_json": record.pricing_snapshot_json,
+ "usage_snapshot_json": record.usage_snapshot_json,
+ "attachment_snapshot_json": record.attachment_snapshot_json,
+ "generation_snapshot_json": record.generation_snapshot_json,
"created_at": _iso(record.created_at),
}
@@ -240,6 +299,12 @@ async def list_admin_credit_records(
source_module: str | None = None,
source_step_code: str | None = None,
billing_scene: str | None = None,
+ engine_provider: str | None = None,
+ engine_model_name: str | None = None,
+ pricing_version_code: str | None = None,
+ provider_cost_status: str | None = None,
+ provider_cost_is_estimated: bool | None = None,
+ has_attachment: bool | None = None,
start_date: str | None = None,
end_date: str | None = None,
) -> dict[str, Any]:
@@ -258,6 +323,12 @@ async def list_admin_credit_records(
source_module=source_module,
source_step_code=source_step_code,
billing_scene=billing_scene,
+ engine_provider=engine_provider,
+ engine_model_name=engine_model_name,
+ pricing_version_code=pricing_version_code,
+ provider_cost_status=provider_cost_status,
+ provider_cost_is_estimated=provider_cost_is_estimated,
+ has_attachment=has_attachment,
start_date=start_date,
end_date=end_date,
)
@@ -269,52 +340,81 @@ async def list_admin_credit_records(
base_query = base_query.where(where_clause)
count_query = count_query.where(where_clause)
total = (await db.execute(count_query)).scalar() or 0
-
- result = await db.execute(
- base_query.order_by(CreditRecord.created_at.desc(), CreditRecord.id.desc())
- .offset((page - 1) * page_size)
- .limit(page_size)
- )
- rows = result.all()
+ rows = (
+ await db.execute(
+ base_query.order_by(CreditRecord.created_at.desc(), CreditRecord.id.desc())
+ .offset((page - 1) * page_size)
+ .limit(page_size)
+ )
+ ).all()
records = [row[0] for row in rows]
deleted_map = await _load_deleted_map(db, records)
items = [_record_to_item(record, user, deleted_map) for record, user in rows]
+ media_consume = and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.type == "consume")
summary_query = select(
- func.coalesce(func.sum(case((CreditRecord.type == "recharge", CreditRecord.amount), else_=0)), 0),
- func.coalesce(func.sum(case((CreditRecord.type.in_(["consume", "team_internal"]), func.abs(CreditRecord.amount)), else_=0)), 0),
- func.coalesce(func.sum(case((CreditRecord.type == "refund", CreditRecord.amount), else_=0)), 0),
- func.count(CreditRecord.id),
- func.count(distinct(case((and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.type == "consume"), func.concat(CreditRecord.owner_type, ":", CreditRecord.owner_id)), else_=None))),
- func.count(case((and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.type == "consume"), 1), else_=None)),
- func.count(distinct(case((and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.media_type == "image", CreditRecord.type == "consume"), func.concat(CreditRecord.owner_type, ":", CreditRecord.owner_id)), else_=None))),
- func.count(distinct(case((and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.media_type == "video", CreditRecord.type == "consume"), func.concat(CreditRecord.owner_type, ":", CreditRecord.owner_id)), else_=None))),
- func.coalesce(func.sum(case((and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.media_type == "image", CreditRecord.type == "consume"), func.abs(CreditRecord.amount)), else_=0)), 0),
- func.coalesce(func.sum(case((and_(CreditRecord.credit_subject == CreditRecordSubject.MEDIA.value, CreditRecord.media_type == "video", CreditRecord.type == "consume"), func.abs(CreditRecord.amount)), else_=0)), 0),
- func.coalesce(func.sum(case((and_(CreditRecord.credit_subject == CreditRecordSubject.TEXT.value, CreditRecord.type == "consume"), func.abs(CreditRecord.amount)), else_=0)), 0),
- func.coalesce(func.sum(case((and_(CreditRecord.credit_subject == CreditRecordSubject.ANALYSIS.value, CreditRecord.type == "consume"), func.abs(CreditRecord.amount)), else_=0)), 0),
- func.coalesce(func.sum(CreditRecord.total_tokens), 0),
- func.coalesce(func.sum(CreditRecord.input_tokens), 0),
- func.coalesce(func.sum(CreditRecord.output_tokens), 0),
+ func.coalesce(func.sum(case((CreditRecord.type == "recharge", CreditRecord.amount), else_=0)), 0).label("total_recharge"),
+ func.coalesce(func.sum(case((CreditRecord.type.in_(["consume", "team_internal"]), func.abs(CreditRecord.amount)), else_=0)), 0).label("total_consume"),
+ func.coalesce(func.sum(case((CreditRecord.type == "refund", CreditRecord.amount), else_=0)), 0).label("total_refund"),
+ func.count(CreditRecord.id).label("transaction_count"),
+ func.count(distinct(case((media_consume, func.concat(CreditRecord.owner_type, ":", CreditRecord.owner_id)), else_=None))).label("generation_count"),
+ func.count(case((media_consume, 1), else_=None)).label("generation_attempt_count"),
+ func.count(distinct(case((and_(media_consume, CreditRecord.media_type == "image"), func.concat(CreditRecord.owner_type, ":", CreditRecord.owner_id)), else_=None))).label("image_generation_count"),
+ func.count(distinct(case((and_(media_consume, CreditRecord.media_type == "video"), func.concat(CreditRecord.owner_type, ":", CreditRecord.owner_id)), else_=None))).label("video_generation_count"),
+ func.coalesce(func.sum(case((and_(media_consume, CreditRecord.media_type == "image"), func.abs(CreditRecord.amount)), else_=0)), 0).label("image_consume"),
+ func.coalesce(func.sum(case((and_(media_consume, CreditRecord.media_type == "video"), func.abs(CreditRecord.amount)), else_=0)), 0).label("video_consume"),
+ func.coalesce(func.sum(case((and_(CreditRecord.credit_subject == CreditRecordSubject.TEXT.value, CreditRecord.type == "consume"), func.abs(CreditRecord.amount)), else_=0)), 0).label("text_consume"),
+ func.coalesce(func.sum(case((and_(CreditRecord.credit_subject == CreditRecordSubject.ANALYSIS.value, CreditRecord.type == "consume"), func.abs(CreditRecord.amount)), else_=0)), 0).label("analysis_consume"),
+ func.coalesce(func.sum(case((and_(CreditRecord.type == "consume", CreditRecord.provider_usage_primary.is_(True)), CreditRecord.total_tokens), else_=0)), 0).label("total_tokens"),
+ func.coalesce(func.sum(case((and_(CreditRecord.type == "consume", CreditRecord.provider_usage_primary.is_(True)), CreditRecord.input_tokens), else_=0)), 0).label("input_tokens"),
+ func.coalesce(func.sum(case((and_(CreditRecord.type == "consume", CreditRecord.provider_usage_primary.is_(True)), CreditRecord.output_tokens), else_=0)), 0).label("output_tokens"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.attachment_image_count), else_=0)), 0).label("attachment_image_count"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.attachment_video_count), else_=0)), 0).label("attachment_video_count"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.attachment_audio_count), else_=0)), 0).label("attachment_audio_count"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.attachment_total_count), else_=0)), 0).label("attachment_total_count"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.generated_image_count), else_=0)), 0).label("generated_image_count"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.generated_video_count), else_=0)), 0).label("generated_video_count"),
+ func.coalesce(func.sum(case((CreditRecord.type == "consume", CreditRecord.generated_total_count), else_=0)), 0).label("generated_total_count"),
+ func.coalesce(func.sum(case((and_(CreditRecord.type == "consume", CreditRecord.provider_cost_status == "calculated"), CreditRecord.provider_cost_amount), else_=0)), 0).label("provider_cost_calculated_total"),
+ func.coalesce(func.sum(case((and_(CreditRecord.type == "consume", CreditRecord.provider_cost_status == "estimated"), CreditRecord.provider_cost_amount), else_=0)), 0).label("provider_cost_estimated_total"),
+ func.coalesce(func.sum(case((and_(CreditRecord.type == "consume", CreditRecord.provider_cost_status.in_(["calculated", "estimated"])), CreditRecord.provider_cost_amount), else_=0)), 0).label("provider_cost_combined_total"),
+ func.count(case((and_(CreditRecord.type == "consume", CreditRecord.provider_cost_status == "pending"), 1), else_=None)).label("provider_cost_pending_count"),
+ func.count(case((and_(CreditRecord.type == "consume", CreditRecord.provider_cost_status == "estimated"), 1), else_=None)).label("provider_cost_estimated_count"),
+ func.count(case((and_(CreditRecord.type == "consume", CreditRecord.provider_cost_status.in_(["unmatched_rule", "usage_missing", "error", "historical_price_unavailable", "historical_engine_unavailable", "provider_result_uncertain"])), 1), else_=None)).label("provider_cost_abnormal_count"),
).select_from(CreditRecord).join(User, CreditRecord.user_id == User.id, isouter=True)
if where_clause is not None:
summary_query = summary_query.where(where_clause)
- s = (await db.execute(summary_query)).one()
+ s = (await db.execute(summary_query)).one()._mapping
summary = {
- "total_recharge": _round2(s[0]),
- "total_consume": _round2(s[1]),
- "total_refund": _round2(s[2]),
- "transaction_count": int(s[3] or 0),
- "generation_count": int(s[4] or 0),
- "generation_attempt_count": int(s[5] or 0),
- "image_generation_count": int(s[6] or 0),
- "video_generation_count": int(s[7] or 0),
- "image_consume": _round2(s[8]),
- "video_consume": _round2(s[9]),
- "text_consume": _round2(s[10]),
- "analysis_consume": _round2(s[11]),
- "total_tokens": int(s[12] or 0),
- "input_tokens": int(s[13] or 0),
- "output_tokens": int(s[14] or 0),
+ "total_recharge": _round2(s["total_recharge"]),
+ "total_consume": _round2(s["total_consume"]),
+ "total_refund": _round2(s["total_refund"]),
+ "transaction_count": int(s["transaction_count"] or 0),
+ "generation_count": int(s["generation_count"] or 0),
+ "generation_attempt_count": int(s["generation_attempt_count"] or 0),
+ "image_generation_count": int(s["image_generation_count"] or 0),
+ "video_generation_count": int(s["video_generation_count"] or 0),
+ "image_consume": _round2(s["image_consume"]),
+ "video_consume": _round2(s["video_consume"]),
+ "text_consume": _round2(s["text_consume"]),
+ "analysis_consume": _round2(s["analysis_consume"]),
+ "total_tokens": int(s["total_tokens"] or 0),
+ "input_tokens": int(s["input_tokens"] or 0),
+ "output_tokens": int(s["output_tokens"] or 0),
+ "attachment_image_count": int(s["attachment_image_count"] or 0),
+ "attachment_video_count": int(s["attachment_video_count"] or 0),
+ "attachment_audio_count": int(s["attachment_audio_count"] or 0),
+ "attachment_total_count": int(s["attachment_total_count"] or 0),
+ "generated_image_count": int(s["generated_image_count"] or 0),
+ "generated_video_count": int(s["generated_video_count"] or 0),
+ "generated_total_count": int(s["generated_total_count"] or 0),
+ "provider_cost_calculated_total": _decimal_string(s["provider_cost_calculated_total"], 8),
+ "provider_cost_estimated_total": _decimal_string(s["provider_cost_estimated_total"], 8),
+ "provider_cost_combined_total": _decimal_string(s["provider_cost_combined_total"], 8),
+ # 兼容旧前端字段,值等于实际+估算;新页面不得标记成“已核算成本”。
+ "provider_cost_total": _decimal_string(s["provider_cost_combined_total"], 8),
+ "provider_cost_pending_count": int(s["provider_cost_pending_count"] or 0),
+ "provider_cost_estimated_count": int(s["provider_cost_estimated_count"] or 0),
+ "provider_cost_abnormal_count": int(s["provider_cost_abnormal_count"] or 0),
}
- return {"items": items, "total": total, "summary": summary}
+ return {"items": items, "total": int(total), "summary": summary}
diff --git a/video-gen-api/app/services/credit_record_meta_service.py b/video-gen-api/app/services/credit_record_meta_service.py
index 624bb309..307866b5 100644
--- a/video-gen-api/app/services/credit_record_meta_service.py
+++ b/video-gen-api/app/services/credit_record_meta_service.py
@@ -1,6 +1,8 @@
from __future__ import annotations
from dataclasses import asdict, dataclass
+from datetime import datetime
+from decimal import Decimal
from typing import Any, Mapping
from sqlalchemy import select
@@ -22,6 +24,8 @@ from app.models.module_generation_step import ModuleGenerationStep
from app.models.team import Team
from app.models.user import User
from app.models.video_engine import VideoEngine
+from app.services.model_pricing.attachment_snapshot_service import build_attachment_snapshot, parse_dimensions
+from app.services.model_pricing.snapshot_service import build_refund_pricing_snapshot, enrich_credit_meta_with_pricing
@dataclass(slots=True)
@@ -56,6 +60,40 @@ class CreditRecordMeta:
engine_provider: str | None = None
engine_model_name: str | None = None
+ pricing_rule_id: str | None = None
+ pricing_version_code: str | None = None
+ pricing_billing_mode: str | None = None
+ pricing_calculator_version: str | None = None
+ pricing_usage_source: str | None = None
+ pricing_reference_at: datetime | None = None
+ pricing_effective_from: datetime | None = None
+ pricing_effective_to: datetime | None = None
+ pricing_snapshot_schema_version: int | None = None
+ pricing_snapshot_hash: str | None = None
+ provider_cost_currency: str | None = None
+ provider_cost_amount: Decimal | None = None
+ provider_cost_status: str | None = None
+ provider_cost_calculated_at: datetime | None = None
+ provider_cost_finalized_at: datetime | None = None
+ provider_usage_primary: bool | None = None
+ provider_cost_is_estimated: bool | None = None
+
+ attachment_image_count: int | None = None
+ attachment_video_count: int | None = None
+ attachment_audio_count: int | None = None
+ attachment_total_count: int | None = None
+ attachment_video_duration_seconds: Decimal | None = None
+ attachment_audio_duration_seconds: Decimal | None = None
+ requested_output_count: int | None = None
+ generated_image_count: int | None = None
+ generated_video_count: int | None = None
+ generated_total_count: int | None = None
+
+ pricing_snapshot_json: dict[str, Any] | None = None
+ usage_snapshot_json: dict[str, Any] | None = None
+ attachment_snapshot_json: dict[str, Any] | None = None
+ generation_snapshot_json: dict[str, Any] | None = None
+
user_type_snapshot: str | None = None
frontend_user_kind_snapshot: str | None = None
team_id_snapshot: str | None = None
@@ -130,14 +168,29 @@ async def _apply_model_snapshot(db: AsyncSession, meta: CreditRecordMeta, usage:
async def get_engine_snapshot(db: AsyncSession, *, gen_type: str, engine_id: str | None) -> dict[str, str | None]:
- if not engine_id:
- return {"engine_type": (gen_type or None)}
+ """锁定本次媒体扣费实际使用的引擎快照。
+
+ GenerationRecord 旧链路没有持久化 engine_id;此时必须与图片/视频生成服务保持一致,
+ 选择当前启用且 priority 最高的引擎。这样价格版本在请求扣费时就被锁定,不能等任务
+ 完成后再按当时的活动引擎或最新价格回算。
+ """
gen_type = (gen_type or "").lower().strip()
if gen_type == "image":
- result = await db.execute(select(ImageEngine).where(ImageEngine.id == engine_id).limit(1))
+ query = select(ImageEngine)
+ if engine_id:
+ query = query.where(ImageEngine.id == engine_id)
+ else:
+ query = query.where(ImageEngine.is_active == True).order_by(ImageEngine.priority.desc())
+ elif gen_type == "video":
+ query = select(VideoEngine)
+ if engine_id:
+ query = query.where(VideoEngine.id == engine_id)
+ else:
+ query = query.where(VideoEngine.is_active == True).order_by(VideoEngine.priority.desc())
else:
- result = await db.execute(select(VideoEngine).where(VideoEngine.id == engine_id).limit(1))
- engine = result.scalar_one_or_none()
+ return {"engine_type": gen_type or None, "engine_id": engine_id}
+
+ engine = (await db.execute(query.limit(1))).scalar_one_or_none()
if not engine:
return {"engine_type": gen_type or None, "engine_id": engine_id}
return {
@@ -222,6 +275,17 @@ async def build_generation_media_meta(
source_step_id: str | None = None,
source_step_code: str | None = None,
billing_scene: str | None = None,
+ media_references: Any = None,
+ image_size: str | None = None,
+ image_px: str | None = None,
+ aspect_ratio: str | None = None,
+ duration: int | float | None = None,
+ resolution: str | None = None,
+ fps: int | float | None = None,
+ generate_audio: bool | None = None,
+ inference_mode: str | None = None,
+ input_video_duration: float | None = None,
+ requested_output_count: int = 1,
) -> CreditRecordMeta:
media_type = (gen_type or "").lower().strip() or None
if source_module is None:
@@ -244,7 +308,58 @@ async def build_generation_media_meta(
)
for key, value in (await get_engine_snapshot(db, gen_type=media_type or "", engine_id=engine_id)).items():
setattr(meta, key, value)
- return meta
+ requested_count = max(1, _safe_int(requested_output_count, 1))
+ attachment_snapshot, attachment_counts = build_attachment_snapshot(media_references)
+ for key, value in attachment_counts.items():
+ setattr(meta, key, value)
+ meta.attachment_snapshot_json = attachment_snapshot
+
+ width, height = parse_dimensions(image_px, image_size)
+ dimension_source = "request_explicit" if width > 0 and height > 0 else "unavailable"
+ meta.requested_output_count = requested_count
+ meta.generated_image_count = 0
+ meta.generated_video_count = 0
+ meta.generated_total_count = 0
+ meta.generation_snapshot_json = {
+ "schema_version": 1,
+ "gen_type": media_type,
+ "requested_output_count": requested_count,
+ "generated_image_count": 0,
+ "generated_video_count": 0,
+ "generated_total_count": 0,
+ "image_size": image_size,
+ "image_px": image_px,
+ "duration_seconds": float(duration or 0) or None,
+ "resolution": resolution,
+ "aspect_ratio": aspect_ratio,
+ "width": width or None,
+ "height": height or None,
+ "dimension_source": dimension_source,
+ "fps": float(fps or 0) or None,
+ "generate_audio": bool(generate_audio),
+ "inference_mode": inference_mode or "online",
+ "stage": "request_locked",
+ }
+ request_usage = {
+ "resolution": str(resolution or "").lower(),
+ "aspect_ratio": str(aspect_ratio or ""),
+ "output_width": width,
+ "output_height": height,
+ "dimension_source": dimension_source,
+ "output_video_duration_seconds": float(duration or 0),
+ "input_video_duration_seconds": float(input_video_duration or attachment_counts["attachment_video_duration_seconds"] or 0),
+ "input_audio_duration_seconds": float(attachment_counts["attachment_audio_duration_seconds"] or 0),
+ "provider_input_image_count": attachment_counts.get("provider_input_image_count", 0),
+ "input_image_count": attachment_counts.get("provider_input_image_count", 0),
+ "has_input_video": bool(attachment_counts.get("provider_input_video_count", 0) or input_video_duration),
+ "requested_output_count": requested_count,
+ "successful_output_count": 0,
+ "fps": float(fps or 0),
+ "generate_audio": bool(generate_audio),
+ "inference_mode": inference_mode or "online",
+ "usage_stage": "request_locked",
+ }
+ return await enrich_credit_meta_with_pricing(db, meta=meta, usage=request_usage, final=False)
async def build_generation_record_prompt_meta(
@@ -274,7 +389,8 @@ async def build_generation_record_prompt_meta(
output_tokens=_safe_int(usage.get("output_tokens")),
total_tokens=_safe_int(usage.get("total_tokens"), _safe_int(usage.get("input_tokens")) + _safe_int(usage.get("output_tokens"))),
)
- return await _apply_model_snapshot(db, meta, usage)
+ meta = await _apply_model_snapshot(db, meta, usage)
+ return await enrich_credit_meta_with_pricing(db, meta=meta, usage=usage, final=True)
async def build_module_step_prompt_meta(
@@ -305,7 +421,8 @@ async def build_module_step_prompt_meta(
output_tokens=_safe_int(usage.get("output_tokens")),
total_tokens=_safe_int(usage.get("total_tokens"), _safe_int(usage.get("input_tokens")) + _safe_int(usage.get("output_tokens"))),
)
- return await _apply_model_snapshot(db, meta, usage)
+ meta = await _apply_model_snapshot(db, meta, usage)
+ return await enrich_credit_meta_with_pricing(db, meta=meta, usage=usage, final=True)
async def build_shot_video_analysis_meta(
@@ -337,10 +454,12 @@ async def build_shot_video_analysis_meta(
output_tokens=_safe_int(usage.get("output_tokens")),
total_tokens=_safe_int(usage.get("total_tokens"), _safe_int(usage.get("input_tokens")) + _safe_int(usage.get("output_tokens"))),
)
- return await _apply_model_snapshot(db, meta, usage)
+ meta = await _apply_model_snapshot(db, meta, usage)
+ return await enrich_credit_meta_with_pricing(db, meta=meta, usage=usage, final=True)
def build_refund_meta_from_charge(charge: Any, *, attempt_no: int | None = None) -> CreditRecordMeta:
+ pricing_snapshot, pricing_hash = build_refund_pricing_snapshot(charge)
return CreditRecordMeta(
owner_type=getattr(charge, "owner_type", None),
owner_id=getattr(charge, "owner_id", None),
@@ -363,6 +482,35 @@ def build_refund_meta_from_charge(charge: Any, *, attempt_no: int | None = None)
engine_name=getattr(charge, "engine_name", None),
engine_provider=getattr(charge, "engine_provider", None),
engine_model_name=getattr(charge, "engine_model_name", None),
+ pricing_rule_id=getattr(charge, "pricing_rule_id", None),
+ pricing_version_code=getattr(charge, "pricing_version_code", None),
+ pricing_billing_mode=getattr(charge, "pricing_billing_mode", None),
+ pricing_calculator_version=getattr(charge, "pricing_calculator_version", None),
+ pricing_usage_source=getattr(charge, "pricing_usage_source", None),
+ pricing_reference_at=getattr(charge, "pricing_reference_at", None),
+ pricing_effective_from=getattr(charge, "pricing_effective_from", None),
+ pricing_effective_to=getattr(charge, "pricing_effective_to", None),
+ pricing_snapshot_schema_version=getattr(charge, "pricing_snapshot_schema_version", None),
+ pricing_snapshot_hash=pricing_hash,
+ provider_cost_currency=getattr(charge, "provider_cost_currency", None),
+ provider_cost_amount=Decimal("0"),
+ provider_cost_status="not_applicable",
+ provider_cost_is_estimated=False,
+ provider_usage_primary=False,
+ attachment_image_count=getattr(charge, "attachment_image_count", 0),
+ attachment_video_count=getattr(charge, "attachment_video_count", 0),
+ attachment_audio_count=getattr(charge, "attachment_audio_count", 0),
+ attachment_total_count=getattr(charge, "attachment_total_count", 0),
+ attachment_video_duration_seconds=getattr(charge, "attachment_video_duration_seconds", Decimal("0")),
+ attachment_audio_duration_seconds=getattr(charge, "attachment_audio_duration_seconds", Decimal("0")),
+ requested_output_count=getattr(charge, "requested_output_count", 0),
+ generated_image_count=getattr(charge, "generated_image_count", 0),
+ generated_video_count=getattr(charge, "generated_video_count", 0),
+ generated_total_count=getattr(charge, "generated_total_count", 0),
+ pricing_snapshot_json=pricing_snapshot,
+ usage_snapshot_json=getattr(charge, "usage_snapshot_json", None),
+ attachment_snapshot_json=getattr(charge, "attachment_snapshot_json", None),
+ generation_snapshot_json=getattr(charge, "generation_snapshot_json", None),
user_type_snapshot=getattr(charge, "user_type_snapshot", None),
frontend_user_kind_snapshot=getattr(charge, "frontend_user_kind_snapshot", None),
)
diff --git a/video-gen-api/app/services/generation_ai_service.py b/video-gen-api/app/services/generation_ai_service.py
index 4c731457..51204e7b 100644
--- a/video-gen-api/app/services/generation_ai_service.py
+++ b/video-gen-api/app/services/generation_ai_service.py
@@ -296,11 +296,14 @@ async def create_async_generation_task(db: AsyncSession, current_user: User, req
record_id=task_id,
gen_type="image",
image_size=size,
+ image_px=px,
+ aspect_ratio=proportion,
engine_id=engine.id,
project_name="AI生成任务",
description_prefix="AI创作-",
owner_type=OWNER_CHAT_GENERATION_TASK,
attempt_no=1,
+ media_references=refs,
)
snapshot = _build_image_snapshot(engine, size, proportion, px)
task = ChatGenerationTask(
@@ -316,6 +319,7 @@ async def create_async_generation_task(db: AsyncSession, current_user: User, req
pipeline_stage="queued",
engine_id=engine.id,
engine_snapshot_json=_json(snapshot),
+ current_billing_attempt_no=1,
media_references=_json(refs) if refs else None,
credits_cost=round(media_billing.total_charged, 2),
idempotency_key=req.idempotency_key,
@@ -392,12 +396,15 @@ async def create_async_generation_task(db: AsyncSession, current_user: User, req
gen_type="video",
duration=duration,
resolution=resolution,
+ aspect_ratio=ratio,
+ fps=24,
engine_id=engine.id,
input_video_duration=input_video_duration if input_video_duration > 0 else None,
project_name="AI生成任务",
description_prefix="AI创作-",
owner_type=OWNER_CHAT_GENERATION_TASK,
attempt_no=1,
+ media_references=refs,
)
snapshot = _build_video_snapshot(engine, ratio, resolution, duration)
task = ChatGenerationTask(
@@ -416,6 +423,7 @@ async def create_async_generation_task(db: AsyncSession, current_user: User, req
pipeline_stage="queued",
engine_id=engine.id,
engine_snapshot_json=_json(snapshot),
+ current_billing_attempt_no=1,
media_references=_json(refs) if refs else None,
credits_cost=round(media_billing.total_charged, 2),
idempotency_key=req.idempotency_key,
diff --git a/video-gen-api/app/services/generation_billing_service.py b/video-gen-api/app/services/generation_billing_service.py
index 9edd882c..d285b734 100644
--- a/video-gen-api/app/services/generation_billing_service.py
+++ b/video-gen-api/app/services/generation_billing_service.py
@@ -457,8 +457,13 @@ async def charge_generation_media_by_params(
record_id: str,
gen_type: str,
image_size: str | None = None,
+ image_px: str | None = None,
+ aspect_ratio: str | None = None,
duration: int | None = None,
resolution: str | None = None,
+ fps: int | float | None = None,
+ generate_audio: bool | None = None,
+ inference_mode: str | None = None,
engine_id: str | None = None,
input_video_duration: float | None = None,
project_name: str | None = None,
@@ -470,6 +475,8 @@ async def charge_generation_media_by_params(
source_step_id: str | None = None,
source_step_code: str | None = None,
billing_scene: str | None = None,
+ media_references: Any = None,
+ requested_output_count: int = 1,
) -> BillingSummary:
"""图片/视频媒体生成扣费。
@@ -504,6 +511,17 @@ async def charge_generation_media_by_params(
source_step_id=source_step_id,
source_step_code=source_step_code,
billing_scene=billing_scene,
+ media_references=media_references,
+ image_size=image_size,
+ image_px=image_px,
+ aspect_ratio=aspect_ratio,
+ duration=duration,
+ resolution=resolution,
+ fps=fps,
+ generate_audio=generate_audio,
+ inference_mode=inference_mode,
+ input_video_duration=input_video_duration,
+ requested_output_count=requested_output_count,
)
if gen_type == "image":
@@ -561,6 +579,8 @@ async def charge_generation_media_for_record(
record_id=record.id,
gen_type=record.gen_type,
image_size=record.image_size,
+ image_px=record.image_px,
+ aspect_ratio=record.aspect_ratio or record.image_proportion,
duration=record.duration,
resolution=record.resolution,
project_name=project_name,
@@ -568,4 +588,5 @@ async def charge_generation_media_for_record(
owner_type=OWNER_GENERATION_RECORD,
attempt_no=attempt_no,
source_module=CreditRecordSourceModule.GENERATION_RECORD.value,
+ media_references=record.media_references,
)
diff --git a/video-gen-api/app/services/generation_prompt_service.py b/video-gen-api/app/services/generation_prompt_service.py
index f7719919..d64cd886 100644
--- a/video-gen-api/app/services/generation_prompt_service.py
+++ b/video-gen-api/app/services/generation_prompt_service.py
@@ -17,6 +17,7 @@ from app.models.token_usage import TokenUsage
from app.services.generation_log_service import log_provider_call
from app.services.provider_limit import provider_limit
from app.utils.id_gen import generate_id
+from app.services.model_pricing.usage_normalizer import normalize_text_pricing_usage
def _absolute_url(url: str) -> str:
@@ -180,7 +181,7 @@ async def build_prompt_with_chatapi(db: AsyncSession, record: ChatGenerationTask
completion_tokens=output_tokens,
total_tokens=total_tokens,
)
- return content, {
+ return content, normalize_text_pricing_usage(usage, base={
"token_usage_id": token_usage_id,
"model_config_id": config.id,
"model_config_name": config.name,
@@ -189,4 +190,4 @@ async def build_prompt_with_chatapi(db: AsyncSession, record: ChatGenerationTask
"input_tokens": input_tokens,
"output_tokens": output_tokens,
"total_tokens": total_tokens,
- }
+ })
diff --git a/video-gen-api/app/services/generation_provider_service.py b/video-gen-api/app/services/generation_provider_service.py
index f7b2731e..762d8e10 100644
--- a/video-gen-api/app/services/generation_provider_service.py
+++ b/video-gen-api/app/services/generation_provider_service.py
@@ -14,7 +14,7 @@ from app.models.chat_generation_task import ChatGenerationTask
from app.models.image_engine import ImageEngine
from app.models.video_engine import VideoEngine
from app.services.generation_log_service import log_provider_call
-from app.services.image_gen import poll_image_task_status, submit_image_task
+from app.services.image_gen import submit_image_task
from app.services.provider_limit import provider_limit
from app.services.video_gen import poll_task_status, submit_video_task
@@ -165,8 +165,7 @@ def _try_json(text: Any) -> Any:
async def poll_provider_task(db: AsyncSession, task: ChatGenerationTask) -> dict:
engine = await get_runtime_engine(db, task)
task_id = task.seedance_task_id or task.provider_task_id
- if task.gen_type == "video":
- async with provider_limit("ark_video_poll", settings.ARK_VIDEO_POLL_MAX_CONCURRENCY):
- return await poll_task_status(engine, task_id)
- async with provider_limit("ark_image_poll", settings.ARK_IMAGE_POLL_MAX_CONCURRENCY):
- return await poll_image_task_status(engine, task_id)
+ if task.gen_type != "video":
+ raise ValueError("当前火山图片引擎为同步生成,不允许进入 Provider 轮询链路")
+ async with provider_limit("ark_video_poll", settings.ARK_VIDEO_POLL_MAX_CONCURRENCY):
+ return await poll_task_status(engine, task_id)
diff --git a/video-gen-api/app/services/generation_recovery_service.py b/video-gen-api/app/services/generation_recovery_service.py
index 4692032e..bee6b7e9 100644
--- a/video-gen-api/app/services/generation_recovery_service.py
+++ b/video-gen-api/app/services/generation_recovery_service.py
@@ -17,6 +17,7 @@ from app.enums.generation_task import (
ChatGenerationTaskStatus,
GenerationType,
)
+from app.enums.model_pricing import ProviderCostStatus
from app.models.chat_generation_task import ChatGenerationTask
from app.services.celery_download_recovery_service import (
ensure_aware_utc,
@@ -27,6 +28,8 @@ from app.services.celery_download_recovery_service import (
)
from app.services.generation_log_service import log_task_event
from app.services.generation_module_hook_service import notify_chat_generation_task_finished
+from app.services.media_token_usage_snapshot_service import mark_media_provider_cost_status
+from app.services.model_pricing.usage_normalizer import extract_image_output_items
from app.services.generation_poll_schedule_service import ensure_video_poll_fields, is_poll_not_due, is_video_generation_task
from app.services.generation_refund_service import mark_chat_generation_task_failed_and_refund_once
from app.services.redis_registry_service import (
@@ -373,6 +376,46 @@ async def _mark_failed(
return "mark_failed"
+async def _mark_sync_image_provider_result_uncertain(
+ db: AsyncSession,
+ task: ChatGenerationTask,
+ *,
+ source: str,
+ payload: dict[str, Any] | None = None,
+) -> str:
+ """Stop automatic replay after an interrupted synchronous image provider call."""
+ attempt_no = task.current_billing_attempt_no
+ message = (
+ "同步图片任务在供应商调用阶段中断,无法确认火山是否已经生成结果;"
+ "为避免重复生成和重复计费,已停止自动重放并退款,请结合供应商调用日志人工核查。"
+ )
+ await mark_media_provider_cost_status(
+ db,
+ owner=task,
+ status=ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value,
+ reason=message,
+ usage_stage="provider_sync_recovery_uncertain",
+ )
+ await log_task_event(
+ task,
+ event_type="PROVIDER_RESULT_UNCERTAIN",
+ message=message,
+ detail={
+ "source": source,
+ "payload": payload or {},
+ "attempt_no": attempt_no,
+ "pipeline_stage": task.pipeline_stage,
+ },
+ )
+ return await _mark_failed(
+ db,
+ task,
+ error_message=message,
+ event_type="PROVIDER_RESULT_UNCERTAIN",
+ detail={"source": source, "attempt_no": attempt_no},
+ )
+
+
async def recover_one_generation_task(
db: AsyncSession,
task: ChatGenerationTask,
@@ -411,6 +454,26 @@ async def recover_one_generation_task(
has_provider_task_id = bool(str(task.provider_task_id or "").strip() or str(task.seedance_task_id or "").strip())
is_deadline_expired = bool(task.deadline_at and _is_expired(task.deadline_at, current_time))
+ # 同步图片可能已经提交并保存了 Provider Response,但 remote_result_url 因旧数据或中断未写入。
+ # 只从明确的 data 输出条目恢复,绝不递归扫描任意 URL。
+ if task.gen_type == GenerationType.IMAGE.value and not has_remote_result and task.provider_response_json:
+ output_items = extract_image_output_items(task.provider_response_json)
+ recovered_url = next((str(item.get("url")) for item in output_items if item.get("url")), None)
+ if recovered_url:
+ task.remote_result_url = recovered_url
+ task.pipeline_stage = ChatGenerationPipelineStage.RESULT_READY.value
+ await db.commit()
+ await log_task_event(
+ task,
+ event_type=ChatGenerationTaskEventType.GENERATION_RECOVERY_ENQUEUE.value,
+ message=f"{source} 从同步图片 Provider Response 恢复最终 URL,投递下载队列",
+ detail={"attempt_no": task.current_billing_attempt_no},
+ )
+ from app.tasks.generation_download_tasks import enqueue_download_task
+
+ await enqueue_download_task(db, task, recover=True, reason=f"{source}_sync_image_response_recovered")
+ return "recover_sync_image_from_provider_response"
+
# 最高优先级:只要远程结果 URL 已经落库,说明生成侧已经成功。
# 不管当前 pipeline_stage 是 queued/creating/waiting/result_ready/download_*,恢复时都不能重复 create 或 poll。
if has_remote_result:
@@ -524,21 +587,36 @@ async def recover_one_generation_task(
)
return "recover_poll_has_provider_id"
- # 未过 deadline,且没有结果 URL / 供应商任务 ID:
- # 图片同步任务会重新进入 submit_image_task;视频/其它任务会重新创建供应商任务。
- # 这里不能投 poll,因为没有 provider_task_id/seedance_task_id 可查询。
+ # 未过 deadline,且没有结果 URL / 供应商任务 ID。
+ # queued/preparing 代表尚未开始 Provider 调用,可以安全重投;同步图片一旦进入
+ # creating_provider_task/waiting_remote/polling/result_ready,结果可能已在供应商侧产生,
+ # 不能自动重放,否则可能产生第二次供应商费用。
+ if task.gen_type == GenerationType.IMAGE.value and task.pipeline_stage in {
+ ChatGenerationPipelineStage.CREATING_PROVIDER_TASK.value,
+ ChatGenerationPipelineStage.WAITING_REMOTE.value,
+ ChatGenerationPipelineStage.POLLING.value,
+ ChatGenerationPipelineStage.RESULT_READY.value,
+ }:
+ await _remove_poll_active(task.id)
+ return await _mark_sync_image_provider_result_uncertain(
+ db,
+ task,
+ source=source,
+ payload=redis_payload,
+ )
+
recoverable_create_stages = {
ChatGenerationPipelineStage.QUEUED.value,
ChatGenerationPipelineStage.PREPARING.value,
ChatGenerationPipelineStage.CREATING_PROVIDER_TASK.value,
ChatGenerationPipelineStage.WAITING_REMOTE.value,
ChatGenerationPipelineStage.POLLING.value,
+ ChatGenerationPipelineStage.RESULT_READY.value,
}
if task.pipeline_stage in recoverable_create_stages:
if task.pipeline_stage not in (
ChatGenerationPipelineStage.QUEUED.value,
ChatGenerationPipelineStage.PREPARING.value,
- ChatGenerationPipelineStage.CREATING_PROVIDER_TASK.value,
):
task.pipeline_stage = ChatGenerationPipelineStage.QUEUED.value
await db.commit()
@@ -547,7 +625,7 @@ async def recover_one_generation_task(
await log_task_event(
task,
event_type=ChatGenerationTaskEventType.GENERATION_RECOVERY_ENQUEUE.value,
- message=f"{source} 发现任务未超时且缺少 remote_result_url/供应商任务ID,恢复投递创建队列",
+ message=f"{source} 发现任务未超时且尚无可恢复的供应商结果,恢复投递创建队列",
detail={"pipeline_stage": task.pipeline_stage, "payload": redis_payload},
)
chatapi_create_generation_task.apply_async(
@@ -557,24 +635,6 @@ async def recover_one_generation_task(
)
return "recover_create_no_remote_no_provider_before_deadline"
- # result_ready 但没有 URL 是脏状态;未过 deadline 时回创建队列重新处理,过期上面已标记超时。
- if task.pipeline_stage == ChatGenerationPipelineStage.RESULT_READY.value:
- task.pipeline_stage = ChatGenerationPipelineStage.QUEUED.value
- await db.commit()
- await _remove_poll_active(task.id)
- await log_task_event(
- task,
- event_type=ChatGenerationTaskEventType.GENERATION_RECOVERY_ENQUEUE.value,
- message=f"{source} 发现 result_ready 但缺少 remote_result_url,未超时,恢复投递创建队列",
- detail={"pipeline_stage": task.pipeline_stage, "payload": redis_payload},
- )
- chatapi_create_generation_task.apply_async(
- args=[task.id],
- queue=CeleryQueue.GEN_CHATAPI_CREATE.value,
- countdown=0,
- )
- return "recover_create_result_ready_no_url_before_deadline"
-
return f"skip_stage_{task.pipeline_stage}"
diff --git a/video-gen-api/app/services/generation_task_factory_service.py b/video-gen-api/app/services/generation_task_factory_service.py
index c492473e..f8cac80a 100644
--- a/video-gen-api/app/services/generation_task_factory_service.py
+++ b/video-gen-api/app/services/generation_task_factory_service.py
@@ -116,6 +116,8 @@ async def create_chat_generation_task_for_module(
record_id=task_id,
gen_type="image",
image_size=size,
+ image_px=px,
+ aspect_ratio=proportion,
engine_id=engine.id,
project_name=billing_project_name,
description_prefix=billing_description_prefix,
@@ -126,6 +128,7 @@ async def create_chat_generation_task_for_module(
source_step_id=billing_source_step_id,
source_step_code=billing_source_step_code,
billing_scene=billing_scene,
+ media_references=refs,
)
snapshot = _build_image_snapshot(engine, size, proportion, px)
task = ChatGenerationTask(
@@ -142,6 +145,7 @@ async def create_chat_generation_task_for_module(
pipeline_stage="queued",
engine_id=engine.id,
engine_snapshot_json=_json(snapshot),
+ current_billing_attempt_no=1,
media_references=_json(refs) if refs else None,
credits_cost=round(media_billing.total_charged, 2),
idempotency_key=backend_idempotency_key,
@@ -170,6 +174,8 @@ async def create_chat_generation_task_for_module(
gen_type="video",
duration=selected_duration,
resolution=selected_resolution,
+ aspect_ratio=ratio,
+ fps=24,
engine_id=engine.id,
project_name=billing_project_name,
description_prefix=billing_description_prefix,
@@ -180,6 +186,7 @@ async def create_chat_generation_task_for_module(
source_step_id=billing_source_step_id,
source_step_code=billing_source_step_code,
billing_scene=billing_scene,
+ media_references=refs,
)
snapshot = _build_video_snapshot(engine, ratio, selected_resolution, selected_duration)
task = ChatGenerationTask(
@@ -199,6 +206,7 @@ async def create_chat_generation_task_for_module(
pipeline_stage="queued",
engine_id=engine.id,
engine_snapshot_json=_json(snapshot),
+ current_billing_attempt_no=1,
media_references=_json(refs) if refs else None,
credits_cost=round(media_billing.total_charged, 2),
idempotency_key=backend_idempotency_key,
diff --git a/video-gen-api/app/services/hot_opening_video_prompt_service.py b/video-gen-api/app/services/hot_opening_video_prompt_service.py
index df1dd923..178f96e6 100644
--- a/video-gen-api/app/services/hot_opening_video_prompt_service.py
+++ b/video-gen-api/app/services/hot_opening_video_prompt_service.py
@@ -27,6 +27,7 @@ from app.enums.video_prompt_schema import PromptSchemaVersionEnum, VideoPromptSc
from app.models.model_config import ModelConfig
from app.models.token_usage import TokenUsage
from app.utils.id_gen import generate_id
+from app.services.model_pricing.usage_normalizer import normalize_text_pricing_usage
from app.services.resource_signed_url_service import build_resource_signed_url
DEFAULT_FRAME_RATE = "30fps"
@@ -1675,12 +1676,12 @@ async def optimize_hot_opening_video_prompt(
)
raise
usage = data.get("usage", {}) or {}
- token_usage = {
+ token_usage = normalize_text_pricing_usage(usage, base={
"input_tokens": int(usage.get("prompt_tokens") or 0),
"output_tokens": int(usage.get("completion_tokens") or 0),
"total_tokens": int(usage.get("total_tokens") or 0),
"log_user_message": log_user_message,
- }
+ })
token_usage_id = generate_id()
db.add(
TokenUsage(
diff --git a/video-gen-api/app/services/image_gen.py b/video-gen-api/app/services/image_gen.py
index 52679708..ede4f779 100644
--- a/video-gen-api/app/services/image_gen.py
+++ b/video-gen-api/app/services/image_gen.py
@@ -72,6 +72,24 @@ def _log_image_response(record_id: str, response_data: dict, error: str | None =
+def is_sync_image_provider_result_uncertain(exc: BaseException) -> bool:
+ """Whether replaying the synchronous image request could duplicate provider cost."""
+ if isinstance(exc, (TimeoutError, httpx.TimeoutException, httpx.TransportError)):
+ return True
+ text = str(exc or "").strip().lower()
+ markers = (
+ "timeout",
+ "timed out",
+ "connection reset",
+ "connection aborted",
+ "server disconnected",
+ "remote protocol",
+ "read error",
+ "network is unreachable",
+ )
+ return any(marker in text for marker in markers)
+
+
async def get_active_image_engine(db: AsyncSession) -> ImageEngine:
"""Get the active image engine with highest priority."""
result = await db.execute(
@@ -112,7 +130,7 @@ def submit_image_task(
) -> dict:
"""Submit an image generation task via Ark SDK. Returns image_url."""
from volcenginesdkarkruntime import Ark
-
+
client = Ark(
base_url=engine.api_base,
api_key=engine.api_key,
@@ -161,16 +179,23 @@ def submit_image_task(
image=image_urls if image_urls else None,
)
image_url = result.data[0].url
-
+
response_data = {
"model": result.model,
"created": result.created,
"data": [{"url": item.url, "size": item.size} for item in result.data] if result.data else [],
"usage": {
- "generated_images": result.usage.generated_images if hasattr(result.usage, 'generated_images') else 0,
- "output_tokens": result.usage.output_tokens if hasattr(result.usage, 'output_tokens') else 0,
- "total_tokens": result.usage.total_tokens if hasattr(result.usage, 'total_tokens') else 0,
- }
+ "generated_images": result.usage.generated_images if getattr(result, "usage", None) and hasattr(result.usage, "generated_images") else len(result.data or []),
+ "input_tokens": result.usage.input_tokens if getattr(result, "usage", None) and hasattr(result.usage, "input_tokens") else 0,
+ "output_tokens": result.usage.output_tokens if getattr(result, "usage", None) and hasattr(result.usage, "output_tokens") else 0,
+ "total_tokens": result.usage.total_tokens if getattr(result, "usage", None) and hasattr(result.usage, "total_tokens") else 0,
+ },
+ "pricing_meta": {
+ "provider_input_image_count": len(image_urls),
+ "requested_output_count": 1,
+ "requested_size": record.image_px or record.image_size or engine.default_size,
+ "sync_completed": True,
+ },
}
except httpx.TimeoutException:
error_msg = "图片生成超时,请稍后重试"
@@ -184,12 +209,12 @@ def submit_image_task(
raise
finally:
client.close()
-
+
return {
"image_url": image_url,
- "image_tokens": getattr(result.usage, "total_tokens", 0),
+ "image_tokens": getattr(getattr(result, "usage", None), "total_tokens", 0),
"response_data": json.dumps(response_data, ensure_ascii=False, default=str),
- "error": str(result.error) if result.error else "",
+ "error": str(getattr(result, "error", "") or ""),
}
diff --git a/video-gen-api/app/services/llm.py b/video-gen-api/app/services/llm.py
index 41c71dcc..026107b0 100644
--- a/video-gen-api/app/services/llm.py
+++ b/video-gen-api/app/services/llm.py
@@ -13,6 +13,7 @@ from app.config import settings
from app.models.model_config import ModelConfig
from app.models.token_usage import TokenUsage
from app.utils.id_gen import generate_id
+from app.services.model_pricing.usage_normalizer import normalize_text_pricing_usage
from app.services.log_config import is_enabled, LOG_DIR, LOG_DATE_FORMAT, encrypt_data
@@ -385,7 +386,7 @@ async def _call_openai_compatible(
await db.flush()
content = data["choices"][0]["message"]["content"].strip()
- token_usage = {
+ token_usage = normalize_text_pricing_usage(usage, base={
"token_usage_id": token_usage_id,
"model_config_id": config.id,
"model_config_name": config.name,
@@ -394,5 +395,5 @@ async def _call_openai_compatible(
"input_tokens": input_tokens,
"output_tokens": output_tokens,
"total_tokens": total_tokens,
- }
+ })
return content, token_usage
diff --git a/video-gen-api/app/services/media_token_usage_snapshot_service.py b/video-gen-api/app/services/media_token_usage_snapshot_service.py
index 9bfef50a..9167c1a8 100644
--- a/video-gen-api/app/services/media_token_usage_snapshot_service.py
+++ b/video-gen-api/app/services/media_token_usage_snapshot_service.py
@@ -1,89 +1,67 @@
from __future__ import annotations
-import json
-from typing import Any, Mapping
+from copy import deepcopy
+from datetime import datetime, timezone
+from typing import Any
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.config import settings
-from app.enums.credit_record import (
- CreditRecordAction,
- CreditRecordChargeKind,
- CreditRecordOwnerType,
- CreditRecordSourceModule,
-)
+from app.enums.credit_record import CreditRecordAction, CreditRecordChargeKind, CreditRecordOwnerType
+from app.enums.model_pricing import PricingSnapshotStage, ProviderCostStatus
from app.models.chat_generation_task import ChatGenerationTask
from app.models.credit_record import CreditRecord
from app.models.generation_record import GenerationRecord
from app.models.token_usage import TokenUsage
+from app.services.model_pricing.attachment_snapshot_service import build_attachment_snapshot, build_generation_snapshot
+from app.services.model_pricing.usage_normalizer import (
+ normalize_provider_media_usage,
+ safe_int,
+ safe_json_dict,
+)
+from app.services.model_pricing.snapshot_service import finalize_credit_record_pricing
+from app.services.operation_log_service import log_model_pricing_event
from app.utils.id_gen import generate_id
-def _safe_int(value: Any, default: int = 0) -> int:
- try:
- if value is None or value == "":
- return default
- return int(value)
- except Exception:
- return default
+def _provider_model_from_response(provider_response: Any) -> str | None:
+ data = safe_json_dict(provider_response)
+ for candidate in (
+ data.get("model"),
+ (data.get("data") or {}).get("model") if isinstance(data.get("data"), dict) else None,
+ (data.get("result") or {}).get("model") if isinstance(data.get("result"), dict) else None,
+ ):
+ if candidate:
+ return str(candidate)
+ return None
-def _safe_json_dict(value: Any) -> dict[str, Any]:
- if not value:
- return {}
- if isinstance(value, dict):
- return value
- try:
- parsed = json.loads(value)
- return parsed if isinstance(parsed, dict) else {}
- except Exception:
- return {}
+def _provider_task_id_from_response(provider_response: Any) -> str | None:
+ data = safe_json_dict(provider_response)
+ for candidate in (data.get("task_id"), data.get("id"), data.get("provider_task_id")):
+ if candidate:
+ return str(candidate)
+ return None
-def _extract_usage(provider_response: Any) -> dict[str, Any]:
- data = _safe_json_dict(provider_response)
- usage = data.get("usage")
- return usage if isinstance(usage, dict) else {}
+def _engine_snapshot_from_owner(owner: Any) -> dict[str, Any]:
+ snapshot = safe_json_dict(getattr(owner, "engine_snapshot_json", None))
+ return {
+ "provider": snapshot.get("provider") or snapshot.get("engine_provider"),
+ "model_name": snapshot.get("model_name") or snapshot.get("engine_model_name"),
+ "engine_name": snapshot.get("name") or snapshot.get("engine_name"),
+ "engine_id": snapshot.get("id") or snapshot.get("engine_id") or getattr(owner, "engine_id", None),
+ }
-def _normalize_media_tokens(
- *,
- gen_type: str | None,
- provider_response: Any = None,
- fallback_total: int | None = None,
-) -> tuple[int, int, int]:
- usage = _extract_usage(provider_response)
- input_tokens = _safe_int(usage.get("input_tokens"), 0)
- output_tokens = _safe_int(
- usage.get("output_tokens"),
- _safe_int(usage.get("generated_tokens"), 0),
- )
- total_tokens = _safe_int(usage.get("total_tokens"), 0)
-
- if total_tokens <= 0:
- total_tokens = _safe_int(fallback_total, 0)
- if output_tokens <= 0:
- output_tokens = max(0, total_tokens - input_tokens)
- if total_tokens <= 0:
- total_tokens = input_tokens + output_tokens
-
- # 图片生成多数供应商只返回 output/total,没有 input;保持 input=0。视频同理兼容缺字段。
- return input_tokens, output_tokens, total_tokens
-
-
-def _engine_model_from_provider_response(provider_response: Any) -> str | None:
- data = _safe_json_dict(provider_response)
- model = data.get("model")
- return str(model) if model else None
-
-
-async def _find_latest_media_charge(
+async def _find_media_charge(
db: AsyncSession,
*,
user_id: str,
owner_type: str,
owner_id: str,
+ attempt_no: int | None,
media_type: str | None,
) -> CreditRecord | None:
query = (
@@ -97,9 +75,17 @@ async def _find_latest_media_charge(
)
if media_type:
query = query.where(CreditRecord.media_type == media_type)
- query = query.order_by(CreditRecord.attempt_no.desc().nullslast(), CreditRecord.created_at.desc()).limit(1)
- result = await db.execute(query)
- return result.scalar_one_or_none()
+ if attempt_no is not None:
+ query = query.where(CreditRecord.attempt_no == attempt_no)
+ query = query.order_by(CreditRecord.created_at.desc()).limit(1).with_for_update()
+ return (await db.execute(query)).scalar_one_or_none()
+
+ # 兼容迁移上线时仍在执行、尚未写 current_billing_attempt_no 的旧任务:
+ # 只有候选消费流水唯一时才允许绑定;多次重试产生多条流水时宁可跳过,也不能猜“最新一条”。
+ candidates = (
+ await db.execute(query.order_by(CreditRecord.created_at.desc()).limit(2).with_for_update())
+ ).scalars().all()
+ return candidates[0] if len(candidates) == 1 else None
async def _get_or_create_token_usage(
@@ -109,20 +95,21 @@ async def _get_or_create_token_usage(
input_tokens: int,
output_tokens: int,
total_tokens: int,
- model_config_id: str | None = None,
) -> TokenUsage:
token_usage: TokenUsage | None = None
if charge.token_usage_id:
- result = await db.execute(select(TokenUsage).where(TokenUsage.id == charge.token_usage_id).limit(1))
- token_usage = result.scalar_one_or_none()
+ token_usage = (
+ await db.execute(select(TokenUsage).where(TokenUsage.id == charge.token_usage_id).limit(1))
+ ).scalar_one_or_none()
if token_usage is None and charge.biz_key:
- result = await db.execute(select(TokenUsage).where(TokenUsage.biz_key == charge.biz_key).limit(1))
- token_usage = result.scalar_one_or_none()
+ token_usage = (
+ await db.execute(select(TokenUsage).where(TokenUsage.biz_key == charge.biz_key).limit(1))
+ ).scalar_one_or_none()
if token_usage is None:
token_usage = TokenUsage(
id=generate_id(),
user_id=charge.user_id,
- model_config_id=model_config_id,
+ model_config_id=None,
owner_type=charge.owner_type,
owner_id=charge.owner_id,
biz_key=charge.biz_key,
@@ -135,13 +122,6 @@ async def _get_or_create_token_usage(
db.add(token_usage)
await db.flush()
else:
- token_usage.user_id = token_usage.user_id or charge.user_id
- token_usage.model_config_id = token_usage.model_config_id or model_config_id
- token_usage.owner_type = token_usage.owner_type or charge.owner_type
- token_usage.owner_id = token_usage.owner_id or charge.owner_id
- token_usage.biz_key = token_usage.biz_key or charge.biz_key
- token_usage.source_module = token_usage.source_module or charge.source_module
- token_usage.source_step_code = token_usage.source_step_code or charge.source_step_code
token_usage.input_tokens = input_tokens
token_usage.output_tokens = output_tokens
token_usage.total_tokens = total_tokens
@@ -152,39 +132,150 @@ async def _sync_charge_snapshot(
db: AsyncSession,
*,
charge: CreditRecord | None,
- gen_type: str | None,
+ owner: Any,
+ gen_type: str,
+ stage: str,
provider_response: Any = None,
- fallback_total: int | None = None,
+ fallback_total: int = 0,
) -> CreditRecord | None:
if not charge:
+ log_model_pricing_event(
+ event_type="pricing_snapshot_skip",
+ event_status="warning",
+ owner_type=owner.__class__.__name__,
+ owner_id=getattr(owner, "id", None),
+ message="未找到与 current_billing_attempt_no 匹配的媒体消费流水",
+ detail={"attempt_no": getattr(owner, "current_billing_attempt_no", None), "stage": stage},
+ )
return None
- input_tokens, output_tokens, total_tokens = _normalize_media_tokens(
+ response = provider_response if provider_response is not None else getattr(owner, "provider_response_json", None)
+ attachment_snapshot, attachment_counts = build_attachment_snapshot(getattr(owner, "media_references", None))
+ generation_snapshot, generation_counts, generation_usage = build_generation_snapshot(
+ owner,
+ provider_response=response,
+ stage=stage,
+ )
+ existing_usage = deepcopy(dict(charge.usage_snapshot_json or {}))
+ provider_usage = normalize_provider_media_usage(
+ response,
gen_type=gen_type,
- provider_response=provider_response,
- fallback_total=fallback_total,
+ fallback_total_tokens=fallback_total,
+ request_image_px=getattr(owner, "image_px", None),
+ requested_output_count=max(1, safe_int(generation_counts.get("requested_output_count"), 1)),
+ provider_input_image_count=safe_int(attachment_counts.get("provider_input_image_count")),
+ )
+ usage = {**existing_usage, **generation_usage, **provider_usage}
+ usage.update(
+ {
+ "has_input_video": safe_int(attachment_counts.get("provider_input_video_count")) > 0,
+ "provider_input_image_count": safe_int(
+ provider_usage.get("provider_input_image_count"),
+ safe_int(attachment_counts.get("provider_input_image_count")),
+ ),
+ "input_image_count": safe_int(
+ provider_usage.get("provider_input_image_count"),
+ safe_int(attachment_counts.get("provider_input_image_count")),
+ ),
+ "input_video_duration_seconds": float(attachment_counts.get("attachment_video_duration_seconds") or 0),
+ "input_audio_duration_seconds": float(attachment_counts.get("attachment_audio_duration_seconds") or 0),
+ "usage_stage": stage,
+ }
)
- if total_tokens <= 0:
- return charge
- token_usage = await _get_or_create_token_usage(
+ input_tokens = max(0, safe_int(usage.get("input_tokens")))
+ output_tokens = max(0, safe_int(usage.get("output_tokens")))
+ total_tokens = max(0, safe_int(usage.get("total_tokens"), input_tokens + output_tokens))
+ if total_tokens > 0:
+ token_usage = await _get_or_create_token_usage(
+ db,
+ charge=charge,
+ input_tokens=input_tokens,
+ output_tokens=output_tokens,
+ total_tokens=total_tokens,
+ )
+ charge.token_usage_id = token_usage.id
+ charge.input_tokens = input_tokens
+ charge.output_tokens = output_tokens
+ charge.total_tokens = total_tokens
+
+ provider_model = _provider_model_from_response(response)
+ engine_snapshot = _engine_snapshot_from_owner(owner)
+ charge.engine_provider = charge.engine_provider or engine_snapshot.get("provider")
+ charge.engine_model_name = charge.engine_model_name or provider_model or engine_snapshot.get("model_name")
+ charge.engine_name = charge.engine_name or engine_snapshot.get("engine_name")
+ charge.engine_id = charge.engine_id or engine_snapshot.get("engine_id")
+
+ await finalize_credit_record_pricing(
db,
charge=charge,
- input_tokens=input_tokens,
- output_tokens=output_tokens,
- total_tokens=total_tokens,
- model_config_id=None,
+ usage=usage,
+ stage=stage,
+ attachment_snapshot=attachment_snapshot,
+ attachment_counts=attachment_counts,
+ generation_snapshot=generation_snapshot,
+ generation_counts=generation_counts,
+ allow_upgrade_estimated=True,
)
+ return charge
- charge.token_usage_id = token_usage.id
- charge.input_tokens = input_tokens
- charge.output_tokens = output_tokens
- charge.total_tokens = total_tokens
- # 兼容旧流水扣费时未冷备 engine_model_name 的场景,能从 provider response 推出来就补充。
- provider_model = _engine_model_from_provider_response(provider_response)
- if provider_model and not charge.engine_model_name:
- charge.engine_model_name = provider_model
+async def mark_media_provider_cost_status(
+ db: AsyncSession,
+ *,
+ owner: ChatGenerationTask | GenerationRecord,
+ status: str,
+ reason: str,
+ usage_stage: str,
+) -> CreditRecord | None:
+ """Finalize a media charge when a synchronous provider call failed or became uncertain.
+
+ This helper never commits and always resolves the charge by owner + billing attempt.
+ """
+ if isinstance(owner, ChatGenerationTask):
+ owner_type = CreditRecordOwnerType.CHAT_GENERATION_TASK.value
+ else:
+ owner_type = CreditRecordOwnerType.GENERATION_RECORD.value
+ gen_type = str(getattr(owner, "gen_type", None) or "").lower().strip()
+ charge = await _find_media_charge(
+ db,
+ user_id=owner.user_id,
+ owner_type=owner_type,
+ owner_id=owner.id,
+ attempt_no=getattr(owner, "current_billing_attempt_no", None),
+ media_type=gen_type or None,
+ )
+ if not charge:
+ log_model_pricing_event(
+ event_type="pricing_snapshot_skip",
+ event_status="warning",
+ owner_type=owner_type,
+ owner_id=owner.id,
+ message="同步图片异常时未找到唯一媒体消费流水",
+ detail={
+ "attempt_no": getattr(owner, "current_billing_attempt_no", None),
+ "target_status": status,
+ "reason": reason,
+ },
+ )
+ return None
+ if charge.provider_cost_status in {ProviderCostStatus.CALCULATED.value, ProviderCostStatus.ESTIMATED.value}:
+ return charge
+
+ usage_snapshot = deepcopy(dict(charge.usage_snapshot_json or {}))
+ usage_snapshot.update(
+ {
+ "usage_stage": usage_stage,
+ "provider_error_reason": reason,
+ "provider_result_uncertain": status == ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value,
+ }
+ )
+ charge.usage_snapshot_json = usage_snapshot
+ charge.provider_cost_status = status
+ charge.provider_cost_amount = None if status == ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value else 0
+ charge.provider_cost_is_estimated = False
+ charge.provider_cost_calculated_at = datetime.now(timezone.utc)
+ charge.provider_cost_finalized_at = datetime.now(timezone.utc)
return charge
@@ -193,33 +284,48 @@ async def sync_chat_generation_task_media_token_snapshot(
task: ChatGenerationTask,
*,
provider_response: Any = None,
+ stage: str | None = None,
) -> CreditRecord | None:
- """把 ChatGenerationTask 图片/视频媒体生成 token 后置快照回填到积分流水。
-
- 媒体扣费发生在创建任务前,供应商 usage 只能在创建/轮询成功后拿到,
- 所以这里按 owner_type + owner_id + media_type 找到对应 media charge 流水并回填。
- """
- if not bool(getattr(settings, "MEDIA_TOKEN_SNAPSHOT_ENABLED", True)):
+ if not bool(getattr(settings, "MEDIA_TOKEN_SNAPSHOT_ENABLED", True)) or not task:
return None
- if not task:
+ gen_type = (task.gen_type or "").lower().strip()
+ stage = stage or (
+ PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value
+ if gen_type == "image"
+ else PricingSnapshotStage.PROVIDER_ASYNC_COMPLETED.value
+ )
+ response = provider_response if provider_response is not None else task.provider_response_json
+
+ callback_task_id = _provider_task_id_from_response(response)
+ current_task_id = task.seedance_task_id or task.provider_task_id
+ if gen_type == "video" and callback_task_id and current_task_id and callback_task_id != current_task_id:
+ log_model_pricing_event(
+ event_type="pricing_stale_callback_skip",
+ event_status="warning",
+ owner_type=CreditRecordOwnerType.CHAT_GENERATION_TASK.value,
+ owner_id=task.id,
+ message="旧 Provider 回调与当前任务 ID 不一致,已跳过",
+ detail={"callback_task_id": callback_task_id, "current_task_id": current_task_id},
+ )
return None
- gen_type = (getattr(task, "gen_type", None) or "").lower().strip()
- fallback_total = task.image_tokens_used if gen_type == "image" else task.video_tokens_used
- response = provider_response if provider_response is not None else getattr(task, "provider_response_json", None)
- charge = await _find_latest_media_charge(
+ charge = await _find_media_charge(
db,
user_id=task.user_id,
owner_type=CreditRecordOwnerType.CHAT_GENERATION_TASK.value,
owner_id=task.id,
+ attempt_no=task.current_billing_attempt_no,
media_type=gen_type or None,
)
+ fallback_total = task.image_tokens_used if gen_type == "image" else task.video_tokens_used
return await _sync_charge_snapshot(
db,
charge=charge,
+ owner=task,
gen_type=gen_type,
+ stage=stage,
provider_response=response,
- fallback_total=fallback_total,
+ fallback_total=fallback_total or 0,
)
@@ -228,26 +334,32 @@ async def sync_generation_record_media_token_snapshot(
record: GenerationRecord,
*,
provider_response: Any = None,
+ stage: str | None = None,
) -> CreditRecord | None:
- """把旧 GenerationRecord 图片/视频媒体生成 token 后置快照回填到积分流水。"""
- if not bool(getattr(settings, "MEDIA_TOKEN_SNAPSHOT_ENABLED", True)):
+ if not bool(getattr(settings, "MEDIA_TOKEN_SNAPSHOT_ENABLED", True)) or not record:
return None
- if not record:
- return None
-
- gen_type = (getattr(record, "gen_type", None) or "").lower().strip()
- fallback_total = record.image_tokens_used if gen_type == "image" else record.video_tokens_used
- charge = await _find_latest_media_charge(
+ gen_type = (record.gen_type or "").lower().strip()
+ stage = stage or (
+ PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value
+ if gen_type == "image"
+ else PricingSnapshotStage.PROVIDER_ASYNC_COMPLETED.value
+ )
+ response = provider_response if provider_response is not None else record.provider_response_json
+ charge = await _find_media_charge(
db,
user_id=record.user_id,
owner_type=CreditRecordOwnerType.GENERATION_RECORD.value,
owner_id=record.id,
+ attempt_no=record.current_billing_attempt_no,
media_type=gen_type or None,
)
+ fallback_total = record.image_tokens_used if gen_type == "image" else record.video_tokens_used
return await _sync_charge_snapshot(
db,
charge=charge,
+ owner=record,
gen_type=gen_type,
- provider_response=provider_response,
- fallback_total=fallback_total,
+ stage=stage,
+ provider_response=response,
+ fallback_total=fallback_total or 0,
)
diff --git a/video-gen-api/app/services/model_pricing/__init__.py b/video-gen-api/app/services/model_pricing/__init__.py
new file mode 100644
index 00000000..02f6c352
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/__init__.py
@@ -0,0 +1,7 @@
+"""模型计价服务软包。
+
+各调用方显式导入 calculator/rule_service/snapshot_service,避免导入纯计算器时
+提前初始化数据库引擎,降低模块耦合并便于离线测试。
+"""
+
+__all__: list[str] = []
diff --git a/video-gen-api/app/services/model_pricing/attachment_snapshot_service.py b/video-gen-api/app/services/model_pricing/attachment_snapshot_service.py
new file mode 100644
index 00000000..df67b6fc
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/attachment_snapshot_service.py
@@ -0,0 +1,323 @@
+from __future__ import annotations
+
+import hashlib
+import json
+import re
+from decimal import Decimal
+from typing import Any, Iterable, Mapping
+from urllib.parse import urlsplit, urlunsplit
+
+from app.services.model_pricing.usage_normalizer import (
+ extract_image_output_items,
+ parse_size,
+ safe_bool,
+ safe_float,
+ safe_int,
+ safe_json_dict,
+ sanitize_output_items,
+)
+
+
+MEDIA_TYPES = {"image", "video", "audio"}
+
+
+def _safe_json(value: Any) -> Any:
+ if value in (None, ""):
+ return None
+ if isinstance(value, (dict, list)):
+ return value
+ if isinstance(value, str):
+ try:
+ return json.loads(value)
+ except Exception:
+ return value
+ return value
+
+
+def _normalize_url(value: str | None) -> tuple[str | None, str | None]:
+ if not value:
+ return None, None
+ text = str(value).strip()
+ try:
+ parts = urlsplit(text)
+ if parts.scheme and parts.netloc:
+ normalized = urlunsplit((parts.scheme.lower(), parts.netloc.lower(), parts.path, "", ""))
+ else:
+ normalized = text.split("?", 1)[0].split("#", 1)[0]
+ except Exception:
+ normalized = text.split("?", 1)[0].split("#", 1)[0]
+ normalized = normalized[:1024]
+ digest = hashlib.sha256(normalized.encode("utf-8")).hexdigest()
+ return normalized, digest
+
+
+def _guess_media_type(item: Mapping[str, Any]) -> str | None:
+ value = str(item.get("type") or item.get("media_type") or item.get("resource_type") or "").lower().strip()
+ if value in MEDIA_TYPES:
+ return value
+ url = str(item.get("url") or item.get("path") or item.get("display_url") or "").lower()
+ if re.search(r"\.(png|jpe?g|webp|gif|bmp)(?:\?|$)", url):
+ return "image"
+ if re.search(r"\.(mp4|mov|m4v|webm|avi|mkv)(?:\?|$)", url):
+ return "video"
+ if re.search(r"\.(mp3|wav|aac|m4a|flac|ogg)(?:\?|$)", url):
+ return "audio"
+ return None
+
+
+def _walk_reference_items(value: Any) -> Iterable[Mapping[str, Any]]:
+ parsed = _safe_json(value)
+ if isinstance(parsed, list):
+ for item in parsed:
+ yield from _walk_reference_items(item)
+ return
+ if isinstance(parsed, dict):
+ if _guess_media_type(parsed) or any(k in parsed for k in ("url", "path", "resource_id", "private_asset_id")):
+ yield parsed
+ return
+ for child in parsed.values():
+ if isinstance(child, (dict, list, str)):
+ yield from _walk_reference_items(child)
+
+
+def _billable_input(raw: Mapping[str, Any], media_type: str) -> bool:
+ if "billable_input" in raw:
+ return safe_bool(raw.get("billable_input"), True)
+ role = str(raw.get("role") or raw.get("label") or raw.get("reference_role") or "").lower()
+ if role in {"cover", "preview", "display_only", "generated_output", "output"}:
+ return False
+ return media_type in MEDIA_TYPES
+
+
+def build_attachment_snapshot(media_references: Any) -> tuple[dict[str, Any], dict[str, Any]]:
+ items: list[dict[str, Any]] = []
+ image_count = video_count = audio_count = 0
+ provider_input_image_count = 0
+ provider_input_video_count = 0
+ provider_input_audio_count = 0
+ video_duration = Decimal("0")
+ audio_duration = Decimal("0")
+ seen: set[str] = set()
+
+ for raw in _walk_reference_items(media_references):
+ media_type = _guess_media_type(raw)
+ if media_type not in MEDIA_TYPES:
+ continue
+ raw_url = raw.get("url") or raw.get("path") or raw.get("display_url") or raw.get("preview_url")
+ safe_url, url_hash = _normalize_url(str(raw_url) if raw_url else None)
+ identity = str(
+ raw.get("resource_id")
+ or raw.get("upload_resource_id")
+ or raw.get("private_asset_id")
+ or url_hash
+ or f"{media_type}:{len(items)}"
+ )
+ dedupe_key = f"{media_type}:{identity}"
+ if dedupe_key in seen:
+ continue
+ seen.add(dedupe_key)
+
+ duration = max(0.0, safe_float(raw.get("duration"), safe_float(raw.get("duration_seconds"))))
+ billable = _billable_input(raw, media_type)
+ item = {
+ "type": media_type,
+ "role": raw.get("role") or raw.get("label") or raw.get("reference_role"),
+ "source": raw.get("source"),
+ "billable_input": billable,
+ "resource_id": raw.get("resource_id") or raw.get("upload_resource_id"),
+ "private_asset_id": raw.get("private_asset_id"),
+ "name": raw.get("name") or raw.get("filename"),
+ "duration_seconds": duration or None,
+ "file_size": safe_int(raw.get("file_size"), safe_int(raw.get("size"))) or None,
+ "safe_url": safe_url,
+ "url_sha256": url_hash,
+ }
+ items.append({k: v for k, v in item.items() if v is not None})
+ if media_type == "image":
+ image_count += 1
+ provider_input_image_count += int(billable)
+ elif media_type == "video":
+ video_count += 1
+ provider_input_video_count += int(billable)
+ video_duration += Decimal(str(duration))
+ else:
+ audio_count += 1
+ provider_input_audio_count += int(billable)
+ audio_duration += Decimal(str(duration))
+
+ counts = {
+ "attachment_image_count": image_count,
+ "attachment_video_count": video_count,
+ "attachment_audio_count": audio_count,
+ "attachment_total_count": image_count + video_count + audio_count,
+ "attachment_video_duration_seconds": video_duration,
+ "attachment_audio_duration_seconds": audio_duration,
+ "provider_input_image_count": provider_input_image_count,
+ "provider_input_video_count": provider_input_video_count,
+ "provider_input_audio_count": provider_input_audio_count,
+ }
+ snapshot = {
+ "schema_version": 1,
+ "items": items,
+ "counts": {
+ "image": image_count,
+ "video": video_count,
+ "audio": audio_count,
+ "total": image_count + video_count + audio_count,
+ "provider_input_image": provider_input_image_count,
+ "provider_input_video": provider_input_video_count,
+ "provider_input_audio": provider_input_audio_count,
+ },
+ "durations": {
+ "video_seconds": str(video_duration),
+ "audio_seconds": str(audio_duration),
+ },
+ }
+ return snapshot, counts
+
+
+def parse_dimensions(*values: Any, resolution: str | None = None, aspect_ratio: str | None = None) -> tuple[int, int]:
+ """仅解析明确像素;resolution/aspect_ratio 不再映射为猜测尺寸。"""
+ del resolution, aspect_ratio
+ for value in values:
+ width, height = parse_size(value)
+ if width > 0 and height > 0:
+ return width, height
+ return 0, 0
+
+
+def _engine_snapshot(owner: Any) -> dict[str, Any]:
+ return safe_json_dict(getattr(owner, "engine_snapshot_json", None))
+
+
+def build_generation_snapshot(
+ owner: Any,
+ *,
+ provider_response: Any = None,
+ stage: str | None = None,
+) -> tuple[dict[str, Any], dict[str, int], dict[str, Any]]:
+ """构建请求/Provider/资源快照。
+
+ 图片只读取同步接口明确的 data 输出条目;不会递归扫描 provider response 中的通用 URL。
+ """
+ gen_type = str(getattr(owner, "gen_type", None) or getattr(owner, "media_type", None) or "").lower().strip()
+ response = safe_json_dict(provider_response if provider_response is not None else getattr(owner, "provider_response_json", None))
+ engine_snapshot = _engine_snapshot(owner)
+ aspect_ratio = getattr(owner, "aspect_ratio", None) or getattr(owner, "image_proportion", None)
+ resolution = getattr(owner, "resolution", None)
+
+ width, height = parse_dimensions(
+ response.get("size"),
+ getattr(owner, "image_px", None),
+ engine_snapshot.get("selected_px"),
+ engine_snapshot.get("image_px"),
+ )
+ dimension_source = "unavailable"
+ if parse_dimensions(response.get("size")) != (0, 0):
+ dimension_source = "provider_response"
+ elif parse_dimensions(getattr(owner, "image_px", None)) != (0, 0):
+ dimension_source = "request_explicit"
+ elif parse_dimensions(engine_snapshot.get("selected_px"), engine_snapshot.get("image_px")) != (0, 0):
+ dimension_source = "engine_snapshot"
+
+ output_items: list[dict[str, Any]] = []
+ generated_image_count = 0
+ generated_video_count = 0
+ if gen_type == "image":
+ output_items = extract_image_output_items(response)
+ if width <= 0 or height <= 0:
+ first_sized = next(
+ (item for item in output_items if safe_int(item.get("width")) > 0 and safe_int(item.get("height")) > 0),
+ None,
+ )
+ if first_sized:
+ width = safe_int(first_sized.get("width"))
+ height = safe_int(first_sized.get("height"))
+ dimension_source = "provider_response"
+ if width > 0 and height > 0:
+ for item in output_items:
+ if not item.get("width") or not item.get("height"):
+ item.update(
+ {
+ "width": width,
+ "height": height,
+ "pixels": width * height,
+ "size_source": dimension_source,
+ }
+ )
+ output_items = sanitize_output_items(output_items)
+ generated_image_count = len(output_items)
+ if generated_image_count == 0 and stage == "resource_download_completed" and getattr(owner, "image_url", None):
+ generated_image_count = 1
+ output_items = sanitize_output_items(
+ [{"index": 0, "url": getattr(owner, "image_url"), "size_source": "resource_snapshot"}]
+ )
+ elif gen_type == "video":
+ video_url = response.get("video_url") or response.get("url")
+ if stage == "resource_download_completed":
+ video_url = getattr(owner, "video_url", None) or video_url
+ generated_video_count = 1 if video_url else 0
+ if video_url:
+ output_items = sanitize_output_items([{"index": 0, "url": video_url, "type": "video"}])
+
+ pricing_meta = response.get("pricing_meta") if isinstance(response.get("pricing_meta"), Mapping) else {}
+ requested_output_count = max(
+ 1,
+ safe_int(
+ pricing_meta.get("requested_output_count"),
+ safe_int(getattr(owner, "output_count", None), safe_int(getattr(owner, "count", None), 1)),
+ ),
+ )
+ output_duration = max(0.0, safe_float(getattr(owner, "duration", None)))
+ fps = max(0.0, safe_float(getattr(owner, "fps", None), safe_float(getattr(owner, "frame_rate", None))))
+ generate_audio = safe_bool(getattr(owner, "generate_audio", None), safe_bool(response.get("generate_audio")))
+ inference_mode = str(
+ getattr(owner, "inference_mode", None)
+ or getattr(owner, "service_tier", None)
+ or response.get("service_tier")
+ or "online"
+ ).lower()
+
+ counts = {
+ "requested_output_count": requested_output_count,
+ "generated_image_count": generated_image_count,
+ "generated_video_count": generated_video_count,
+ "generated_total_count": generated_image_count + generated_video_count,
+ }
+ snapshot = {
+ "schema_version": 1,
+ "stage": stage or "unknown",
+ "gen_type": gen_type,
+ "requested_output_count": requested_output_count,
+ "generated_image_count": generated_image_count,
+ "generated_video_count": generated_video_count,
+ "generated_total_count": generated_image_count + generated_video_count,
+ "output_items": output_items,
+ "duration_seconds": output_duration or None,
+ "resolution": resolution,
+ "aspect_ratio": aspect_ratio,
+ "width": width or None,
+ "height": height or None,
+ "dimension_source": dimension_source,
+ "fps": fps or None,
+ "generate_audio": generate_audio,
+ "inference_mode": inference_mode,
+ }
+ usage = {
+ "requested_output_count": requested_output_count,
+ "generated_image_count": generated_image_count,
+ "generated_video_count": generated_video_count,
+ "successful_output_count": generated_image_count if gen_type == "image" else generated_video_count,
+ "output_items": output_items,
+ "output_width": width,
+ "output_height": height,
+ "dimension_source": dimension_source,
+ "output_video_duration_seconds": output_duration,
+ "resolution": str(resolution or "").lower(),
+ "aspect_ratio": str(aspect_ratio or ""),
+ "fps": fps,
+ "generate_audio": generate_audio,
+ "inference_mode": inference_mode,
+ "usage_stage": stage or "unknown",
+ }
+ return snapshot, counts, usage
diff --git a/video-gen-api/app/services/model_pricing/calculator.py b/video-gen-api/app/services/model_pricing/calculator.py
new file mode 100644
index 00000000..01d1be8e
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/calculator.py
@@ -0,0 +1,558 @@
+from __future__ import annotations
+
+from dataclasses import dataclass
+from decimal import Decimal, ROUND_HALF_UP
+from typing import Any, Mapping
+
+from app.enums.model_pricing import (
+ ModelPricingBillingMode,
+ ModelPricingCalculatorVersion,
+ PricingBillBy,
+)
+from app.services.model_pricing.usage_normalizer import safe_bool, safe_int
+
+
+MILLION = Decimal("1000000")
+MONEY_QUANT = Decimal("0.00000001")
+
+
+class PricingCalculationError(ValueError):
+ pass
+
+
+@dataclass(slots=True)
+class PricingCalculationResult:
+ amount: Decimal
+ currency: str
+ is_estimated: bool
+ selected_rate: Decimal | None
+ breakdown: dict[str, Any]
+ usage_source: str
+
+
+def to_decimal(value: Any, default: str = "0") -> Decimal:
+ try:
+ if value in (None, ""):
+ return Decimal(default)
+ return Decimal(str(value))
+ except Exception:
+ return Decimal(default)
+
+
+def money(value: Decimal) -> Decimal:
+ return value.quantize(MONEY_QUANT, rounding=ROUND_HALF_UP)
+
+
+def _select_text_tier(rule_json: Mapping[str, Any], context_tokens: int) -> Mapping[str, Any]:
+ for tier in rule_json.get("tiers") or []:
+ maximum = tier.get("max_context_tokens")
+ if maximum is None or context_tokens <= safe_int(maximum):
+ return tier
+ raise PricingCalculationError(f"没有匹配到文本 Token 档位: context_tokens={context_tokens}")
+
+
+def _calculate_text(rule_json: Mapping[str, Any], usage: Mapping[str, Any], currency: str) -> PricingCalculationResult:
+ input_tokens = max(0, safe_int(usage.get("input_tokens")))
+ output_tokens = max(0, safe_int(usage.get("output_tokens")))
+ context_tokens = max(0, safe_int(usage.get("context_tokens"), input_tokens))
+ cached_input = max(0, min(input_tokens, safe_int(usage.get("cached_input_tokens"))))
+ audio_input = max(0, min(input_tokens, safe_int(usage.get("audio_input_tokens"))))
+ cached_audio = max(0, min(audio_input, safe_int(usage.get("cached_audio_input_tokens"))))
+
+ tier = _select_text_tier(rule_json, context_tokens)
+ cached_text_input = max(0, cached_input - cached_audio)
+ normal_audio_input = max(0, audio_input - cached_audio)
+ # cached_input_tokens may include cached audio tokens. Add cached_audio back once
+ # so the four buckets always sum exactly to input_tokens.
+ normal_text_input = max(0, input_tokens - audio_input - cached_text_input)
+
+ input_rate = to_decimal(tier.get("input_rate"))
+ output_rate = to_decimal(tier.get("output_rate"))
+ cached_rate = to_decimal(tier.get("cached_input_rate"), str(input_rate))
+ audio_rate = to_decimal(tier.get("audio_input_rate"), str(input_rate))
+ cached_audio_rate = to_decimal(tier.get("cached_audio_input_rate"), str(cached_rate))
+
+ normal_input_cost = to_decimal(normal_text_input) * input_rate / MILLION
+ cached_input_cost = to_decimal(cached_text_input) * cached_rate / MILLION
+ audio_input_cost = to_decimal(normal_audio_input) * audio_rate / MILLION
+ cached_audio_cost = to_decimal(cached_audio) * cached_audio_rate / MILLION
+ output_cost = to_decimal(output_tokens) * output_rate / MILLION
+
+ cache_storage_tokens = max(0, safe_int(usage.get("cache_storage_tokens")))
+ cache_storage_hours = max(Decimal("0"), to_decimal(usage.get("cache_storage_duration_hours")))
+ storage_rate = to_decimal(rule_json.get("cache_storage_rate_per_million_token_hour"))
+ cache_storage_cost = to_decimal(cache_storage_tokens) * cache_storage_hours * storage_rate / MILLION
+
+ total = money(
+ normal_input_cost
+ + cached_input_cost
+ + audio_input_cost
+ + cached_audio_cost
+ + output_cost
+ + cache_storage_cost
+ )
+ return PricingCalculationResult(
+ amount=total,
+ currency=currency,
+ is_estimated=False,
+ selected_rate=None,
+ usage_source=str(usage.get("usage_source") or "provider"),
+ breakdown={
+ "formula": "token_items * corresponding_rate / 1e6",
+ "context_tokens": context_tokens,
+ "selected_tier": dict(tier),
+ "normal_text_input_tokens": normal_text_input,
+ "cached_text_input_tokens": cached_text_input,
+ "normal_audio_input_tokens": normal_audio_input,
+ "cached_audio_input_tokens": cached_audio,
+ "output_tokens": output_tokens,
+ "cache_storage_tokens": cache_storage_tokens,
+ "cache_storage_duration_hours": str(cache_storage_hours),
+ "normal_input_cost": str(money(normal_input_cost)),
+ "cached_input_cost": str(money(cached_input_cost)),
+ "audio_input_cost": str(money(audio_input_cost)),
+ "cached_audio_input_cost": str(money(cached_audio_cost)),
+ "output_cost": str(money(output_cost)),
+ "cache_storage_cost": str(money(cache_storage_cost)),
+ "total_cost": str(total),
+ },
+ )
+
+
+def _resolve_billable_output_count(rule_json: Mapping[str, Any], usage: Mapping[str, Any]) -> tuple[int, str, bool]:
+ bill_by = str(rule_json.get("bill_by") or PricingBillBy.SUCCESSFUL_OUTPUT_COUNT.value)
+ if bill_by == PricingBillBy.REQUESTED_OUTPUT_COUNT.value:
+ return max(0, safe_int(usage.get("requested_output_count"))), bill_by, True
+ if bill_by == PricingBillBy.PROVIDER_BILLED_COUNT.value:
+ count = max(0, safe_int(usage.get("provider_billed_count")))
+ return count, bill_by, count <= 0
+ if bill_by != PricingBillBy.SUCCESSFUL_OUTPUT_COUNT.value:
+ raise PricingCalculationError(f"不支持的图片计费数量来源: {bill_by}")
+ return max(0, safe_int(usage.get("successful_output_count"), safe_int(usage.get("generated_image_count")))), bill_by, False
+
+
+def _calculate_image_per_output(rule_json: Mapping[str, Any], usage: Mapping[str, Any], currency: str) -> PricingCalculationResult:
+ count, bill_by, count_estimated = _resolve_billable_output_count(rule_json, usage)
+ if count <= 0:
+ raise PricingCalculationError("图片计价缺少有效输出数量")
+ rate = to_decimal(rule_json.get("output_rate"))
+ total = money(to_decimal(count) * rate)
+ return PricingCalculationResult(
+ amount=total,
+ currency=currency,
+ is_estimated=count_estimated or safe_bool(usage.get("output_count_is_estimated")),
+ selected_rate=rate,
+ usage_source=str(usage.get("usage_source") or "provider_response"),
+ breakdown={
+ "formula": "billable_output_count * output_rate",
+ "bill_by": bill_by,
+ "billable_output_count": count,
+ "output_rate": str(rate),
+ "total_cost": str(total),
+ },
+ )
+
+
+def _select_image_tier(output_tiers: list[Mapping[str, Any]], pixels: int) -> Mapping[str, Any]:
+ for tier in output_tiers:
+ maximum = tier.get("max_pixels")
+ if maximum is None or pixels <= safe_int(maximum):
+ return tier
+ raise PricingCalculationError(f"没有匹配到图片输出像素档位: pixels={pixels}")
+
+
+def _calculate_image_tiered(rule_json: Mapping[str, Any], usage: Mapping[str, Any], currency: str) -> PricingCalculationResult:
+ input_count = max(0, safe_int(usage.get("provider_input_image_count"), safe_int(usage.get("input_image_count"))))
+ free_count = max(0, safe_int(rule_json.get("free_input_images")))
+ billable_input_count = max(0, input_count - free_count)
+ input_rate = to_decimal(rule_json.get("input_image_rate"))
+ input_cost = to_decimal(billable_input_count) * input_rate
+
+ output_items = usage.get("output_items") or []
+ if not isinstance(output_items, list):
+ output_items = []
+ count, bill_by, count_estimated = _resolve_billable_output_count(rule_json, usage)
+ if count <= 0:
+ raise PricingCalculationError("图片计价缺少有效输出数量")
+
+ output_tiers = list(rule_json.get("output_tiers") or [])
+ output_cost = Decimal("0")
+ item_breakdown: list[dict[str, Any]] = []
+ pixels_estimated = False
+
+ if output_items:
+ priced_count = 0
+ for index, item in enumerate(output_items[:count]):
+ if not isinstance(item, Mapping):
+ continue
+ pixels = max(0, safe_int(item.get("pixels")))
+ if pixels <= 0:
+ width = max(0, safe_int(item.get("width")))
+ height = max(0, safe_int(item.get("height")))
+ pixels = width * height
+ if pixels <= 0:
+ raise PricingCalculationError(f"第 {index + 1} 张输出图片缺少明确像素")
+ tier = _select_image_tier(output_tiers, pixels)
+ rate = to_decimal(tier.get("rate"))
+ output_cost += rate
+ priced_count += 1
+ item_breakdown.append({"index": index, "pixels": pixels, "tier": dict(tier), "rate": str(rate)})
+
+ # provider_billed_count/requested_output_count may be greater than the returned
+ # output item array. Only use an explicit fallback size; never silently under-bill.
+ remaining = count - priced_count
+ if remaining > 0:
+ fallback_pixels = max(0, safe_int(usage.get("output_pixels")))
+ if fallback_pixels <= 0:
+ fallback_width = max(0, safe_int(usage.get("output_width")))
+ fallback_height = max(0, safe_int(usage.get("output_height")))
+ fallback_pixels = fallback_width * fallback_height
+ if fallback_pixels <= 0:
+ raise PricingCalculationError(f"仍有 {remaining} 张计费输出缺少明确像素")
+ tier = _select_image_tier(output_tiers, fallback_pixels)
+ rate = to_decimal(tier.get("rate"))
+ output_cost += to_decimal(remaining) * rate
+ pixels_estimated = True
+ item_breakdown.append(
+ {
+ "count": remaining,
+ "pixels": fallback_pixels,
+ "tier": dict(tier),
+ "rate": str(rate),
+ "size_source": "explicit_fallback",
+ }
+ )
+ else:
+ pixels = max(0, safe_int(usage.get("output_pixels")))
+ if pixels <= 0:
+ width = max(0, safe_int(usage.get("output_width")))
+ height = max(0, safe_int(usage.get("output_height")))
+ pixels = width * height
+ if pixels <= 0:
+ raise PricingCalculationError("图片输出缺少明确像素")
+ tier = _select_image_tier(output_tiers, pixels)
+ rate = to_decimal(tier.get("rate"))
+ output_cost = to_decimal(count) * rate
+ pixels_estimated = True
+ item_breakdown = [{"count": count, "pixels": pixels, "tier": dict(tier), "rate": str(rate)}]
+
+ total = money(input_cost + output_cost)
+ return PricingCalculationResult(
+ amount=total,
+ currency=currency,
+ is_estimated=count_estimated or pixels_estimated or safe_bool(usage.get("output_pixels_is_estimated")),
+ selected_rate=None,
+ usage_source=str(usage.get("usage_source") or "provider_response"),
+ breakdown={
+ "formula": "billable_input_count*input_image_rate + sum(output_item_rate)",
+ "bill_by": bill_by,
+ "provider_input_image_count": input_count,
+ "free_input_images": free_count,
+ "billable_input_image_count": billable_input_count,
+ "input_image_rate": str(input_rate),
+ "input_cost": str(money(input_cost)),
+ "billable_output_count": count,
+ "output_items": item_breakdown,
+ "output_cost": str(money(output_cost)),
+ "total_cost": str(total),
+ },
+ )
+
+
+def _normalize_resolution(value: Any) -> str:
+ resolution = str(value or "").lower().strip().replace(" ", "")
+ return {"2160p": "4k", "uhd": "4k"}.get(resolution, resolution)
+
+
+def _normalize_ratio(value: Any) -> str:
+ return str(value or "").strip().replace(":", ":")
+
+
+def _resolve_video_dimensions(rule_json: Mapping[str, Any], usage: Mapping[str, Any]) -> tuple[int, int, str]:
+ width = max(0, safe_int(usage.get("output_width")))
+ height = max(0, safe_int(usage.get("output_height")))
+ if width > 0 and height > 0:
+ return width, height, str(usage.get("dimension_source") or "provider_response")
+
+ resolution = _normalize_resolution(usage.get("resolution"))
+ ratio = _normalize_ratio(usage.get("aspect_ratio"))
+ dimension_map = rule_json.get("dimension_map") or {}
+ resolution_map = dimension_map.get(resolution) if isinstance(dimension_map, Mapping) else None
+ value = resolution_map.get(ratio) if isinstance(resolution_map, Mapping) else None
+ if isinstance(value, Mapping):
+ width = max(0, safe_int(value.get("width")))
+ height = max(0, safe_int(value.get("height")))
+ elif isinstance(value, (list, tuple)) and len(value) >= 2:
+ width, height = max(0, safe_int(value[0])), max(0, safe_int(value[1]))
+ if width <= 0 or height <= 0:
+ raise PricingCalculationError(f"视频缺少明确尺寸,且价格规则未配置 dimension_map: resolution={resolution}, ratio={ratio}")
+ return width, height, "pricing_rule_map"
+
+
+def _rate_specificity(row: Mapping[str, Any]) -> tuple[int, int, int]:
+ resolutions = {_normalize_resolution(v) for v in (row.get("resolutions") or [])}
+ modes = {str(v).lower() for v in (row.get("inference_modes") or [])}
+ constrained = int(bool(resolutions)) + int(row.get("has_input_video") is not None) + int(
+ row.get("generate_audio") is not None
+ ) + int(bool(modes))
+ # More constrained dimensions win; within a dimension, a smaller allowed set is
+ # more specific. Empty sets represent wildcard and therefore score lowest.
+ return constrained, -(len(resolutions) if resolutions else 10_000), -(len(modes) if modes else 10_000)
+
+
+def _match_video_rate(rule_json: Mapping[str, Any], usage: Mapping[str, Any]) -> Mapping[str, Any]:
+ resolution = _normalize_resolution(usage.get("resolution"))
+ has_input_video = safe_bool(usage.get("has_input_video"))
+ generate_audio = safe_bool(usage.get("generate_audio"))
+ inference_mode = str(usage.get("inference_mode") or "online").lower().strip()
+ matched: list[Mapping[str, Any]] = []
+ for row in rule_json.get("rates") or []:
+ resolutions = [_normalize_resolution(v) for v in (row.get("resolutions") or [])]
+ if resolutions and resolution not in resolutions:
+ continue
+ if row.get("has_input_video") is not None and safe_bool(row.get("has_input_video")) != has_input_video:
+ continue
+ if row.get("generate_audio") is not None and safe_bool(row.get("generate_audio")) != generate_audio:
+ continue
+ modes = [str(v).lower() for v in (row.get("inference_modes") or [])]
+ if modes and inference_mode not in modes:
+ continue
+ matched.append(row)
+ if not matched:
+ raise PricingCalculationError(
+ "没有匹配到视频价格档位: "
+ f"resolution={resolution}, has_input_video={has_input_video}, "
+ f"generate_audio={generate_audio}, inference_mode={inference_mode}"
+ )
+ matched.sort(key=_rate_specificity, reverse=True)
+ if len(matched) > 1 and _rate_specificity(matched[0]) == _rate_specificity(matched[1]):
+ raise PricingCalculationError("视频价格档位存在同等优先级重叠,请修正规则")
+ return matched[0]
+
+
+def calculate_video_formula_tokens(rule_json: Mapping[str, Any], usage: Mapping[str, Any]) -> tuple[int, dict[str, Any]]:
+ input_seconds = max(Decimal("0"), to_decimal(usage.get("input_video_duration_seconds")))
+ output_seconds = max(Decimal("0"), to_decimal(usage.get("output_video_duration_seconds")))
+ fps = max(Decimal("0"), to_decimal(usage.get("fps")))
+ if fps <= 0:
+ fps = max(Decimal("0"), to_decimal(rule_json.get("default_fps")))
+ width, height, dimension_source = _resolve_video_dimensions(rule_json, usage)
+ if output_seconds <= 0 or fps <= 0:
+ raise PricingCalculationError("视频公式估算缺少输出时长或 FPS")
+ if safe_bool(usage.get("has_input_video")) and input_seconds <= 0:
+ raise PricingCalculationError("视频包含输入视频,但缺少输入视频时长,禁止估算")
+ tokens = (input_seconds + output_seconds) * Decimal(width) * Decimal(height) * fps / Decimal("1024")
+ rounded = max(0, int(tokens.quantize(Decimal("1"), rounding=ROUND_HALF_UP)))
+ return rounded, {
+ "input_video_duration_seconds": str(input_seconds),
+ "output_video_duration_seconds": str(output_seconds),
+ "output_width": width,
+ "output_height": height,
+ "fps": str(fps),
+ "dimension_source": dimension_source,
+ }
+
+
+def _calculate_video(rule_json: Mapping[str, Any], usage: Mapping[str, Any], currency: str) -> PricingCalculationResult:
+ actual_tokens = max(0, safe_int(usage.get("total_tokens")))
+ formula_detail: dict[str, Any] = {}
+ if actual_tokens > 0:
+ total_tokens = actual_tokens
+ use_formula = False
+ else:
+ total_tokens, formula_detail = calculate_video_formula_tokens(rule_json, usage)
+ use_formula = True
+ rate_row = _match_video_rate(rule_json, usage)
+ rate = to_decimal(rate_row.get("rate"))
+ total = money(to_decimal(total_tokens) * rate / MILLION)
+ return PricingCalculationResult(
+ amount=total,
+ currency=currency,
+ is_estimated=use_formula,
+ selected_rate=rate,
+ usage_source="request_formula" if use_formula else str(usage.get("usage_source") or "provider"),
+ breakdown={
+ "formula": "billable_total_tokens * rate / 1e6",
+ "token_source": "request_formula" if use_formula else "provider",
+ "provider_total_tokens": actual_tokens,
+ "billable_total_tokens": total_tokens,
+ "formula_parameters": formula_detail or None,
+ "selected_rate_rule": dict(rate_row),
+ "rate": str(rate),
+ "total_cost": str(total),
+ },
+ )
+
+
+def _expected_calculator(billing_mode: str) -> str:
+ mapping = {
+ ModelPricingBillingMode.TEXT_TOKEN_TIERED.value: ModelPricingCalculatorVersion.TEXT_TOKEN_TIERED_V1.value,
+ ModelPricingBillingMode.IMAGE_PER_OUTPUT.value: ModelPricingCalculatorVersion.IMAGE_PER_OUTPUT_V1.value,
+ ModelPricingBillingMode.IMAGE_INPUT_OUTPUT_TIERED.value: ModelPricingCalculatorVersion.IMAGE_INPUT_OUTPUT_TIERED_V1.value,
+ ModelPricingBillingMode.VIDEO_TOKEN_RATE.value: ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value,
+ }
+ value = mapping.get(billing_mode)
+ if not value:
+ raise PricingCalculationError(f"不支持的计价模式: {billing_mode}")
+ return value
+
+
+def _constraint_set(values: Any, *, normalize) -> set[str] | None:
+ normalized = {normalize(value) for value in (values or []) if str(value or "").strip()}
+ return normalized or None
+
+
+def _constraints_overlap(left: Mapping[str, Any], right: Mapping[str, Any]) -> bool:
+ left_res = _constraint_set(left.get("resolutions"), normalize=_normalize_resolution)
+ right_res = _constraint_set(right.get("resolutions"), normalize=_normalize_resolution)
+ if left_res is not None and right_res is not None and left_res.isdisjoint(right_res):
+ return False
+
+ for key in ("has_input_video", "generate_audio"):
+ lv, rv = left.get(key), right.get(key)
+ if lv is not None and rv is not None and safe_bool(lv) != safe_bool(rv):
+ return False
+
+ left_modes = _constraint_set(left.get("inference_modes"), normalize=lambda value: str(value).lower())
+ right_modes = _constraint_set(right.get("inference_modes"), normalize=lambda value: str(value).lower())
+ if left_modes is not None and right_modes is not None and left_modes.isdisjoint(right_modes):
+ return False
+ return True
+
+
+def _constraint_subset(child: Mapping[str, Any], parent: Mapping[str, Any]) -> bool:
+ child_res = _constraint_set(child.get("resolutions"), normalize=_normalize_resolution)
+ parent_res = _constraint_set(parent.get("resolutions"), normalize=_normalize_resolution)
+ if parent_res is not None and (child_res is None or not child_res.issubset(parent_res)):
+ return False
+
+ for key in ("has_input_video", "generate_audio"):
+ child_value, parent_value = child.get(key), parent.get(key)
+ if parent_value is not None and (child_value is None or safe_bool(child_value) != safe_bool(parent_value)):
+ return False
+
+ child_modes = _constraint_set(child.get("inference_modes"), normalize=lambda value: str(value).lower())
+ parent_modes = _constraint_set(parent.get("inference_modes"), normalize=lambda value: str(value).lower())
+ if parent_modes is not None and (child_modes is None or not child_modes.issubset(parent_modes)):
+ return False
+ return True
+
+
+def _validate_video_rate_overlaps(rates: list[Mapping[str, Any]]) -> None:
+ for left_index, left in enumerate(rates):
+ for right_index in range(left_index + 1, len(rates)):
+ right = rates[right_index]
+ if not _constraints_overlap(left, right):
+ continue
+ left_subset_right = _constraint_subset(left, right)
+ right_subset_left = _constraint_subset(right, left)
+ if left_subset_right and right_subset_left:
+ raise PricingCalculationError("视频价格档位存在重复条件")
+ if not left_subset_right and not right_subset_left:
+ raise PricingCalculationError("视频价格档位存在交叉重叠,无法确定唯一价格")
+ # The more specific row must be before its fallback row, matching the UI
+ # and keeping exported rule JSON human-readable and deterministic.
+ if right_subset_left:
+ raise PricingCalculationError("视频价格档位顺序错误:具体条件必须放在通用兜底条件之前")
+
+
+def validate_pricing_rule(*, billing_mode: str, calculator_version: str, rule_json: Mapping[str, Any]) -> None:
+ if calculator_version != _expected_calculator(billing_mode):
+ raise PricingCalculationError(f"计价模式与计算器版本不匹配: {billing_mode}/{calculator_version}")
+
+ if billing_mode == ModelPricingBillingMode.TEXT_TOKEN_TIERED.value:
+ tiers = list(rule_json.get("tiers") or [])
+ if not tiers:
+ raise PricingCalculationError("文本计价至少需要一个 Token 档位")
+ previous_max = 0
+ for index, tier in enumerate(tiers, start=1):
+ maximum = tier.get("max_context_tokens")
+ if maximum is None and index != len(tiers):
+ raise PricingCalculationError("无上限 Token 档位只能放在最后")
+ if maximum is not None:
+ maximum_int = safe_int(maximum)
+ if maximum_int <= previous_max:
+ raise PricingCalculationError("Token 档位上限必须严格递增")
+ previous_max = maximum_int
+ for key in ("input_rate", "output_rate"):
+ if to_decimal(tier.get(key), "-1") < 0:
+ raise PricingCalculationError(f"{key} 不能为空且不能小于 0")
+ return
+
+ if billing_mode == ModelPricingBillingMode.IMAGE_PER_OUTPUT.value:
+ if to_decimal(rule_json.get("output_rate"), "-1") < 0:
+ raise PricingCalculationError("图片输出单价不能为空且不能小于 0")
+ if str(rule_json.get("bill_by") or PricingBillBy.SUCCESSFUL_OUTPUT_COUNT.value) not in {v.value for v in PricingBillBy}:
+ raise PricingCalculationError("bill_by 不受支持")
+ return
+
+ if billing_mode == ModelPricingBillingMode.IMAGE_INPUT_OUTPUT_TIERED.value:
+ if safe_int(rule_json.get("free_input_images")) < 0:
+ raise PricingCalculationError("免费输入图片数不能小于 0")
+ if to_decimal(rule_json.get("input_image_rate"), "-1") < 0:
+ raise PricingCalculationError("输入图片单价不能为空且不能小于 0")
+ tiers = list(rule_json.get("output_tiers") or [])
+ if not tiers:
+ raise PricingCalculationError("图片输出至少需要一个像素档位")
+ previous_max = 0
+ for index, tier in enumerate(tiers, start=1):
+ maximum = tier.get("max_pixels")
+ if maximum is None and index != len(tiers):
+ raise PricingCalculationError("无上限像素档位只能放在最后")
+ if maximum is not None:
+ maximum_int = safe_int(maximum)
+ if maximum_int <= previous_max:
+ raise PricingCalculationError("图片像素档位上限必须严格递增")
+ previous_max = maximum_int
+ if to_decimal(tier.get("rate"), "-1") < 0:
+ raise PricingCalculationError("图片输出单价不能为空且不能小于 0")
+ return
+
+ if billing_mode == ModelPricingBillingMode.VIDEO_TOKEN_RATE.value:
+ rates = list(rule_json.get("rates") or [])
+ if not rates:
+ raise PricingCalculationError("视频计价至少需要一个价格档位")
+ signatures: set[tuple[Any, ...]] = set()
+ for row in rates:
+ if to_decimal(row.get("rate"), "-1") < 0:
+ raise PricingCalculationError("视频 Token 单价不能为空且不能小于 0")
+ signature = (
+ tuple(sorted(_normalize_resolution(v) for v in (row.get("resolutions") or []))),
+ row.get("has_input_video"),
+ row.get("generate_audio"),
+ tuple(sorted(str(v).lower() for v in (row.get("inference_modes") or []))),
+ )
+ if signature in signatures:
+ raise PricingCalculationError("视频价格档位存在重复条件")
+ signatures.add(signature)
+ _validate_video_rate_overlaps(rates)
+ dimension_map = rule_json.get("dimension_map") or {}
+ if dimension_map and not isinstance(dimension_map, Mapping):
+ raise PricingCalculationError("dimension_map 必须是对象")
+ return
+
+ raise PricingCalculationError(f"不支持的计价模式: {billing_mode}")
+
+
+def calculate_pricing(
+ *,
+ billing_mode: str,
+ calculator_version: str,
+ rule_json: Mapping[str, Any],
+ usage: Mapping[str, Any],
+ currency: str = "CNY",
+) -> PricingCalculationResult:
+ validate_pricing_rule(
+ billing_mode=billing_mode,
+ calculator_version=calculator_version,
+ rule_json=rule_json,
+ )
+ if calculator_version == ModelPricingCalculatorVersion.TEXT_TOKEN_TIERED_V1.value:
+ return _calculate_text(rule_json, usage, currency)
+ if calculator_version == ModelPricingCalculatorVersion.IMAGE_PER_OUTPUT_V1.value:
+ return _calculate_image_per_output(rule_json, usage, currency)
+ if calculator_version == ModelPricingCalculatorVersion.IMAGE_INPUT_OUTPUT_TIERED_V1.value:
+ return _calculate_image_tiered(rule_json, usage, currency)
+ if calculator_version == ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value:
+ return _calculate_video(rule_json, usage, currency)
+ raise PricingCalculationError(f"不支持的计算器版本: {calculator_version}")
diff --git a/video-gen-api/app/services/model_pricing/rule_service.py b/video-gen-api/app/services/model_pricing/rule_service.py
new file mode 100644
index 00000000..6904f182
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/rule_service.py
@@ -0,0 +1,517 @@
+from __future__ import annotations
+
+import hashlib
+import json
+from copy import deepcopy
+from datetime import datetime, timezone
+from typing import Any, Mapping
+
+from sqlalchemy import func, or_, select, text
+from sqlalchemy.ext.asyncio import AsyncSession
+
+from app.enums.model_pricing import ModelPricingRuleStatus
+from app.models.credit_record import CreditRecord
+from app.models.model_pricing_rule import ModelPricingRule
+from app.services.model_pricing.calculator import PricingCalculationError, validate_pricing_rule
+from app.utils.id_gen import generate_id
+
+
+PROVIDER_ALIASES = {
+ "ark": "volcengine",
+ "volc": "volcengine",
+ "volc_engine": "volcengine",
+ "volcano": "volcengine",
+ "volcengine": "volcengine",
+}
+
+
+class PricingRuleError(ValueError):
+ pass
+
+
+def _json_default(value: Any) -> str:
+ if isinstance(value, datetime):
+ return value.isoformat()
+ return str(value)
+
+
+def canonical_json_hash(value: Mapping[str, Any]) -> str:
+ raw = json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=_json_default)
+ return hashlib.sha256(raw.encode("utf-8")).hexdigest()
+
+
+def build_rule_content_hash(
+ *,
+ model_category: str,
+ billing_mode: str,
+ calculator_version: str,
+ currency: str,
+ rule_schema_version: int,
+ rule_json: Mapping[str, Any],
+) -> str:
+ """规则正文哈希包含所有会改变计算结果的字段,不只哈希 rule_json。"""
+ return canonical_json_hash(
+ {
+ "model_category": model_category,
+ "billing_mode": billing_mode,
+ "calculator_version": calculator_version,
+ "currency": str(currency or "CNY").upper(),
+ "rule_schema_version": int(rule_schema_version or 1),
+ "rule_json": normalize_rule_json(rule_json),
+ }
+ )
+
+
+def normalize_rule_json(value: Mapping[str, Any] | None) -> dict[str, Any]:
+ """返回全新的普通 dict,所有 ORM 更新必须整体赋值,禁止嵌套原地修改。"""
+ return deepcopy(dict(value or {}))
+
+
+def normalize_provider(provider: str | None, model_name: str | None = None) -> str:
+ value = str(provider or "").strip().lower()
+ normalized = PROVIDER_ALIASES.get(value, value)
+ if normalized in {"sdk", "openai_compatible"} and str(model_name or "").strip().lower().startswith("doubao-"):
+ return "volcengine"
+ return normalized
+
+
+def ensure_aware(value: datetime | None) -> datetime:
+ value = value or datetime.now(timezone.utc)
+ return value if value.tzinfo else value.replace(tzinfo=timezone.utc)
+
+
+def _validate_category_mode(model_category: str, billing_mode: str) -> None:
+ expected = {
+ "text_token_tiered": "text",
+ "image_per_output": "image",
+ "image_input_output_tiered": "image",
+ "video_token_rate": "video",
+ }.get(billing_mode)
+ if expected is None or model_category != expected:
+ raise PricingRuleError("模型类型与计价模式不匹配")
+
+
+def _validate_rule_payload(
+ *,
+ model_category: str,
+ billing_mode: str,
+ calculator_version: str,
+ rule_json: Mapping[str, Any],
+) -> None:
+ _validate_category_mode(model_category, billing_mode)
+ try:
+ validate_pricing_rule(
+ billing_mode=billing_mode,
+ calculator_version=calculator_version,
+ rule_json=rule_json,
+ )
+ except PricingCalculationError as exc:
+ raise PricingRuleError(str(exc)) from exc
+
+
+def rule_to_dict(rule: ModelPricingRule) -> dict[str, Any]:
+ return {
+ "id": rule.id,
+ "provider": rule.provider,
+ "model_name": rule.model_name,
+ "model_category": rule.model_category,
+ "billing_mode": rule.billing_mode,
+ "calculator_version": rule.calculator_version,
+ "version_code": rule.version_code,
+ "effective_from": rule.effective_from,
+ "effective_to": rule.effective_to,
+ "publish_status": rule.publish_status,
+ "currency": rule.currency,
+ "rule_schema_version": rule.rule_schema_version,
+ "rule_json": deepcopy(rule.rule_json or {}),
+ "rule_content_hash": rule.rule_content_hash,
+ "source_url": rule.source_url,
+ "source_updated_at": rule.source_updated_at,
+ "remark": rule.remark,
+ "created_by": rule.created_by,
+ "updated_by": rule.updated_by,
+ "created_at": rule.created_at,
+ "updated_at": rule.updated_at,
+ }
+
+
+def _rule_snapshot_query(rule_id: str):
+ return (
+ select(
+ ModelPricingRule.id,
+ ModelPricingRule.provider,
+ ModelPricingRule.model_name,
+ ModelPricingRule.model_category,
+ ModelPricingRule.billing_mode,
+ ModelPricingRule.calculator_version,
+ ModelPricingRule.version_code,
+ ModelPricingRule.effective_from,
+ ModelPricingRule.effective_to,
+ ModelPricingRule.publish_status,
+ ModelPricingRule.currency,
+ ModelPricingRule.rule_schema_version,
+ ModelPricingRule.rule_json,
+ ModelPricingRule.rule_content_hash,
+ ModelPricingRule.source_url,
+ ModelPricingRule.source_updated_at,
+ ModelPricingRule.remark,
+ ModelPricingRule.created_by,
+ ModelPricingRule.updated_by,
+ ModelPricingRule.created_at,
+ ModelPricingRule.updated_at,
+ )
+ .where(ModelPricingRule.id == rule_id)
+ .limit(1)
+ )
+
+
+def _snapshot_from_mapping(row: Mapping[str, Any]) -> dict[str, Any]:
+ snapshot = dict(row)
+ snapshot["rule_json"] = deepcopy(snapshot.get("rule_json") or {})
+ return snapshot
+
+
+async def get_rule_snapshot(db: AsyncSession, rule_id: str) -> dict[str, Any]:
+ """显式查询并返回普通字典,避免写入后访问过期 ORM 字段触发隐式 IO。"""
+ row = (await db.execute(_rule_snapshot_query(rule_id))).mappings().one_or_none()
+ if row is None:
+ raise PricingRuleError("模型计价规则不存在")
+ return _snapshot_from_mapping(row)
+
+
+async def _lock_model_rule_namespace(db: AsyncSession, provider: str, model_name: str) -> None:
+ bind = db.get_bind()
+ if bind is not None and bind.dialect.name == "postgresql":
+ lock_key = f"model_pricing:{provider}:{model_name}"
+ await db.execute(text("SELECT pg_advisory_xact_lock(hashtext(:lock_key))"), {"lock_key": lock_key})
+
+
+async def _assert_unique_version(
+ db: AsyncSession,
+ *,
+ provider: str,
+ model_name: str,
+ version_code: str,
+ exclude_id: str | None = None,
+) -> None:
+ query = select(ModelPricingRule.id).where(
+ ModelPricingRule.provider == provider,
+ ModelPricingRule.model_name == model_name,
+ ModelPricingRule.version_code == version_code,
+ )
+ if exclude_id:
+ query = query.where(ModelPricingRule.id != exclude_id)
+ if (await db.execute(query.limit(1))).scalar_one_or_none():
+ raise PricingRuleError("该供应商、模型和价格版本号已存在")
+
+
+async def _assert_no_overlap(
+ db: AsyncSession,
+ *,
+ provider: str,
+ model_name: str,
+ effective_from: datetime,
+ effective_to: datetime | None,
+ exclude_id: str | None = None,
+) -> None:
+ query = (
+ select(ModelPricingRule.id)
+ .where(ModelPricingRule.provider == provider)
+ .where(ModelPricingRule.model_name == model_name)
+ .where(ModelPricingRule.publish_status == ModelPricingRuleStatus.PUBLISHED.value)
+ .where(or_(ModelPricingRule.effective_to.is_(None), ModelPricingRule.effective_to > effective_from))
+ )
+ if effective_to is not None:
+ query = query.where(ModelPricingRule.effective_from < effective_to)
+ if exclude_id:
+ query = query.where(ModelPricingRule.id != exclude_id)
+ if (await db.execute(query.limit(1))).scalar_one_or_none():
+ raise PricingRuleError("该模型已存在生效时间重叠的已发布价格版本")
+
+
+async def resolve_published_rule(
+ db: AsyncSession,
+ *,
+ provider: str | None,
+ model_name: str | None,
+ reference_at: datetime | None = None,
+) -> ModelPricingRule | None:
+ model_name = str(model_name or "").strip()
+ provider = normalize_provider(provider, model_name)
+ if not provider or not model_name:
+ return None
+ at = ensure_aware(reference_at)
+ result = await db.execute(
+ select(ModelPricingRule)
+ .where(ModelPricingRule.provider == provider)
+ .where(ModelPricingRule.model_name == model_name)
+ .where(ModelPricingRule.publish_status.in_([ModelPricingRuleStatus.PUBLISHED.value, ModelPricingRuleStatus.DISABLED.value]))
+ .where(ModelPricingRule.effective_from <= at)
+ .where(or_(ModelPricingRule.effective_to.is_(None), ModelPricingRule.effective_to > at))
+ .order_by(ModelPricingRule.effective_from.desc(), ModelPricingRule.created_at.desc())
+ .limit(1)
+ )
+ return result.scalar_one_or_none()
+
+
+async def list_rules(
+ db: AsyncSession,
+ *,
+ page: int = 1,
+ page_size: int = 50,
+ provider: str | None = None,
+ model_name: str | None = None,
+ model_category: str | None = None,
+ publish_status: str | None = None,
+) -> dict[str, Any]:
+ filters = []
+ if provider:
+ filters.append(ModelPricingRule.provider == normalize_provider(provider))
+ if model_name:
+ filters.append(ModelPricingRule.model_name.ilike(f"%{model_name.strip()}%"))
+ if model_category:
+ filters.append(ModelPricingRule.model_category == model_category)
+ if publish_status:
+ filters.append(ModelPricingRule.publish_status == publish_status)
+ total = (await db.execute(select(func.count(ModelPricingRule.id)).where(*filters))).scalar_one()
+ rows = (
+ await db.execute(
+ select(ModelPricingRule)
+ .where(*filters)
+ .order_by(ModelPricingRule.model_name, ModelPricingRule.effective_from.desc())
+ .offset((page - 1) * page_size)
+ .limit(page_size)
+ )
+ ).scalars().all()
+ rule_ids = [row.id for row in rows]
+ referenced: dict[str, int] = {}
+ if rule_ids:
+ ref_rows = (
+ await db.execute(
+ select(CreditRecord.pricing_rule_id, func.count(CreditRecord.id))
+ .where(CreditRecord.pricing_rule_id.in_(rule_ids))
+ .group_by(CreditRecord.pricing_rule_id)
+ )
+ ).all()
+ referenced = {str(rule_id): int(count) for rule_id, count in ref_rows if rule_id}
+ items = []
+ for row in rows:
+ item = rule_to_dict(row)
+ item["referenced_count"] = referenced.get(row.id, 0)
+ items.append(item)
+ return {"items": items, "total": int(total or 0)}
+
+
+async def get_rule(db: AsyncSession, rule_id: str, *, for_update: bool = False) -> ModelPricingRule:
+ query = select(ModelPricingRule).where(ModelPricingRule.id == rule_id).limit(1)
+ if for_update:
+ query = query.with_for_update()
+ rule = (await db.execute(query)).scalar_one_or_none()
+ if not rule:
+ raise PricingRuleError("模型计价规则不存在")
+ return rule
+
+
+async def create_rule(db: AsyncSession, *, payload: dict[str, Any], operator_id: str | None) -> dict[str, Any]:
+ effective_from = ensure_aware(payload["effective_from"])
+ effective_to = ensure_aware(payload["effective_to"]) if payload.get("effective_to") else None
+ if effective_to and effective_to <= effective_from:
+ raise PricingRuleError("失效时间必须晚于生效时间")
+ model_name = str(payload.get("model_name") or "").strip()
+ provider = normalize_provider(payload.get("provider"), model_name)
+ version_code = str(payload.get("version_code") or "").strip()
+ calculator_version = str(payload.get("calculator_version") or "").strip()
+ if not provider or not model_name or not version_code or not calculator_version:
+ raise PricingRuleError("供应商、模型名称、版本号和计算器版本不能为空")
+ rule_json = normalize_rule_json(payload.get("rule_json"))
+ _validate_rule_payload(
+ model_category=payload["model_category"],
+ billing_mode=payload["billing_mode"],
+ calculator_version=calculator_version,
+ rule_json=rule_json,
+ )
+ await _lock_model_rule_namespace(db, provider, model_name)
+ await _assert_unique_version(db, provider=provider, model_name=model_name, version_code=version_code)
+ rule_id = generate_id()
+ rule = ModelPricingRule(
+ id=rule_id,
+ provider=provider,
+ model_name=model_name,
+ model_category=payload["model_category"],
+ billing_mode=payload["billing_mode"],
+ calculator_version=calculator_version,
+ version_code=version_code,
+ effective_from=effective_from,
+ effective_to=effective_to,
+ publish_status=ModelPricingRuleStatus.DRAFT.value,
+ currency=str(payload.get("currency") or "CNY").upper(),
+ rule_schema_version=int(payload.get("rule_schema_version") or 1),
+ rule_json=rule_json,
+ rule_content_hash=build_rule_content_hash(
+ model_category=payload["model_category"],
+ billing_mode=payload["billing_mode"],
+ calculator_version=calculator_version,
+ currency=str(payload.get("currency") or "CNY").upper(),
+ rule_schema_version=int(payload.get("rule_schema_version") or 1),
+ rule_json=rule_json,
+ ),
+ source_url=payload.get("source_url"),
+ source_updated_at=payload.get("source_updated_at"),
+ remark=payload.get("remark"),
+ created_by=operator_id,
+ updated_by=operator_id,
+ )
+ db.add(rule)
+ await db.flush()
+ return await get_rule_snapshot(db, rule_id)
+
+
+async def update_draft_rule(
+ db: AsyncSession,
+ *,
+ rule_id: str,
+ payload: dict[str, Any],
+ operator_id: str | None,
+) -> dict[str, Any]:
+ rule = await get_rule(db, rule_id, for_update=True)
+ if rule.publish_status != ModelPricingRuleStatus.DRAFT.value:
+ raise PricingRuleError("已发布或已停用的价格版本不可修改,请克隆为新版本")
+
+ provider = normalize_provider(payload.get("provider", rule.provider), payload.get("model_name", rule.model_name))
+ model_name = str(payload.get("model_name", rule.model_name) or "").strip()
+ version_code = str(payload.get("version_code", rule.version_code) or "").strip()
+ model_category = str(payload.get("model_category", rule.model_category))
+ billing_mode = str(payload.get("billing_mode", rule.billing_mode))
+ calculator_version = str(payload.get("calculator_version", rule.calculator_version))
+ rule_json = normalize_rule_json(payload["rule_json"] if "rule_json" in payload else rule.rule_json)
+ effective_from = ensure_aware(payload.get("effective_from", rule.effective_from))
+ effective_to = ensure_aware(payload["effective_to"]) if payload.get("effective_to") else None if "effective_to" in payload else rule.effective_to
+
+ if effective_to and effective_to <= effective_from:
+ raise PricingRuleError("失效时间必须晚于生效时间")
+ if not provider or not model_name or not version_code or not calculator_version:
+ raise PricingRuleError("供应商、模型名称、版本号和计算器版本不能为空")
+ _validate_rule_payload(
+ model_category=model_category,
+ billing_mode=billing_mode,
+ calculator_version=calculator_version,
+ rule_json=rule_json,
+ )
+ await _lock_model_rule_namespace(db, provider, model_name)
+ await _assert_unique_version(
+ db,
+ provider=provider,
+ model_name=model_name,
+ version_code=version_code,
+ exclude_id=rule.id,
+ )
+
+ rule.provider = provider
+ rule.model_name = model_name
+ rule.model_category = model_category
+ rule.billing_mode = billing_mode
+ rule.calculator_version = calculator_version
+ rule.version_code = version_code
+ rule.effective_from = effective_from
+ rule.effective_to = effective_to
+ rule.currency = str(payload.get("currency", rule.currency) or "CNY").upper()
+ rule.rule_schema_version = int(payload.get("rule_schema_version", rule.rule_schema_version) or 1)
+ rule.rule_json = rule_json
+ rule.rule_content_hash = build_rule_content_hash(
+ model_category=rule.model_category,
+ billing_mode=rule.billing_mode,
+ calculator_version=rule.calculator_version,
+ currency=rule.currency,
+ rule_schema_version=rule.rule_schema_version,
+ rule_json=rule.rule_json,
+ )
+ for key in ("source_url", "source_updated_at", "remark"):
+ if key in payload:
+ setattr(rule, key, payload[key])
+ rule.updated_by = operator_id
+ await db.flush()
+ return await get_rule_snapshot(db, rule_id)
+
+
+async def publish_rule(db: AsyncSession, *, rule_id: str, operator_id: str | None) -> dict[str, Any]:
+ rule = await get_rule(db, rule_id, for_update=True)
+ publish_status = rule.publish_status
+ if publish_status == ModelPricingRuleStatus.PUBLISHED.value:
+ return await get_rule_snapshot(db, rule_id)
+ if publish_status != ModelPricingRuleStatus.DRAFT.value:
+ raise PricingRuleError("只有草稿价格版本可以发布")
+
+ provider = rule.provider
+ model_name = rule.model_name
+ model_category = rule.model_category
+ billing_mode = rule.billing_mode
+ calculator_version = rule.calculator_version
+ effective_from = rule.effective_from
+ effective_to = rule.effective_to
+ currency = rule.currency
+ rule_schema_version = rule.rule_schema_version
+ rule_json = normalize_rule_json(rule.rule_json)
+
+ await _lock_model_rule_namespace(db, provider, model_name)
+ _validate_rule_payload(
+ model_category=model_category,
+ billing_mode=billing_mode,
+ calculator_version=calculator_version,
+ rule_json=rule_json,
+ )
+
+ previous = (
+ await db.execute(
+ select(ModelPricingRule)
+ .where(ModelPricingRule.provider == provider)
+ .where(ModelPricingRule.model_name == model_name)
+ .where(ModelPricingRule.publish_status == ModelPricingRuleStatus.PUBLISHED.value)
+ .where(ModelPricingRule.effective_from < effective_from)
+ .where(ModelPricingRule.effective_to.is_(None))
+ .order_by(ModelPricingRule.effective_from.desc())
+ .limit(1)
+ .with_for_update()
+ )
+ ).scalar_one_or_none()
+ if previous:
+ previous.effective_to = effective_from
+ previous.updated_by = operator_id
+ await db.flush()
+
+ await _assert_no_overlap(
+ db,
+ provider=provider,
+ model_name=model_name,
+ effective_from=effective_from,
+ effective_to=effective_to,
+ exclude_id=rule_id,
+ )
+ rule.rule_json = rule_json
+ rule.rule_content_hash = build_rule_content_hash(
+ model_category=model_category,
+ billing_mode=billing_mode,
+ calculator_version=calculator_version,
+ currency=currency,
+ rule_schema_version=rule_schema_version,
+ rule_json=rule_json,
+ )
+ rule.publish_status = ModelPricingRuleStatus.PUBLISHED.value
+ rule.updated_by = operator_id
+ await db.flush()
+ return await get_rule_snapshot(db, rule_id)
+
+
+async def disable_rule(db: AsyncSession, *, rule_id: str, operator_id: str | None) -> dict[str, Any]:
+ rule = await get_rule(db, rule_id, for_update=True)
+ if rule.publish_status == ModelPricingRuleStatus.DISABLED.value:
+ return await get_rule_snapshot(db, rule_id)
+ await _lock_model_rule_namespace(db, rule.provider, rule.model_name)
+ if rule.publish_status == ModelPricingRuleStatus.PUBLISHED.value:
+ now = datetime.now(timezone.utc)
+ close_at = now if rule.effective_from < now else rule.effective_from
+ if rule.effective_to is None or rule.effective_to > close_at:
+ rule.effective_to = close_at
+ rule.publish_status = ModelPricingRuleStatus.DISABLED.value
+ rule.updated_by = operator_id
+ await db.flush()
+ return await get_rule_snapshot(db, rule_id)
diff --git a/video-gen-api/app/services/model_pricing/seed_data.py b/video-gen-api/app/services/model_pricing/seed_data.py
new file mode 100644
index 00000000..97e0d194
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/seed_data.py
@@ -0,0 +1,175 @@
+from __future__ import annotations
+
+from datetime import datetime, timedelta, timezone
+from typing import Any
+
+from app.enums.model_pricing import (
+ ModelPricingBillingMode,
+ ModelPricingCalculatorVersion,
+ ModelPricingCategory,
+ ModelPricingProvider,
+ PricingBillBy,
+)
+
+
+CST = timezone(timedelta(hours=8))
+SOURCE_URL = "https://www.volcengine.com/docs/82379/1544106"
+SOURCE_UPDATED_AT = datetime(2026, 7, 9, 12, 2, 6, tzinfo=CST)
+
+# 文档更新时间不等于价格真实生效时间。初始化仅创建草稿;提交前必须逐模型核实并修改。
+PROPOSED_EFFECTIVE_FROM = SOURCE_UPDATED_AT
+
+
+def volcengine_pricing_seed_rules() -> list[dict[str, Any]]:
+ common = {
+ "provider": ModelPricingProvider.VOLCENGINE.value,
+ "publish_status": "draft",
+ "currency": "CNY",
+ "rule_schema_version": 1,
+ "source_url": SOURCE_URL,
+ "source_updated_at": SOURCE_UPDATED_AT,
+ "effective_from": PROPOSED_EFFECTIVE_FROM,
+ "remark_prefix": "初始化草稿:effective_from 仅为建议值,发布前必须核对火山真实生效时间。",
+ }
+ rules = [
+ {
+ **common,
+ "model_name": "doubao-seed-2-0-lite-260215",
+ "model_category": ModelPricingCategory.TEXT.value,
+ "billing_mode": ModelPricingBillingMode.TEXT_TOKEN_TIERED.value,
+ "calculator_version": ModelPricingCalculatorVersion.TEXT_TOKEN_TIERED_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {
+ "unit": "CNY_per_million_tokens",
+ "cache_storage_rate_per_million_token_hour": "0.017",
+ "tiers": [
+ {"max_context_tokens": 32000, "input_rate": "0.6", "audio_input_rate": "9", "output_rate": "3.6", "cached_input_rate": "0.12", "cached_audio_input_rate": "1.8"},
+ {"max_context_tokens": 128000, "input_rate": "0.9", "audio_input_rate": "13.5", "output_rate": "5.4", "cached_input_rate": "0.18", "cached_audio_input_rate": "2.7"},
+ {"max_context_tokens": 256000, "input_rate": "1.8", "audio_input_rate": "27", "output_rate": "10.8", "cached_input_rate": "0.36", "cached_audio_input_rate": "5.4"},
+ ],
+ },
+ "remark": "豆包 Seed 2.0 Lite,按上下文长度分档。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedream-5-0-pro-260628",
+ "model_category": ModelPricingCategory.IMAGE.value,
+ "billing_mode": ModelPricingBillingMode.IMAGE_INPUT_OUTPUT_TIERED.value,
+ "calculator_version": ModelPricingCalculatorVersion.IMAGE_INPUT_OUTPUT_TIERED_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {
+ "unit": "CNY_per_image",
+ "free_input_images": 1,
+ "input_image_rate": "0.02",
+ "output_tiers": [
+ {"max_pixels": 2360000, "rate": "0.30"},
+ {"max_pixels": None, "rate": "0.60"},
+ ],
+ "bill_by": PricingBillBy.SUCCESSFUL_OUTPUT_COUNT.value,
+ },
+ "remark": "Seedream 5.0 Pro:输入图和逐张输出像素分档计价。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedream-5-0-260128",
+ "model_category": ModelPricingCategory.IMAGE.value,
+ "billing_mode": ModelPricingBillingMode.IMAGE_PER_OUTPUT.value,
+ "calculator_version": ModelPricingCalculatorVersion.IMAGE_PER_OUTPUT_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {"unit": "CNY_per_image", "output_rate": "0.22", "bill_by": PricingBillBy.SUCCESSFUL_OUTPUT_COUNT.value},
+ "remark": "Seedream 5.0:按同步接口实际成功输出图片数量计价。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedance-2-0-260128",
+ "model_category": ModelPricingCategory.VIDEO.value,
+ "billing_mode": ModelPricingBillingMode.VIDEO_TOKEN_RATE.value,
+ "calculator_version": ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {
+ "unit": "CNY_per_million_tokens",
+ "token_formula_description": "(input_video_seconds + output_video_seconds) * width * height * fps / 1024",
+ "default_fps": 30,
+ "dimension_map": {},
+ "rates": [
+ {"resolutions": ["480p", "720p"], "has_input_video": False, "rate": "46"},
+ {"resolutions": ["480p", "720p"], "has_input_video": True, "rate": "28"},
+ {"resolutions": ["1080p"], "has_input_video": False, "rate": "51"},
+ {"resolutions": ["1080p"], "has_input_video": True, "rate": "31"},
+ {"resolutions": ["4k"], "has_input_video": False, "rate": "26"},
+ {"resolutions": ["4k"], "has_input_video": True, "rate": "16"},
+ ],
+ },
+ "remark": "Seedance 2.0 标准版;dimension_map 空时只接受 Provider 实际 Token,不猜比例像素。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedance-2-0-fast-260128",
+ "model_category": ModelPricingCategory.VIDEO.value,
+ "billing_mode": ModelPricingBillingMode.VIDEO_TOKEN_RATE.value,
+ "calculator_version": ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {
+ "unit": "CNY_per_million_tokens",
+ "default_fps": 30,
+ "dimension_map": {},
+ "rates": [
+ {"resolutions": ["480p", "720p"], "has_input_video": False, "rate": "37"},
+ {"resolutions": ["480p", "720p"], "has_input_video": True, "rate": "22"},
+ ],
+ },
+ "remark": "Seedance 2.0 Fast;仅配置支持的价格档位。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedance-2-0-mini-260615",
+ "model_category": ModelPricingCategory.VIDEO.value,
+ "billing_mode": ModelPricingBillingMode.VIDEO_TOKEN_RATE.value,
+ "calculator_version": ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {
+ "unit": "CNY_per_million_tokens",
+ "default_fps": 30,
+ "dimension_map": {},
+ "rates": [
+ {"resolutions": ["480p", "720p"], "has_input_video": False, "rate": "23"},
+ {"resolutions": ["480p", "720p"], "has_input_video": True, "rate": "14"},
+ ],
+ },
+ "remark": "Seedance 2.0 Mini;仅配置支持的价格档位。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedance-1-5-pro-251215",
+ "model_category": ModelPricingCategory.VIDEO.value,
+ "billing_mode": ModelPricingBillingMode.VIDEO_TOKEN_RATE.value,
+ "calculator_version": ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {
+ "unit": "CNY_per_million_tokens",
+ "default_fps": 30,
+ "dimension_map": {},
+ "rates": [
+ {"inference_modes": ["online"], "generate_audio": False, "rate": "8"},
+ {"inference_modes": ["online"], "generate_audio": True, "rate": "16"},
+ {"inference_modes": ["flex", "batch"], "generate_audio": False, "rate": "4"},
+ {"inference_modes": ["flex", "batch"], "generate_audio": True, "rate": "8"},
+ ],
+ },
+ "remark": "Seedance 1.5 Pro,按推理模式与有声/无声选择 Token 单价。",
+ },
+ {
+ **common,
+ "model_name": "doubao-seedance-1-0-pro-250528",
+ "model_category": ModelPricingCategory.VIDEO.value,
+ "billing_mode": ModelPricingBillingMode.VIDEO_TOKEN_RATE.value,
+ "calculator_version": ModelPricingCalculatorVersion.VIDEO_PIXEL_TOKEN_V1.value,
+ "version_code": "volc_20260709_v1",
+ "rule_json": {"unit": "CNY_per_million_tokens", "default_fps": 30, "dimension_map": {}, "rates": [{"rate": "15"}]},
+ "remark": "Seedance 1.0 Pro 固定 Token 单价。",
+ },
+ ]
+ for item in rules:
+ prefix = item.pop("remark_prefix")
+ item["remark"] = f"{prefix} {item.get('remark') or ''}".strip()
+ return rules
diff --git a/video-gen-api/app/services/model_pricing/snapshot_service.py b/video-gen-api/app/services/model_pricing/snapshot_service.py
new file mode 100644
index 00000000..f50e1f3e
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/snapshot_service.py
@@ -0,0 +1,585 @@
+from __future__ import annotations
+
+import hashlib
+import json
+from copy import deepcopy
+from datetime import datetime, timezone
+from decimal import Decimal
+from typing import Any, Mapping
+
+from sqlalchemy import func, select
+from sqlalchemy.ext.asyncio import AsyncSession
+
+from app.enums.model_pricing import ModelPricingRuleStatus, ProviderCostStatus, PricingSnapshotStage
+from app.models.credit_record import CreditRecord
+from app.models.model_pricing_rule import ModelPricingRule
+from app.services.model_pricing.calculator import PricingCalculationError, calculate_pricing
+from app.services.model_pricing.rule_service import normalize_provider, resolve_published_rule
+from app.services.operation_log_service import log_model_pricing_event
+
+
+SNAPSHOT_SCHEMA_VERSION = 1
+FINAL_STAGES = {
+ PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value,
+ PricingSnapshotStage.PROVIDER_ASYNC_COMPLETED.value,
+ PricingSnapshotStage.BACKFILL.value,
+}
+
+
+def _json_default(value: Any) -> Any:
+ if isinstance(value, datetime):
+ return value.isoformat()
+ if isinstance(value, Decimal):
+ return str(value)
+ return str(value)
+
+
+def _canonical_hash(value: Mapping[str, Any]) -> str:
+ raw = json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=_json_default)
+ return hashlib.sha256(raw.encode("utf-8")).hexdigest()
+
+
+def _utcnow() -> datetime:
+ return datetime.now(timezone.utc)
+
+
+def _reference_at(value: datetime | None) -> datetime:
+ value = value or _utcnow()
+ return value if value.tzinfo else value.replace(tzinfo=timezone.utc)
+
+
+def build_refund_pricing_snapshot(charge: Any) -> tuple[dict[str, Any], str]:
+ snapshot = {
+ "schema_version": SNAPSHOT_SCHEMA_VERSION,
+ "refund": {
+ "provider_cost": {
+ "currency": getattr(charge, "provider_cost_currency", None) or "CNY",
+ "amount": "0",
+ "status": ProviderCostStatus.NOT_APPLICABLE.value,
+ "reason": "user_credit_refund_does_not_reverse_provider_cost",
+ },
+ "original_charge": {
+ "credit_record_id": getattr(charge, "id", None),
+ "pricing_rule_id": getattr(charge, "pricing_rule_id", None),
+ "pricing_version_code": getattr(charge, "pricing_version_code", None),
+ "pricing_snapshot_hash": getattr(charge, "pricing_snapshot_hash", None),
+ "provider_cost_amount": str(getattr(charge, "provider_cost_amount", None) or 0),
+ "provider_cost_status": getattr(charge, "provider_cost_status", None),
+ },
+ },
+ }
+ return snapshot, _canonical_hash(snapshot)
+
+
+def _rule_snapshot(rule: ModelPricingRule) -> dict[str, Any]:
+ return {
+ "id": rule.id,
+ "provider": rule.provider,
+ "model_name": rule.model_name,
+ "model_category": rule.model_category,
+ "billing_mode": rule.billing_mode,
+ "calculator_version": rule.calculator_version,
+ "version_code": rule.version_code,
+ "effective_from": rule.effective_from.isoformat() if rule.effective_from else None,
+ "effective_to": rule.effective_to.isoformat() if rule.effective_to else None,
+ "currency": rule.currency,
+ "rule_schema_version": rule.rule_schema_version,
+ "rule_content_hash": rule.rule_content_hash,
+ "rule_json": deepcopy(rule.rule_json or {}),
+ "source_url": rule.source_url,
+ "source_updated_at": rule.source_updated_at.isoformat() if rule.source_updated_at else None,
+ }
+
+
+def _apply_rule_fields(target: Any, rule: ModelPricingRule, reference_at: datetime) -> None:
+ target.pricing_rule_id = rule.id
+ target.pricing_version_code = rule.version_code
+ target.pricing_billing_mode = rule.billing_mode
+ target.pricing_calculator_version = rule.calculator_version
+ target.pricing_reference_at = reference_at
+ target.pricing_effective_from = rule.effective_from
+ target.pricing_effective_to = rule.effective_to
+ target.pricing_snapshot_schema_version = SNAPSHOT_SCHEMA_VERSION
+ target.provider_cost_currency = rule.currency
+
+
+def _build_pricing_snapshot(
+ *,
+ rule: ModelPricingRule,
+ result: Any,
+ stage: str,
+ audit_metadata: Mapping[str, Any] | None = None,
+) -> dict[str, Any]:
+ # calculated_at 不参与 hash;运行时间单独保存在平铺字段中,保证相同规则/用量快照 hash 稳定。
+ snapshot = {
+ "schema_version": SNAPSHOT_SCHEMA_VERSION,
+ "stage": stage,
+ "rule": _rule_snapshot(rule),
+ "calculation": deepcopy(result.breakdown),
+ "provider_cost": {
+ "currency": result.currency,
+ "amount": str(result.amount),
+ "status": ProviderCostStatus.ESTIMATED.value if result.is_estimated else ProviderCostStatus.CALCULATED.value,
+ "is_estimated": bool(result.is_estimated),
+ "usage_source": result.usage_source,
+ },
+ }
+ if audit_metadata:
+ snapshot["backfill"] = deepcopy(dict(audit_metadata))
+ return snapshot
+
+
+def _build_status_snapshot(
+ *,
+ status: str,
+ stage: str,
+ rule: ModelPricingRule | None = None,
+ reason: str | None = None,
+ audit_metadata: Mapping[str, Any] | None = None,
+) -> dict[str, Any]:
+ snapshot: dict[str, Any] = {
+ "schema_version": SNAPSHOT_SCHEMA_VERSION,
+ "stage": stage,
+ "provider_cost": {"status": status},
+ }
+ if rule is not None:
+ snapshot["rule"] = _rule_snapshot(rule)
+ snapshot["provider_cost"]["currency"] = rule.currency
+ if reason:
+ snapshot["provider_cost"]["reason"] = reason
+ if audit_metadata:
+ snapshot["backfill"] = deepcopy(dict(audit_metadata))
+ return snapshot
+
+
+def _apply_result(
+ target: Any,
+ *,
+ rule: ModelPricingRule,
+ usage: Mapping[str, Any],
+ result: Any,
+ stage: str,
+ audit_metadata: Mapping[str, Any] | None = None,
+) -> None:
+ now = _utcnow()
+ status = ProviderCostStatus.ESTIMATED.value if result.is_estimated else ProviderCostStatus.CALCULATED.value
+ pricing_snapshot = _build_pricing_snapshot(
+ rule=rule,
+ result=result,
+ stage=stage,
+ audit_metadata=audit_metadata,
+ )
+ target.provider_cost_amount = result.amount
+ target.provider_cost_status = status
+ target.provider_cost_is_estimated = bool(result.is_estimated)
+ target.provider_cost_calculated_at = now
+ target.provider_cost_finalized_at = now if stage in FINAL_STAGES else None
+ target.pricing_usage_source = result.usage_source
+ target.pricing_snapshot_json = pricing_snapshot
+ target.usage_snapshot_json = deepcopy(dict(usage))
+ target.pricing_snapshot_hash = _canonical_hash(pricing_snapshot)
+
+
+def _can_calculate(billing_mode: str, usage: Mapping[str, Any]) -> bool:
+ if billing_mode == "text_token_tiered":
+ return any(int(usage.get(k) or 0) > 0 for k in ("input_tokens", "output_tokens", "cached_input_tokens", "audio_input_tokens"))
+ if billing_mode in {"image_per_output", "image_input_output_tiered"}:
+ return int(usage.get("successful_output_count") or usage.get("provider_billed_count") or 0) > 0
+ if billing_mode == "video_token_rate":
+ if int(usage.get("total_tokens") or 0) > 0:
+ return True
+ return float(usage.get("output_video_duration_seconds") or 0) > 0
+ return False
+
+
+def _apply_not_applicable(target: Any, usage: Mapping[str, Any], reason: str) -> None:
+ target.provider_cost_status = ProviderCostStatus.NOT_APPLICABLE.value
+ target.provider_cost_amount = Decimal("0")
+ target.provider_cost_is_estimated = False
+ target.provider_usage_primary = False
+ target.usage_snapshot_json = deepcopy(dict(usage)) or None
+ target.pricing_snapshot_json = {
+ "schema_version": SNAPSHOT_SCHEMA_VERSION,
+ "provider_cost": {
+ "status": ProviderCostStatus.NOT_APPLICABLE.value,
+ "amount": "0",
+ "reason": reason,
+ },
+ }
+ target.pricing_snapshot_hash = _canonical_hash(target.pricing_snapshot_json)
+
+
+async def enrich_credit_meta_with_pricing(
+ db: AsyncSession,
+ *,
+ meta: Any,
+ usage: Mapping[str, Any] | None = None,
+ reference_at: datetime | None = None,
+ final: bool = False,
+) -> Any:
+ usage_dict = deepcopy(dict(usage or {}))
+ reference = _reference_at(reference_at)
+
+ if getattr(meta, "charge_kind", None) in {"file_parse", "vision_input"}:
+ meta.pricing_reference_at = reference
+ _apply_not_applicable(meta, usage_dict, "cost_included_in_primary_text_prompt_charge")
+ return meta
+
+ provider = getattr(meta, "engine_provider", None)
+ model_name = getattr(meta, "engine_model_name", None)
+ if not provider or not model_name:
+ meta.pricing_reference_at = reference
+ meta.provider_cost_status = ProviderCostStatus.PENDING.value if not final else ProviderCostStatus.HISTORICAL_ENGINE_UNAVAILABLE.value
+ meta.usage_snapshot_json = usage_dict or None
+ return meta
+
+ rule = await resolve_published_rule(db, provider=provider, model_name=model_name, reference_at=reference)
+ if not rule:
+ meta.pricing_reference_at = reference
+ meta.provider_cost_status = ProviderCostStatus.UNMATCHED_RULE.value
+ meta.usage_snapshot_json = usage_dict or None
+ return meta
+
+ _apply_rule_fields(meta, rule, reference)
+ meta.provider_usage_primary = bool(usage_dict.get("provider_usage_primary", True))
+ meta.usage_snapshot_json = usage_dict or None
+
+ # 媒体扣费创建阶段只锁定规则与请求快照。图片等待同步生成响应,视频等待异步 Provider 完成;
+ # 不能在请求时用预设时长/分辨率提前写入估算成本。
+ if not final:
+ meta.provider_cost_status = ProviderCostStatus.PENDING.value
+ meta.provider_cost_amount = None
+ meta.provider_cost_is_estimated = False
+ meta.pricing_snapshot_json = {
+ "schema_version": SNAPSHOT_SCHEMA_VERSION,
+ "stage": PricingSnapshotStage.REQUEST_LOCKED.value,
+ "rule": _rule_snapshot(rule),
+ "provider_cost": {"currency": rule.currency, "status": meta.provider_cost_status},
+ }
+ meta.pricing_snapshot_hash = _canonical_hash(meta.pricing_snapshot_json)
+ return meta
+
+ if not _can_calculate(rule.billing_mode, usage_dict):
+ meta.provider_cost_status = ProviderCostStatus.USAGE_MISSING.value
+ meta.pricing_snapshot_json = {
+ "schema_version": SNAPSHOT_SCHEMA_VERSION,
+ "stage": PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value,
+ "rule": _rule_snapshot(rule),
+ "provider_cost": {"currency": rule.currency, "status": meta.provider_cost_status},
+ }
+ meta.pricing_snapshot_hash = _canonical_hash(meta.pricing_snapshot_json)
+ return meta
+
+ try:
+ result = calculate_pricing(
+ billing_mode=rule.billing_mode,
+ calculator_version=rule.calculator_version,
+ rule_json=rule.rule_json or {},
+ usage=usage_dict,
+ currency=rule.currency,
+ )
+ _apply_result(
+ meta,
+ rule=rule,
+ usage=usage_dict,
+ result=result,
+ stage=PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value if final else PricingSnapshotStage.REQUEST_LOCKED.value,
+ )
+ except PricingCalculationError:
+ meta.provider_cost_status = ProviderCostStatus.USAGE_MISSING.value if final else ProviderCostStatus.PENDING.value
+ except Exception as exc:
+ meta.provider_cost_status = ProviderCostStatus.ERROR.value
+ log_model_pricing_event(
+ event_type="pricing_cost_calculate",
+ event_status="failed",
+ owner_type=getattr(meta, "owner_type", None),
+ owner_id=getattr(meta, "owner_id", None),
+ pricing_rule_id=rule.id,
+ pricing_version=rule.version_code,
+ provider=provider,
+ model_name=model_name,
+ billing_mode=rule.billing_mode,
+ cost_status=meta.provider_cost_status,
+ error=str(exc),
+ )
+ return meta
+
+
+async def _load_locked_rule(
+ db: AsyncSession,
+ charge: CreditRecord,
+ *,
+ reference_at: datetime,
+ use_locked_rule: bool,
+) -> ModelPricingRule | None:
+ if use_locked_rule and charge.pricing_rule_id:
+ return (
+ await db.execute(select(ModelPricingRule).where(ModelPricingRule.id == charge.pricing_rule_id).limit(1))
+ ).scalar_one_or_none()
+
+ if not use_locked_rule:
+ provider = normalize_provider(charge.engine_provider, charge.engine_model_name)
+ model_name = str(charge.engine_model_name or "").strip()
+ if not provider or not model_name:
+ return None
+ return (
+ await db.execute(
+ select(ModelPricingRule)
+ .where(ModelPricingRule.provider == provider)
+ .where(ModelPricingRule.model_name == model_name)
+ .where(ModelPricingRule.publish_status == ModelPricingRuleStatus.PUBLISHED.value)
+ .where(ModelPricingRule.effective_from <= reference_at)
+ .where(
+ (ModelPricingRule.effective_to.is_(None))
+ | (ModelPricingRule.effective_to > reference_at)
+ )
+ .order_by(ModelPricingRule.effective_from.desc(), ModelPricingRule.created_at.desc())
+ .limit(1)
+ )
+ ).scalar_one_or_none()
+
+ return await resolve_published_rule(
+ db,
+ provider=charge.engine_provider,
+ model_name=charge.engine_model_name,
+ reference_at=reference_at,
+ )
+
+
+async def _missing_rule_status(db: AsyncSession, *, charge: CreditRecord, reference_at: datetime) -> str:
+ model_name = str(charge.engine_model_name or "").strip()
+ provider = normalize_provider(charge.engine_provider, model_name)
+ if not provider or not model_name:
+ return ProviderCostStatus.HISTORICAL_ENGINE_UNAVAILABLE.value
+ earliest = (
+ await db.execute(
+ select(func.min(ModelPricingRule.effective_from)).where(
+ ModelPricingRule.provider == provider,
+ ModelPricingRule.model_name == model_name,
+ )
+ )
+ ).scalar_one_or_none()
+ if earliest and _reference_at(reference_at) < _reference_at(earliest):
+ return ProviderCostStatus.HISTORICAL_PRICE_UNAVAILABLE.value
+ return ProviderCostStatus.UNMATCHED_RULE.value
+
+
+def _merge_snapshot(existing: Mapping[str, Any] | None, incoming: Mapping[str, Any] | None) -> dict[str, Any] | None:
+ if incoming is None:
+ return deepcopy(dict(existing or {})) or None
+ merged = deepcopy(dict(existing or {}))
+ merged.update(deepcopy(dict(incoming)))
+ return merged
+
+
+async def finalize_credit_record_pricing(
+ db: AsyncSession,
+ *,
+ charge: CreditRecord,
+ usage: Mapping[str, Any] | None,
+ stage: str,
+ attachment_snapshot: Mapping[str, Any] | None = None,
+ attachment_counts: Mapping[str, Any] | None = None,
+ generation_snapshot: Mapping[str, Any] | None = None,
+ generation_counts: Mapping[str, Any] | None = None,
+ allow_upgrade_estimated: bool = True,
+ pricing_reference_at: datetime | None = None,
+ use_locked_rule: bool = True,
+ force_reprice: bool = False,
+ backfill_metadata: Mapping[str, Any] | None = None,
+) -> CreditRecord:
+ """同一事务内回填,不 commit;JSON 一律构建新对象后整体赋值。
+
+ 正常生成链路保持默认行为:使用请求时已锁定的规则,已核算成本不可覆盖。
+ 历史补录可显式传入统一的当前计价时点、忽略旧规则绑定并强制重算。
+ """
+ if attachment_snapshot is not None:
+ charge.attachment_snapshot_json = deepcopy(dict(attachment_snapshot))
+ for key, value in (attachment_counts or {}).items():
+ if hasattr(charge, key):
+ setattr(charge, key, value)
+ if generation_snapshot is not None:
+ charge.generation_snapshot_json = _merge_snapshot(charge.generation_snapshot_json, generation_snapshot)
+ for key, value in (generation_counts or {}).items():
+ if hasattr(charge, key):
+ setattr(charge, key, value)
+
+ # 资源下载完成只补资源快照;同步图片/异步视频成本均不得在下载阶段重算。
+ if stage == PricingSnapshotStage.RESOURCE_DOWNLOAD_COMPLETED.value:
+ return charge
+
+ if charge.type != "consume" or charge.charge_action != "charge":
+ _apply_not_applicable(charge, dict(usage or {}), "only_consume_charge_can_be_priced")
+ return charge
+
+ current_status = charge.provider_cost_status
+ if not force_reprice:
+ if current_status == ProviderCostStatus.CALCULATED.value:
+ return charge
+ if current_status == ProviderCostStatus.ESTIMATED.value and not allow_upgrade_estimated:
+ return charge
+
+ usage_dict = deepcopy(dict(usage or {}))
+ reference = _reference_at(
+ pricing_reference_at
+ if pricing_reference_at is not None
+ else (charge.pricing_reference_at or charge.created_at)
+ )
+ rule = await _load_locked_rule(
+ db,
+ charge,
+ reference_at=reference,
+ use_locked_rule=use_locked_rule,
+ )
+ if not rule:
+ charge.pricing_reference_at = reference
+ if not charge.engine_provider or not charge.engine_model_name:
+ status = ProviderCostStatus.HISTORICAL_ENGINE_UNAVAILABLE.value
+ elif use_locked_rule:
+ status = await _missing_rule_status(db, charge=charge, reference_at=reference)
+ else:
+ status = ProviderCostStatus.UNMATCHED_RULE.value
+ charge.provider_cost_status = status
+ charge.provider_cost_amount = None
+ charge.provider_cost_is_estimated = False
+ charge.provider_cost_calculated_at = None
+ charge.provider_cost_finalized_at = None
+ charge.usage_snapshot_json = usage_dict or None
+ charge.pricing_snapshot_json = _build_status_snapshot(
+ status=status,
+ stage=stage,
+ reason="current_published_rule_not_found" if not use_locked_rule else "pricing_rule_not_found",
+ audit_metadata=backfill_metadata,
+ )
+ charge.pricing_snapshot_hash = _canonical_hash(charge.pricing_snapshot_json)
+ return charge
+
+ _apply_rule_fields(charge, rule, reference)
+ charge.provider_usage_primary = bool(usage_dict.get("provider_usage_primary", True))
+ if not _can_calculate(rule.billing_mode, usage_dict):
+ charge.provider_cost_status = (
+ ProviderCostStatus.USAGE_MISSING.value
+ if stage in FINAL_STAGES
+ else ProviderCostStatus.PENDING.value
+ )
+ charge.provider_cost_amount = None
+ charge.provider_cost_is_estimated = False
+ charge.provider_cost_calculated_at = None
+ charge.provider_cost_finalized_at = None
+ charge.usage_snapshot_json = usage_dict or None
+ charge.pricing_snapshot_json = _build_status_snapshot(
+ status=charge.provider_cost_status,
+ stage=stage,
+ rule=rule,
+ reason="pricing_usage_missing",
+ audit_metadata=backfill_metadata,
+ )
+ charge.pricing_snapshot_hash = _canonical_hash(charge.pricing_snapshot_json)
+ return charge
+
+ try:
+ result = calculate_pricing(
+ billing_mode=rule.billing_mode,
+ calculator_version=rule.calculator_version,
+ rule_json=rule.rule_json or {},
+ usage=usage_dict,
+ currency=rule.currency,
+ )
+ if (
+ not force_reprice
+ and current_status == ProviderCostStatus.ESTIMATED.value
+ and result.is_estimated
+ ):
+ return charge
+ _apply_result(
+ charge,
+ rule=rule,
+ usage=usage_dict,
+ result=result,
+ stage=stage,
+ audit_metadata=backfill_metadata,
+ )
+ log_model_pricing_event(
+ event_type="pricing_snapshot_persist",
+ user_id=charge.user_id,
+ credit_record_id=charge.id,
+ owner_type=charge.owner_type,
+ owner_id=charge.owner_id,
+ pricing_rule_id=rule.id,
+ pricing_version=rule.version_code,
+ provider=charge.engine_provider,
+ model_name=charge.engine_model_name,
+ billing_mode=rule.billing_mode,
+ cost_status=charge.provider_cost_status,
+ provider_cost=charge.provider_cost_amount,
+ is_estimated=charge.provider_cost_is_estimated,
+ detail={
+ "stage": stage,
+ "usage_source": charge.pricing_usage_source,
+ "backfill": deepcopy(dict(backfill_metadata or {})) or None,
+ },
+ )
+ except PricingCalculationError as exc:
+ charge.provider_cost_status = ProviderCostStatus.USAGE_MISSING.value
+ charge.provider_cost_amount = None
+ charge.provider_cost_is_estimated = False
+ charge.provider_cost_calculated_at = None
+ charge.provider_cost_finalized_at = None
+ charge.usage_snapshot_json = usage_dict or None
+ charge.pricing_snapshot_json = _build_status_snapshot(
+ status=charge.provider_cost_status,
+ stage=stage,
+ rule=rule,
+ reason=str(exc),
+ audit_metadata=backfill_metadata,
+ )
+ charge.pricing_snapshot_hash = _canonical_hash(charge.pricing_snapshot_json)
+ log_model_pricing_event(
+ event_type="pricing_snapshot_failed",
+ event_status="warning",
+ user_id=charge.user_id,
+ credit_record_id=charge.id,
+ owner_type=charge.owner_type,
+ owner_id=charge.owner_id,
+ pricing_rule_id=rule.id,
+ pricing_version=rule.version_code,
+ provider=charge.engine_provider,
+ model_name=charge.engine_model_name,
+ billing_mode=rule.billing_mode,
+ cost_status=charge.provider_cost_status,
+ error=str(exc),
+ detail={"stage": stage, "backfill": deepcopy(dict(backfill_metadata or {})) or None},
+ )
+ except Exception as exc:
+ charge.provider_cost_status = ProviderCostStatus.ERROR.value
+ charge.provider_cost_amount = None
+ charge.provider_cost_is_estimated = False
+ charge.provider_cost_calculated_at = None
+ charge.provider_cost_finalized_at = None
+ charge.usage_snapshot_json = usage_dict or None
+ charge.pricing_snapshot_json = _build_status_snapshot(
+ status=charge.provider_cost_status,
+ stage=stage,
+ rule=rule,
+ reason=str(exc),
+ audit_metadata=backfill_metadata,
+ )
+ charge.pricing_snapshot_hash = _canonical_hash(charge.pricing_snapshot_json)
+ log_model_pricing_event(
+ event_type="pricing_snapshot_failed",
+ event_status="failed",
+ user_id=charge.user_id,
+ credit_record_id=charge.id,
+ owner_type=charge.owner_type,
+ owner_id=charge.owner_id,
+ pricing_rule_id=rule.id,
+ pricing_version=rule.version_code,
+ provider=charge.engine_provider,
+ model_name=charge.engine_model_name,
+ billing_mode=rule.billing_mode,
+ cost_status=charge.provider_cost_status,
+ error=str(exc),
+ detail={"stage": stage, "backfill": deepcopy(dict(backfill_metadata or {})) or None},
+ )
+ return charge
+
diff --git a/video-gen-api/app/services/model_pricing/usage_normalizer.py b/video-gen-api/app/services/model_pricing/usage_normalizer.py
new file mode 100644
index 00000000..9e2f80ed
--- /dev/null
+++ b/video-gen-api/app/services/model_pricing/usage_normalizer.py
@@ -0,0 +1,275 @@
+from __future__ import annotations
+
+import hashlib
+import json
+import re
+from copy import deepcopy
+from typing import Any, Mapping
+from urllib.parse import urlsplit, urlunsplit
+
+
+def safe_json_dict(value: Any) -> dict[str, Any]:
+ """Best-effort JSON object conversion without leaking parse failures into billing."""
+ if isinstance(value, Mapping):
+ return deepcopy(dict(value))
+ if isinstance(value, str) and value.strip():
+ try:
+ parsed = json.loads(value)
+ return deepcopy(dict(parsed)) if isinstance(parsed, Mapping) else {}
+ except Exception:
+ return {}
+ return {}
+
+
+def safe_int(value: Any, default: int = 0) -> int:
+ try:
+ if value in (None, ""):
+ return default
+ return int(float(value))
+ except Exception:
+ return default
+
+
+def safe_float(value: Any, default: float = 0.0) -> float:
+ try:
+ if value in (None, ""):
+ return default
+ return float(value)
+ except Exception:
+ return default
+
+
+def safe_bool(value: Any, default: bool = False) -> bool:
+ if isinstance(value, bool):
+ return value
+ if value in (None, ""):
+ return default
+ if isinstance(value, (int, float)):
+ return value != 0
+ text = str(value).strip().lower()
+ if text in {"1", "true", "yes", "on", "enabled"}:
+ return True
+ if text in {"0", "false", "no", "off", "disabled"}:
+ return False
+ return default
+
+
+def parse_size(value: Any) -> tuple[int, int]:
+ text = str(value or "").lower().replace("×", "x")
+ match = re.search(r"(\d{2,5})\s*x\s*(\d{2,5})", text)
+ if not match:
+ return 0, 0
+ return int(match.group(1)), int(match.group(2))
+
+
+def _extract_usage(data: Mapping[str, Any]) -> dict[str, Any]:
+ candidates = [
+ data.get("usage"),
+ (data.get("data") or {}).get("usage") if isinstance(data.get("data"), Mapping) else None,
+ (data.get("result") or {}).get("usage") if isinstance(data.get("result"), Mapping) else None,
+ ]
+ for value in candidates:
+ if isinstance(value, Mapping):
+ return deepcopy(dict(value))
+ return {}
+
+
+def normalize_text_pricing_usage(
+ raw_usage: Mapping[str, Any] | None,
+ *,
+ base: Mapping[str, Any] | None = None,
+) -> dict[str, Any]:
+ """Normalize Ark/OpenAI text usage and retain cache/audio dimensions."""
+ raw = deepcopy(dict(raw_usage or {}))
+ result = deepcopy(dict(base or {}))
+
+ input_tokens = safe_int(result.get("input_tokens"), safe_int(raw.get("input_tokens"), safe_int(raw.get("prompt_tokens"))))
+ output_tokens = safe_int(result.get("output_tokens"), safe_int(raw.get("output_tokens"), safe_int(raw.get("completion_tokens"))))
+ total_tokens = safe_int(result.get("total_tokens"), safe_int(raw.get("total_tokens"), input_tokens + output_tokens))
+
+ details: dict[str, Any] = {}
+ for key in ("prompt_tokens_details", "input_tokens_details"):
+ value = raw.get(key)
+ if isinstance(value, Mapping):
+ details.update(deepcopy(dict(value)))
+
+ cached_input_tokens = safe_int(
+ result.get("cached_input_tokens"),
+ safe_int(raw.get("cached_input_tokens"), safe_int(details.get("cached_tokens"), safe_int(details.get("cache_read_tokens")))),
+ )
+ audio_input_tokens = safe_int(
+ result.get("audio_input_tokens"),
+ safe_int(raw.get("audio_input_tokens"), safe_int(details.get("audio_tokens"))),
+ )
+ cached_audio_input_tokens = safe_int(
+ result.get("cached_audio_input_tokens"),
+ safe_int(raw.get("cached_audio_input_tokens"), safe_int(details.get("cached_audio_tokens"))),
+ )
+
+ result.update(
+ {
+ "input_tokens": max(0, input_tokens),
+ "output_tokens": max(0, output_tokens),
+ "total_tokens": max(0, total_tokens),
+ "context_tokens": max(0, safe_int(result.get("context_tokens"), input_tokens)),
+ "cached_input_tokens": max(0, min(input_tokens, cached_input_tokens)),
+ "audio_input_tokens": max(0, min(input_tokens, audio_input_tokens)),
+ "cached_audio_input_tokens": max(0, min(input_tokens, audio_input_tokens, cached_audio_input_tokens)),
+ "cache_storage_tokens": max(0, safe_int(result.get("cache_storage_tokens"), safe_int(raw.get("cache_storage_tokens")))),
+ "cache_storage_duration_hours": max(
+ 0.0,
+ safe_float(result.get("cache_storage_duration_hours"), safe_float(raw.get("cache_storage_duration_hours"))),
+ ),
+ "provider_usage_primary": safe_bool(result.get("provider_usage_primary"), True),
+ "usage_source": result.get("usage_source") or "provider",
+ }
+ )
+ if details:
+ result["provider_input_token_details"] = details
+ return result
+
+
+def extract_image_output_items(provider_response: Any) -> list[dict[str, Any]]:
+ """Only parse explicit synchronous image output items; never recurse through arbitrary URLs."""
+ data = safe_json_dict(provider_response)
+ raw_items = data.get("data")
+ if isinstance(raw_items, Mapping):
+ raw_items = raw_items.get("items") or raw_items.get("data")
+ if not isinstance(raw_items, list):
+ raw_items = (data.get("result") or {}).get("data") if isinstance(data.get("result"), Mapping) else None
+ if not isinstance(raw_items, list):
+ return []
+
+ items: list[dict[str, Any]] = []
+ for index, raw in enumerate(raw_items):
+ if not isinstance(raw, Mapping):
+ continue
+ url = raw.get("url") or raw.get("image_url")
+ width = safe_int(raw.get("width"))
+ height = safe_int(raw.get("height"))
+ if width <= 0 or height <= 0:
+ width, height = parse_size(raw.get("size"))
+ item = {
+ "index": index,
+ "url": str(url) if url else None,
+ "width": width or None,
+ "height": height or None,
+ "pixels": width * height if width > 0 and height > 0 else None,
+ "size": raw.get("size"),
+ "size_source": "provider_response" if width > 0 and height > 0 else "unavailable",
+ }
+ # A valid provider output may omit a URL in rare response formats, but it must
+ # still be represented for generated-count and pixel-tier accounting.
+ items.append({key: value for key, value in item.items() if value is not None})
+ return items
+
+
+def sanitize_output_items(items: list[Mapping[str, Any]]) -> list[dict[str, Any]]:
+ """Remove volatile signed URLs before persisting pricing/generation snapshots."""
+ sanitized: list[dict[str, Any]] = []
+ for raw in items:
+ item = deepcopy(dict(raw))
+ url = str(item.pop("url", "") or "").strip()
+ if url:
+ try:
+ parts = urlsplit(url)
+ normalized = (
+ urlunsplit((parts.scheme.lower(), parts.netloc.lower(), parts.path, "", ""))
+ if parts.scheme and parts.netloc
+ else url.split("?", 1)[0].split("#", 1)[0]
+ )
+ except Exception:
+ normalized = url.split("?", 1)[0].split("#", 1)[0]
+ item["url_sha256"] = hashlib.sha256(normalized.encode("utf-8")).hexdigest()
+ sanitized.append(item)
+ return sanitized
+
+
+def normalize_provider_media_usage(
+ provider_response: Any,
+ *,
+ gen_type: str,
+ fallback_total_tokens: int = 0,
+ request_image_px: str | None = None,
+ requested_output_count: int = 1,
+ provider_input_image_count: int = 0,
+) -> dict[str, Any]:
+ """Normalize Volcengine synchronous-image or asynchronous-video response usage."""
+ data = safe_json_dict(provider_response)
+ raw_usage = _extract_usage(data)
+ input_tokens = safe_int(raw_usage.get("input_tokens"), safe_int(raw_usage.get("prompt_tokens")))
+ output_tokens = safe_int(
+ raw_usage.get("output_tokens"),
+ safe_int(raw_usage.get("completion_tokens"), safe_int(raw_usage.get("generated_tokens"))),
+ )
+ total_tokens = safe_int(raw_usage.get("total_tokens"), fallback_total_tokens)
+ if total_tokens <= 0:
+ total_tokens = input_tokens + output_tokens
+ if output_tokens <= 0 and total_tokens > input_tokens:
+ output_tokens = total_tokens - input_tokens
+
+ result: dict[str, Any] = deepcopy(dict(raw_usage))
+ result.update(
+ {
+ "input_tokens": max(0, input_tokens),
+ "output_tokens": max(0, output_tokens),
+ "total_tokens": max(0, total_tokens),
+ "requested_output_count": max(1, requested_output_count),
+ "provider_usage_primary": True,
+ }
+ )
+
+ pricing_meta = data.get("pricing_meta") if isinstance(data.get("pricing_meta"), Mapping) else {}
+ if gen_type == "image":
+ output_items = extract_image_output_items(data)
+ fallback_width, fallback_height = parse_size(request_image_px)
+ for item in output_items:
+ if not item.get("width") and fallback_width > 0 and fallback_height > 0:
+ item.update(
+ {
+ "width": fallback_width,
+ "height": fallback_height,
+ "pixels": fallback_width * fallback_height,
+ "size_source": "request_explicit",
+ }
+ )
+ output_items = sanitize_output_items(output_items)
+ provider_count = safe_int(
+ pricing_meta.get("provider_input_image_count"),
+ safe_int(data.get("provider_input_image_count"), provider_input_image_count),
+ )
+ generated = len(output_items) or safe_int(raw_usage.get("generated_images"))
+ provider_billed = safe_int(
+ raw_usage.get("billed_images"),
+ safe_int(pricing_meta.get("provider_billed_count"), max(0, generated)),
+ )
+ result.update(
+ {
+ "provider_input_image_count": max(0, provider_count),
+ "input_image_count": max(0, provider_count),
+ "output_items": output_items,
+ "successful_output_count": max(0, generated),
+ "provider_billed_count": max(0, provider_billed),
+ "usage_source": "provider_response",
+ }
+ )
+ return result
+
+ width = safe_int(raw_usage.get("width"), safe_int(data.get("width")))
+ height = safe_int(raw_usage.get("height"), safe_int(data.get("height")))
+ if width <= 0 or height <= 0:
+ width, height = parse_size(raw_usage.get("size") or data.get("size"))
+ result.update(
+ {
+ "output_width": width,
+ "output_height": height,
+ "dimension_source": "provider_response" if width > 0 and height > 0 else "unavailable",
+ "fps": safe_float(raw_usage.get("fps"), safe_float(data.get("fps"))),
+ "resolution": str(raw_usage.get("resolution") or data.get("resolution") or "").lower(),
+ "aspect_ratio": str(raw_usage.get("aspect_ratio") or data.get("aspect_ratio") or data.get("ratio") or ""),
+ "generate_audio": safe_bool(raw_usage.get("generate_audio"), safe_bool(data.get("generate_audio"))),
+ "inference_mode": str(raw_usage.get("inference_mode") or data.get("service_tier") or "online").lower(),
+ "usage_source": "provider" if total_tokens > 0 else "provider_response",
+ }
+ )
+ return result
diff --git a/video-gen-api/app/services/operation_log_service.py b/video-gen-api/app/services/operation_log_service.py
index 8e2c5056..3b8ffc85 100644
--- a/video-gen-api/app/services/operation_log_service.py
+++ b/video-gen-api/app/services/operation_log_service.py
@@ -364,3 +364,54 @@ def log_remote_api_event(
error=remote_message if event_status == "failed" else None,
**kwargs,
)
+
+
+def log_model_pricing_event(
+ *,
+ event_type: str,
+ event_status: str = "success",
+ user_id: str | None = None,
+ credit_record_id: str | None = None,
+ owner_type: str | None = None,
+ owner_id: str | None = None,
+ pricing_rule_id: str | None = None,
+ pricing_version: str | None = None,
+ provider: str | None = None,
+ model_name: str | None = None,
+ billing_mode: str | None = None,
+ cost_status: str | None = None,
+ provider_cost: Any = None,
+ is_estimated: bool | None = None,
+ message: str | None = None,
+ detail: dict[str, Any] | None = None,
+ error: str | None = None,
+) -> None:
+ """统一模型计价步骤日志,写入 log/OperationLogs/model_pricing/YYYY-MM-DD.log。"""
+ payload = dict(detail or {})
+ payload.update(
+ {
+ "credit_record_id": credit_record_id,
+ "owner_type": owner_type,
+ "owner_id": owner_id,
+ "pricing_rule_id": pricing_rule_id,
+ "pricing_version": pricing_version,
+ "provider": provider,
+ "model_name": model_name,
+ "billing_mode": billing_mode,
+ "cost_status": cost_status,
+ "provider_cost": str(provider_cost) if provider_cost is not None else None,
+ "is_estimated": is_estimated,
+ }
+ )
+ log_operation_event(
+ domain="model_pricing",
+ module="model_pricing",
+ event_type=event_type,
+ event_status=event_status,
+ source="model_pricing",
+ user_id=user_id,
+ task_id=owner_id,
+ message=message,
+ detail=payload,
+ error=error,
+ )
diff --git a/video-gen-api/app/services/shot_video_analysis_service.py b/video-gen-api/app/services/shot_video_analysis_service.py
index 10d14a6f..9df4ac34 100644
--- a/video-gen-api/app/services/shot_video_analysis_service.py
+++ b/video-gen-api/app/services/shot_video_analysis_service.py
@@ -19,6 +19,7 @@ from app.models.token_usage import TokenUsage
from app.services.upload_video_asset_service import resolve_upload_video_path
from app.services.resource_signed_url_service import build_resource_signed_url
from app.utils.id_gen import generate_id
+from app.services.model_pricing.usage_normalizer import normalize_text_pricing_usage
from app.enums.common import LogEventStatusEnum, LogSourceEnum
from app.enums.shot_replicate import ModuleCodeEnum, ShotReplicateLogEventEnum, ShotReplicateRemoteActionEnum
from app.services.operation_log_service import log_ai_model_event
@@ -692,7 +693,7 @@ async def analyze_video_for_shot_split(
result = filter_and_normalize_breakdown(result, mode=mode)
usage = raw.get("usage") or {}
- token_usage = {
+ token_usage = normalize_text_pricing_usage(usage, base={
"input_tokens": _int_usage(usage.get("prompt_tokens") or usage.get("input_tokens")),
"output_tokens": _int_usage(usage.get("completion_tokens") or usage.get("output_tokens")),
"total_tokens": _int_usage(usage.get("total_tokens")),
@@ -707,7 +708,7 @@ async def analyze_video_for_shot_split(
"analysis_mode": mode,
"trace_id": trace_id,
"log_request": log_request_data,
- }
+ })
if not token_usage["total_tokens"]:
token_usage["total_tokens"] = token_usage["input_tokens"] + token_usage["output_tokens"]
diff --git a/video-gen-api/app/services/video_queue.py b/video-gen-api/app/services/video_queue.py
index 95687748..25d013dd 100644
--- a/video-gen-api/app/services/video_queue.py
+++ b/video-gen-api/app/services/video_queue.py
@@ -3,14 +3,21 @@ import json
import logging
import os
from datetime import datetime
+from types import SimpleNamespace
from sqlalchemy import select
from app.models.base import async_session
from app.models.generation_record import GenerationRecord
-from app.services.video_gen import get_active_engine, poll_task_status, download_video, _log_video_response
-from app.services.image_gen import get_active_image_engine, download_image
-from app.services.media_token_usage_snapshot_service import sync_generation_record_media_token_snapshot
+from app.models.image_engine import ImageEngine
+from app.models.video_engine import VideoEngine
+from app.enums.model_pricing import PricingSnapshotStage, ProviderCostStatus
+from app.services.video_gen import poll_task_status, download_video, _log_video_response
+from app.services.image_gen import download_image, is_sync_image_provider_result_uncertain
+from app.services.media_token_usage_snapshot_service import (
+ mark_media_provider_cost_status,
+ sync_generation_record_media_token_snapshot,
+)
from app.services.resource_accounting_service import (
record_generation_record_generated_resource,
safe_file_size,
@@ -25,6 +32,38 @@ POLL_INTERVAL = 30 # seconds between polls
MAX_POLLS = 60 # max 30 minutes total
+def _loads(data: str | None) -> dict:
+ if not data:
+ return {}
+ try:
+ value = json.loads(data)
+ return value if isinstance(value, dict) else {}
+ except Exception:
+ return {}
+
+
+async def _get_runtime_engine(db, record: GenerationRecord):
+ """使用生成开始时冻结的引擎快照,数据库行只读取当前密钥。"""
+ if not record.engine_id:
+ raise ValueError("生成记录缺少锁定的 engine_id")
+ snapshot = _loads(record.engine_snapshot_json)
+ model = ImageEngine if record.gen_type == "image" else VideoEngine
+ engine = (await db.execute(select(model).where(model.id == record.engine_id).limit(1))).scalar_one_or_none()
+ if not engine:
+ raise ValueError("锁定的生成引擎不存在")
+ return SimpleNamespace(
+ id=record.engine_id,
+ name=snapshot.get("name") or engine.name,
+ provider=snapshot.get("provider") or engine.provider,
+ api_base=snapshot.get("api_base") or engine.api_base,
+ api_key=engine.api_key,
+ model_name=snapshot.get("model_name") or engine.model_name,
+ generate_url=snapshot.get("generate_url") or getattr(engine, "generate_url", ""),
+ query_url=snapshot.get("query_url") or getattr(engine, "query_url", ""),
+ default_size=snapshot.get("default_size") or getattr(engine, "default_size", "2K"),
+ )
+
+
class TaskQueue:
def __init__(self):
self.queue: asyncio.Queue[str] = asyncio.Queue()
@@ -93,7 +132,7 @@ class TaskQueue:
async def _process_video(self, db, record):
"""Process video generation task."""
record_id = record.id
-
+
if not record.seedance_task_id:
await mark_generation_record_failed_and_refund_once(
db,
@@ -104,7 +143,7 @@ class TaskQueue:
return
try:
- engine = await get_active_engine(db)
+ engine = await _get_runtime_engine(db, record)
poll_result = await poll_task_status(engine, record.seedance_task_id)
except Exception as e:
logger.error(f"Poll error for {record_id}: {e}")
@@ -133,6 +172,17 @@ class TaskQueue:
if status == "succeeded":
file_url = poll_result.get("video_url", "")
+ resp_data["video_url"] = file_url
+ resp_data["task_id"] = record.seedance_task_id
+ record.provider_response_json = json.dumps(resp_data, ensure_ascii=False, default=str)
+ record.video_tokens_used = poll_result.get("video_tokens", 0)
+ # 视频 Provider 已完成时核算供应商成本;下载失败不影响已发生的供应商费用。
+ await sync_generation_record_media_token_snapshot(
+ db,
+ record,
+ provider_response=resp_data,
+ stage=PricingSnapshotStage.PROVIDER_ASYNC_COMPLETED.value,
+ )
storage_path = None
file_size_bytes = 0
if settings.STORAGE_TYPE == "local" and file_url:
@@ -157,8 +207,6 @@ class TaskQueue:
record.video_url = file_url
else:
record.video_url = file_url
- record.video_tokens_used = poll_result.get("video_tokens", 0)
- await sync_generation_record_media_token_snapshot(db, record, provider_response=resp_data)
record.status = "completed"
record.generated_at = datetime.now()
if record.video_url:
@@ -171,6 +219,12 @@ class TaskQueue:
remote_url=file_url,
generated_at=record.generated_at,
)
+ await sync_generation_record_media_token_snapshot(
+ db,
+ record,
+ provider_response=resp_data,
+ stage=PricingSnapshotStage.RESOURCE_DOWNLOAD_COMPLETED.value,
+ )
self._active.pop(record_id, None)
await db.commit()
logger.info(f"Video task completed: {record_id}")
@@ -207,8 +261,11 @@ class TaskQueue:
record_id = record.id
from app.services.image_gen import submit_image_task, _log_image_response
+ provider_call_started = False
+ provider_call_completed = False
try:
- engine = await get_active_image_engine(db)
+ engine = await _get_runtime_engine(db, record)
+ provider_call_started = True
poll_result = await asyncio.to_thread(
submit_image_task,
db,
@@ -216,9 +273,23 @@ class TaskQueue:
record,
include_media_references=False,
)
+ provider_call_completed = True
if poll_result["error"] == "":
remote_url = poll_result.get("image_url")
+ try:
+ provider_response = json.loads(poll_result.get("response_data") or "{}")
+ except (json.JSONDecodeError, TypeError):
+ provider_response = {}
+ record.provider_response_json = json.dumps(provider_response, ensure_ascii=False, default=str)
+ record.image_tokens_used = poll_result.get("image_tokens", 0)
+ # 火山图片接口为同步生成:最终响应返回后立即完成供应商成本核算。
+ await sync_generation_record_media_token_snapshot(
+ db,
+ record,
+ provider_response=provider_response,
+ stage=PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value,
+ )
storage_path = None
file_size_bytes = 0
if settings.STORAGE_TYPE == "local" and remote_url:
@@ -236,8 +307,6 @@ class TaskQueue:
record.image_url = remote_url
else:
record.image_url = remote_url
- record.image_tokens_used = poll_result.get("image_tokens", 0)
- await sync_generation_record_media_token_snapshot(db, record, provider_response=poll_result)
record.status = "completed"
record.generated_at = datetime.now()
if record.image_url:
@@ -250,19 +319,46 @@ class TaskQueue:
remote_url=remote_url,
generated_at=record.generated_at,
)
+ await sync_generation_record_media_token_snapshot(
+ db,
+ record,
+ provider_response=provider_response,
+ stage=PricingSnapshotStage.RESOURCE_DOWNLOAD_COMPLETED.value,
+ )
await db.commit()
logger.info(f"Image task completed: {record_id}")
else:
+ error_message = poll_result.get("error", "图片生成失败")
+ await mark_media_provider_cost_status(
+ db,
+ owner=record,
+ status=ProviderCostStatus.NOT_INCURRED.value,
+ reason=error_message,
+ usage_stage="provider_sync_failed",
+ )
await mark_generation_record_failed_and_refund_once(
db,
record=record,
- error_message=poll_result.get("error", "图片生成失败"),
+ error_message=error_message,
)
await db.commit()
logger.info(f"Image task failed: {record_id}")
_log_image_response(record_id, poll_result)
except Exception as e:
+ if provider_call_started:
+ uncertain = provider_call_completed or is_sync_image_provider_result_uncertain(e)
+ await mark_media_provider_cost_status(
+ db,
+ owner=record,
+ status=(
+ ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value
+ if uncertain
+ else ProviderCostStatus.NOT_INCURRED.value
+ ),
+ reason=str(e),
+ usage_stage="provider_sync_exception",
+ )
await mark_generation_record_failed_and_refund_once(
db,
record=record,
diff --git a/video-gen-api/app/tasks/celery_app.py b/video-gen-api/app/tasks/celery_app.py
index 58e2435f..43f210a7 100644
--- a/video-gen-api/app/tasks/celery_app.py
+++ b/video-gen-api/app/tasks/celery_app.py
@@ -77,6 +77,8 @@ if broker_url:
task_serializer="json",
accept_content=["json"],
result_serializer="json",
+ result_expires=max(60, int(settings.CELERY_RESULT_EXPIRES_SECONDS or 7200)),
+ task_store_errors_even_if_ignored=True,
timezone="Asia/Shanghai",
enable_utc=True,
task_soft_time_limit=600,
diff --git a/video-gen-api/app/tasks/generation_create_tasks.py b/video-gen-api/app/tasks/generation_create_tasks.py
index 40ac7c47..995a6481 100644
--- a/video-gen-api/app/tasks/generation_create_tasks.py
+++ b/video-gen-api/app/tasks/generation_create_tasks.py
@@ -15,6 +15,7 @@ from app.enums.generation_task import (
GenerationMode,
GenerationType,
)
+from app.enums.model_pricing import PricingSnapshotStage, ProviderCostStatus
from app.models.base import async_session
from app.models.chat_generation_task import ChatGenerationTask
from app.services.error_codes import extract_error_message
@@ -22,7 +23,11 @@ from app.services.generation_log_service import log_task_event
from app.services.generation_poll_schedule_service import ensure_video_poll_fields
from app.services.generation_refund_service import mark_chat_generation_task_failed_and_refund_once
from app.services.generation_provider_service import create_provider_task
-from app.services.media_token_usage_snapshot_service import sync_chat_generation_task_media_token_snapshot
+from app.services.image_gen import is_sync_image_provider_result_uncertain
+from app.services.media_token_usage_snapshot_service import (
+ mark_media_provider_cost_status,
+ sync_chat_generation_task_media_token_snapshot,
+)
from app.services.redis_registry_service import ensure_aware_utc
from app.tasks.celery_app import celery_app
@@ -171,6 +176,8 @@ async def _run(task_id: str):
):
return
+ provider_call_started = False
+ provider_call_completed = False
try:
if not task.optimized_prompt:
old_stage = task.pipeline_stage
@@ -229,7 +236,9 @@ async def _run(task_id: str):
to_stage=ChatGenerationPipelineStage.CREATING_PROVIDER_TASK.value,
)
+ provider_call_started = True
created = await create_provider_task(db, task)
+ provider_call_completed = True
provider_task_id = created.get("task_id")
if provider_task_id:
@@ -246,7 +255,13 @@ async def _run(task_id: str):
ensure_ascii=False,
default=str,
)
- await sync_chat_generation_task_media_token_snapshot(db, task, provider_response=task.provider_response_json)
+ if task.gen_type == GenerationType.IMAGE.value:
+ await sync_chat_generation_task_media_token_snapshot(
+ db,
+ task,
+ provider_response=task.provider_response_json,
+ stage=PricingSnapshotStage.PROVIDER_SYNC_COMPLETED.value,
+ )
if task.remote_result_url and not task.seedance_task_id:
# 同步图片路径:原 SDK 已经返回最终 URL。
@@ -302,6 +317,19 @@ async def _run(task_id: str):
if task:
error_message = extract_error_message(exc, "生成任务") if callable(extract_error_message) else str(exc)
+ if task.gen_type == GenerationType.IMAGE.value and provider_call_started:
+ uncertain = provider_call_completed or is_sync_image_provider_result_uncertain(exc)
+ await mark_media_provider_cost_status(
+ db,
+ owner=task,
+ status=(
+ ProviderCostStatus.PROVIDER_RESULT_UNCERTAIN.value
+ if uncertain
+ else ProviderCostStatus.NOT_INCURRED.value
+ ),
+ reason=error_message,
+ usage_stage="provider_sync_exception",
+ )
await mark_chat_generation_task_failed_and_refund_once(
db,
task=task,
diff --git a/video-gen-api/app/tasks/generation_download_tasks.py b/video-gen-api/app/tasks/generation_download_tasks.py
index 118170af..9a395ba9 100644
--- a/video-gen-api/app/tasks/generation_download_tasks.py
+++ b/video-gen-api/app/tasks/generation_download_tasks.py
@@ -19,6 +19,7 @@ from app.enums.generation_task import (
ChatGenerationTaskStatus,
GenerationType,
)
+from app.enums.model_pricing import PricingSnapshotStage
from app.models.base import async_session
from app.models.chat_generation_task import ChatGenerationTask
from app.services.celery_download_recovery_service import (
@@ -547,7 +548,11 @@ async def _run(task_id: str):
remote_url=task.remote_result_url,
generated_at=task.generated_at,
)
- await sync_chat_generation_task_media_token_snapshot(db, task)
+ await sync_chat_generation_task_media_token_snapshot(
+ db,
+ task,
+ stage=PricingSnapshotStage.RESOURCE_DOWNLOAD_COMPLETED.value,
+ )
from app.services.generation_module_hook_service import notify_chat_generation_task_finished
diff --git a/video-gen-api/app/tasks/generation_poll_tasks.py b/video-gen-api/app/tasks/generation_poll_tasks.py
index 31178aab..bf0ee4f6 100644
--- a/video-gen-api/app/tasks/generation_poll_tasks.py
+++ b/video-gen-api/app/tasks/generation_poll_tasks.py
@@ -16,6 +16,7 @@ from app.enums.generation_task import (
PROVIDER_FAILED_STATUSES,
PROVIDER_SUCCESS_STATUSES,
)
+from app.enums.model_pricing import PricingSnapshotStage
from app.models.base import async_session
from app.models.chat_generation_task import ChatGenerationTask
from app.services.error_codes import extract_error_message
@@ -368,7 +369,12 @@ async def _run(task_id: str, *, force_due: bool = False):
task.video_tokens_used = poll_result.get("video_tokens", 0) or 0
task.provider_response_json = response_data
- await sync_chat_generation_task_media_token_snapshot(db, task, provider_response=response_data)
+ await sync_chat_generation_task_media_token_snapshot(
+ db,
+ task,
+ provider_response=response_data,
+ stage=PricingSnapshotStage.PROVIDER_ASYNC_COMPLETED.value,
+ )
if not task.remote_result_url:
await _mark_failed(db, task, message="供应商任务成功但未返回结果URL", detail=poll_result)
From f00c36c26291a4203e5e704c88ab4ed081610d8e Mon Sep 17 00:00:00 2001
From: GinHa <15201596918@163.com>
Date: Fri, 10 Jul 2026 17:00:49 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=B5=81=E6=B0=B4?=
=?UTF-8?q?=E5=AF=B9=E8=B4=A6=E6=98=8E=E7=BB=86=20|=20AI=E5=BC=95=E6=93=8E?=
=?UTF-8?q?=E8=AE=A1=E4=BB=B7=E8=A7=84=E5=88=99=20|=20admin=20build?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../{index-B0tEuCkU.js => index-3wUbVp5v.js} | 220 +++++++++---------
video-gen-admin/dist/index.html | 2 +-
.../modelPricing/PricingRuleForm.tsx | 8 +-
video-gen-admin/tsconfig.tsbuildinfo | 2 +-
4 files changed, 116 insertions(+), 116 deletions(-)
rename video-gen-admin/dist/assets/{index-B0tEuCkU.js => index-3wUbVp5v.js} (70%)
diff --git a/video-gen-admin/dist/assets/index-B0tEuCkU.js b/video-gen-admin/dist/assets/index-3wUbVp5v.js
similarity index 70%
rename from video-gen-admin/dist/assets/index-B0tEuCkU.js
rename to video-gen-admin/dist/assets/index-3wUbVp5v.js
index 2a5a0edd..59cfaea4 100644
--- a/video-gen-admin/dist/assets/index-B0tEuCkU.js
+++ b/video-gen-admin/dist/assets/index-3wUbVp5v.js
@@ -124,39 +124,39 @@ ${c?`height: ${o.height};`:``}
html body {
overflow-y: hidden;
${Mf()?`width: calc(100% - ${e}px);`:``}
-}`,n)}else Ci(n);return()=>{Ci(n)}},[t,n])}function If(){return{...C}.useId}var Lf=0;function Rf(e,t){return`${e}-${String(t).replace(/[^a-zA-Z0-9_.:-]/g,`-`)}`}var zf=If(),Bf=zf?function(e){let t=zf();return e||t}:function(e){let[t,n]=C.useState(`ssr-id`);return C.useEffect(()=>{let e=Lf;Lf+=1,n(`rc_unique_${e}`)},[]),e||t},Vf=[],Hf=200,Uf=0,Wf=e=>{if(e.key===`Escape`&&!e.isComposing){if(Date.now()-Uf=0;--n)Vf[n].onEsc({top:n===t-1,event:e})}},Gf=()=>{Uf=Date.now()};function Kf(){window.addEventListener(`keydown`,Wf),window.addEventListener(`compositionend`,Gf)}function qf(){Vf.length===0&&(window.removeEventListener(`keydown`,Wf),window.removeEventListener(`compositionend`,Gf))}function Jf(e,t){let n=Bf(),r=Rn(t),i=()=>{Vf.find(e=>e.id===n)||Vf.push({id:n,onEsc:r})},a=()=>{Vf=Vf.filter(e=>e.id!==n)};(0,C.useMemo)(()=>{e?i():e||a()},[e]),(0,C.useEffect)(()=>{if(e)return i(),Kf(),()=>{a(),qf()}},[e])}var Yf=l(g()),Xf=e=>e===!1?!1:!zn()||!e?null:typeof e==`string`?document.querySelector(e):typeof e==`function`?e():e,Zf=C.forwardRef((e,t)=>{let{open:n,autoLock:r,getContainer:i,debug:a,autoDestroy:o=!0,children:s,onEsc:c}=e,[l,u]=C.useState(n),d=l||n;C.useEffect(()=>{(o||n)&&u(n)},[n,o]);let[f,p]=C.useState(()=>Xf(i));C.useEffect(()=>{let e=Xf(i);p(()=>e??null)});let[m,h]=Df(d&&!f,a),g=f??m;Ff(r&&n&&zn()&&(g===m||g===document.body)),Jf(n,c);let _=null;s&&nr(s)&&t&&(_=ar(s));let v=tr(_,t);if(!d||!zn()||f===void 0)return null;let y=g===!1||Tf(),b=s;return t&&(b=C.cloneElement(s,{ref:v})),C.createElement(Cf.Provider,{value:h},y?b:(0,Yf.createPortal)(b,g))});function Qf(e){let{prefixCls:t,align:n,arrow:r,arrowPos:i}=e,{className:a,content:o,style:s}=r||{},{x:c=0,y:l=0}=i,u=C.useRef(null);if(!n||!n.points)return null;let d={position:`absolute`};if(n.autoArrow!==!1){let e=n.points[0],t=n.points[1],r=e[0],i=e[1],a=t[0],o=t[1];r===a||![`t`,`b`].includes(r)?d.top=l:r===`t`?d.top=0:d.bottom=0,i===o||![`l`,`r`].includes(i)?d.left=c:i===`l`?d.left=0:d.right=0}return C.createElement(`div`,{ref:u,className:q(`${t}-arrow`,a),style:{...d,...s}},o)}function $f(){return $f=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(`div`,{style:{zIndex:r},className:q(`${t}-mask`,o&&`${t}-mobile-mask`,e)})):null}var tp=C.memo(({children:e})=>e,(e,t)=>t.cache);function np(e,t,n,r,i,a,o,s){let c=`auto`,l=e?{}:{left:`-1000vw`,top:`-1000vh`,right:c,bottom:c};if(!e&&(t||!n)){let{points:e}=r,t=r.dynamicInset||r._experimental?.dynamicInset,n=t&&e[0][1]===`r`,u=t&&e[0][0]===`b`;n?(l.right=i,l.left=c):(l.left=o,l.right=c),u?(l.bottom=a,l.top=c):(l.top=s,l.bottom=c)}return l}function rp(){return rp=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{onEsc:n,popup:r,className:i,prefixCls:a,style:o,target:s,onVisibleChanged:c,open:l,keepDom:u,fresh:d,onClick:f,mask:p,arrow:m,arrowPos:h,align:g,motion:_,maskMotion:v,mobile:y,forceRender:b,getPopupContainer:x,autoDestroy:S,portal:w,children:T,zIndex:E,onMouseEnter:D,onMouseLeave:O,onPointerEnter:k,onPointerDownCapture:A,ready:j,offsetX:M,offsetY:N,offsetR:P,offsetB:F,onAlign:I,onPrepare:L,onResize:R,stretch:z,targetWidth:B,targetHeight:V}=e,H=typeof r==`function`?r():r,U=l||u,W=!!y,[ee,te,ne]=C.useMemo(()=>y?[y.mask,y.maskMotion,y.motion]:[p,v,_],[y,p,v,_]),re=x?.length>0,[ie,ae]=C.useState(!x||!re);Vn(()=>{!ie&&re&&s&&ae(!0)},[ie,re,s]);let G=Rn((e,t)=>{R?.(e,t),I()}),oe=np(W,j,l,g,P,F,M,N);if(!ie)return null;let K={};return z&&(z.includes(`height`)&&V?K.height=V:z.includes(`minHeight`)&&V&&(K.minHeight=V),z.includes(`width`)&&B?K.width=B:z.includes(`minWidth`)&&B&&(K.minWidth=B)),l||(K.pointerEvents=`none`),C.createElement(w,{open:b||U,getContainer:x&&(()=>x(s)),autoDestroy:S,onEsc:n},C.createElement(ep,{prefixCls:a,open:l,zIndex:E,mask:ee,motion:te,mobile:W}),C.createElement(Gr,{onResize:G,disabled:!l},e=>C.createElement(Lu,rp({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,forceRender:b,leavedClassName:`${a}-hidden`},ne,{onAppearPrepare:L,onEnterPrepare:L,visible:l,onVisibleChanged:e=>{_?.onVisibleChanged?.(e),c(e)}}),({className:n,style:r},s)=>{let c=q(a,n,i,{[`${a}-mobile`]:W});return C.createElement(`div`,{ref:er(e,t,s),className:c,style:{"--arrow-x":`${h.x||0}px`,"--arrow-y":`${h.y||0}px`,...oe,...K,...r,boxSizing:`border-box`,zIndex:E,...o},onMouseEnter:D,onMouseLeave:O,onPointerEnter:k,onClick:f,onPointerDownCapture:A},m&&C.createElement(Qf,{prefixCls:a,arrow:m,arrowPos:h,align:g}),C.createElement(tp,{cache:!l&&!d},H))})),T)}),ap=C.createContext(null),op=C.createContext(null);function sp(e){return e?Array.isArray(e)?e:[e]:[]}function cp(e,t,n){return C.useMemo(()=>{let r=sp(t??e),i=sp(n??e),a=new Set(r),o=new Set(i);return a.has(`hover`)&&!a.has(`click`)&&a.add(`touch`),o.has(`hover`)&&!o.has(`click`)&&o.add(`touch`),[a,o]},[e,t,n])}var lp=(e=>{if(!e)return!1;if(e instanceof Element){if(e.offsetParent)return!0;if(e.getBBox){let{width:t,height:n}=e.getBBox();if(t||n)return!0}if(e.getBoundingClientRect){let{width:t,height:n}=e.getBoundingClientRect();if(t||n)return!0}}return!1});function up(e=[],t=[],n){let r=(e,t)=>e[t]||``;return n?r(e,0)===r(t,0):r(e,0)===r(t,0)&&r(e,1)===r(t,1)}function dp(e,t,n,r){let{points:i}=n,a=Object.keys(e);for(let n=0;nr.includes(e))&&t.push(n),n=n.parentElement}return t}function mp(e,t=1){return Number.isNaN(e)?t:e}function hp(e){return mp(parseFloat(e),0)}function gp(e,t){let n={...e};return(t||[]).forEach(e=>{if(e instanceof HTMLBodyElement||e instanceof HTMLHtmlElement)return;let{overflow:t,overflowClipMargin:r,borderTopWidth:i,borderBottomWidth:a,borderLeftWidth:o,borderRightWidth:s}=fp(e).getComputedStyle(e),c=e.getBoundingClientRect(),{offsetHeight:l,clientHeight:u,offsetWidth:d,clientWidth:f}=e,p=hp(i),m=hp(a),h=hp(o),g=hp(s),_=mp(Math.round(c.width/d*1e3)/1e3),v=mp(Math.round(c.height/l*1e3)/1e3),y=(d-f-h-g)*_,b=(l-u-p-m)*v,x=p*v,S=m*v,C=h*_,w=g*_,T=0,E=0;if(t===`clip`){let e=hp(r);T=e*_,E=e*v}let D=c.x+C-T,O=c.y+x-E,k=D+c.width+2*T-C-w-y,A=O+c.height+2*E-x-S-b;n.left=Math.max(n.left,D),n.top=Math.max(n.top,O),n.right=Math.min(n.right,k),n.bottom=Math.min(n.bottom,A)}),n}function _p(e,t=0){let n=`${t}`,r=n.match(/^(.*)\%$/);return r?e*(parseFloat(r[1])/100):parseFloat(n)}function vp(e,t){let[n,r]=t||[];return[_p(e.width,n),_p(e.height,r)]}function yp(e=``){return[e[0],e[1]]}function bp(e,t){let n=t[0],r=t[1],i,a;return a=n===`t`?e.y:n===`b`?e.y+e.height:e.y+e.height/2,i=r===`l`?e.x:r===`r`?e.x+e.width:e.x+e.width/2,{x:i,y:a}}function xp(e,t){let n={t:`b`,b:`t`,l:`r`,r:`l`},r=[...e];return r[t]=n[e[t]]||`c`,r}function Sp(e){return e.join(``)}function Cp(e,t,n,r,i,a,o,s){let[c,l]=C.useState({ready:!1,offsetX:0,offsetY:0,offsetR:0,offsetB:0,arrowX:0,arrowY:0,scaleX:1,scaleY:1,align:i[r]||{}}),u=C.useRef(0),d=C.useMemo(()=>!t||s?[]:pp(t),[t]),f=C.useRef({});e||(f.current={});let p=Rn(()=>{if(t&&n&&e&&!s){let e=t,s=e.ownerDocument,c=fp(e),{position:u}=c.getComputedStyle(e),p=e.style.left,m=e.style.top,h=e.style.right,g=e.style.bottom,_=e.style.overflow,v={...i[r],...a},y=s.createElement(`div`);e.parentElement?.appendChild(y),y.style.left=`${e.offsetLeft}px`,y.style.top=`${e.offsetTop}px`,y.style.position=u,y.style.height=`${e.offsetHeight}px`,y.style.width=`${e.offsetWidth}px`,e.style.left=`0`,e.style.top=`0`,e.style.right=`auto`,e.style.bottom=`auto`,e.style.overflow=`hidden`;let b;if(Array.isArray(n))b={x:n[0],y:n[1],width:0,height:0};else{let e=n.getBoundingClientRect();e.x=e.x??e.left,e.y=e.y??e.top,b={x:e.x,y:e.y,width:e.width,height:e.height}}let x=e.getBoundingClientRect(),{height:S,width:C}=c.getComputedStyle(e);x.x=x.x??x.left,x.y=x.y??x.top;let{clientWidth:w,clientHeight:T,scrollWidth:E,scrollHeight:D,scrollTop:O,scrollLeft:k}=s.documentElement,A=x.height,j=x.width,M=b.height,N=b.width,P={left:0,top:0,right:w,bottom:T},F={left:-k,top:-O,right:E-k,bottom:D-O},{htmlRegion:I}=v,L=`visible`,R=`visibleFirst`;I!==`scroll`&&I!==R&&(I=L);let z=I===R,B=gp(F,d),V=gp(P,d),H=I===L?V:B,U=z?V:H;e.style.left=`auto`,e.style.top=`auto`,e.style.right=`0`,e.style.bottom=`0`;let W=e.getBoundingClientRect();e.style.left=p,e.style.top=m,e.style.right=h,e.style.bottom=g,e.style.overflow=_,e.parentElement?.removeChild(y);let ee=mp(Math.round(j/parseFloat(C)*1e3)/1e3),te=mp(Math.round(A/parseFloat(S)*1e3)/1e3);if(ee===0||te===0||kr(n)&&!lp(n))return;let{offset:ne,targetOffset:re}=v,[ie,ae]=vp(x,ne),[G,oe]=vp(b,re);b.x-=G,b.y-=oe;let[K,se]=v.points||[],ce=yp(se),le=yp(K),ue=bp(b,ce),de=bp(x,le),fe={...v},pe=[le,ce],me=ue.x-de.x+ie,he=ue.y-de.y+ae;function ge(e,t,n=H){let r=x.x+e,i=x.y+t,a=r+j,o=i+A,s=Math.max(r,n.left),c=Math.max(i,n.top),l=Math.min(a,n.right),u=Math.min(o,n.bottom);return Math.max(0,(l-s)*(u-c))}let _e=ge(me,he),ve=ge(me,he,V),ye=bp(b,[`t`,`l`]),be=bp(x,[`t`,`l`]),xe=bp(b,[`b`,`r`]),Se=bp(x,[`b`,`r`]),{adjustX:Ce,adjustY:we,shiftX:Te,shiftY:Ee}=v.overflow||{},De=e=>typeof e==`boolean`?e:e>=0,Oe,ke,Ae,je;function Me(){Oe=x.y+he,ke=Oe+A,Ae=x.x+me,je=Ae+j}Me();let Ne=De(we),Pe=le[0]===ce[0];if(Ne&&le[0]===`t`&&(ke>U.bottom||f.current.bt)){let e=he;Pe?e-=A-M:e=ye.y-Se.y-ae;let t=ge(me,e),n=ge(me,e,V);t>_e||t===_e&&(!z||n>=ve)?(f.current.bt=!0,he=e,ae=-ae,pe=[xp(pe[0],0),xp(pe[1],0)]):f.current.bt=!1}if(Ne&&le[0]===`b`&&(Oe_e||t===_e&&(!z||n>=ve)?(f.current.tb=!0,he=e,ae=-ae,pe=[xp(pe[0],0),xp(pe[1],0)]):f.current.tb=!1}let Fe=De(Ce),Ie=le[1]===ce[1];if(Fe&&le[1]===`l`&&(je>U.right||f.current.rl)){let e=me;Ie?e-=j-N:e=ye.x-Se.x-ie;let t=ge(e,he),n=ge(e,he,V);t>_e||t===_e&&(!z||n>=ve)?(f.current.rl=!0,me=e,ie=-ie,pe=[xp(pe[0],1),xp(pe[1],1)]):f.current.rl=!1}if(Fe&&le[1]===`r`&&(Ae_e||t===_e&&(!z||n>=ve)?(f.current.lr=!0,me=e,ie=-ie,pe=[xp(pe[0],1),xp(pe[1],1)]):f.current.lr=!1}fe.points=[Sp(pe[0]),Sp(pe[1])],Me();let Le=Te===!0?0:Te;typeof Le==`number`&&(AeV.right&&(me-=je-V.right-ie,b.x>V.right-Le&&(me+=b.x-V.right+Le)));let Re=Ee===!0?0:Ee;typeof Re==`number`&&(OeV.bottom&&(he-=ke-V.bottom-ae,b.y>V.bottom-Re&&(he+=b.y-V.bottom+Re)));let ze=x.x+me,Be=ze+j,Ve=x.y+he,He=Ve+A,Ue=b.x,We=Ue+N,Ge=b.y,Ke=Ge+M,qe=(Math.max(ze,Ue)+Math.min(Be,We))/2-ze,Je=(Math.max(Ve,Ge)+Math.min(He,Ke))/2-Ve;o?.(t,fe);let Ye=W.right-x.x-(me+x.width),Xe=W.bottom-x.y-(he+x.height);ee===1&&(me=Math.floor(me),Ye=Math.floor(Ye)),te===1&&(he=Math.floor(he),Xe=Math.floor(Xe)),l({ready:!0,offsetX:me/ee,offsetY:he/te,offsetR:Ye/ee,offsetB:Xe/te,arrowX:qe/ee,arrowY:Je/te,scaleX:ee,scaleY:te,align:fe})}}),m=()=>{u.current+=1;let e=u.current;Promise.resolve().then(()=>{u.current===e&&p()})},h=()=>{l(e=>({...e,ready:!1}))};return Vn(h,[r]),Vn(()=>{e||h()},[e]),[c.ready,c.offsetX,c.offsetY,c.offsetR,c.offsetB,c.arrowX,c.arrowY,c.scaleX,c.scaleY,c.align,m]}function wp(){let e=C.useRef(null),t=()=>{e.current&&=(clearTimeout(e.current),null)};return C.useEffect(()=>()=>{t()},[]),(n,r)=>{t(),r===0?n():e.current=setTimeout(()=>{n()},r*1e3)}}function Tp(e,t,n,r,i){Vn(()=>{if(e&&t&&n){let e=t,a=n,o=pp(e),s=pp(a),c=fp(a),l=new Set([c,...o,...s]);function u(){r(),i()}return l.forEach(e=>{e.addEventListener(`scroll`,u,{passive:!0})}),c.addEventListener(`resize`,u,{passive:!0}),r(),()=>{l.forEach(e=>{e.removeEventListener(`scroll`,u),c.removeEventListener(`resize`,u)})}}},[e,t,n])}function Ep(e,t,n,r,i,a,o,s){let c=C.useRef(e);c.current=e;let l=C.useRef(!1);C.useEffect(()=>{if(t&&r&&(!i||a)){let e=()=>{l.current=!1},t=e=>{c.current&&!o(e.composedPath?.()?.[0]||e.target)&&!l.current&&s(!1)},i=fp(r);i.addEventListener(`pointerdown`,e,!0),i.addEventListener(`mousedown`,t,!0),i.addEventListener(`contextmenu`,t,!0);let a=ml(n);return a&&(a.addEventListener(`mousedown`,t,!0),a.addEventListener(`contextmenu`,t,!0)),()=>{i.removeEventListener(`pointerdown`,e,!0),i.removeEventListener(`mousedown`,t,!0),i.removeEventListener(`contextmenu`,t,!0),a&&(a.removeEventListener(`mousedown`,t,!0),a.removeEventListener(`contextmenu`,t,!0))}}},[t,n,r,i,a]);function u(){l.current=!0}return u}function Dp(){let[e,t]=C.useState(null),[n,r]=C.useState(!1),[i,a]=C.useState(!1),o=C.useRef(null);return[Rn(e=>{e===!1?(o.current=null,r(!1)):i&&n?o.current=e:(r(!0),t(e),o.current=null,n||a(!0))}),n,e,Rn(e=>{e?(a(!1),o.current&&=(t(o.current),null)):(a(!1),o.current=null)})]}function Op(){return Op=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:t,isMobile:n,ready:r,open:i,align:a,offsetR:o,offsetB:s,offsetX:c,offsetY:l,arrowPos:u,popupSize:d,motion:f,uniqueContainerClassName:p,uniqueContainerStyle:m}=e,h=`${t}-unique-container`,[g,_]=C.useState(!1),v=np(n,r,i,a,o,s,c,l),y=C.useRef(v);r&&(y.current=v);let b={};return d&&(b.width=d.width,b.height=d.height),C.createElement(Lu,Op({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,leavedClassName:`${h}-hidden`},f,{visible:i,onVisibleChanged:e=>{_(e)}}),({className:e,style:t})=>{let n=q(h,e,p,{[`${h}-visible`]:g});return C.createElement(`div`,{className:n,style:{"--arrow-x":`${u?.x||0}px`,"--arrow-y":`${u?.y||0}px`,...y.current,...b,...t,...m}})})},Ap=({children:e,postTriggerProps:t})=>{let[n,r,i,a]=Dp(),o=C.useMemo(()=>!i||!t?i:t(i),[i,t]),[s,c]=C.useState(null),[l,u]=C.useState(null),d=C.useRef(null),f=Rn(e=>{d.current=e,kr(e)&&s!==e&&c(e)}),p=C.useRef(null),m=wp(),h=Rn((e,t)=>{p.current=t,m(()=>{n(e)},e.delay)}),g=e=>{m(()=>{p.current?.()||n(!1)},e)},_=Rn(e=>{a(e)}),[v,y,b,x,S,w,T,,,E,D]=Cp(r,s,o?.target,o?.popupPlacement,o?.builtinPlacements||{},o?.popupAlign,void 0,!1),O=C.useMemo(()=>o?q(dp(o.builtinPlacements||{},o.prefixCls||``,E,!1),o.getPopupClassNameFromAlign?.(E)):``,[E,o?.getPopupClassNameFromAlign,o?.builtinPlacements,o?.prefixCls]),k=C.useMemo(()=>({show:h,hide:g}),[]);C.useEffect(()=>{D()},[o?.target]);let A=Rn(()=>(D(),Promise.resolve())),j=C.useRef({}),M=C.useContext(ap),N=C.useMemo(()=>({registerSubPopup:(e,t)=>{j.current[e]=t,M?.registerSubPopup(e,t)}}),[M]),P=o?.prefixCls;return C.createElement(op.Provider,{value:k},e,o&&C.createElement(ap.Provider,{value:N},C.createElement(ip,{ref:f,portal:Zf,onEsc:o.onEsc,prefixCls:P,popup:o.popup,className:q(o.popupClassName,O,`${P}-unique-controlled`),style:o.popupStyle,target:o.target,open:r,keepDom:!0,fresh:!0,autoDestroy:!1,onVisibleChanged:_,ready:v,offsetX:y,offsetY:b,offsetR:x,offsetB:S,onAlign:D,onPrepare:A,onResize:e=>u({width:e.offsetWidth,height:e.offsetHeight}),arrowPos:{x:w,y:T},align:E,zIndex:o.zIndex,mask:o.mask,arrow:o.arrow,motion:o.popupMotion,maskMotion:o.maskMotion,getPopupContainer:o.getPopupContainer},C.createElement(kp,{prefixCls:P,isMobile:!1,ready:v,open:r,align:E,offsetR:x,offsetB:S,offsetX:y,offsetY:b,arrowPos:{x:w,y:T},popupSize:l,motion:o.popupMotion,uniqueContainerClassName:q(o.uniqueContainerClassName,O),uniqueContainerStyle:o.uniqueContainerStyle}))))};function jp(e=Zf){return C.forwardRef((t,n)=>{let{prefixCls:r=`rc-trigger-popup`,children:i,action:a=`hover`,showAction:o,hideAction:s,popupVisible:c,defaultPopupVisible:l,onOpenChange:u,afterOpenChange:d,onPopupVisibleChange:f,afterPopupVisibleChange:p,mouseEnterDelay:m,mouseLeaveDelay:h=.1,focusDelay:g,blurDelay:_,mask:v,maskClosable:y=!0,getPopupContainer:b,forceRender:x,autoDestroy:S,popup:w,popupClassName:T,uniqueContainerClassName:E,uniqueContainerStyle:D,popupStyle:O,popupPlacement:k,builtinPlacements:A={},popupAlign:j,zIndex:M,stretch:N,getPopupClassNameFromAlign:P,fresh:F,unique:I,alignPoint:L,onPopupClick:R,onPopupAlign:z,arrow:B,popupMotion:V,maskMotion:H,mobile:U,...W}=t,ee=S||!1,te=c===void 0,ne=!!U,re=C.useRef({}),ie=C.useContext(ap),ae=C.useMemo(()=>({registerSubPopup:(e,t)=>{re.current[e]=t,ie?.registerSubPopup(e,t)}}),[ie]),G=C.useContext(op),oe=Bf(),[K,se]=C.useState(null),ce=C.useRef(null),le=Rn(e=>{ce.current=e,kr(e)&&K!==e&&se(e),ie?.registerSubPopup(oe,e)}),[ue,de]=C.useState(null),fe=C.useRef(null),pe=Rn(e=>{let t=Ar(e);kr(t)&&ue!==t&&(de(t),fe.current=t)}),me={},he=Rn(e=>{let t=ue;return t?.contains(e)||ml(t)?.host===e||e===t||K?.contains(e)||ml(K)?.host===e||e===K||Object.values(re.current).some(t=>t?.contains(e)||e===t)}),ge=B?{...B===!0?{}:B}:null,[_e,ve]=Wn(l||!1,c),ye=_e||!1,be=C.useMemo(()=>{let e=typeof i==`function`?i({open:ye}):i;return C.Children.only(e)},[i,ye]),xe=be?.props||{},Se=Rn(()=>ye),Ce=Rn((e=0)=>({popup:w,target:ue,delay:e,prefixCls:r,popupClassName:T,uniqueContainerClassName:E,uniqueContainerStyle:D,popupStyle:O,popupPlacement:k,builtinPlacements:A,popupAlign:j,zIndex:M,mask:v,maskClosable:y,popupMotion:V,maskMotion:H,arrow:ge,getPopupContainer:b,getPopupClassNameFromAlign:P,id:oe,onEsc:Oe}));Vn(()=>{G&&I&&ue&&!te&&!ie&&(ye?G.show(Ce(m),Se):G.hide(h))},[ye,ue]);let we=C.useRef(ye);we.current=ye;let Te=Rn(e=>{(0,Yf.flushSync)(()=>{ye!==e&&(ve(e),u?.(e),f?.(e))})}),Ee=wp(),De=(e,t=0)=>{if(c!==void 0){Ee(()=>{Te(e)},t);return}if(G&&I&&te&&!ie){e?G.show(Ce(t),Se):G.hide(t);return}Ee(()=>{Te(e)},t)};function Oe({top:e}){e&&De(!1)}let[ke,Ae]=C.useState(!1);Vn(e=>{(!e||ye)&&Ae(!0)},[ye]);let[je,Me]=C.useState(null),[Ne,Pe]=C.useState(null),Fe=e=>{Pe([e.clientX,e.clientY])},[Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke]=Cp(ye,K,L&&Ne!==null?Ne:ue,k,A,j,z,ne),[qe,Je]=cp(a,o,s),Ye=qe.has(`click`),Xe=Je.has(`click`)||Je.has(`contextMenu`),Ze=Rn(()=>{ke||Ke()});Tp(ye,ue,K,Ze,()=>{we.current&&L&&Xe&&De(!1)}),Vn(()=>{Ze()},[Ne,k]),Vn(()=>{ye&&!A?.[k]&&Ze()},[JSON.stringify(j)]);let Qe=C.useMemo(()=>q(dp(A,r,Ge,L),P?.(Ge)),[Ge,P,A,r,L]);C.useImperativeHandle(n,()=>({nativeElement:fe.current,popupElement:ce.current,forceAlign:Ze}));let[$e,et]=C.useState(0),[tt,nt]=C.useState(0),rt=()=>{if(N&&ue){let e=ue.getBoundingClientRect();et(e.width),nt(e.height)}},it=()=>{rt(),Ze()},at=e=>{Ae(!1),Ke(),d?.(e),p?.(e)},ot=()=>new Promise(e=>{rt(),Me(()=>e)});Vn(()=>{je&&(Ke(),je(),Me(null))},[je]);function st(e,t,n,r,i){me[e]=(a,...o)=>{(!i||!i())&&(r?.(a),De(t,n)),xe[e]?.(a,...o)}}let ct=qe.has(`touch`),lt=Je.has(`touch`),ut=C.useRef(!1);(ct||lt)&&(me.onTouchStart=(...e)=>{ut.current=!0,we.current&<?De(!1):!we.current&&ct&&De(!0),xe.onTouchStart?.(...e)}),(Ye||Xe)&&(me.onClick=(e,...t)=>{we.current&&Xe?De(!1):!we.current&&Ye&&(Fe(e),De(!0)),xe.onClick?.(e,...t),ut.current=!1});let dt=Ep(ye,Xe||lt,ue,K,v,y,he,De),ft=qe.has(`hover`),pt=Je.has(`hover`),mt,ht,gt=()=>ut.current;if(ft){let e=e=>{Fe(e)};st(`onMouseEnter`,!0,m,e,gt),st(`onPointerEnter`,!0,m,e,gt),mt=e=>{(ye||ke)&&K?.contains(e.target)&&De(!0,m)},L&&(me.onMouseMove=e=>{xe.onMouseMove?.(e)})}pt&&(st(`onMouseLeave`,!1,h,void 0,gt),st(`onPointerLeave`,!1,h,void 0,gt),ht=()=>{De(!1,h)}),qe.has(`focus`)&&st(`onFocus`,!0,g),Je.has(`focus`)&&st(`onBlur`,!1,_),qe.has(`contextMenu`)&&(me.onContextMenu=(e,...t)=>{we.current&&Je.has(`contextMenu`)?De(!1):(Fe(e),De(!0)),e.preventDefault(),xe.onContextMenu?.(e,...t)});let _t=C.useRef(!1);_t.current||=x||ye||ke;let vt={...xe,...me},yt={};[`onContextMenu`,`onClick`,`onMouseDown`,`onTouchStart`,`onMouseEnter`,`onMouseLeave`,`onFocus`,`onBlur`].forEach(e=>{W[e]&&(yt[e]=(...t)=>{vt[e]?.(...t),W[e](...t)})});let bt={x:Ve,y:He};zr(ye,ue,it);let xt=tr(pe,ar(be)),St=C.cloneElement(be,{...vt,...yt,ref:xt});return C.createElement(C.Fragment,null,St,_t.current&&(!G||!I)&&C.createElement(ap.Provider,{value:ae},C.createElement(ip,{portal:e,ref:le,prefixCls:r,popup:w,className:q(T,!ne&&Qe),style:O,target:ue,onMouseEnter:mt,onMouseLeave:ht,onPointerEnter:mt,zIndex:M,open:ye,keepDom:ke,fresh:F,onClick:R,onPointerDownCapture:dt,mask:v,motion:V,maskMotion:H,onVisibleChanged:at,onPrepare:ot,forceRender:x,autoDestroy:ee,getPopupContainer:b,onEsc:Oe,align:Ge,arrow:ge,arrowPos:bt,ready:Ie,offsetX:Le,offsetY:Re,offsetR:ze,offsetB:Be,onAlign:Ze,stretch:N,targetWidth:$e/Ue,targetHeight:tt/We,mobile:U})))})}var Mp=jp(Zf);function Np(e){return e&&C.isValidElement(e)&&e.type===C.Fragment}var Pp=(e,t,n)=>C.isValidElement(e)?C.cloneElement(e,_d(n)?n(e.props||{}):n):t;function Fp(e,t){return Pp(e,e,t)}var Ip=({children:e})=>{let{getPrefixCls:t}=C.useContext(si),n=t();return C.isValidElement(e)?C.createElement(Lu,{visible:!0,motionName:`${n}-fade`,motionAppear:!0,motionEnter:!0,motionLeave:!1,removeOnLeave:!1},({style:t,className:n})=>Fp(e,e=>({className:q(e.className,n),style:{...e.style,...t}}))):e},Lp=[null,null];function Rp(e){if(Lp[0]!==e){let t={};Object.keys(e).forEach(n=>{t[n]={...e[n],dynamicInset:!1}}),Lp[0]=e,Lp[1]=t}return Lp[1]}var zp=({children:e})=>C.createElement(Ap,{postTriggerProps:e=>{let{id:t,builtinPlacements:n,popup:r}=e,i=typeof r==`function`?r():r,a=Rp(n);return{...e,getPopupContainer:null,arrow:!1,popup:C.createElement(Ip,{key:t},i),builtinPlacements:a}}},e),Bp=C.createContext(!1),Vp=({children:e,disabled:t})=>{let n=C.useContext(Bp);return C.createElement(Bp.Provider,{value:t??n},e)},Hp=C.createContext(void 0),Up=({children:e,size:t})=>{let n=C.useContext(Hp);return C.createElement(Hp.Provider,{value:t||n},e)};function eee(){return{componentDisabled:(0,C.useContext)(Bp),componentSize:(0,C.useContext)(Hp)}}function tee(e,t,n){Or(`ConfigProvider`);let r=e||{},i=r.inherit===!1||!t?{...Rc,hashed:t?.hashed??Rc.hashed,cssVar:t?.cssVar}:t,a=(0,C.useId)();return qn(()=>{if(!e)return t;let o={...i.components};Object.keys(e.components||{}).forEach(t=>{o[t]={...o[t],...e.components[t]}});let s=`css-var-${a.replace(/:/g,``)}`,c={prefix:n?.prefixCls,...i.cssVar,...r.cssVar,key:r.cssVar?.key||s};return{...i,...r,token:{...i.token,...r.token},components:o,cssVar:c}},[r,i],(e,t)=>e.some((e,n)=>{let r=t[n];return!Ei(e,r,!0)}))}var Wp=C.createContext(!0);function nee(e){let t=C.useContext(Wp),{children:n}=e,[,r]=qc(),{motion:i}=r,a=C.useRef(!1);return a.current||=t!==i,a.current?C.createElement(Wp.Provider,{value:i},C.createElement(ql,{motion:i},n)):n}var ree=()=>null,iee=({iconPrefixCls:e,csp:t})=>(ll(e,t),null),Gp=[`getTargetContainer`,`getPopupContainer`,`renderEmpty`,`input`,`pagination`,`form`,`select`,`button`],Kp,qp,Jp,Yp;function Xp(){return Kp||`ant`}function aee(){return qp||`anticon`}var Zp=e=>{let{prefixCls:t,iconPrefixCls:n,theme:r,holderRender:i}=e;t!==void 0&&(Kp=t),n!==void 0&&(qp=n),`holderRender`in e&&(Yp=i),r&&(Jp=r)},Qp=()=>({getPrefixCls:(e,t)=>t||(e?`${Xp()}-${e}`:Xp()),getIconPrefixCls:aee,getRootPrefixCls:()=>Kp||Xp(),getTheme:()=>Jp,holderRender:Yp}),oee=e=>{let{children:t,csp:n,autoInsertSpaceInButton:r,alert:i,affix:a,anchor:o,app:s,form:c,locale:l,componentSize:u,direction:d,space:f,splitter:p,virtual:m,dropdownMatchSelectWidth:h,popupMatchSelectWidth:g,popupOverflow:_,legacyLocale:v,parentContext:y,iconPrefixCls:b,theme:x,componentDisabled:S,segmented:w,statistic:T,spin:E,calendar:D,carousel:O,cascader:k,collapse:A,typography:j,checkbox:M,descriptions:N,divider:P,drawer:F,skeleton:I,steps:L,image:R,layout:z,list:B,mentions:V,modal:H,progress:U,result:W,slider:ee,breadcrumb:te,masonry:ne,menu:re,pagination:ie,input:ae,textArea:G,otp:oe,empty:K,badge:se,radio:ce,rate:le,ribbon:ue,switch:de,transfer:fe,avatar:pe,message:me,tag:he,table:ge,card:_e,cardMeta:ve,tabs:ye,timeline:be,timePicker:xe,upload:Se,notification:Ce,tree:we,colorPicker:Te,datePicker:Ee,rangePicker:De,flex:Oe,wave:ke,dropdown:Ae,warning:je,tour:Me,tooltip:Ne,popover:Pe,popconfirm:Fe,qrcode:Ie,floatButton:Le,floatButtonGroup:Re,variant:ze,inputNumber:Be,treeSelect:Ve,watermark:He}=e,Ue=C.useMemo(()=>gd(l)&&Object.prototype.hasOwnProperty.call(l,`default`)&&l.default?.locale?l.default:l,[l]),We=C.useCallback((t,n)=>{let{prefixCls:r}=e;if(n)return n;let i=r||y.getPrefixCls(``);return t?`${i}-${t}`:i},[y.getPrefixCls,e.prefixCls]),Ge=b||y.iconPrefixCls||`anticon`,Ke=n||y.csp,qe=tee(x,y.theme,{prefixCls:We(``)}),Je={csp:Ke,autoInsertSpaceInButton:r,alert:i,affix:a,anchor:o,app:s,locale:Ue||v,direction:d,space:f,splitter:p,virtual:m,popupMatchSelectWidth:g??h,popupOverflow:_,getPrefixCls:We,iconPrefixCls:Ge,theme:qe,segmented:w,statistic:T,spin:E,calendar:D,carousel:O,cascader:k,collapse:A,typography:j,checkbox:M,descriptions:N,divider:P,drawer:F,skeleton:I,steps:L,image:R,input:ae,textArea:G,otp:oe,layout:z,list:B,mentions:V,modal:H,progress:U,result:W,slider:ee,breadcrumb:te,masonry:ne,menu:re,pagination:ie,empty:K,badge:se,radio:ce,rate:le,ribbon:ue,switch:de,transfer:fe,avatar:pe,message:me,tag:he,table:ge,card:_e,cardMeta:ve,tabs:ye,timeline:be,timePicker:xe,upload:Se,notification:Ce,tree:we,colorPicker:Te,datePicker:Ee,rangePicker:De,flex:Oe,wave:ke,dropdown:Ae,warning:je,tour:Me,tooltip:Ne,popover:Pe,popconfirm:Fe,qrcode:Ie,floatButton:Le,floatButtonGroup:Re,variant:ze,inputNumber:Be,treeSelect:Ve,watermark:He},Ye={...y};Object.keys(Je).forEach(e=>{Je[e]!==void 0&&(Ye[e]=Je[e])}),Gp.forEach(t=>{let n=e[t];n&&(Ye[t]=n)}),r!==void 0&&(Ye.button={autoInsertSpace:r,...Ye.button});let Xe=qn(()=>Ye,Ye,(e,t)=>{let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length||n.some(n=>e[n]!==t[n])}),{layer:Ze}=C.useContext(Fi),Qe=C.useMemo(()=>({prefixCls:Ge,csp:Ke,layer:Ze?`antd`:void 0}),[Ge,Ke,Ze]),$e=C.createElement(C.Fragment,null,C.createElement(iee,{iconPrefixCls:Ge,csp:Ke}),C.createElement(ree,{dropdownMatchSelectWidth:h}),t),et=C.useMemo(()=>pr(nd.Form?.defaultValidateMessages||{},Xe.locale?.Form?.defaultValidateMessages||{},Xe.form?.validateMessages||{},c?.validateMessages||{}),[Xe,c?.validateMessages]);Object.keys(et).length>0&&($e=C.createElement(Sf.Provider,{value:et},$e)),Ue&&($e=C.createElement(dd,{locale:Ue,_ANT_MARK__:ud},$e)),(Ge||Ke)&&($e=C.createElement(dl.Provider,{value:Qe},$e)),u&&($e=C.createElement(Up,{size:u},$e)),$e=C.createElement(nee,null,$e),Ne?.unique&&($e=C.createElement(zp,null,$e));let tt=C.useMemo(()=>{let{algorithm:e,token:t,components:n,cssVar:r,...i}=qe||{},a=e&&(!Array.isArray(e)||e.length>0)?Vi(e):Lc,o={};Object.entries(n||{}).forEach(([e,t])=>{let n={...t};`algorithm`in n&&(n.algorithm===!0?n.theme=a:(Array.isArray(n.algorithm)||typeof n.algorithm==`function`)&&(n.theme=Vi(n.algorithm)),delete n.algorithm),o[e]=n});let s={...Ns,...t};return{...i,theme:a,token:s,components:o,override:{override:s,...o},cssVar:r}},[qe]);return x&&($e=C.createElement(zc.Provider,{value:tt},$e)),Xe.warning&&($e=C.createElement(Dr.Provider,{value:Xe.warning},$e)),S!==void 0&&($e=C.createElement(Vp,{disabled:S},$e)),C.createElement(si.Provider,{value:Xe},$e)},$p=e=>{let t=C.useContext(si),n=C.useContext(cd);return C.createElement(oee,{parentContext:t,legacyLocale:n,...e})};$p.ConfigContext=si,$p.SizeContext=Hp,$p.config=Zp,$p.useConfig=eee,Object.defineProperty($p,`SizeContext`,{get:()=>Hp});var em={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){let{keyCode:t}=e;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=em.F1&&t<=em.F12)return!1;switch(t){case em.ALT:case em.CAPS_LOCK:case em.CONTEXT_MENU:case em.CTRL:case em.DOWN:case em.END:case em.ESC:case em.HOME:case em.INSERT:case em.LEFT:case em.MAC_FF_META:case em.META:case em.NUMLOCK:case em.NUM_CENTER:case em.PAGE_DOWN:case em.PAGE_UP:case em.PAUSE:case em.PRINT_SCREEN:case em.RIGHT:case em.SHIFT:case em.UP:case em.WIN_KEY:case em.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=em.ZERO&&e<=em.NINE||e>=em.NUM_ZERO&&e<=em.NUM_MULTIPLY||e>=em.A&&e<=em.Z||window.navigator.userAgent.indexOf(`WebKit`)!==-1&&e===0)return!0;switch(e){case em.SPACE:case em.QUESTION_MARK:case em.NUM_PLUS:case em.NUM_MINUS:case em.NUM_PERIOD:case em.NUM_DIVISION:case em.SEMICOLON:case em.DASH:case em.EQUALS:case em.COMMA:case em.PERIOD:case em.SLASH:case em.APOSTROPHE:case em.SINGLE_QUOTE:case em.OPEN_SQUARE_BRACKET:case em.BACKSLASH:case em.CLOSE_SQUARE_BRACKET:return!0;default:return!1}},isEditableTarget:function(e){let t=e.target;if(!(t instanceof HTMLElement))return!1;let n=t.tagName;return!!(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t.isContentEditable)}};function tm(){return tm=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,style:r,className:i,duration:a=4.5,showProgress:o,pauseOnHover:s=!0,eventKey:c,content:l,closable:u,props:d,onClick:f,onNoticeClose:p,times:m,hovering:h}=e,[g,_]=C.useState(!1),[v,y]=C.useState(0),[b,x]=C.useState(0),S=h||g,w=typeof a==`number`?a:0,T=w>0&&o,E=()=>{p(c)},D=e=>{(e.key===`Enter`||e.code===`Enter`||e.keyCode===em.ENTER)&&E()};C.useEffect(()=>{if(!S&&w>0){let e=Date.now()-b,t=setTimeout(()=>{E()},w*1e3-b);return()=>{s&&clearTimeout(t),x(Date.now()-e)}}},[w,S,m]),C.useEffect(()=>{if(!S&&T&&(s||b===0)){let e=performance.now(),t,n=()=>{cancelAnimationFrame(t),t=requestAnimationFrame(t=>{let r=t+b-e,i=Math.min(r/(w*1e3),1);y(i*100),i<1&&n()})};return n(),()=>{s&&cancelAnimationFrame(t)}}},[w,b,S,T,m]);let O=C.useMemo(()=>typeof u==`object`&&u?u:{},[u]),k=Hu(O,!0),A=100-(!v||v<0?0:v>100?100:v),j=`${n}-notice`;return C.createElement(`div`,tm({},d,{ref:t,className:q(j,i,{[`${j}-closable`]:u}),style:r,onMouseEnter:e=>{_(!0),d?.onMouseEnter?.(e)},onMouseLeave:e=>{_(!1),d?.onMouseLeave?.(e)},onClick:f}),C.createElement(`div`,{className:`${j}-content`},l),u&&C.createElement(`button`,tm({className:`${j}-close`,onKeyDown:D,"aria-label":`Close`},k,{onClick:e=>{e.preventDefault(),e.stopPropagation(),E()}}),O.closeIcon??`x`),T&&C.createElement(`progress`,{className:`${j}-progress`,max:`100`,value:A},A+`%`))}),rm=C.createContext({}),im=({children:e,classNames:t})=>C.createElement(rm.Provider,{value:{classNames:t}},e),am=8,om=3,sm=16,see=e=>{let t={offset:am,threshold:om,gap:sm};return e&&typeof e==`object`&&(t.offset=e.offset??am,t.threshold=e.threshold??om,t.gap=e.gap??sm),[!!e,t]};function cm(){return cm=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{configList:t,placement:n,prefixCls:r,className:i,style:a,motion:o,onAllNoticeRemoved:s,onNoticeClose:c,stack:l}=e,{classNames:u}=(0,C.useContext)(rm),d=(0,C.useRef)({}),[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)([]),g=t.map(e=>({config:e,key:String(e.key)})),[_,{offset:v,threshold:y,gap:b}]=see(l),x=_&&(m.length>0||g.length<=y),S=typeof o==`function`?o(n):o;return(0,C.useEffect)(()=>{_&&m.length>1&&h(e=>e.filter(e=>g.some(({key:t})=>e===t)))},[m,g,_]),(0,C.useEffect)(()=>{_&&d.current[g[g.length-1]?.key]&&p(d.current[g[g.length-1]?.key])},[g,_]),C.createElement(Iu,cm({key:n,className:q(r,`${r}-${n}`,u?.list,i,{[`${r}-stack`]:!!_,[`${r}-stack-expanded`]:x}),style:a,keys:g,motionAppear:!0},S,{onAllRemoved:()=>{s(n)}}),({config:e,className:t,style:i,index:a},o)=>{let{key:s,times:l}=e,p=String(s),{className:y,style:S,classNames:w,styles:T,...E}=e,D=g.findIndex(e=>e.key===p),O={};if(_){let e=g.length-1-(D>-1?D:a-1),t=n===`top`||n===`bottom`?`-50%`:`0`;if(e>0){O.height=x?d.current[p]?.offsetHeight:f?.offsetHeight;let r=0;for(let t=0;th(e=>e.includes(p)?e:[...e,p]),onMouseLeave:()=>h(e=>e.filter(e=>e!==p))},C.createElement(nm,cm({},E,{ref:e=>{D>-1?d.current[p]=e:delete d.current[p]},prefixCls:r,classNames:w,styles:T,className:q(y,u?.notice),style:S,times:l,key:s,eventKey:s,onNoticeClose:c,hovering:_&&m.length>0})))})},lee=C.forwardRef((e,t)=>{let{prefixCls:n=`rc-notification`,container:r,motion:i,maxCount:a,className:o,style:s,onAllRemoved:c,stack:l,renderNotifications:u}=e,[d,f]=C.useState([]),p=e=>{let t=d.find(t=>t.key===e),n=t?.closable,{onClose:r}=n&&typeof n==`object`?n:{};r?.(),t?.onClose?.(),f(t=>t.filter(t=>t.key!==e))};C.useImperativeHandle(t,()=>({open:e=>{f(t=>{let n=[...t],r=n.findIndex(t=>t.key===e.key),i={...e};return r>=0?(i.times=(t[r]?.times||0)+1,n[r]=i):(i.times=0,n.push(i)),a>0&&n.length>a&&(n=n.slice(-a)),n})},close:e=>{p(e)},destroy:()=>{f([])}}));let[m,h]=C.useState({});C.useEffect(()=>{let e={};d.forEach(t=>{let{placement:n=`topRight`}=t;n&&(e[n]=e[n]||[],e[n].push(t))}),Object.keys(m).forEach(t=>{e[t]=e[t]||[]}),h(e)},[d]);let g=e=>{h(t=>{let n={...t};return(n[e]||[]).length||delete n[e],n})},_=C.useRef(!1);if(C.useEffect(()=>{Object.keys(m).length>0?_.current=!0:_.current&&=(c?.(),!1)},[m]),!r)return null;let v=Object.keys(m);return(0,Yf.createPortal)(C.createElement(C.Fragment,null,v.map(e=>{let t=m[e],r=C.createElement(cee,{key:e,configList:t,placement:e,prefixCls:n,className:o?.(e),style:s?.(e),motion:i,onNoticeClose:p,onAllNoticeRemoved:g,stack:l});return u?u(r,{prefixCls:n,key:e}):r})),r)}),uee=()=>document.body,lm=0;function dee(...e){let t={};return e.forEach(e=>{e&&Object.keys(e).forEach(n=>{let r=e[n];r!==void 0&&(t[n]=r)})}),t}function um(e={}){let{getContainer:t=uee,motion:n,prefixCls:r,maxCount:i,className:a,style:o,onAllRemoved:s,stack:c,renderNotifications:l,...u}=e,[d,f]=C.useState(),p=C.useRef(),m=C.createElement(lee,{container:d,ref:p,prefixCls:r,motion:n,maxCount:i,className:a,style:o,onAllRemoved:s,stack:c,renderNotifications:l}),[h,g]=C.useState([]),_=Rn(e=>{let t=dee(u,e);(t.key===null||t.key===void 0)&&(t.key=`rc-notification-${lm}`,lm+=1),g(e=>[...e,{type:`open`,config:t}])}),v=C.useMemo(()=>({open:_,close:e=>{g(t=>[...t,{type:`close`,key:e}])},destroy:()=>{g(e=>[...e,{type:`destroy`}])}}),[]);return C.useEffect(()=>{f(t())}),C.useEffect(()=>{if(p.current&&h.length){h.forEach(e=>{switch(e.type){case`open`:p.current.open(e.config);break;case`close`:p.current.close(e.key);break;case`destroy`:p.current.destroy();break}});let e,t;g(n=>((e!==n||!t)&&(e=n,t=n.filter(e=>!h.includes(e))),t))}},[h]),[v,m]}var fee={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z`}}]},name:`loading`,theme:`outlined`};function dm(){return dm=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,dm({},e,{ref:t,icon:fee}))),pee=e=>{let{componentCls:t,iconCls:n,boxShadow:r,colorText:i,colorSuccess:a,colorError:o,colorWarning:s,colorInfo:c,fontSizeLG:l,motionEaseInOutCirc:u,motionDurationSlow:d,marginXS:f,paddingXS:p,borderRadiusLG:m,zIndexPopup:h,contentPadding:g,contentBg:_}=e,v=`${t}-notice`,y=new Ro(`MessageMoveIn`,{"0%":{padding:0,transform:`translateY(-100%)`,opacity:0},"100%":{padding:p,transform:`translateY(0)`,opacity:1}}),b=new Ro(`MessageMoveOut`,{"0%":{maxHeight:e.height,padding:p,opacity:1},"100%":{maxHeight:0,padding:0,opacity:0}}),x={padding:p,textAlign:`center`,[`${t}-custom-content`]:{display:`flex`,alignItems:`center`},[`${t}-custom-content > ${n}`]:{marginInlineEnd:f,fontSize:l},[`${v}-content`]:{display:`inline-block`,padding:g,background:_,borderRadius:m,boxShadow:r,pointerEvents:`all`},[`${t}-success > ${n}`]:{color:a},[`${t}-error > ${n}`]:{color:o},[`${t}-warning > ${n}`]:{color:s},[`${t}-info > ${n},
+}`,n)}else Ci(n);return()=>{Ci(n)}},[t,n])}function If(){return{...C}.useId}var Lf=0;function Rf(e,t){return`${e}-${String(t).replace(/[^a-zA-Z0-9_.:-]/g,`-`)}`}var zf=If(),Bf=zf?function(e){let t=zf();return e||t}:function(e){let[t,n]=C.useState(`ssr-id`);return C.useEffect(()=>{let e=Lf;Lf+=1,n(`rc_unique_${e}`)},[]),e||t},Vf=[],Hf=200,Uf=0,Wf=e=>{if(e.key===`Escape`&&!e.isComposing){if(Date.now()-Uf=0;--n)Vf[n].onEsc({top:n===t-1,event:e})}},Gf=()=>{Uf=Date.now()};function Kf(){window.addEventListener(`keydown`,Wf),window.addEventListener(`compositionend`,Gf)}function qf(){Vf.length===0&&(window.removeEventListener(`keydown`,Wf),window.removeEventListener(`compositionend`,Gf))}function Jf(e,t){let n=Bf(),r=Rn(t),i=()=>{Vf.find(e=>e.id===n)||Vf.push({id:n,onEsc:r})},a=()=>{Vf=Vf.filter(e=>e.id!==n)};(0,C.useMemo)(()=>{e?i():e||a()},[e]),(0,C.useEffect)(()=>{if(e)return i(),Kf(),()=>{a(),qf()}},[e])}var Yf=l(g()),Xf=e=>e===!1?!1:!zn()||!e?null:typeof e==`string`?document.querySelector(e):typeof e==`function`?e():e,Zf=C.forwardRef((e,t)=>{let{open:n,autoLock:r,getContainer:i,debug:a,autoDestroy:o=!0,children:s,onEsc:c}=e,[l,u]=C.useState(n),d=l||n;C.useEffect(()=>{(o||n)&&u(n)},[n,o]);let[f,p]=C.useState(()=>Xf(i));C.useEffect(()=>{let e=Xf(i);p(()=>e??null)});let[m,h]=Df(d&&!f,a),g=f??m;Ff(r&&n&&zn()&&(g===m||g===document.body)),Jf(n,c);let _=null;s&&nr(s)&&t&&(_=ar(s));let v=tr(_,t);if(!d||!zn()||f===void 0)return null;let y=g===!1||Tf(),b=s;return t&&(b=C.cloneElement(s,{ref:v})),C.createElement(Cf.Provider,{value:h},y?b:(0,Yf.createPortal)(b,g))});function Qf(e){let{prefixCls:t,align:n,arrow:r,arrowPos:i}=e,{className:a,content:o,style:s}=r||{},{x:c=0,y:l=0}=i,u=C.useRef(null);if(!n||!n.points)return null;let d={position:`absolute`};if(n.autoArrow!==!1){let e=n.points[0],t=n.points[1],r=e[0],i=e[1],a=t[0],o=t[1];r===a||![`t`,`b`].includes(r)?d.top=l:r===`t`?d.top=0:d.bottom=0,i===o||![`l`,`r`].includes(i)?d.left=c:i===`l`?d.left=0:d.right=0}return C.createElement(`div`,{ref:u,className:q(`${t}-arrow`,a),style:{...d,...s}},o)}function $f(){return $f=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(`div`,{style:{zIndex:r},className:q(`${t}-mask`,o&&`${t}-mobile-mask`,e)})):null}var tp=C.memo(({children:e})=>e,(e,t)=>t.cache);function np(e,t,n,r,i,a,o,s){let c=`auto`,l=e?{}:{left:`-1000vw`,top:`-1000vh`,right:c,bottom:c};if(!e&&(t||!n)){let{points:e}=r,t=r.dynamicInset||r._experimental?.dynamicInset,n=t&&e[0][1]===`r`,u=t&&e[0][0]===`b`;n?(l.right=i,l.left=c):(l.left=o,l.right=c),u?(l.bottom=a,l.top=c):(l.top=s,l.bottom=c)}return l}function rp(){return rp=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{onEsc:n,popup:r,className:i,prefixCls:a,style:o,target:s,onVisibleChanged:c,open:l,keepDom:u,fresh:d,onClick:f,mask:p,arrow:m,arrowPos:h,align:g,motion:_,maskMotion:v,mobile:y,forceRender:b,getPopupContainer:x,autoDestroy:S,portal:w,children:T,zIndex:E,onMouseEnter:D,onMouseLeave:O,onPointerEnter:k,onPointerDownCapture:A,ready:j,offsetX:M,offsetY:N,offsetR:P,offsetB:F,onAlign:I,onPrepare:L,onResize:R,stretch:z,targetWidth:B,targetHeight:V}=e,H=typeof r==`function`?r():r,U=l||u,W=!!y,[ee,te,ne]=C.useMemo(()=>y?[y.mask,y.maskMotion,y.motion]:[p,v,_],[y,p,v,_]),re=x?.length>0,[ie,ae]=C.useState(!x||!re);Vn(()=>{!ie&&re&&s&&ae(!0)},[ie,re,s]);let G=Rn((e,t)=>{R?.(e,t),I()}),oe=np(W,j,l,g,P,F,M,N);if(!ie)return null;let K={};return z&&(z.includes(`height`)&&V?K.height=V:z.includes(`minHeight`)&&V&&(K.minHeight=V),z.includes(`width`)&&B?K.width=B:z.includes(`minWidth`)&&B&&(K.minWidth=B)),l||(K.pointerEvents=`none`),C.createElement(w,{open:b||U,getContainer:x&&(()=>x(s)),autoDestroy:S,onEsc:n},C.createElement(ep,{prefixCls:a,open:l,zIndex:E,mask:ee,motion:te,mobile:W}),C.createElement(Gr,{onResize:G,disabled:!l},e=>C.createElement(Lu,rp({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,forceRender:b,leavedClassName:`${a}-hidden`},ne,{onAppearPrepare:L,onEnterPrepare:L,visible:l,onVisibleChanged:e=>{_?.onVisibleChanged?.(e),c(e)}}),({className:n,style:r},s)=>{let c=q(a,n,i,{[`${a}-mobile`]:W});return C.createElement(`div`,{ref:er(e,t,s),className:c,style:{"--arrow-x":`${h.x||0}px`,"--arrow-y":`${h.y||0}px`,...oe,...K,...r,boxSizing:`border-box`,zIndex:E,...o},onMouseEnter:D,onMouseLeave:O,onPointerEnter:k,onClick:f,onPointerDownCapture:A},m&&C.createElement(Qf,{prefixCls:a,arrow:m,arrowPos:h,align:g}),C.createElement(tp,{cache:!l&&!d},H))})),T)}),ap=C.createContext(null),op=C.createContext(null);function sp(e){return e?Array.isArray(e)?e:[e]:[]}function cp(e,t,n){return C.useMemo(()=>{let r=sp(t??e),i=sp(n??e),a=new Set(r),o=new Set(i);return a.has(`hover`)&&!a.has(`click`)&&a.add(`touch`),o.has(`hover`)&&!o.has(`click`)&&o.add(`touch`),[a,o]},[e,t,n])}var lp=(e=>{if(!e)return!1;if(e instanceof Element){if(e.offsetParent)return!0;if(e.getBBox){let{width:t,height:n}=e.getBBox();if(t||n)return!0}if(e.getBoundingClientRect){let{width:t,height:n}=e.getBoundingClientRect();if(t||n)return!0}}return!1});function up(e=[],t=[],n){let r=(e,t)=>e[t]||``;return n?r(e,0)===r(t,0):r(e,0)===r(t,0)&&r(e,1)===r(t,1)}function dp(e,t,n,r){let{points:i}=n,a=Object.keys(e);for(let n=0;nr.includes(e))&&t.push(n),n=n.parentElement}return t}function mp(e,t=1){return Number.isNaN(e)?t:e}function hp(e){return mp(parseFloat(e),0)}function gp(e,t){let n={...e};return(t||[]).forEach(e=>{if(e instanceof HTMLBodyElement||e instanceof HTMLHtmlElement)return;let{overflow:t,overflowClipMargin:r,borderTopWidth:i,borderBottomWidth:a,borderLeftWidth:o,borderRightWidth:s}=fp(e).getComputedStyle(e),c=e.getBoundingClientRect(),{offsetHeight:l,clientHeight:u,offsetWidth:d,clientWidth:f}=e,p=hp(i),m=hp(a),h=hp(o),g=hp(s),_=mp(Math.round(c.width/d*1e3)/1e3),v=mp(Math.round(c.height/l*1e3)/1e3),y=(d-f-h-g)*_,b=(l-u-p-m)*v,x=p*v,S=m*v,C=h*_,w=g*_,T=0,E=0;if(t===`clip`){let e=hp(r);T=e*_,E=e*v}let D=c.x+C-T,O=c.y+x-E,k=D+c.width+2*T-C-w-y,A=O+c.height+2*E-x-S-b;n.left=Math.max(n.left,D),n.top=Math.max(n.top,O),n.right=Math.min(n.right,k),n.bottom=Math.min(n.bottom,A)}),n}function _p(e,t=0){let n=`${t}`,r=n.match(/^(.*)\%$/);return r?e*(parseFloat(r[1])/100):parseFloat(n)}function vp(e,t){let[n,r]=t||[];return[_p(e.width,n),_p(e.height,r)]}function yp(e=``){return[e[0],e[1]]}function bp(e,t){let n=t[0],r=t[1],i,a;return a=n===`t`?e.y:n===`b`?e.y+e.height:e.y+e.height/2,i=r===`l`?e.x:r===`r`?e.x+e.width:e.x+e.width/2,{x:i,y:a}}function xp(e,t){let n={t:`b`,b:`t`,l:`r`,r:`l`},r=[...e];return r[t]=n[e[t]]||`c`,r}function Sp(e){return e.join(``)}function Cp(e,t,n,r,i,a,o,s){let[c,l]=C.useState({ready:!1,offsetX:0,offsetY:0,offsetR:0,offsetB:0,arrowX:0,arrowY:0,scaleX:1,scaleY:1,align:i[r]||{}}),u=C.useRef(0),d=C.useMemo(()=>!t||s?[]:pp(t),[t]),f=C.useRef({});e||(f.current={});let p=Rn(()=>{if(t&&n&&e&&!s){let e=t,s=e.ownerDocument,c=fp(e),{position:u}=c.getComputedStyle(e),p=e.style.left,m=e.style.top,h=e.style.right,g=e.style.bottom,_=e.style.overflow,v={...i[r],...a},y=s.createElement(`div`);e.parentElement?.appendChild(y),y.style.left=`${e.offsetLeft}px`,y.style.top=`${e.offsetTop}px`,y.style.position=u,y.style.height=`${e.offsetHeight}px`,y.style.width=`${e.offsetWidth}px`,e.style.left=`0`,e.style.top=`0`,e.style.right=`auto`,e.style.bottom=`auto`,e.style.overflow=`hidden`;let b;if(Array.isArray(n))b={x:n[0],y:n[1],width:0,height:0};else{let e=n.getBoundingClientRect();e.x=e.x??e.left,e.y=e.y??e.top,b={x:e.x,y:e.y,width:e.width,height:e.height}}let x=e.getBoundingClientRect(),{height:S,width:C}=c.getComputedStyle(e);x.x=x.x??x.left,x.y=x.y??x.top;let{clientWidth:w,clientHeight:T,scrollWidth:E,scrollHeight:D,scrollTop:O,scrollLeft:k}=s.documentElement,A=x.height,j=x.width,M=b.height,N=b.width,P={left:0,top:0,right:w,bottom:T},F={left:-k,top:-O,right:E-k,bottom:D-O},{htmlRegion:I}=v,L=`visible`,R=`visibleFirst`;I!==`scroll`&&I!==R&&(I=L);let z=I===R,B=gp(F,d),V=gp(P,d),H=I===L?V:B,U=z?V:H;e.style.left=`auto`,e.style.top=`auto`,e.style.right=`0`,e.style.bottom=`0`;let W=e.getBoundingClientRect();e.style.left=p,e.style.top=m,e.style.right=h,e.style.bottom=g,e.style.overflow=_,e.parentElement?.removeChild(y);let ee=mp(Math.round(j/parseFloat(C)*1e3)/1e3),te=mp(Math.round(A/parseFloat(S)*1e3)/1e3);if(ee===0||te===0||kr(n)&&!lp(n))return;let{offset:ne,targetOffset:re}=v,[ie,ae]=vp(x,ne),[G,oe]=vp(b,re);b.x-=G,b.y-=oe;let[K,se]=v.points||[],ce=yp(se),le=yp(K),ue=bp(b,ce),de=bp(x,le),fe={...v},pe=[le,ce],me=ue.x-de.x+ie,he=ue.y-de.y+ae;function ge(e,t,n=H){let r=x.x+e,i=x.y+t,a=r+j,o=i+A,s=Math.max(r,n.left),c=Math.max(i,n.top),l=Math.min(a,n.right),u=Math.min(o,n.bottom);return Math.max(0,(l-s)*(u-c))}let _e=ge(me,he),ve=ge(me,he,V),ye=bp(b,[`t`,`l`]),be=bp(x,[`t`,`l`]),xe=bp(b,[`b`,`r`]),Se=bp(x,[`b`,`r`]),{adjustX:Ce,adjustY:we,shiftX:Te,shiftY:Ee}=v.overflow||{},De=e=>typeof e==`boolean`?e:e>=0,Oe,ke,Ae,je;function Me(){Oe=x.y+he,ke=Oe+A,Ae=x.x+me,je=Ae+j}Me();let Ne=De(we),Pe=le[0]===ce[0];if(Ne&&le[0]===`t`&&(ke>U.bottom||f.current.bt)){let e=he;Pe?e-=A-M:e=ye.y-Se.y-ae;let t=ge(me,e),n=ge(me,e,V);t>_e||t===_e&&(!z||n>=ve)?(f.current.bt=!0,he=e,ae=-ae,pe=[xp(pe[0],0),xp(pe[1],0)]):f.current.bt=!1}if(Ne&&le[0]===`b`&&(Oe_e||t===_e&&(!z||n>=ve)?(f.current.tb=!0,he=e,ae=-ae,pe=[xp(pe[0],0),xp(pe[1],0)]):f.current.tb=!1}let Fe=De(Ce),Ie=le[1]===ce[1];if(Fe&&le[1]===`l`&&(je>U.right||f.current.rl)){let e=me;Ie?e-=j-N:e=ye.x-Se.x-ie;let t=ge(e,he),n=ge(e,he,V);t>_e||t===_e&&(!z||n>=ve)?(f.current.rl=!0,me=e,ie=-ie,pe=[xp(pe[0],1),xp(pe[1],1)]):f.current.rl=!1}if(Fe&&le[1]===`r`&&(Ae_e||t===_e&&(!z||n>=ve)?(f.current.lr=!0,me=e,ie=-ie,pe=[xp(pe[0],1),xp(pe[1],1)]):f.current.lr=!1}fe.points=[Sp(pe[0]),Sp(pe[1])],Me();let Le=Te===!0?0:Te;typeof Le==`number`&&(AeV.right&&(me-=je-V.right-ie,b.x>V.right-Le&&(me+=b.x-V.right+Le)));let Re=Ee===!0?0:Ee;typeof Re==`number`&&(OeV.bottom&&(he-=ke-V.bottom-ae,b.y>V.bottom-Re&&(he+=b.y-V.bottom+Re)));let ze=x.x+me,Be=ze+j,Ve=x.y+he,He=Ve+A,Ue=b.x,We=Ue+N,Ge=b.y,Ke=Ge+M,qe=(Math.max(ze,Ue)+Math.min(Be,We))/2-ze,Je=(Math.max(Ve,Ge)+Math.min(He,Ke))/2-Ve;o?.(t,fe);let Ye=W.right-x.x-(me+x.width),Xe=W.bottom-x.y-(he+x.height);ee===1&&(me=Math.floor(me),Ye=Math.floor(Ye)),te===1&&(he=Math.floor(he),Xe=Math.floor(Xe)),l({ready:!0,offsetX:me/ee,offsetY:he/te,offsetR:Ye/ee,offsetB:Xe/te,arrowX:qe/ee,arrowY:Je/te,scaleX:ee,scaleY:te,align:fe})}}),m=()=>{u.current+=1;let e=u.current;Promise.resolve().then(()=>{u.current===e&&p()})},h=()=>{l(e=>({...e,ready:!1}))};return Vn(h,[r]),Vn(()=>{e||h()},[e]),[c.ready,c.offsetX,c.offsetY,c.offsetR,c.offsetB,c.arrowX,c.arrowY,c.scaleX,c.scaleY,c.align,m]}function wp(){let e=C.useRef(null),t=()=>{e.current&&=(clearTimeout(e.current),null)};return C.useEffect(()=>()=>{t()},[]),(n,r)=>{t(),r===0?n():e.current=setTimeout(()=>{n()},r*1e3)}}function Tp(e,t,n,r,i){Vn(()=>{if(e&&t&&n){let e=t,a=n,o=pp(e),s=pp(a),c=fp(a),l=new Set([c,...o,...s]);function u(){r(),i()}return l.forEach(e=>{e.addEventListener(`scroll`,u,{passive:!0})}),c.addEventListener(`resize`,u,{passive:!0}),r(),()=>{l.forEach(e=>{e.removeEventListener(`scroll`,u),c.removeEventListener(`resize`,u)})}}},[e,t,n])}function Ep(e,t,n,r,i,a,o,s){let c=C.useRef(e);c.current=e;let l=C.useRef(!1);C.useEffect(()=>{if(t&&r&&(!i||a)){let e=()=>{l.current=!1},t=e=>{c.current&&!o(e.composedPath?.()?.[0]||e.target)&&!l.current&&s(!1)},i=fp(r);i.addEventListener(`pointerdown`,e,!0),i.addEventListener(`mousedown`,t,!0),i.addEventListener(`contextmenu`,t,!0);let a=ml(n);return a&&(a.addEventListener(`mousedown`,t,!0),a.addEventListener(`contextmenu`,t,!0)),()=>{i.removeEventListener(`pointerdown`,e,!0),i.removeEventListener(`mousedown`,t,!0),i.removeEventListener(`contextmenu`,t,!0),a&&(a.removeEventListener(`mousedown`,t,!0),a.removeEventListener(`contextmenu`,t,!0))}}},[t,n,r,i,a]);function u(){l.current=!0}return u}function Dp(){let[e,t]=C.useState(null),[n,r]=C.useState(!1),[i,a]=C.useState(!1),o=C.useRef(null);return[Rn(e=>{e===!1?(o.current=null,r(!1)):i&&n?o.current=e:(r(!0),t(e),o.current=null,n||a(!0))}),n,e,Rn(e=>{e?(a(!1),o.current&&=(t(o.current),null)):(a(!1),o.current=null)})]}function Op(){return Op=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:t,isMobile:n,ready:r,open:i,align:a,offsetR:o,offsetB:s,offsetX:c,offsetY:l,arrowPos:u,popupSize:d,motion:f,uniqueContainerClassName:p,uniqueContainerStyle:m}=e,h=`${t}-unique-container`,[g,_]=C.useState(!1),v=np(n,r,i,a,o,s,c,l),y=C.useRef(v);r&&(y.current=v);let b={};return d&&(b.width=d.width,b.height=d.height),C.createElement(Lu,Op({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,leavedClassName:`${h}-hidden`},f,{visible:i,onVisibleChanged:e=>{_(e)}}),({className:e,style:t})=>{let n=q(h,e,p,{[`${h}-visible`]:g});return C.createElement(`div`,{className:n,style:{"--arrow-x":`${u?.x||0}px`,"--arrow-y":`${u?.y||0}px`,...y.current,...b,...t,...m}})})},Ap=({children:e,postTriggerProps:t})=>{let[n,r,i,a]=Dp(),o=C.useMemo(()=>!i||!t?i:t(i),[i,t]),[s,c]=C.useState(null),[l,u]=C.useState(null),d=C.useRef(null),f=Rn(e=>{d.current=e,kr(e)&&s!==e&&c(e)}),p=C.useRef(null),m=wp(),h=Rn((e,t)=>{p.current=t,m(()=>{n(e)},e.delay)}),g=e=>{m(()=>{p.current?.()||n(!1)},e)},_=Rn(e=>{a(e)}),[v,y,b,x,S,w,T,,,E,D]=Cp(r,s,o?.target,o?.popupPlacement,o?.builtinPlacements||{},o?.popupAlign,void 0,!1),O=C.useMemo(()=>o?q(dp(o.builtinPlacements||{},o.prefixCls||``,E,!1),o.getPopupClassNameFromAlign?.(E)):``,[E,o?.getPopupClassNameFromAlign,o?.builtinPlacements,o?.prefixCls]),k=C.useMemo(()=>({show:h,hide:g}),[]);C.useEffect(()=>{D()},[o?.target]);let A=Rn(()=>(D(),Promise.resolve())),j=C.useRef({}),M=C.useContext(ap),N=C.useMemo(()=>({registerSubPopup:(e,t)=>{j.current[e]=t,M?.registerSubPopup(e,t)}}),[M]),P=o?.prefixCls;return C.createElement(op.Provider,{value:k},e,o&&C.createElement(ap.Provider,{value:N},C.createElement(ip,{ref:f,portal:Zf,onEsc:o.onEsc,prefixCls:P,popup:o.popup,className:q(o.popupClassName,O,`${P}-unique-controlled`),style:o.popupStyle,target:o.target,open:r,keepDom:!0,fresh:!0,autoDestroy:!1,onVisibleChanged:_,ready:v,offsetX:y,offsetY:b,offsetR:x,offsetB:S,onAlign:D,onPrepare:A,onResize:e=>u({width:e.offsetWidth,height:e.offsetHeight}),arrowPos:{x:w,y:T},align:E,zIndex:o.zIndex,mask:o.mask,arrow:o.arrow,motion:o.popupMotion,maskMotion:o.maskMotion,getPopupContainer:o.getPopupContainer},C.createElement(kp,{prefixCls:P,isMobile:!1,ready:v,open:r,align:E,offsetR:x,offsetB:S,offsetX:y,offsetY:b,arrowPos:{x:w,y:T},popupSize:l,motion:o.popupMotion,uniqueContainerClassName:q(o.uniqueContainerClassName,O),uniqueContainerStyle:o.uniqueContainerStyle}))))};function jp(e=Zf){return C.forwardRef((t,n)=>{let{prefixCls:r=`rc-trigger-popup`,children:i,action:a=`hover`,showAction:o,hideAction:s,popupVisible:c,defaultPopupVisible:l,onOpenChange:u,afterOpenChange:d,onPopupVisibleChange:f,afterPopupVisibleChange:p,mouseEnterDelay:m,mouseLeaveDelay:h=.1,focusDelay:g,blurDelay:_,mask:v,maskClosable:y=!0,getPopupContainer:b,forceRender:x,autoDestroy:S,popup:w,popupClassName:T,uniqueContainerClassName:E,uniqueContainerStyle:D,popupStyle:O,popupPlacement:k,builtinPlacements:A={},popupAlign:j,zIndex:M,stretch:N,getPopupClassNameFromAlign:P,fresh:F,unique:I,alignPoint:L,onPopupClick:R,onPopupAlign:z,arrow:B,popupMotion:V,maskMotion:H,mobile:U,...W}=t,ee=S||!1,te=c===void 0,ne=!!U,re=C.useRef({}),ie=C.useContext(ap),ae=C.useMemo(()=>({registerSubPopup:(e,t)=>{re.current[e]=t,ie?.registerSubPopup(e,t)}}),[ie]),G=C.useContext(op),oe=Bf(),[K,se]=C.useState(null),ce=C.useRef(null),le=Rn(e=>{ce.current=e,kr(e)&&K!==e&&se(e),ie?.registerSubPopup(oe,e)}),[ue,de]=C.useState(null),fe=C.useRef(null),pe=Rn(e=>{let t=Ar(e);kr(t)&&ue!==t&&(de(t),fe.current=t)}),me={},he=Rn(e=>{let t=ue;return t?.contains(e)||ml(t)?.host===e||e===t||K?.contains(e)||ml(K)?.host===e||e===K||Object.values(re.current).some(t=>t?.contains(e)||e===t)}),ge=B?{...B===!0?{}:B}:null,[_e,ve]=Wn(l||!1,c),ye=_e||!1,be=C.useMemo(()=>{let e=typeof i==`function`?i({open:ye}):i;return C.Children.only(e)},[i,ye]),xe=be?.props||{},Se=Rn(()=>ye),Ce=Rn((e=0)=>({popup:w,target:ue,delay:e,prefixCls:r,popupClassName:T,uniqueContainerClassName:E,uniqueContainerStyle:D,popupStyle:O,popupPlacement:k,builtinPlacements:A,popupAlign:j,zIndex:M,mask:v,maskClosable:y,popupMotion:V,maskMotion:H,arrow:ge,getPopupContainer:b,getPopupClassNameFromAlign:P,id:oe,onEsc:Oe}));Vn(()=>{G&&I&&ue&&!te&&!ie&&(ye?G.show(Ce(m),Se):G.hide(h))},[ye,ue]);let we=C.useRef(ye);we.current=ye;let Te=Rn(e=>{(0,Yf.flushSync)(()=>{ye!==e&&(ve(e),u?.(e),f?.(e))})}),Ee=wp(),De=(e,t=0)=>{if(c!==void 0){Ee(()=>{Te(e)},t);return}if(G&&I&&te&&!ie){e?G.show(Ce(t),Se):G.hide(t);return}Ee(()=>{Te(e)},t)};function Oe({top:e}){e&&De(!1)}let[ke,Ae]=C.useState(!1);Vn(e=>{(!e||ye)&&Ae(!0)},[ye]);let[je,Me]=C.useState(null),[Ne,Pe]=C.useState(null),Fe=e=>{Pe([e.clientX,e.clientY])},[Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke]=Cp(ye,K,L&&Ne!==null?Ne:ue,k,A,j,z,ne),[qe,Je]=cp(a,o,s),Ye=qe.has(`click`),Xe=Je.has(`click`)||Je.has(`contextMenu`),Ze=Rn(()=>{ke||Ke()});Tp(ye,ue,K,Ze,()=>{we.current&&L&&Xe&&De(!1)}),Vn(()=>{Ze()},[Ne,k]),Vn(()=>{ye&&!A?.[k]&&Ze()},[JSON.stringify(j)]);let Qe=C.useMemo(()=>q(dp(A,r,Ge,L),P?.(Ge)),[Ge,P,A,r,L]);C.useImperativeHandle(n,()=>({nativeElement:fe.current,popupElement:ce.current,forceAlign:Ze}));let[$e,et]=C.useState(0),[tt,nt]=C.useState(0),rt=()=>{if(N&&ue){let e=ue.getBoundingClientRect();et(e.width),nt(e.height)}},it=()=>{rt(),Ze()},at=e=>{Ae(!1),Ke(),d?.(e),p?.(e)},ot=()=>new Promise(e=>{rt(),Me(()=>e)});Vn(()=>{je&&(Ke(),je(),Me(null))},[je]);function st(e,t,n,r,i){me[e]=(a,...o)=>{(!i||!i())&&(r?.(a),De(t,n)),xe[e]?.(a,...o)}}let ct=qe.has(`touch`),lt=Je.has(`touch`),ut=C.useRef(!1);(ct||lt)&&(me.onTouchStart=(...e)=>{ut.current=!0,we.current&<?De(!1):!we.current&&ct&&De(!0),xe.onTouchStart?.(...e)}),(Ye||Xe)&&(me.onClick=(e,...t)=>{we.current&&Xe?De(!1):!we.current&&Ye&&(Fe(e),De(!0)),xe.onClick?.(e,...t),ut.current=!1});let dt=Ep(ye,Xe||lt,ue,K,v,y,he,De),ft=qe.has(`hover`),pt=Je.has(`hover`),mt,ht,gt=()=>ut.current;if(ft){let e=e=>{Fe(e)};st(`onMouseEnter`,!0,m,e,gt),st(`onPointerEnter`,!0,m,e,gt),mt=e=>{(ye||ke)&&K?.contains(e.target)&&De(!0,m)},L&&(me.onMouseMove=e=>{xe.onMouseMove?.(e)})}pt&&(st(`onMouseLeave`,!1,h,void 0,gt),st(`onPointerLeave`,!1,h,void 0,gt),ht=()=>{De(!1,h)}),qe.has(`focus`)&&st(`onFocus`,!0,g),Je.has(`focus`)&&st(`onBlur`,!1,_),qe.has(`contextMenu`)&&(me.onContextMenu=(e,...t)=>{we.current&&Je.has(`contextMenu`)?De(!1):(Fe(e),De(!0)),e.preventDefault(),xe.onContextMenu?.(e,...t)});let _t=C.useRef(!1);_t.current||=x||ye||ke;let vt={...xe,...me},yt={};[`onContextMenu`,`onClick`,`onMouseDown`,`onTouchStart`,`onMouseEnter`,`onMouseLeave`,`onFocus`,`onBlur`].forEach(e=>{W[e]&&(yt[e]=(...t)=>{vt[e]?.(...t),W[e](...t)})});let bt={x:Ve,y:He};zr(ye,ue,it);let xt=tr(pe,ar(be)),St=C.cloneElement(be,{...vt,...yt,ref:xt});return C.createElement(C.Fragment,null,St,_t.current&&(!G||!I)&&C.createElement(ap.Provider,{value:ae},C.createElement(ip,{portal:e,ref:le,prefixCls:r,popup:w,className:q(T,!ne&&Qe),style:O,target:ue,onMouseEnter:mt,onMouseLeave:ht,onPointerEnter:mt,zIndex:M,open:ye,keepDom:ke,fresh:F,onClick:R,onPointerDownCapture:dt,mask:v,motion:V,maskMotion:H,onVisibleChanged:at,onPrepare:ot,forceRender:x,autoDestroy:ee,getPopupContainer:b,onEsc:Oe,align:Ge,arrow:ge,arrowPos:bt,ready:Ie,offsetX:Le,offsetY:Re,offsetR:ze,offsetB:Be,onAlign:Ze,stretch:N,targetWidth:$e/Ue,targetHeight:tt/We,mobile:U})))})}var Mp=jp(Zf);function Np(e){return e&&C.isValidElement(e)&&e.type===C.Fragment}var Pp=(e,t,n)=>C.isValidElement(e)?C.cloneElement(e,_d(n)?n(e.props||{}):n):t;function Fp(e,t){return Pp(e,e,t)}var Ip=({children:e})=>{let{getPrefixCls:t}=C.useContext(si),n=t();return C.isValidElement(e)?C.createElement(Lu,{visible:!0,motionName:`${n}-fade`,motionAppear:!0,motionEnter:!0,motionLeave:!1,removeOnLeave:!1},({style:t,className:n})=>Fp(e,e=>({className:q(e.className,n),style:{...e.style,...t}}))):e},Lp=[null,null];function Rp(e){if(Lp[0]!==e){let t={};Object.keys(e).forEach(n=>{t[n]={...e[n],dynamicInset:!1}}),Lp[0]=e,Lp[1]=t}return Lp[1]}var zp=({children:e})=>C.createElement(Ap,{postTriggerProps:e=>{let{id:t,builtinPlacements:n,popup:r}=e,i=typeof r==`function`?r():r,a=Rp(n);return{...e,getPopupContainer:null,arrow:!1,popup:C.createElement(Ip,{key:t},i),builtinPlacements:a}}},e),Bp=C.createContext(!1),Vp=({children:e,disabled:t})=>{let n=C.useContext(Bp);return C.createElement(Bp.Provider,{value:t??n},e)},Hp=C.createContext(void 0),Up=({children:e,size:t})=>{let n=C.useContext(Hp);return C.createElement(Hp.Provider,{value:t||n},e)};function eee(){return{componentDisabled:(0,C.useContext)(Bp),componentSize:(0,C.useContext)(Hp)}}function tee(e,t,n){Or(`ConfigProvider`);let r=e||{},i=r.inherit===!1||!t?{...Rc,hashed:t?.hashed??Rc.hashed,cssVar:t?.cssVar}:t,a=(0,C.useId)();return qn(()=>{if(!e)return t;let o={...i.components};Object.keys(e.components||{}).forEach(t=>{o[t]={...o[t],...e.components[t]}});let s=`css-var-${a.replace(/:/g,``)}`,c={prefix:n?.prefixCls,...i.cssVar,...r.cssVar,key:r.cssVar?.key||s};return{...i,...r,token:{...i.token,...r.token},components:o,cssVar:c}},[r,i],(e,t)=>e.some((e,n)=>{let r=t[n];return!Ei(e,r,!0)}))}var Wp=C.createContext(!0);function nee(e){let t=C.useContext(Wp),{children:n}=e,[,r]=qc(),{motion:i}=r,a=C.useRef(!1);return a.current||=t!==i,a.current?C.createElement(Wp.Provider,{value:i},C.createElement(ql,{motion:i},n)):n}var ree=()=>null,iee=({iconPrefixCls:e,csp:t})=>(ll(e,t),null),aee=[`getTargetContainer`,`getPopupContainer`,`renderEmpty`,`input`,`pagination`,`form`,`select`,`button`],Gp,Kp,qp,Jp;function Yp(){return Gp||`ant`}function oee(){return Kp||`anticon`}var see=e=>{let{prefixCls:t,iconPrefixCls:n,theme:r,holderRender:i}=e;t!==void 0&&(Gp=t),n!==void 0&&(Kp=n),`holderRender`in e&&(Jp=i),r&&(qp=r)},Xp=()=>({getPrefixCls:(e,t)=>t||(e?`${Yp()}-${e}`:Yp()),getIconPrefixCls:oee,getRootPrefixCls:()=>Gp||Yp(),getTheme:()=>qp,holderRender:Jp}),cee=e=>{let{children:t,csp:n,autoInsertSpaceInButton:r,alert:i,affix:a,anchor:o,app:s,form:c,locale:l,componentSize:u,direction:d,space:f,splitter:p,virtual:m,dropdownMatchSelectWidth:h,popupMatchSelectWidth:g,popupOverflow:_,legacyLocale:v,parentContext:y,iconPrefixCls:b,theme:x,componentDisabled:S,segmented:w,statistic:T,spin:E,calendar:D,carousel:O,cascader:k,collapse:A,typography:j,checkbox:M,descriptions:N,divider:P,drawer:F,skeleton:I,steps:L,image:R,layout:z,list:B,mentions:V,modal:H,progress:U,result:W,slider:ee,breadcrumb:te,masonry:ne,menu:re,pagination:ie,input:ae,textArea:G,otp:oe,empty:K,badge:se,radio:ce,rate:le,ribbon:ue,switch:de,transfer:fe,avatar:pe,message:me,tag:he,table:ge,card:_e,cardMeta:ve,tabs:ye,timeline:be,timePicker:xe,upload:Se,notification:Ce,tree:we,colorPicker:Te,datePicker:Ee,rangePicker:De,flex:Oe,wave:ke,dropdown:Ae,warning:je,tour:Me,tooltip:Ne,popover:Pe,popconfirm:Fe,qrcode:Ie,floatButton:Le,floatButtonGroup:Re,variant:ze,inputNumber:Be,treeSelect:Ve,watermark:He}=e,Ue=C.useMemo(()=>gd(l)&&Object.prototype.hasOwnProperty.call(l,`default`)&&l.default?.locale?l.default:l,[l]),We=C.useCallback((t,n)=>{let{prefixCls:r}=e;if(n)return n;let i=r||y.getPrefixCls(``);return t?`${i}-${t}`:i},[y.getPrefixCls,e.prefixCls]),Ge=b||y.iconPrefixCls||`anticon`,Ke=n||y.csp,qe=tee(x,y.theme,{prefixCls:We(``)}),Je={csp:Ke,autoInsertSpaceInButton:r,alert:i,affix:a,anchor:o,app:s,locale:Ue||v,direction:d,space:f,splitter:p,virtual:m,popupMatchSelectWidth:g??h,popupOverflow:_,getPrefixCls:We,iconPrefixCls:Ge,theme:qe,segmented:w,statistic:T,spin:E,calendar:D,carousel:O,cascader:k,collapse:A,typography:j,checkbox:M,descriptions:N,divider:P,drawer:F,skeleton:I,steps:L,image:R,input:ae,textArea:G,otp:oe,layout:z,list:B,mentions:V,modal:H,progress:U,result:W,slider:ee,breadcrumb:te,masonry:ne,menu:re,pagination:ie,empty:K,badge:se,radio:ce,rate:le,ribbon:ue,switch:de,transfer:fe,avatar:pe,message:me,tag:he,table:ge,card:_e,cardMeta:ve,tabs:ye,timeline:be,timePicker:xe,upload:Se,notification:Ce,tree:we,colorPicker:Te,datePicker:Ee,rangePicker:De,flex:Oe,wave:ke,dropdown:Ae,warning:je,tour:Me,tooltip:Ne,popover:Pe,popconfirm:Fe,qrcode:Ie,floatButton:Le,floatButtonGroup:Re,variant:ze,inputNumber:Be,treeSelect:Ve,watermark:He},Ye={...y};Object.keys(Je).forEach(e=>{Je[e]!==void 0&&(Ye[e]=Je[e])}),aee.forEach(t=>{let n=e[t];n&&(Ye[t]=n)}),r!==void 0&&(Ye.button={autoInsertSpace:r,...Ye.button});let Xe=qn(()=>Ye,Ye,(e,t)=>{let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length||n.some(n=>e[n]!==t[n])}),{layer:Ze}=C.useContext(Fi),Qe=C.useMemo(()=>({prefixCls:Ge,csp:Ke,layer:Ze?`antd`:void 0}),[Ge,Ke,Ze]),$e=C.createElement(C.Fragment,null,C.createElement(iee,{iconPrefixCls:Ge,csp:Ke}),C.createElement(ree,{dropdownMatchSelectWidth:h}),t),et=C.useMemo(()=>pr(nd.Form?.defaultValidateMessages||{},Xe.locale?.Form?.defaultValidateMessages||{},Xe.form?.validateMessages||{},c?.validateMessages||{}),[Xe,c?.validateMessages]);Object.keys(et).length>0&&($e=C.createElement(Sf.Provider,{value:et},$e)),Ue&&($e=C.createElement(dd,{locale:Ue,_ANT_MARK__:ud},$e)),(Ge||Ke)&&($e=C.createElement(dl.Provider,{value:Qe},$e)),u&&($e=C.createElement(Up,{size:u},$e)),$e=C.createElement(nee,null,$e),Ne?.unique&&($e=C.createElement(zp,null,$e));let tt=C.useMemo(()=>{let{algorithm:e,token:t,components:n,cssVar:r,...i}=qe||{},a=e&&(!Array.isArray(e)||e.length>0)?Vi(e):Lc,o={};Object.entries(n||{}).forEach(([e,t])=>{let n={...t};`algorithm`in n&&(n.algorithm===!0?n.theme=a:(Array.isArray(n.algorithm)||typeof n.algorithm==`function`)&&(n.theme=Vi(n.algorithm)),delete n.algorithm),o[e]=n});let s={...Ns,...t};return{...i,theme:a,token:s,components:o,override:{override:s,...o},cssVar:r}},[qe]);return x&&($e=C.createElement(zc.Provider,{value:tt},$e)),Xe.warning&&($e=C.createElement(Dr.Provider,{value:Xe.warning},$e)),S!==void 0&&($e=C.createElement(Vp,{disabled:S},$e)),C.createElement(si.Provider,{value:Xe},$e)},Zp=e=>{let t=C.useContext(si),n=C.useContext(cd);return C.createElement(cee,{parentContext:t,legacyLocale:n,...e})};Zp.ConfigContext=si,Zp.SizeContext=Hp,Zp.config=see,Zp.useConfig=eee,Object.defineProperty(Zp,`SizeContext`,{get:()=>Hp});var Qp={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){let{keyCode:t}=e;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=Qp.F1&&t<=Qp.F12)return!1;switch(t){case Qp.ALT:case Qp.CAPS_LOCK:case Qp.CONTEXT_MENU:case Qp.CTRL:case Qp.DOWN:case Qp.END:case Qp.ESC:case Qp.HOME:case Qp.INSERT:case Qp.LEFT:case Qp.MAC_FF_META:case Qp.META:case Qp.NUMLOCK:case Qp.NUM_CENTER:case Qp.PAGE_DOWN:case Qp.PAGE_UP:case Qp.PAUSE:case Qp.PRINT_SCREEN:case Qp.RIGHT:case Qp.SHIFT:case Qp.UP:case Qp.WIN_KEY:case Qp.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=Qp.ZERO&&e<=Qp.NINE||e>=Qp.NUM_ZERO&&e<=Qp.NUM_MULTIPLY||e>=Qp.A&&e<=Qp.Z||window.navigator.userAgent.indexOf(`WebKit`)!==-1&&e===0)return!0;switch(e){case Qp.SPACE:case Qp.QUESTION_MARK:case Qp.NUM_PLUS:case Qp.NUM_MINUS:case Qp.NUM_PERIOD:case Qp.NUM_DIVISION:case Qp.SEMICOLON:case Qp.DASH:case Qp.EQUALS:case Qp.COMMA:case Qp.PERIOD:case Qp.SLASH:case Qp.APOSTROPHE:case Qp.SINGLE_QUOTE:case Qp.OPEN_SQUARE_BRACKET:case Qp.BACKSLASH:case Qp.CLOSE_SQUARE_BRACKET:return!0;default:return!1}},isEditableTarget:function(e){let t=e.target;if(!(t instanceof HTMLElement))return!1;let n=t.tagName;return!!(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t.isContentEditable)}};function $p(){return $p=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,style:r,className:i,duration:a=4.5,showProgress:o,pauseOnHover:s=!0,eventKey:c,content:l,closable:u,props:d,onClick:f,onNoticeClose:p,times:m,hovering:h}=e,[g,_]=C.useState(!1),[v,y]=C.useState(0),[b,x]=C.useState(0),S=h||g,w=typeof a==`number`?a:0,T=w>0&&o,E=()=>{p(c)},D=e=>{(e.key===`Enter`||e.code===`Enter`||e.keyCode===Qp.ENTER)&&E()};C.useEffect(()=>{if(!S&&w>0){let e=Date.now()-b,t=setTimeout(()=>{E()},w*1e3-b);return()=>{s&&clearTimeout(t),x(Date.now()-e)}}},[w,S,m]),C.useEffect(()=>{if(!S&&T&&(s||b===0)){let e=performance.now(),t,n=()=>{cancelAnimationFrame(t),t=requestAnimationFrame(t=>{let r=t+b-e,i=Math.min(r/(w*1e3),1);y(i*100),i<1&&n()})};return n(),()=>{s&&cancelAnimationFrame(t)}}},[w,b,S,T,m]);let O=C.useMemo(()=>typeof u==`object`&&u?u:{},[u]),k=Hu(O,!0),A=100-(!v||v<0?0:v>100?100:v),j=`${n}-notice`;return C.createElement(`div`,$p({},d,{ref:t,className:q(j,i,{[`${j}-closable`]:u}),style:r,onMouseEnter:e=>{_(!0),d?.onMouseEnter?.(e)},onMouseLeave:e=>{_(!1),d?.onMouseLeave?.(e)},onClick:f}),C.createElement(`div`,{className:`${j}-content`},l),u&&C.createElement(`button`,$p({className:`${j}-close`,onKeyDown:D,"aria-label":`Close`},k,{onClick:e=>{e.preventDefault(),e.stopPropagation(),E()}}),O.closeIcon??`x`),T&&C.createElement(`progress`,{className:`${j}-progress`,max:`100`,value:A},A+`%`))}),tm=C.createContext({}),nm=({children:e,classNames:t})=>C.createElement(tm.Provider,{value:{classNames:t}},e),rm=8,im=3,am=16,om=e=>{let t={offset:rm,threshold:im,gap:am};return e&&typeof e==`object`&&(t.offset=e.offset??rm,t.threshold=e.threshold??im,t.gap=e.gap??am),[!!e,t]};function sm(){return sm=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{configList:t,placement:n,prefixCls:r,className:i,style:a,motion:o,onAllNoticeRemoved:s,onNoticeClose:c,stack:l}=e,{classNames:u}=(0,C.useContext)(tm),d=(0,C.useRef)({}),[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)([]),g=t.map(e=>({config:e,key:String(e.key)})),[_,{offset:v,threshold:y,gap:b}]=om(l),x=_&&(m.length>0||g.length<=y),S=typeof o==`function`?o(n):o;return(0,C.useEffect)(()=>{_&&m.length>1&&h(e=>e.filter(e=>g.some(({key:t})=>e===t)))},[m,g,_]),(0,C.useEffect)(()=>{_&&d.current[g[g.length-1]?.key]&&p(d.current[g[g.length-1]?.key])},[g,_]),C.createElement(Iu,sm({key:n,className:q(r,`${r}-${n}`,u?.list,i,{[`${r}-stack`]:!!_,[`${r}-stack-expanded`]:x}),style:a,keys:g,motionAppear:!0},S,{onAllRemoved:()=>{s(n)}}),({config:e,className:t,style:i,index:a},o)=>{let{key:s,times:l}=e,p=String(s),{className:y,style:S,classNames:w,styles:T,...E}=e,D=g.findIndex(e=>e.key===p),O={};if(_){let e=g.length-1-(D>-1?D:a-1),t=n===`top`||n===`bottom`?`-50%`:`0`;if(e>0){O.height=x?d.current[p]?.offsetHeight:f?.offsetHeight;let r=0;for(let t=0;th(e=>e.includes(p)?e:[...e,p]),onMouseLeave:()=>h(e=>e.filter(e=>e!==p))},C.createElement(em,sm({},E,{ref:e=>{D>-1?d.current[p]=e:delete d.current[p]},prefixCls:r,classNames:w,styles:T,className:q(y,u?.notice),style:S,times:l,key:s,eventKey:s,onNoticeClose:c,hovering:_&&m.length>0})))})},lee=C.forwardRef((e,t)=>{let{prefixCls:n=`rc-notification`,container:r,motion:i,maxCount:a,className:o,style:s,onAllRemoved:c,stack:l,renderNotifications:u}=e,[d,f]=C.useState([]),p=e=>{let t=d.find(t=>t.key===e),n=t?.closable,{onClose:r}=n&&typeof n==`object`?n:{};r?.(),t?.onClose?.(),f(t=>t.filter(t=>t.key!==e))};C.useImperativeHandle(t,()=>({open:e=>{f(t=>{let n=[...t],r=n.findIndex(t=>t.key===e.key),i={...e};return r>=0?(i.times=(t[r]?.times||0)+1,n[r]=i):(i.times=0,n.push(i)),a>0&&n.length>a&&(n=n.slice(-a)),n})},close:e=>{p(e)},destroy:()=>{f([])}}));let[m,h]=C.useState({});C.useEffect(()=>{let e={};d.forEach(t=>{let{placement:n=`topRight`}=t;n&&(e[n]=e[n]||[],e[n].push(t))}),Object.keys(m).forEach(t=>{e[t]=e[t]||[]}),h(e)},[d]);let g=e=>{h(t=>{let n={...t};return(n[e]||[]).length||delete n[e],n})},_=C.useRef(!1);if(C.useEffect(()=>{Object.keys(m).length>0?_.current=!0:_.current&&=(c?.(),!1)},[m]),!r)return null;let v=Object.keys(m);return(0,Yf.createPortal)(C.createElement(C.Fragment,null,v.map(e=>{let t=m[e],r=C.createElement(cm,{key:e,configList:t,placement:e,prefixCls:n,className:o?.(e),style:s?.(e),motion:i,onNoticeClose:p,onAllNoticeRemoved:g,stack:l});return u?u(r,{prefixCls:n,key:e}):r})),r)}),uee=()=>document.body,lm=0;function dee(...e){let t={};return e.forEach(e=>{e&&Object.keys(e).forEach(n=>{let r=e[n];r!==void 0&&(t[n]=r)})}),t}function um(e={}){let{getContainer:t=uee,motion:n,prefixCls:r,maxCount:i,className:a,style:o,onAllRemoved:s,stack:c,renderNotifications:l,...u}=e,[d,f]=C.useState(),p=C.useRef(),m=C.createElement(lee,{container:d,ref:p,prefixCls:r,motion:n,maxCount:i,className:a,style:o,onAllRemoved:s,stack:c,renderNotifications:l}),[h,g]=C.useState([]),_=Rn(e=>{let t=dee(u,e);(t.key===null||t.key===void 0)&&(t.key=`rc-notification-${lm}`,lm+=1),g(e=>[...e,{type:`open`,config:t}])}),v=C.useMemo(()=>({open:_,close:e=>{g(t=>[...t,{type:`close`,key:e}])},destroy:()=>{g(e=>[...e,{type:`destroy`}])}}),[]);return C.useEffect(()=>{f(t())}),C.useEffect(()=>{if(p.current&&h.length){h.forEach(e=>{switch(e.type){case`open`:p.current.open(e.config);break;case`close`:p.current.close(e.key);break;case`destroy`:p.current.destroy();break}});let e,t;g(n=>((e!==n||!t)&&(e=n,t=n.filter(e=>!h.includes(e))),t))}},[h]),[v,m]}var fee={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z`}}]},name:`loading`,theme:`outlined`};function dm(){return dm=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,dm({},e,{ref:t,icon:fee}))),pm=e=>{let{componentCls:t,iconCls:n,boxShadow:r,colorText:i,colorSuccess:a,colorError:o,colorWarning:s,colorInfo:c,fontSizeLG:l,motionEaseInOutCirc:u,motionDurationSlow:d,marginXS:f,paddingXS:p,borderRadiusLG:m,zIndexPopup:h,contentPadding:g,contentBg:_}=e,v=`${t}-notice`,y=new Ro(`MessageMoveIn`,{"0%":{padding:0,transform:`translateY(-100%)`,opacity:0},"100%":{padding:p,transform:`translateY(0)`,opacity:1}}),b=new Ro(`MessageMoveOut`,{"0%":{maxHeight:e.height,padding:p,opacity:1},"100%":{maxHeight:0,padding:0,opacity:0}}),x={padding:p,textAlign:`center`,[`${t}-custom-content`]:{display:`flex`,alignItems:`center`},[`${t}-custom-content > ${n}`]:{marginInlineEnd:f,fontSize:l},[`${v}-content`]:{display:`inline-block`,padding:g,background:_,borderRadius:m,boxShadow:r,pointerEvents:`all`},[`${t}-success > ${n}`]:{color:a},[`${t}-error > ${n}`]:{color:o},[`${t}-warning > ${n}`]:{color:s},[`${t}-info > ${n},
${t}-loading > ${n}`]:{color:c}};return[{[t]:{...Yc(e),color:i,position:`fixed`,top:f,width:`100%`,pointerEvents:`none`,zIndex:h,[`${t}-move-up`]:{animationFillMode:`forwards`},[`
${t}-move-up-appear,
${t}-move-up-enter
`]:{animationName:y,animationDuration:d,animationPlayState:`paused`,animationTimingFunction:u},[`
${t}-move-up-appear${t}-move-up-appear-active,
${t}-move-up-enter${t}-move-up-enter-active
- `]:{animationPlayState:`running`},[`${t}-move-up-leave`]:{animationName:b,animationDuration:d,animationPlayState:`paused`,animationTimingFunction:u},[`${t}-move-up-leave${t}-move-up-leave-active`]:{animationPlayState:`running`},"&-rtl":{direction:`rtl`,span:{direction:`rtl`}}}},{[t]:{[`${v}-wrapper`]:{...x}}},{[`${t}-notice-pure-panel`]:{...x,padding:0,textAlign:`start`}}]},pm=il(`Message`,e=>pee(_s(e,{height:150})),e=>({zIndexPopup:e.zIndexPopupBase+Kd+10,contentBg:e.colorBgElevated,contentPadding:`${(e.controlHeightLG-e.fontSize*e.lineHeight)/2}px ${e.paddingSM}px`})),mee={info:C.createElement(Gl,null),success:C.createElement(Nl,null),error:C.createElement(Il,null),warning:C.createElement(Hl,null),loading:C.createElement(fm,null)},mm=e=>{let{prefixCls:t,type:n,icon:r,children:i,classNames:a,styles:o}=e,s=Fp(r||n&&mee[n],e=>{let t={...e?.style,...o?.icon};return{className:q(e.className,a?.icon),style:t}});return C.createElement(`div`,{className:q(`${t}-custom-content`,`${t}-${n}`)},s,C.createElement(`span`,{className:a?.content,style:o?.content},i))},hm=e=>{let{prefixCls:t,className:n,style:r,type:i,icon:a,content:o,classNames:s,styles:c,...l}=e,{getPrefixCls:u,className:d,style:f,classNames:p,styles:m}=ui(`message`),h=t||u(`message`),g=xf(h),[_,v]=pm(h,g),[y,b]=Id([p,s],[m,c],{props:e});return C.createElement(nm,{...l,prefixCls:h,className:q(d,y.root,n,_,`${h}-notice-pure-panel`,v,g),style:{...b.root,...f,...r},eventKey:`pure`,duration:null,content:C.createElement(mm,{prefixCls:h,type:i,icon:a,classNames:y,styles:b},o)})};function gm(e,t){return{motionName:t??`${e}-move-up`}}function _m(e){let t,n=new Promise(n=>{t=e(()=>{n(!0)})}),r=()=>{t?.()};return r.then=(e,t)=>n.then(e,t),r.promise=n,r}var vm=8,ym=3,bm=({children:e,prefixCls:t})=>{let n=xf(t),[r,i]=pm(t,n);return C.createElement(im,{classNames:{list:q(r,i,n)}},e)},xm=(e,{prefixCls:t,key:n})=>C.createElement(bm,{prefixCls:t,key:n},e),Sm=C.forwardRef((e,t)=>{let{top:n,prefixCls:r,getContainer:i,maxCount:a,duration:o=ym,rtl:s,transitionName:c,onAllRemoved:l,pauseOnHover:u=!0}=e,{getPrefixCls:d,direction:f,getPopupContainer:p}=ui(`message`),{message:m}=C.useContext(si),h=r||d(`message`),g=()=>({left:`50%`,transform:`translateX(-50%)`,top:n??vm}),_=()=>q({[`${h}-rtl`]:s??f===`rtl`}),v=()=>gm(h,c),[y,b]=Id([e?.classNames,m?.classNames],[e?.styles,m?.styles],{props:e}),[x,S]=um({prefixCls:h,style:g,className:_,motion:v,closable:!1,duration:o,getContainer:()=>i?.()||p?.()||document.body,maxCount:a,onAllRemoved:l,renderNotifications:xm,pauseOnHover:u});return C.useImperativeHandle(t,()=>({...x,prefixCls:h,message:m,classNames:y,styles:b})),S}),Cm=0;function wm(e){let t=C.useRef(null);return Or(`Message`),[C.useMemo(()=>{let n=e=>{t.current?.close(e)},r=r=>{if(!t.current){let e=()=>{};return e.then=()=>{},e}let{open:i,prefixCls:a,message:o,classNames:s,styles:c}=t.current,l=o?.className||{},u=o?.style||{},d=o?.classNames||{},f=o?.styles||{},p=`${a}-notice`,{content:m,icon:h,type:g,key:_,className:v,style:y,onClose:b,classNames:x={},styles:S={},...w}=r,T=_;pd(T)||(Cm+=1,T=`antd-message-${Cm}`);let E={...e,...r},D=Fd(d,{props:E}),O=Fd(x,{props:E}),k=Fd(f,{props:E}),A=Fd(S,{props:E}),j=Ad(void 0,D,O,s),M=Md(k,A,c);return _m(e=>(i({...w,key:T,content:C.createElement(mm,{prefixCls:a,type:g,icon:h,classNames:j,styles:M},m),placement:`top`,className:q({[`${p}-${g}`]:g},v,l,j.root),style:{...M.root,...u,...y},onClose:()=>{b?.(),e()}}),()=>{n(T)}))},i={open:r,destroy:e=>{e===void 0?t.current?.destroy():n(e)}};return[`info`,`success`,`warning`,`error`,`loading`].forEach(e=>{i[e]=(t,n,i)=>{let a;a=gd(t)&&`content`in t?t:{content:t};let o,s;return typeof n==`function`?s=n:(o=n,s=i),r({onClose:s,duration:o,...a,type:e})}}),i},[]),C.createElement(Sm,{key:`message-holder`,...e,ref:t})]}function Tm(e){return wm(e)}var Em=`__rc_react_root__`;function Dm(e,t){let n=t[Em]||(0,v.createRoot)(t);n.render(e),t[Em]=n}async function Om(e){return Promise.resolve().then(()=>{e[Em]?.unmount(),delete e[Em]})}var km=()=>({height:0,opacity:0}),Am=e=>({height:e?.scrollHeight??0,opacity:+!!e}),hee=e=>({height:e?.offsetHeight??0}),gee=e=>gd(e)&&`propertyName`in e,jm=(e,t)=>t?.deadline===!0||(gee(t)?t.propertyName===`height`:!1),Mm=(e=`ant`)=>({motionName:`${e}-motion-collapse`,onAppearStart:km,onEnterStart:km,onAppearActive:Am,onEnterActive:Am,onLeaveStart:hee,onLeaveActive:km,onAppearEnd:jm,onEnterEnd:jm,onLeaveEnd:jm,motionDeadline:500}),Nm=(e,t,n)=>n===void 0?`${e}-${t}`:n,_ee=al(`Wave`,e=>{let{componentCls:t,colorPrimary:n,motionDurationSlow:r,motionEaseInOut:i,motionEaseOutCirc:a,antCls:o}=e,[,s]=sl(o,`wave`);return{[t]:{position:`absolute`,background:`transparent`,pointerEvents:`none`,boxSizing:`border-box`,color:s(`color`,n),boxShadow:`0 0 0 0 currentcolor`,opacity:.2,"&.wave-motion-appear":{transition:[`box-shadow 0.4s`,`opacity 2s`].map(e=>`${e} ${a}`).join(`,`),"&-active":{boxShadow:`0 0 0 6px currentcolor`,opacity:0},"&.wave-quick":{transition:[`box-shadow`,`opacity`].map(e=>`${e} ${r} ${i}`).join(`,`)}}}}}),Pm=`ant-wave-target`;function Fm(e){return e&&typeof e==`string`&&e!==`#fff`&&e!==`#ffffff`&&e!==`rgb(255, 255, 255)`&&e!==`rgba(255, 255, 255, 1)`&&!/rgba\((?:\d*, ){3}0\)/.test(e)&&e!==`transparent`&&e!==`canvastext`}function vee(e,t=null){let n=getComputedStyle(e),{borderTopColor:r,borderColor:i,backgroundColor:a}=n;return t&&Fm(n[t])?n[t]:[r,i,a].find(Fm)??null}function Im(e){return Number.isNaN(e)?0:e}var yee=e=>{let{className:t,target:n,component:r,colorSource:i}=e,a=C.useRef(null),{getPrefixCls:o}=C.useContext(si),[s]=sl(o(),`wave`),[c,l]=C.useState(null),[u,d]=C.useState([]),[f,p]=C.useState(0),[m,h]=C.useState(0),[g,_]=C.useState(0),[v,y]=C.useState(0),[b,x]=C.useState(!1),S={left:f,top:m,width:g,height:v,borderRadius:u.map(e=>`${e}px`).join(` `)};c&&(S[s(`color`)]=c);function w(){let e=getComputedStyle(n);l(vee(n,i));let t=e.position===`static`,{borderLeftWidth:r,borderTopWidth:a}=e;p(t?n.offsetLeft:Im(-Number.parseFloat(r))),h(t?n.offsetTop:Im(-Number.parseFloat(a))),_(n.offsetWidth),y(n.offsetHeight);let{borderTopLeftRadius:o,borderTopRightRadius:s,borderBottomLeftRadius:c,borderBottomRightRadius:u}=e;d([o,s,u,c].map(e=>Im(Number.parseFloat(e))))}if(C.useEffect(()=>{if(n){let e=ii(()=>{w(),x(!0)}),t;return typeof ResizeObserver<`u`&&(t=new ResizeObserver(w),t.observe(n)),()=>{ii.cancel(e),t?.disconnect()}}},[n]),!b)return null;let T=(r===`Checkbox`||r===`Radio`)&&n?.classList.contains(Pm);return C.createElement(Lu,{visible:!0,motionAppear:!0,motionName:`wave-motion`,motionDeadline:5e3,onAppearEnd:(e,t)=>{if(t.deadline||t.propertyName===`opacity`){let e=a.current?.parentElement;Om(e).then(()=>{e?.remove()})}return!1}},({className:e},n)=>C.createElement(`div`,{ref:er(a,n),className:q(t,e,{"wave-quick":T}),style:S}))},bee=(e,t)=>{let{component:n}=t;if(n===`Checkbox`&&!e.querySelector(`input`)?.checked)return;let r=document.createElement(`div`);r.style.position=`absolute`,r.style.left=`0px`,r.style.top=`0px`,e?.insertBefore(r,e?.firstChild),Dm(C.createElement(yee,{...t,target:e}),r)},xee=(e,t,n,r)=>{let{wave:i}=C.useContext(si),[,a,o]=qc(),s=Rn(s=>{let c=e.current;if(i?.disabled||!c)return;let l=c.querySelector(`.${Pm}`)||c,{showEffect:u}=i||{};(u||bee)(l,{className:t,token:a,component:n,event:s,hashId:o,colorSource:r})}),c=C.useRef(null);return C.useEffect(()=>()=>{ii.cancel(c.current)},[]),e=>{ii.cancel(c.current),c.current=ii(()=>{s(e)})}},Lm=e=>{let{children:t,disabled:n,component:r,colorSource:i}=e,{getPrefixCls:a}=(0,C.useContext)(si),o=(0,C.useRef)(null),s=a(`wave`),c=xee(o,q(s,_ee(s)),r,i);return C.useEffect(()=>{let e=o.current;if(!e||e.nodeType!==window.Node.ELEMENT_NODE||n)return;let t=t=>{!lp(t.target)||!e.getAttribute||e.getAttribute(`disabled`)||e.disabled||e.className.includes(`disabled`)&&!e.className.includes(`disabled:`)||e.getAttribute(`aria-disabled`)===`true`||e.className.includes(`-leave`)||c(t)};return e.addEventListener(`click`,t,!0),()=>{e.removeEventListener(`click`,t,!0)}},[n]),C.isValidElement(t)?Fp(t,{ref:nr(t)?er(ar(t),o):o}):t??null},Rm=e=>{let t=C.useContext(Hp);return C.useMemo(()=>e?typeof e==`string`?e??t:typeof e==`function`?e(t):t:t,[e,t])},zm=il([`Space`,`Compact`],e=>{let{componentCls:t}=e;return{[t]:{display:`inline-flex`,"&-block":{display:`flex`,width:`100%`},"&-vertical":{flexDirection:`column`},"&-rtl":{direction:`rtl`}}}},()=>({}),{resetStyle:!1}),Bm=C.createContext(null),Vm=(e,t)=>{let n=C.useContext(Bm),r=C.useMemo(()=>{if(!n)return``;let{compactDirection:r,isFirstItem:i,isLastItem:a}=n,o=r===`vertical`?`-vertical-`:`-`;return q(`${e}-compact${o}item`,{[`${e}-compact${o}first-item`]:i,[`${e}-compact${o}last-item`]:a,[`${e}-compact${o}item-rtl`]:t===`rtl`})},[e,t,n]);return{compactSize:n?.compactSize,compactDirection:n?.compactDirection,compactItemClassnames:r}},Hm=e=>{let{children:t}=e;return C.createElement(Bm.Provider,{value:null},t)},Um=e=>{let{children:t,...n}=e;return C.createElement(Bm.Provider,{value:C.useMemo(()=>n,[n])},t)},Wm=e=>{let{getPrefixCls:t,direction:n}=C.useContext(si),{size:r,direction:i,orientation:a,block:o,prefixCls:s,className:c,rootClassName:l,children:u,vertical:d,...f}=e,[p,m]=zd(a,d,i),h=Rm(e=>r??e),g=t(`space-compact`,s),[_]=zm(g),v=q(g,_,{[`${g}-rtl`]:n===`rtl`,[`${g}-block`]:o,[`${g}-vertical`]:m},c,l),y=C.useContext(Bm),b=wr(u),x=C.useMemo(()=>b.map((e,t)=>{let n=e?.key||`${g}-item-${t}`;return C.createElement(Um,{key:n,compactSize:h,compactDirection:p,isFirstItem:t===0&&(!y||y?.isFirstItem),isLastItem:t===b.length-1&&(!y||y?.isLastItem)},e)}),[b,y,p,h,g]);return b.length===0?null:C.createElement(`div`,{className:v,...f},x)},Gm=C.createContext(void 0),Km=e=>{let{getPrefixCls:t,direction:n}=C.useContext(si),{prefixCls:r,size:i,className:a,...o}=e,s=t(`btn-group`,r),[,,c]=qc(),l=C.useMemo(()=>{switch(i){case`large`:return`lg`;case`small`:return`sm`;default:return``}},[i]),u=q(s,{[`${s}-${l}`]:l,[`${s}-rtl`]:n===`rtl`},a,c);return C.createElement(Gm.Provider,{value:i},C.createElement(`div`,{...o,className:u}))},qm=/^[\u4E00-\u9FA5]{2}$/,Jm=qm.test.bind(qm);function Ym(e){return e===`danger`?{danger:!0}:{type:e}}function Xm(e){return e===`text`||e===`link`}function Zm(e,t,n,r){if(!pd(e)||e===``)return;let i=t?` `:``;return typeof e!=`string`&&typeof e!=`number`&&hd(e.type)&&Jm(e.props.children)?Fp(e,e=>{let t=q(e.className,r)||void 0,a={...n,...e.style};return{...e,children:e.children.split(``).join(i),className:t,style:a}}):hd(e)?C.createElement(`span`,{className:r,style:n},Jm(e)?e.split(``).join(i):e):Np(e)?C.createElement(`span`,{className:r,style:n},e):Fp(e,e=>({...e,className:q(e.className,r)||void 0,style:{...e.style,...n}}))}function See(e,t,n,r){let i=!1,a=[];return C.Children.forEach(e,e=>{let t=typeof e,n=t===`string`||t===`number`;if(i&&n){let t=a.length-1;a[t]=`${a[t]}${e}`}else a.push(e);i=n}),C.Children.map(a,e=>Zm(e,t,n,r))}[`default`,`primary`,`danger`].concat(Qr(Os));var Qm=(0,C.forwardRef)((e,t)=>{let{className:n,style:r,children:i,prefixCls:a}=e,o=q(`${a}-icon`,n);return C.createElement(`span`,{ref:t,className:o,style:r},i)}),$m=(0,C.forwardRef)((e,t)=>{let{prefixCls:n,className:r,style:i,iconClassName:a}=e,o=q(`${n}-loading-icon`,r);return C.createElement(Qm,{prefixCls:n,className:o,style:i,ref:t},C.createElement(fm,{className:a}))}),eh=()=>({width:0,opacity:0,transform:`scale(0)`}),th=e=>({width:e.scrollWidth,opacity:1,transform:`scale(1)`}),Cee=e=>{let{prefixCls:t,loading:n,existIcon:r,className:i,style:a,mount:o}=e,s=!!n;return r?C.createElement($m,{prefixCls:t,className:i,style:a}):C.createElement(Lu,{visible:s,motionName:`${t}-loading-icon-motion`,motionAppear:!o,motionEnter:!o,motionLeave:!o,removeOnLeave:!0,onAppearStart:eh,onAppearActive:th,onEnterStart:eh,onEnterActive:th,onLeaveStart:th,onLeaveActive:eh},({className:e,style:n},r)=>{let o={...a,...n};return C.createElement($m,{prefixCls:t,className:q(i,e),style:o,ref:r})})},nh=e=>{let{componentCls:t,antCls:n,motionDurationMid:r,motionEaseInOut:i}=e;return{[t]:{[`${n}-motion-collapse-legacy`]:{overflow:`hidden`,"&-active":{transition:`${[`height`,`opacity`].map(e=>`${e} ${r} ${i}`).join(`, `)} !important`}},[`${n}-motion-collapse`]:{overflow:`hidden`,transition:`${[`height`,`opacity`].map(e=>`${e} ${r} ${i}`).join(`, `)} !important`}}}},rh=e=>({animationDuration:e,animationFillMode:`both`}),ih=(e,t,n,r,i=!1)=>{let a=i?`&`:``;return{[`
+ `]:{animationPlayState:`running`},[`${t}-move-up-leave`]:{animationName:b,animationDuration:d,animationPlayState:`paused`,animationTimingFunction:u},[`${t}-move-up-leave${t}-move-up-leave-active`]:{animationPlayState:`running`},"&-rtl":{direction:`rtl`,span:{direction:`rtl`}}}},{[t]:{[`${v}-wrapper`]:{...x}}},{[`${t}-notice-pure-panel`]:{...x,padding:0,textAlign:`start`}}]},mm=il(`Message`,e=>pm(_s(e,{height:150})),e=>({zIndexPopup:e.zIndexPopupBase+Kd+10,contentBg:e.colorBgElevated,contentPadding:`${(e.controlHeightLG-e.fontSize*e.lineHeight)/2}px ${e.paddingSM}px`})),pee={info:C.createElement(Gl,null),success:C.createElement(Nl,null),error:C.createElement(Il,null),warning:C.createElement(Hl,null),loading:C.createElement(fm,null)},hm=e=>{let{prefixCls:t,type:n,icon:r,children:i,classNames:a,styles:o}=e,s=Fp(r||n&&pee[n],e=>{let t={...e?.style,...o?.icon};return{className:q(e.className,a?.icon),style:t}});return C.createElement(`div`,{className:q(`${t}-custom-content`,`${t}-${n}`)},s,C.createElement(`span`,{className:a?.content,style:o?.content},i))},mee=e=>{let{prefixCls:t,className:n,style:r,type:i,icon:a,content:o,classNames:s,styles:c,...l}=e,{getPrefixCls:u,className:d,style:f,classNames:p,styles:m}=ui(`message`),h=t||u(`message`),g=xf(h),[_,v]=mm(h,g),[y,b]=Id([p,s],[m,c],{props:e});return C.createElement(em,{...l,prefixCls:h,className:q(d,y.root,n,_,`${h}-notice-pure-panel`,v,g),style:{...b.root,...f,...r},eventKey:`pure`,duration:null,content:C.createElement(hm,{prefixCls:h,type:i,icon:a,classNames:y,styles:b},o)})};function hee(e,t){return{motionName:t??`${e}-move-up`}}function gm(e){let t,n=new Promise(n=>{t=e(()=>{n(!0)})}),r=()=>{t?.()};return r.then=(e,t)=>n.then(e,t),r.promise=n,r}var gee=8,_ee=3,vee=({children:e,prefixCls:t})=>{let n=xf(t),[r,i]=mm(t,n);return C.createElement(nm,{classNames:{list:q(r,i,n)}},e)},yee=(e,{prefixCls:t,key:n})=>C.createElement(vee,{prefixCls:t,key:n},e),bee=C.forwardRef((e,t)=>{let{top:n,prefixCls:r,getContainer:i,maxCount:a,duration:o=_ee,rtl:s,transitionName:c,onAllRemoved:l,pauseOnHover:u=!0}=e,{getPrefixCls:d,direction:f,getPopupContainer:p}=ui(`message`),{message:m}=C.useContext(si),h=r||d(`message`),g=()=>({left:`50%`,transform:`translateX(-50%)`,top:n??gee}),_=()=>q({[`${h}-rtl`]:s??f===`rtl`}),v=()=>hee(h,c),[y,b]=Id([e?.classNames,m?.classNames],[e?.styles,m?.styles],{props:e}),[x,S]=um({prefixCls:h,style:g,className:_,motion:v,closable:!1,duration:o,getContainer:()=>i?.()||p?.()||document.body,maxCount:a,onAllRemoved:l,renderNotifications:yee,pauseOnHover:u});return C.useImperativeHandle(t,()=>({...x,prefixCls:h,message:m,classNames:y,styles:b})),S}),_m=0;function vm(e){let t=C.useRef(null);return Or(`Message`),[C.useMemo(()=>{let n=e=>{t.current?.close(e)},r=r=>{if(!t.current){let e=()=>{};return e.then=()=>{},e}let{open:i,prefixCls:a,message:o,classNames:s,styles:c}=t.current,l=o?.className||{},u=o?.style||{},d=o?.classNames||{},f=o?.styles||{},p=`${a}-notice`,{content:m,icon:h,type:g,key:_,className:v,style:y,onClose:b,classNames:x={},styles:S={},...w}=r,T=_;pd(T)||(_m+=1,T=`antd-message-${_m}`);let E={...e,...r},D=Fd(d,{props:E}),O=Fd(x,{props:E}),k=Fd(f,{props:E}),A=Fd(S,{props:E}),j=Ad(void 0,D,O,s),M=Md(k,A,c);return gm(e=>(i({...w,key:T,content:C.createElement(hm,{prefixCls:a,type:g,icon:h,classNames:j,styles:M},m),placement:`top`,className:q({[`${p}-${g}`]:g},v,l,j.root),style:{...M.root,...u,...y},onClose:()=>{b?.(),e()}}),()=>{n(T)}))},i={open:r,destroy:e=>{e===void 0?t.current?.destroy():n(e)}};return[`info`,`success`,`warning`,`error`,`loading`].forEach(e=>{i[e]=(t,n,i)=>{let a;a=gd(t)&&`content`in t?t:{content:t};let o,s;return typeof n==`function`?s=n:(o=n,s=i),r({onClose:s,duration:o,...a,type:e})}}),i},[]),C.createElement(bee,{key:`message-holder`,...e,ref:t})]}function ym(e){return vm(e)}var bm=`__rc_react_root__`;function xm(e,t){let n=t[bm]||(0,v.createRoot)(t);n.render(e),t[bm]=n}async function Sm(e){return Promise.resolve().then(()=>{e[bm]?.unmount(),delete e[bm]})}var Cm=()=>({height:0,opacity:0}),wm=e=>({height:e?.scrollHeight??0,opacity:+!!e}),Tm=e=>({height:e?.offsetHeight??0}),Em=e=>gd(e)&&`propertyName`in e,Dm=(e,t)=>t?.deadline===!0||(Em(t)?t.propertyName===`height`:!1),Om=(e=`ant`)=>({motionName:`${e}-motion-collapse`,onAppearStart:Cm,onEnterStart:Cm,onAppearActive:wm,onEnterActive:wm,onLeaveStart:Tm,onLeaveActive:Cm,onAppearEnd:Dm,onEnterEnd:Dm,onLeaveEnd:Dm,motionDeadline:500}),km=(e,t,n)=>n===void 0?`${e}-${t}`:n,xee=al(`Wave`,e=>{let{componentCls:t,colorPrimary:n,motionDurationSlow:r,motionEaseInOut:i,motionEaseOutCirc:a,antCls:o}=e,[,s]=sl(o,`wave`);return{[t]:{position:`absolute`,background:`transparent`,pointerEvents:`none`,boxSizing:`border-box`,color:s(`color`,n),boxShadow:`0 0 0 0 currentcolor`,opacity:.2,"&.wave-motion-appear":{transition:[`box-shadow 0.4s`,`opacity 2s`].map(e=>`${e} ${a}`).join(`,`),"&-active":{boxShadow:`0 0 0 6px currentcolor`,opacity:0},"&.wave-quick":{transition:[`box-shadow`,`opacity`].map(e=>`${e} ${r} ${i}`).join(`,`)}}}}}),Am=`ant-wave-target`;function jm(e){return e&&typeof e==`string`&&e!==`#fff`&&e!==`#ffffff`&&e!==`rgb(255, 255, 255)`&&e!==`rgba(255, 255, 255, 1)`&&!/rgba\((?:\d*, ){3}0\)/.test(e)&&e!==`transparent`&&e!==`canvastext`}function See(e,t=null){let n=getComputedStyle(e),{borderTopColor:r,borderColor:i,backgroundColor:a}=n;return t&&jm(n[t])?n[t]:[r,i,a].find(jm)??null}function Mm(e){return Number.isNaN(e)?0:e}var Cee=e=>{let{className:t,target:n,component:r,colorSource:i}=e,a=C.useRef(null),{getPrefixCls:o}=C.useContext(si),[s]=sl(o(),`wave`),[c,l]=C.useState(null),[u,d]=C.useState([]),[f,p]=C.useState(0),[m,h]=C.useState(0),[g,_]=C.useState(0),[v,y]=C.useState(0),[b,x]=C.useState(!1),S={left:f,top:m,width:g,height:v,borderRadius:u.map(e=>`${e}px`).join(` `)};c&&(S[s(`color`)]=c);function w(){let e=getComputedStyle(n);l(See(n,i));let t=e.position===`static`,{borderLeftWidth:r,borderTopWidth:a}=e;p(t?n.offsetLeft:Mm(-Number.parseFloat(r))),h(t?n.offsetTop:Mm(-Number.parseFloat(a))),_(n.offsetWidth),y(n.offsetHeight);let{borderTopLeftRadius:o,borderTopRightRadius:s,borderBottomLeftRadius:c,borderBottomRightRadius:u}=e;d([o,s,u,c].map(e=>Mm(Number.parseFloat(e))))}if(C.useEffect(()=>{if(n){let e=ii(()=>{w(),x(!0)}),t;return typeof ResizeObserver<`u`&&(t=new ResizeObserver(w),t.observe(n)),()=>{ii.cancel(e),t?.disconnect()}}},[n]),!b)return null;let T=(r===`Checkbox`||r===`Radio`)&&n?.classList.contains(Am);return C.createElement(Lu,{visible:!0,motionAppear:!0,motionName:`wave-motion`,motionDeadline:5e3,onAppearEnd:(e,t)=>{if(t.deadline||t.propertyName===`opacity`){let e=a.current?.parentElement;Sm(e).then(()=>{e?.remove()})}return!1}},({className:e},n)=>C.createElement(`div`,{ref:er(a,n),className:q(t,e,{"wave-quick":T}),style:S}))},wee=(e,t)=>{let{component:n}=t;if(n===`Checkbox`&&!e.querySelector(`input`)?.checked)return;let r=document.createElement(`div`);r.style.position=`absolute`,r.style.left=`0px`,r.style.top=`0px`,e?.insertBefore(r,e?.firstChild),xm(C.createElement(Cee,{...t,target:e}),r)},Tee=(e,t,n,r)=>{let{wave:i}=C.useContext(si),[,a,o]=qc(),s=Rn(s=>{let c=e.current;if(i?.disabled||!c)return;let l=c.querySelector(`.${Am}`)||c,{showEffect:u}=i||{};(u||wee)(l,{className:t,token:a,component:n,event:s,hashId:o,colorSource:r})}),c=C.useRef(null);return C.useEffect(()=>()=>{ii.cancel(c.current)},[]),e=>{ii.cancel(c.current),c.current=ii(()=>{s(e)})}},Nm=e=>{let{children:t,disabled:n,component:r,colorSource:i}=e,{getPrefixCls:a}=(0,C.useContext)(si),o=(0,C.useRef)(null),s=a(`wave`),c=Tee(o,q(s,xee(s)),r,i);return C.useEffect(()=>{let e=o.current;if(!e||e.nodeType!==window.Node.ELEMENT_NODE||n)return;let t=t=>{!lp(t.target)||!e.getAttribute||e.getAttribute(`disabled`)||e.disabled||e.className.includes(`disabled`)&&!e.className.includes(`disabled:`)||e.getAttribute(`aria-disabled`)===`true`||e.className.includes(`-leave`)||c(t)};return e.addEventListener(`click`,t,!0),()=>{e.removeEventListener(`click`,t,!0)}},[n]),C.isValidElement(t)?Fp(t,{ref:nr(t)?er(ar(t),o):o}):t??null},Pm=e=>{let t=C.useContext(Hp);return C.useMemo(()=>e?typeof e==`string`?e??t:typeof e==`function`?e(t):t:t,[e,t])},Eee=il([`Space`,`Compact`],e=>{let{componentCls:t}=e;return{[t]:{display:`inline-flex`,"&-block":{display:`flex`,width:`100%`},"&-vertical":{flexDirection:`column`},"&-rtl":{direction:`rtl`}}}},()=>({}),{resetStyle:!1}),Fm=C.createContext(null),Im=(e,t)=>{let n=C.useContext(Fm),r=C.useMemo(()=>{if(!n)return``;let{compactDirection:r,isFirstItem:i,isLastItem:a}=n,o=r===`vertical`?`-vertical-`:`-`;return q(`${e}-compact${o}item`,{[`${e}-compact${o}first-item`]:i,[`${e}-compact${o}last-item`]:a,[`${e}-compact${o}item-rtl`]:t===`rtl`})},[e,t,n]);return{compactSize:n?.compactSize,compactDirection:n?.compactDirection,compactItemClassnames:r}},Dee=e=>{let{children:t}=e;return C.createElement(Fm.Provider,{value:null},t)},Oee=e=>{let{children:t,...n}=e;return C.createElement(Fm.Provider,{value:C.useMemo(()=>n,[n])},t)},Lm=e=>{let{getPrefixCls:t,direction:n}=C.useContext(si),{size:r,direction:i,orientation:a,block:o,prefixCls:s,className:c,rootClassName:l,children:u,vertical:d,...f}=e,[p,m]=zd(a,d,i),h=Pm(e=>r??e),g=t(`space-compact`,s),[_]=Eee(g),v=q(g,_,{[`${g}-rtl`]:n===`rtl`,[`${g}-block`]:o,[`${g}-vertical`]:m},c,l),y=C.useContext(Fm),b=wr(u),x=C.useMemo(()=>b.map((e,t)=>{let n=e?.key||`${g}-item-${t}`;return C.createElement(Oee,{key:n,compactSize:h,compactDirection:p,isFirstItem:t===0&&(!y||y?.isFirstItem),isLastItem:t===b.length-1&&(!y||y?.isLastItem)},e)}),[b,y,p,h,g]);return b.length===0?null:C.createElement(`div`,{className:v,...f},x)},Rm=C.createContext(void 0),kee=e=>{let{getPrefixCls:t,direction:n}=C.useContext(si),{prefixCls:r,size:i,className:a,...o}=e,s=t(`btn-group`,r),[,,c]=qc(),l=C.useMemo(()=>{switch(i){case`large`:return`lg`;case`small`:return`sm`;default:return``}},[i]),u=q(s,{[`${s}-${l}`]:l,[`${s}-rtl`]:n===`rtl`},a,c);return C.createElement(Rm.Provider,{value:i},C.createElement(`div`,{...o,className:u}))},zm=/^[\u4E00-\u9FA5]{2}$/,Bm=zm.test.bind(zm);function Vm(e){return e===`danger`?{danger:!0}:{type:e}}function Hm(e){return e===`text`||e===`link`}function Aee(e,t,n,r){if(!pd(e)||e===``)return;let i=t?` `:``;return typeof e!=`string`&&typeof e!=`number`&&hd(e.type)&&Bm(e.props.children)?Fp(e,e=>{let t=q(e.className,r)||void 0,a={...n,...e.style};return{...e,children:e.children.split(``).join(i),className:t,style:a}}):hd(e)?C.createElement(`span`,{className:r,style:n},Bm(e)?e.split(``).join(i):e):Np(e)?C.createElement(`span`,{className:r,style:n},e):Fp(e,e=>({...e,className:q(e.className,r)||void 0,style:{...e.style,...n}}))}function jee(e,t,n,r){let i=!1,a=[];return C.Children.forEach(e,e=>{let t=typeof e,n=t===`string`||t===`number`;if(i&&n){let t=a.length-1;a[t]=`${a[t]}${e}`}else a.push(e);i=n}),C.Children.map(a,e=>Aee(e,t,n,r))}[`default`,`primary`,`danger`].concat(Qr(Os));var Um=(0,C.forwardRef)((e,t)=>{let{className:n,style:r,children:i,prefixCls:a}=e,o=q(`${a}-icon`,n);return C.createElement(`span`,{ref:t,className:o,style:r},i)}),Wm=(0,C.forwardRef)((e,t)=>{let{prefixCls:n,className:r,style:i,iconClassName:a}=e,o=q(`${n}-loading-icon`,r);return C.createElement(Um,{prefixCls:n,className:o,style:i,ref:t},C.createElement(fm,{className:a}))}),Gm=()=>({width:0,opacity:0,transform:`scale(0)`}),Km=e=>({width:e.scrollWidth,opacity:1,transform:`scale(1)`}),qm=e=>{let{prefixCls:t,loading:n,existIcon:r,className:i,style:a,mount:o}=e,s=!!n;return r?C.createElement(Wm,{prefixCls:t,className:i,style:a}):C.createElement(Lu,{visible:s,motionName:`${t}-loading-icon-motion`,motionAppear:!o,motionEnter:!o,motionLeave:!o,removeOnLeave:!0,onAppearStart:Gm,onAppearActive:Km,onEnterStart:Gm,onEnterActive:Km,onLeaveStart:Km,onLeaveActive:Gm},({className:e,style:n},r)=>{let o={...a,...n};return C.createElement(Wm,{prefixCls:t,className:q(i,e),style:o,ref:r})})},Jm=e=>{let{componentCls:t,antCls:n,motionDurationMid:r,motionEaseInOut:i}=e;return{[t]:{[`${n}-motion-collapse-legacy`]:{overflow:`hidden`,"&-active":{transition:`${[`height`,`opacity`].map(e=>`${e} ${r} ${i}`).join(`, `)} !important`}},[`${n}-motion-collapse`]:{overflow:`hidden`,transition:`${[`height`,`opacity`].map(e=>`${e} ${r} ${i}`).join(`, `)} !important`}}}},Ym=e=>({animationDuration:e,animationFillMode:`both`}),Xm=(e,t,n,r,i=!1)=>{let a=i?`&`:``;return{[`
${a}${e}-enter,
${a}${e}-appear
- `]:{...rh(r),animationPlayState:`paused`},[`${a}${e}-leave`]:{...rh(r),animationPlayState:`paused`},[`
+ `]:{...Ym(r),animationPlayState:`paused`},[`${a}${e}-leave`]:{...Ym(r),animationPlayState:`paused`},[`
${a}${e}-enter${e}-enter-active,
${a}${e}-appear${e}-appear-active
- `]:{animationName:t,animationPlayState:`running`},[`${a}${e}-leave${e}-leave-active`]:{animationName:n,animationPlayState:`running`,pointerEvents:`none`}}},wee=new Ro(`antFadeIn`,{"0%":{opacity:0},"100%":{opacity:1}}),Tee=new Ro(`antFadeOut`,{"0%":{opacity:1},"100%":{opacity:0}}),ah=(e,t=!1)=>{let{antCls:n}=e,r=`${n}-fade`,i=t?`&`:``;return[ih(r,wee,Tee,e.motionDurationMid,t),{[`
+ `]:{animationName:t,animationPlayState:`running`},[`${a}${e}-leave${e}-leave-active`]:{animationName:n,animationPlayState:`running`,pointerEvents:`none`}}},Zm=new Ro(`antFadeIn`,{"0%":{opacity:0},"100%":{opacity:1}}),Qm=new Ro(`antFadeOut`,{"0%":{opacity:1},"100%":{opacity:0}}),$m=(e,t=!1)=>{let{antCls:n}=e,r=`${n}-fade`,i=t?`&`:``;return[Xm(r,Zm,Qm,e.motionDurationMid,t),{[`
${i}${r}-enter,
${i}${r}-appear
- `]:{opacity:0,animationTimingFunction:`linear`},[`${i}${r}-leave`]:{animationTimingFunction:`linear`}}]},Eee=new Ro(`antMoveDownIn`,{"0%":{transform:`translate3d(0, 100%, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),Dee=new Ro(`antMoveDownOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(0, 100%, 0)`,transformOrigin:`0 0`,opacity:0}}),Oee=new Ro(`antMoveLeftIn`,{"0%":{transform:`translate3d(-100%, 0, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),kee=new Ro(`antMoveLeftOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(-100%, 0, 0)`,transformOrigin:`0 0`,opacity:0}}),Aee=new Ro(`antMoveRightIn`,{"0%":{transform:`translate3d(100%, 0, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),jee=new Ro(`antMoveRightOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(100%, 0, 0)`,transformOrigin:`0 0`,opacity:0}}),Mee={"move-up":{inKeyframes:new Ro(`antMoveUpIn`,{"0%":{transform:`translate3d(0, -100%, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),outKeyframes:new Ro(`antMoveUpOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(0, -100%, 0)`,transformOrigin:`0 0`,opacity:0}})},"move-down":{inKeyframes:Eee,outKeyframes:Dee},"move-left":{inKeyframes:Oee,outKeyframes:kee},"move-right":{inKeyframes:Aee,outKeyframes:jee}},oh=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=Mee[t];return[ih(r,i,a,e.motionDurationMid),{[`
+ `]:{opacity:0,animationTimingFunction:`linear`},[`${i}${r}-leave`]:{animationTimingFunction:`linear`}}]},eh=new Ro(`antMoveDownIn`,{"0%":{transform:`translate3d(0, 100%, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),th=new Ro(`antMoveDownOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(0, 100%, 0)`,transformOrigin:`0 0`,opacity:0}}),nh=new Ro(`antMoveLeftIn`,{"0%":{transform:`translate3d(-100%, 0, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),rh=new Ro(`antMoveLeftOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(-100%, 0, 0)`,transformOrigin:`0 0`,opacity:0}}),Mee=new Ro(`antMoveRightIn`,{"0%":{transform:`translate3d(100%, 0, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),Nee=new Ro(`antMoveRightOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(100%, 0, 0)`,transformOrigin:`0 0`,opacity:0}}),Pee={"move-up":{inKeyframes:new Ro(`antMoveUpIn`,{"0%":{transform:`translate3d(0, -100%, 0)`,transformOrigin:`0 0`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1}}),outKeyframes:new Ro(`antMoveUpOut`,{"0%":{transform:`translate3d(0, 0, 0)`,transformOrigin:`0 0`,opacity:1},"100%":{transform:`translate3d(0, -100%, 0)`,transformOrigin:`0 0`,opacity:0}})},"move-down":{inKeyframes:eh,outKeyframes:th},"move-left":{inKeyframes:nh,outKeyframes:rh},"move-right":{inKeyframes:Mee,outKeyframes:Nee}},ih=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=Pee[t];return[Xm(r,i,a,e.motionDurationMid),{[`
${r}-enter,
${r}-appear
- `]:{opacity:0,animationTimingFunction:e.motionEaseOutCirc},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},sh=new Ro(`antSlideUpIn`,{"0%":{transform:`scaleY(0.8)`,transformOrigin:`0% 0%`,opacity:0},"100%":{transform:`scaleY(1)`,transformOrigin:`0% 0%`,opacity:1}}),ch=new Ro(`antSlideUpOut`,{"0%":{transform:`scaleY(1)`,transformOrigin:`0% 0%`,opacity:1},"100%":{transform:`scaleY(0.8)`,transformOrigin:`0% 0%`,opacity:0}}),lh=new Ro(`antSlideDownIn`,{"0%":{transform:`scaleY(0.8)`,transformOrigin:`100% 100%`,opacity:0},"100%":{transform:`scaleY(1)`,transformOrigin:`100% 100%`,opacity:1}}),uh=new Ro(`antSlideDownOut`,{"0%":{transform:`scaleY(1)`,transformOrigin:`100% 100%`,opacity:1},"100%":{transform:`scaleY(0.8)`,transformOrigin:`100% 100%`,opacity:0}}),Nee=new Ro(`antSlideLeftIn`,{"0%":{transform:`scaleX(0.8)`,transformOrigin:`0% 0%`,opacity:0},"100%":{transform:`scaleX(1)`,transformOrigin:`0% 0%`,opacity:1}}),Pee=new Ro(`antSlideLeftOut`,{"0%":{transform:`scaleX(1)`,transformOrigin:`0% 0%`,opacity:1},"100%":{transform:`scaleX(0.8)`,transformOrigin:`0% 0%`,opacity:0}}),Fee=new Ro(`antSlideRightIn`,{"0%":{transform:`scaleX(0.8)`,transformOrigin:`100% 0%`,opacity:0},"100%":{transform:`scaleX(1)`,transformOrigin:`100% 0%`,opacity:1}}),Iee=new Ro(`antSlideRightOut`,{"0%":{transform:`scaleX(1)`,transformOrigin:`100% 0%`,opacity:1},"100%":{transform:`scaleX(0.8)`,transformOrigin:`100% 0%`,opacity:0}}),Lee={"slide-up":{inKeyframes:sh,outKeyframes:ch},"slide-down":{inKeyframes:lh,outKeyframes:uh},"slide-left":{inKeyframes:Nee,outKeyframes:Pee},"slide-right":{inKeyframes:Fee,outKeyframes:Iee}},dh=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=Lee[t];return[ih(r,i,a,e.motionDurationMid),{[`
+ `]:{opacity:0,animationTimingFunction:e.motionEaseOutCirc},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},ah=new Ro(`antSlideUpIn`,{"0%":{transform:`scaleY(0.8)`,transformOrigin:`0% 0%`,opacity:0},"100%":{transform:`scaleY(1)`,transformOrigin:`0% 0%`,opacity:1}}),oh=new Ro(`antSlideUpOut`,{"0%":{transform:`scaleY(1)`,transformOrigin:`0% 0%`,opacity:1},"100%":{transform:`scaleY(0.8)`,transformOrigin:`0% 0%`,opacity:0}}),sh=new Ro(`antSlideDownIn`,{"0%":{transform:`scaleY(0.8)`,transformOrigin:`100% 100%`,opacity:0},"100%":{transform:`scaleY(1)`,transformOrigin:`100% 100%`,opacity:1}}),ch=new Ro(`antSlideDownOut`,{"0%":{transform:`scaleY(1)`,transformOrigin:`100% 100%`,opacity:1},"100%":{transform:`scaleY(0.8)`,transformOrigin:`100% 100%`,opacity:0}}),Fee=new Ro(`antSlideLeftIn`,{"0%":{transform:`scaleX(0.8)`,transformOrigin:`0% 0%`,opacity:0},"100%":{transform:`scaleX(1)`,transformOrigin:`0% 0%`,opacity:1}}),Iee=new Ro(`antSlideLeftOut`,{"0%":{transform:`scaleX(1)`,transformOrigin:`0% 0%`,opacity:1},"100%":{transform:`scaleX(0.8)`,transformOrigin:`0% 0%`,opacity:0}}),Lee=new Ro(`antSlideRightIn`,{"0%":{transform:`scaleX(0.8)`,transformOrigin:`100% 0%`,opacity:0},"100%":{transform:`scaleX(1)`,transformOrigin:`100% 0%`,opacity:1}}),Ree=new Ro(`antSlideRightOut`,{"0%":{transform:`scaleX(1)`,transformOrigin:`100% 0%`,opacity:1},"100%":{transform:`scaleX(0.8)`,transformOrigin:`100% 0%`,opacity:0}}),zee={"slide-up":{inKeyframes:ah,outKeyframes:oh},"slide-down":{inKeyframes:sh,outKeyframes:ch},"slide-left":{inKeyframes:Fee,outKeyframes:Iee},"slide-right":{inKeyframes:Lee,outKeyframes:Ree}},lh=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=zee[t];return[Xm(r,i,a,e.motionDurationMid),{[`
${r}-enter,
${r}-appear
- `]:{transform:`scale(0)`,transformOrigin:`0% 0%`,opacity:0,animationTimingFunction:e.motionEaseOutQuint,"&-prepare":{transform:`scale(1)`}},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInQuint}}]},fh=()=>({"@media (prefers-reduced-motion: reduce)":{transition:`none`,animation:`none`}}),ph=new Ro(`antZoomIn`,{"0%":{transform:`scale(0.2)`,opacity:0},"100%":{transform:`scale(1)`,opacity:1}}),Ree=new Ro(`antZoomOut`,{"0%":{transform:`scale(1)`},"100%":{transform:`scale(0.2)`,opacity:0}}),mh=new Ro(`antZoomBigIn`,{"0%":{transform:`scale(0.8)`,opacity:0},"100%":{transform:`scale(1)`,opacity:1}}),hh=new Ro(`antZoomBigOut`,{"0%":{transform:`scale(1)`},"100%":{transform:`scale(0.8)`,opacity:0}}),zee=new Ro(`antZoomUpIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`50% 0%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`50% 0%`}}),Bee=new Ro(`antZoomUpOut`,{"0%":{transform:`scale(1)`,transformOrigin:`50% 0%`},"100%":{transform:`scale(0.8)`,transformOrigin:`50% 0%`,opacity:0}}),Vee=new Ro(`antZoomLeftIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`0% 50%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`0% 50%`}}),Hee=new Ro(`antZoomLeftOut`,{"0%":{transform:`scale(1)`,transformOrigin:`0% 50%`},"100%":{transform:`scale(0.8)`,transformOrigin:`0% 50%`,opacity:0}}),Uee=new Ro(`antZoomRightIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`100% 50%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`100% 50%`}}),Wee=new Ro(`antZoomRightOut`,{"0%":{transform:`scale(1)`,transformOrigin:`100% 50%`},"100%":{transform:`scale(0.8)`,transformOrigin:`100% 50%`,opacity:0}}),Gee=new Ro(`antZoomDownIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`50% 100%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`50% 100%`}}),Kee=new Ro(`antZoomDownOut`,{"0%":{transform:`scale(1)`,transformOrigin:`50% 100%`},"100%":{transform:`scale(0.8)`,transformOrigin:`50% 100%`,opacity:0}}),qee={zoom:{inKeyframes:ph,outKeyframes:Ree},"zoom-big":{inKeyframes:mh,outKeyframes:hh},"zoom-big-fast":{inKeyframes:mh,outKeyframes:hh},"zoom-left":{inKeyframes:Vee,outKeyframes:Hee},"zoom-right":{inKeyframes:Uee,outKeyframes:Wee},"zoom-up":{inKeyframes:zee,outKeyframes:Bee},"zoom-down":{inKeyframes:Gee,outKeyframes:Kee}},gh=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=qee[t];return[ih(r,i,a,t===`zoom-big-fast`?e.motionDurationFast:e.motionDurationMid),{[`
+ `]:{transform:`scale(0)`,transformOrigin:`0% 0%`,opacity:0,animationTimingFunction:e.motionEaseOutQuint,"&-prepare":{transform:`scale(1)`}},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInQuint}}]},uh=()=>({"@media (prefers-reduced-motion: reduce)":{transition:`none`,animation:`none`}}),dh=new Ro(`antZoomIn`,{"0%":{transform:`scale(0.2)`,opacity:0},"100%":{transform:`scale(1)`,opacity:1}}),Bee=new Ro(`antZoomOut`,{"0%":{transform:`scale(1)`},"100%":{transform:`scale(0.2)`,opacity:0}}),fh=new Ro(`antZoomBigIn`,{"0%":{transform:`scale(0.8)`,opacity:0},"100%":{transform:`scale(1)`,opacity:1}}),ph=new Ro(`antZoomBigOut`,{"0%":{transform:`scale(1)`},"100%":{transform:`scale(0.8)`,opacity:0}}),Vee=new Ro(`antZoomUpIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`50% 0%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`50% 0%`}}),Hee=new Ro(`antZoomUpOut`,{"0%":{transform:`scale(1)`,transformOrigin:`50% 0%`},"100%":{transform:`scale(0.8)`,transformOrigin:`50% 0%`,opacity:0}}),Uee=new Ro(`antZoomLeftIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`0% 50%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`0% 50%`}}),Wee=new Ro(`antZoomLeftOut`,{"0%":{transform:`scale(1)`,transformOrigin:`0% 50%`},"100%":{transform:`scale(0.8)`,transformOrigin:`0% 50%`,opacity:0}}),Gee=new Ro(`antZoomRightIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`100% 50%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`100% 50%`}}),Kee=new Ro(`antZoomRightOut`,{"0%":{transform:`scale(1)`,transformOrigin:`100% 50%`},"100%":{transform:`scale(0.8)`,transformOrigin:`100% 50%`,opacity:0}}),qee=new Ro(`antZoomDownIn`,{"0%":{transform:`scale(0.8)`,transformOrigin:`50% 100%`,opacity:0},"100%":{transform:`scale(1)`,transformOrigin:`50% 100%`}}),Jee=new Ro(`antZoomDownOut`,{"0%":{transform:`scale(1)`,transformOrigin:`50% 100%`},"100%":{transform:`scale(0.8)`,transformOrigin:`50% 100%`,opacity:0}}),Yee={zoom:{inKeyframes:dh,outKeyframes:Bee},"zoom-big":{inKeyframes:fh,outKeyframes:ph},"zoom-big-fast":{inKeyframes:fh,outKeyframes:ph},"zoom-left":{inKeyframes:Uee,outKeyframes:Wee},"zoom-right":{inKeyframes:Gee,outKeyframes:Kee},"zoom-up":{inKeyframes:Vee,outKeyframes:Hee},"zoom-down":{inKeyframes:qee,outKeyframes:Jee}},mh=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=Yee[t];return[Xm(r,i,a,t===`zoom-big-fast`?e.motionDurationFast:e.motionDurationMid),{[`
${r}-enter,
${r}-appear
- `]:{transform:`scale(0)`,opacity:0,animationTimingFunction:e.motionEaseOutCirc,"&-prepare":{transform:`none`}},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},_h=(e,t)=>({[`> span, > ${e}`]:{"&:not(:last-child)":{[`&, & > ${e}`]:{"&:not(:disabled)":{borderInlineEndColor:t}}},"&:not(:first-child)":{[`&, & > ${e}`]:{"&:not(:disabled)":{borderInlineStartColor:t}}}}}),Jee=e=>{let{componentCls:t,fontSize:n,lineWidth:r,groupBorderColor:i,colorErrorHover:a}=e;return{[`${t}-group`]:[{position:`relative`,display:`inline-flex`,[`> span, > ${t}`]:{"&:not(:last-child)":{[`&, & > ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},"&:not(:first-child)":{marginInlineStart:e.calc(r).mul(-1).equal(),[`&, & > ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}},[t]:{position:`relative`,zIndex:1,"&:hover, &:focus, &:active":{zIndex:2},"&[disabled]":{zIndex:0}},[`${t}-icon-only`]:{fontSize:n}},_h(`${t}-primary`,i),_h(`${t}-danger`,a)]}},vh=e=>Math.round(Number(e||0)),Yee=e=>{if(e instanceof zs)return e;if(e&&typeof e==`object`&&`h`in e&&`b`in e){let{b:t,...n}=e;return{...n,v:t}}return typeof e==`string`&&/hsb/.test(e)?e.replace(/hsb/,`hsv`):e},yh=class extends zs{constructor(e){super(Yee(e))}toHsbString(){let e=this.toHsb(),t=vh(e.s*100),n=vh(e.b*100),r=vh(e.h),i=e.a,a=`hsb(${r}, ${t}%, ${n}%)`,o=`hsba(${r}, ${t}%, ${n}%, ${i.toFixed(i===0?0:2)})`;return i===1?a:o}toHsb(){let{v:e,...t}=this.toHsv();return{...t,b:e,a:this.a}}};(e=>e instanceof yh?e:new yh(e))(`#1677ff`);var Xee=(e,t)=>e?.replace(/[^0-9a-f]/gi,``).slice(0,t?8:6)||``,Zee=(e,t)=>e?Xee(e,t):``,bh=function(){function e(t){if(Xo(this,e),this.cleared=!1,t instanceof e){this.metaColor=t.metaColor.clone(),this.colors=t.colors?.map(t=>({color:new e(t.color),percent:t.percent})),this.cleared=t.cleared;return}let n=Array.isArray(t);n&&t.length?(this.colors=t.map(({color:t,percent:n})=>({color:new e(t),percent:n})),this.metaColor=new yh(this.colors[0].color.metaColor)):this.metaColor=new yh(n?``:t),(!t||n&&!this.colors)&&(this.metaColor=this.metaColor.setA(0),this.cleared=!0)}return Qo(e,[{key:`toHsb`,value:function(){return this.metaColor.toHsb()}},{key:`toHsbString`,value:function(){return this.metaColor.toHsbString()}},{key:`toHex`,value:function(){return Zee(this.toHexString(),this.metaColor.a<1)}},{key:`toHexString`,value:function(){return this.metaColor.toHexString()}},{key:`toRgb`,value:function(){return this.metaColor.toRgb()}},{key:`toRgbString`,value:function(){return this.metaColor.toRgbString()}},{key:`isGradient`,value:function(){return!!this.colors&&!this.cleared}},{key:`getColors`,value:function(){return this.colors||[{color:this,percent:0}]}},{key:`toCssString`,value:function(){let{colors:e}=this;return e?`linear-gradient(90deg, ${e.map(e=>`${e.color.toRgbString()} ${e.percent}%`).join(`, `)})`:this.metaColor.toRgbString()}},{key:`equals`,value:function(e){return!e||this.isGradient()!==e.isGradient()?!1:this.isGradient()?this.colors.length===e.colors.length&&this.colors.every((t,n)=>{let r=e.colors[n];return t.percent===r.percent&&t.color.equals(r.color)}):this.toHexString()===e.toHexString()}}])}(),xh={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z`}}]},name:`right`,theme:`outlined`};function Sh(){return Sh=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,Sh({},e,{ref:t,icon:xh})));function wh(){return wh=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,forceRender:r,className:i,style:a,children:o,isActive:s,role:c,classNames:l,styles:u}=e,[d,f]=C.useState(s||r);return C.useEffect(()=>{(r||s)&&f(!0)},[r,s]),d?C.createElement(`div`,{ref:t,className:q(`${n}-panel`,{[`${n}-panel-active`]:s,[`${n}-panel-inactive`]:!s},i),style:a,role:c},C.createElement(`div`,{className:q(`${n}-body`,l?.body),style:u?.body},o)):null}),Eh=C.forwardRef((e,t)=>{let{showArrow:n=!0,headerClass:r,isActive:i,onItemClick:a,forceRender:o,className:s,classNames:c={},styles:l={},prefixCls:u,collapsible:d,accordion:f,panelKey:p,extra:m,header:h,expandIcon:g,openMotion:_,destroyOnHidden:v,children:y,...b}=e,x=d===`disabled`,S=m!=null&&typeof m!=`boolean`,w={onClick:()=>{a?.(p)},onKeyDown:e=>{(e.key===`Enter`||e.keyCode===em.ENTER||e.which===em.ENTER)&&a?.(p)},role:f?`tab`:`button`,"aria-expanded":i,"aria-disabled":x,tabIndex:x?-1:0},T=typeof g==`function`?g(e):C.createElement(`i`,{className:`arrow`}),E=T&&C.createElement(`div`,wh({className:q(`${u}-expand-icon`,c?.icon),style:l?.icon},[`header`,`icon`].includes(d)?w:{}),T),D=q(`${u}-item`,{[`${u}-item-active`]:i,[`${u}-item-disabled`]:x},s),O={className:q(r,`${u}-header`,{[`${u}-collapsible-${d}`]:!!d},c?.header),style:l?.header,...[`header`,`icon`].includes(d)?{}:w};return C.createElement(`div`,wh({},b,{ref:t,className:D}),C.createElement(`div`,O,n&&E,C.createElement(`span`,wh({className:q(`${u}-title`,c?.title),style:l?.title},d===`header`?w:{}),h),S&&C.createElement(`div`,{className:`${u}-extra`},m)),C.createElement(Lu,wh({visible:i,leavedClassName:`${u}-panel-hidden`},_,{forceRender:o,removeOnLeave:v}),({className:e,style:t},n)=>C.createElement(Th,{ref:n,prefixCls:u,className:e,classNames:c,style:t,styles:l,isActive:i,forceRender:o,role:f?`tabpanel`:void 0},y)))});function Dh(e,t,n){if(!e||!t)return e||t;let r=Array.from(new Set([...Object.keys(e),...Object.keys(t)])),i={};return r.forEach(r=>{i[r]=n(e[r],t[r])}),i}function Oh(e,t){return Dh(e,t,(e,t)=>q(e,t))}function kh(e,t){return Dh(e,t,(e,t)=>({...e,...t}))}var Ah=(e,t)=>{let{prefixCls:n,accordion:r,collapsible:i,destroyOnHidden:a,onItemClick:o,activeKey:s,openMotion:c,expandIcon:l,classNames:u,styles:d}=t;return e.map((e,t)=>{let{children:f,label:p,key:m,collapsible:h,onItemClick:g,destroyOnHidden:_,classNames:v,styles:y,...b}=e,x=String(m??t),S=h??i,w=_??a,T=e=>{S!==`disabled`&&(o(e),g?.(e))},E=!1;return E=r?s[0]===x:s.indexOf(x)>-1,C.createElement(Eh,wh({},b,{classNames:Oh(u,v),styles:kh(d,y),prefixCls:n,key:x,panelKey:x,isActive:E,accordion:r,openMotion:c,expandIcon:l,header:p,collapsible:S,onItemClick:T,destroyOnHidden:w}),f)})},jh=(e,t,n)=>{if(!e)return null;let{prefixCls:r,accordion:i,collapsible:a,destroyOnHidden:o,onItemClick:s,activeKey:c,openMotion:l,expandIcon:u,classNames:d,styles:f}=n,p=e.key||String(t),{header:m,headerClass:h,destroyOnHidden:g,collapsible:_,onItemClick:v}=e.props,y=!1;y=i?c[0]===p:c.indexOf(p)>-1;let b=_??a,x={key:p,panelKey:p,header:m,headerClass:h,classNames:d,styles:f,isActive:y,prefixCls:r,destroyOnHidden:g??o,openMotion:l,accordion:i,children:e.props.children,onItemClick:e=>{b!==`disabled`&&(s(e),v?.(e))},expandIcon:u,collapsible:b};return typeof e.type==`string`?e:(Object.keys(x).forEach(e=>{x[e]===void 0&&delete x[e]}),C.cloneElement(e,x))};function Mh(e,t,n){return Array.isArray(e)?Ah(e,n):wr(t).map((e,t)=>jh(e,t,n))}function Nh(e){let t=e;if(!Array.isArray(t)){let e=typeof t;t=e===`number`||e===`string`?[t]:[]}return t.map(e=>String(e))}var Ph=Object.assign(C.forwardRef((e,t)=>{let{prefixCls:n=`rc-collapse`,destroyOnHidden:r=!1,style:i,accordion:a,className:o,children:s,collapsible:c,openMotion:l,expandIcon:u,activeKey:d,defaultActiveKey:f,onChange:p,items:m,classNames:h,styles:g}=e,_=q(n,o),[v,y]=Wn(f,d),b=Nh(v),x=Rn(e=>{let t=Nh(e);y(t),p?.(t)}),S=e=>{x(a?b[0]===e?[]:[e]:b.includes(e)?b.filter(t=>t!==e):[...b,e])};xr(!s,"[rc-collapse] `children` will be removed in next major version. Please use `items` instead.");let w=Mh(m,s,{prefixCls:n,accordion:a,openMotion:l,expandIcon:u,collapsible:c,destroyOnHidden:r,onItemClick:S,activeKey:b,classNames:h,styles:g});return C.createElement(`div`,wh({ref:t,className:_,style:i,role:a?`tablist`:void 0},Hu(e,{aria:!0,data:!0})),w)}),{Panel:Eh}),Fh=Ph,{Panel:Qee}=Ph,Ih=C.forwardRef((e,t)=>{let{getPrefixCls:n}=C.useContext(si),{prefixCls:r,className:i,showArrow:a=!0}=e,o=n(`collapse`,r),s=q({[`${o}-no-arrow`]:!a},i);return C.createElement(Fh.Panel,{ref:t,...e,prefixCls:o,className:s})}),Lh=e=>{let{componentCls:t,contentBg:n,padding:r,headerBg:i,headerPadding:a,collapseHeaderPaddingSM:o,collapseHeaderPaddingLG:s,collapsePanelBorderRadius:c,lineWidth:l,lineType:u,colorBorder:d,colorText:f,colorTextHeading:p,colorTextDisabled:m,fontSizeLG:h,lineHeight:g,lineHeightLG:_,marginSM:v,paddingSM:y,paddingLG:b,paddingXS:x,motionDurationSlow:S,fontSizeIcon:C,contentPadding:w,fontHeight:T,fontHeightLG:E}=e,D=`${J(l)} ${u} ${d}`;return{[t]:{...Yc(e),backgroundColor:i,border:D,borderRadius:c,"&-rtl":{direction:`rtl`},[`& > ${t}-item`]:{borderBottom:D,"&:first-child":{[`
+ `]:{transform:`scale(0)`,opacity:0,animationTimingFunction:e.motionEaseOutCirc,"&-prepare":{transform:`none`}},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInOutCirc}}]},hh=(e,t)=>({[`> span, > ${e}`]:{"&:not(:last-child)":{[`&, & > ${e}`]:{"&:not(:disabled)":{borderInlineEndColor:t}}},"&:not(:first-child)":{[`&, & > ${e}`]:{"&:not(:disabled)":{borderInlineStartColor:t}}}}}),Xee=e=>{let{componentCls:t,fontSize:n,lineWidth:r,groupBorderColor:i,colorErrorHover:a}=e;return{[`${t}-group`]:[{position:`relative`,display:`inline-flex`,[`> span, > ${t}`]:{"&:not(:last-child)":{[`&, & > ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},"&:not(:first-child)":{marginInlineStart:e.calc(r).mul(-1).equal(),[`&, & > ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}},[t]:{position:`relative`,zIndex:1,"&:hover, &:focus, &:active":{zIndex:2},"&[disabled]":{zIndex:0}},[`${t}-icon-only`]:{fontSize:n}},hh(`${t}-primary`,i),hh(`${t}-danger`,a)]}},gh=e=>Math.round(Number(e||0)),Zee=e=>{if(e instanceof zs)return e;if(e&&typeof e==`object`&&`h`in e&&`b`in e){let{b:t,...n}=e;return{...n,v:t}}return typeof e==`string`&&/hsb/.test(e)?e.replace(/hsb/,`hsv`):e},_h=class extends zs{constructor(e){super(Zee(e))}toHsbString(){let e=this.toHsb(),t=gh(e.s*100),n=gh(e.b*100),r=gh(e.h),i=e.a,a=`hsb(${r}, ${t}%, ${n}%)`,o=`hsba(${r}, ${t}%, ${n}%, ${i.toFixed(i===0?0:2)})`;return i===1?a:o}toHsb(){let{v:e,...t}=this.toHsv();return{...t,b:e,a:this.a}}};(e=>e instanceof _h?e:new _h(e))(`#1677ff`);var Qee=(e,t)=>e?.replace(/[^0-9a-f]/gi,``).slice(0,t?8:6)||``,$ee=(e,t)=>e?Qee(e,t):``,vh=function(){function e(t){if(Xo(this,e),this.cleared=!1,t instanceof e){this.metaColor=t.metaColor.clone(),this.colors=t.colors?.map(t=>({color:new e(t.color),percent:t.percent})),this.cleared=t.cleared;return}let n=Array.isArray(t);n&&t.length?(this.colors=t.map(({color:t,percent:n})=>({color:new e(t),percent:n})),this.metaColor=new _h(this.colors[0].color.metaColor)):this.metaColor=new _h(n?``:t),(!t||n&&!this.colors)&&(this.metaColor=this.metaColor.setA(0),this.cleared=!0)}return Qo(e,[{key:`toHsb`,value:function(){return this.metaColor.toHsb()}},{key:`toHsbString`,value:function(){return this.metaColor.toHsbString()}},{key:`toHex`,value:function(){return $ee(this.toHexString(),this.metaColor.a<1)}},{key:`toHexString`,value:function(){return this.metaColor.toHexString()}},{key:`toRgb`,value:function(){return this.metaColor.toRgb()}},{key:`toRgbString`,value:function(){return this.metaColor.toRgbString()}},{key:`isGradient`,value:function(){return!!this.colors&&!this.cleared}},{key:`getColors`,value:function(){return this.colors||[{color:this,percent:0}]}},{key:`toCssString`,value:function(){let{colors:e}=this;return e?`linear-gradient(90deg, ${e.map(e=>`${e.color.toRgbString()} ${e.percent}%`).join(`, `)})`:this.metaColor.toRgbString()}},{key:`equals`,value:function(e){return!e||this.isGradient()!==e.isGradient()?!1:this.isGradient()?this.colors.length===e.colors.length&&this.colors.every((t,n)=>{let r=e.colors[n];return t.percent===r.percent&&t.color.equals(r.color)}):this.toHexString()===e.toHexString()}}])}(),ete={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z`}}]},name:`right`,theme:`outlined`};function yh(){return yh=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,yh({},e,{ref:t,icon:ete})));function xh(){return xh=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,forceRender:r,className:i,style:a,children:o,isActive:s,role:c,classNames:l,styles:u}=e,[d,f]=C.useState(s||r);return C.useEffect(()=>{(r||s)&&f(!0)},[r,s]),d?C.createElement(`div`,{ref:t,className:q(`${n}-panel`,{[`${n}-panel-active`]:s,[`${n}-panel-inactive`]:!s},i),style:a,role:c},C.createElement(`div`,{className:q(`${n}-body`,l?.body),style:u?.body},o)):null}),Sh=C.forwardRef((e,t)=>{let{showArrow:n=!0,headerClass:r,isActive:i,onItemClick:a,forceRender:o,className:s,classNames:c={},styles:l={},prefixCls:u,collapsible:d,accordion:f,panelKey:p,extra:m,header:h,expandIcon:g,openMotion:_,destroyOnHidden:v,children:y,...b}=e,x=d===`disabled`,S=m!=null&&typeof m!=`boolean`,w={onClick:()=>{a?.(p)},onKeyDown:e=>{(e.key===`Enter`||e.keyCode===Qp.ENTER||e.which===Qp.ENTER)&&a?.(p)},role:f?`tab`:`button`,"aria-expanded":i,"aria-disabled":x,tabIndex:x?-1:0},T=typeof g==`function`?g(e):C.createElement(`i`,{className:`arrow`}),E=T&&C.createElement(`div`,xh({className:q(`${u}-expand-icon`,c?.icon),style:l?.icon},[`header`,`icon`].includes(d)?w:{}),T),D=q(`${u}-item`,{[`${u}-item-active`]:i,[`${u}-item-disabled`]:x},s),O={className:q(r,`${u}-header`,{[`${u}-collapsible-${d}`]:!!d},c?.header),style:l?.header,...[`header`,`icon`].includes(d)?{}:w};return C.createElement(`div`,xh({},b,{ref:t,className:D}),C.createElement(`div`,O,n&&E,C.createElement(`span`,xh({className:q(`${u}-title`,c?.title),style:l?.title},d===`header`?w:{}),h),S&&C.createElement(`div`,{className:`${u}-extra`},m)),C.createElement(Lu,xh({visible:i,leavedClassName:`${u}-panel-hidden`},_,{forceRender:o,removeOnLeave:v}),({className:e,style:t},n)=>C.createElement(tte,{ref:n,prefixCls:u,className:e,classNames:c,style:t,styles:l,isActive:i,forceRender:o,role:f?`tabpanel`:void 0},y)))});function Ch(e,t,n){if(!e||!t)return e||t;let r=Array.from(new Set([...Object.keys(e),...Object.keys(t)])),i={};return r.forEach(r=>{i[r]=n(e[r],t[r])}),i}function nte(e,t){return Ch(e,t,(e,t)=>q(e,t))}function rte(e,t){return Ch(e,t,(e,t)=>({...e,...t}))}var ite=(e,t)=>{let{prefixCls:n,accordion:r,collapsible:i,destroyOnHidden:a,onItemClick:o,activeKey:s,openMotion:c,expandIcon:l,classNames:u,styles:d}=t;return e.map((e,t)=>{let{children:f,label:p,key:m,collapsible:h,onItemClick:g,destroyOnHidden:_,classNames:v,styles:y,...b}=e,x=String(m??t),S=h??i,w=_??a,T=e=>{S!==`disabled`&&(o(e),g?.(e))},E=!1;return E=r?s[0]===x:s.indexOf(x)>-1,C.createElement(Sh,xh({},b,{classNames:nte(u,v),styles:rte(d,y),prefixCls:n,key:x,panelKey:x,isActive:E,accordion:r,openMotion:c,expandIcon:l,header:p,collapsible:S,onItemClick:T,destroyOnHidden:w}),f)})},ate=(e,t,n)=>{if(!e)return null;let{prefixCls:r,accordion:i,collapsible:a,destroyOnHidden:o,onItemClick:s,activeKey:c,openMotion:l,expandIcon:u,classNames:d,styles:f}=n,p=e.key||String(t),{header:m,headerClass:h,destroyOnHidden:g,collapsible:_,onItemClick:v}=e.props,y=!1;y=i?c[0]===p:c.indexOf(p)>-1;let b=_??a,x={key:p,panelKey:p,header:m,headerClass:h,classNames:d,styles:f,isActive:y,prefixCls:r,destroyOnHidden:g??o,openMotion:l,accordion:i,children:e.props.children,onItemClick:e=>{b!==`disabled`&&(s(e),v?.(e))},expandIcon:u,collapsible:b};return typeof e.type==`string`?e:(Object.keys(x).forEach(e=>{x[e]===void 0&&delete x[e]}),C.cloneElement(e,x))};function ote(e,t,n){return Array.isArray(e)?ite(e,n):wr(t).map((e,t)=>ate(e,t,n))}function wh(e){let t=e;if(!Array.isArray(t)){let e=typeof t;t=e===`number`||e===`string`?[t]:[]}return t.map(e=>String(e))}var Th=Object.assign(C.forwardRef((e,t)=>{let{prefixCls:n=`rc-collapse`,destroyOnHidden:r=!1,style:i,accordion:a,className:o,children:s,collapsible:c,openMotion:l,expandIcon:u,activeKey:d,defaultActiveKey:f,onChange:p,items:m,classNames:h,styles:g}=e,_=q(n,o),[v,y]=Wn(f,d),b=wh(v),x=Rn(e=>{let t=wh(e);y(t),p?.(t)}),S=e=>{x(a?b[0]===e?[]:[e]:b.includes(e)?b.filter(t=>t!==e):[...b,e])};xr(!s,"[rc-collapse] `children` will be removed in next major version. Please use `items` instead.");let w=ote(m,s,{prefixCls:n,accordion:a,openMotion:l,expandIcon:u,collapsible:c,destroyOnHidden:r,onItemClick:S,activeKey:b,classNames:h,styles:g});return C.createElement(`div`,xh({ref:t,className:_,style:i,role:a?`tablist`:void 0},Hu(e,{aria:!0,data:!0})),w)}),{Panel:Sh}),Eh=Th,{Panel:ste}=Th,Dh=C.forwardRef((e,t)=>{let{getPrefixCls:n}=C.useContext(si),{prefixCls:r,className:i,showArrow:a=!0}=e,o=n(`collapse`,r),s=q({[`${o}-no-arrow`]:!a},i);return C.createElement(Eh.Panel,{ref:t,...e,prefixCls:o,className:s})}),Oh=e=>{let{componentCls:t,contentBg:n,padding:r,headerBg:i,headerPadding:a,collapseHeaderPaddingSM:o,collapseHeaderPaddingLG:s,collapsePanelBorderRadius:c,lineWidth:l,lineType:u,colorBorder:d,colorText:f,colorTextHeading:p,colorTextDisabled:m,fontSizeLG:h,lineHeight:g,lineHeightLG:_,marginSM:v,paddingSM:y,paddingLG:b,paddingXS:x,motionDurationSlow:S,fontSizeIcon:C,contentPadding:w,fontHeight:T,fontHeightLG:E}=e,D=`${J(l)} ${u} ${d}`;return{[t]:{...Yc(e),backgroundColor:i,border:D,borderRadius:c,"&-rtl":{direction:`rtl`},[`& > ${t}-item`]:{borderBottom:D,"&:first-child":{[`
&,
& > ${t}-header`]:{borderRadius:`${J(c)} ${J(c)} 0 0`}},"&:last-child":{[`
&,
- & > ${t}-header`]:{borderRadius:`0 0 ${J(c)} ${J(c)}`}},[`> ${t}-header`]:{position:`relative`,display:`flex`,flexWrap:`nowrap`,alignItems:`flex-start`,padding:a,color:p,lineHeight:g,cursor:`pointer`,transition:`all ${S}, visibility 0s`,...$c(e),[`> ${t}-title`]:{flex:`auto`},[`${t}-expand-icon`]:{height:T,display:`flex`,alignItems:`center`,marginInlineEnd:v},[`${t}-arrow`]:{...Xc(),fontSize:C,transition:`transform ${S}`,svg:{transition:`transform ${S}`}},[`${t}-title`]:{marginInlineEnd:`auto`}},[`${t}-collapsible-header`]:{cursor:`default`,[`${t}-title`]:{flex:`none`,cursor:`pointer`},[`${t}-expand-icon`]:{cursor:`pointer`}},[`${t}-collapsible-icon`]:{cursor:`unset`,[`${t}-expand-icon`]:{cursor:`pointer`}}},[`${t}-panel`]:{color:f,backgroundColor:n,borderTop:D,[`& > ${t}-body`]:{padding:w},"&-hidden":{display:`none`}},"&-small":{[`> ${t}-item`]:{[`> ${t}-header`]:{padding:o,paddingInlineStart:x,[`> ${t}-expand-icon`]:{marginInlineStart:e.calc(y).sub(x).equal()}},[`> ${t}-panel > ${t}-body`]:{padding:y}}},"&-large":{[`> ${t}-item`]:{fontSize:h,lineHeight:_,[`> ${t}-header`]:{padding:s,paddingInlineStart:r,[`> ${t}-expand-icon`]:{height:E,marginInlineStart:e.calc(b).sub(r).equal()}},[`> ${t}-panel > ${t}-body`]:{padding:b}}},[`${t}-item:last-child`]:{borderBottom:0,[`> ${t}-panel`]:{borderRadius:`0 0 ${J(c)} ${J(c)}`}},[`& ${t}-item-disabled > ${t}-header`]:{"&, & > .arrow":{color:m,cursor:`not-allowed`}},[`&${t}-icon-placement-end`]:{[`& > ${t}-item`]:{[`> ${t}-header`]:{[`${t}-expand-icon`]:{order:1,marginInlineEnd:0,marginInlineStart:v}}}}}}},Rh=e=>{let{componentCls:t}=e,n=`> ${t}-item > ${t}-header ${t}-arrow`;return{[`${t}-rtl`]:{[n]:{transform:`rotate(180deg)`}}}},zh=e=>{let{componentCls:t,headerBg:n,borderlessContentPadding:r,borderlessContentBg:i,colorBorder:a}=e;return{[`${t}-borderless`]:{backgroundColor:n,border:0,[`> ${t}-item`]:{borderBottom:`1px solid ${a}`},[`
+ & > ${t}-header`]:{borderRadius:`0 0 ${J(c)} ${J(c)}`}},[`> ${t}-header`]:{position:`relative`,display:`flex`,flexWrap:`nowrap`,alignItems:`flex-start`,padding:a,color:p,lineHeight:g,cursor:`pointer`,transition:`all ${S}, visibility 0s`,...$c(e),[`> ${t}-title`]:{flex:`auto`},[`${t}-expand-icon`]:{height:T,display:`flex`,alignItems:`center`,marginInlineEnd:v},[`${t}-arrow`]:{...Xc(),fontSize:C,transition:`transform ${S}`,svg:{transition:`transform ${S}`}},[`${t}-title`]:{marginInlineEnd:`auto`}},[`${t}-collapsible-header`]:{cursor:`default`,[`${t}-title`]:{flex:`none`,cursor:`pointer`},[`${t}-expand-icon`]:{cursor:`pointer`}},[`${t}-collapsible-icon`]:{cursor:`unset`,[`${t}-expand-icon`]:{cursor:`pointer`}}},[`${t}-panel`]:{color:f,backgroundColor:n,borderTop:D,[`& > ${t}-body`]:{padding:w},"&-hidden":{display:`none`}},"&-small":{[`> ${t}-item`]:{[`> ${t}-header`]:{padding:o,paddingInlineStart:x,[`> ${t}-expand-icon`]:{marginInlineStart:e.calc(y).sub(x).equal()}},[`> ${t}-panel > ${t}-body`]:{padding:y}}},"&-large":{[`> ${t}-item`]:{fontSize:h,lineHeight:_,[`> ${t}-header`]:{padding:s,paddingInlineStart:r,[`> ${t}-expand-icon`]:{height:E,marginInlineStart:e.calc(b).sub(r).equal()}},[`> ${t}-panel > ${t}-body`]:{padding:b}}},[`${t}-item:last-child`]:{borderBottom:0,[`> ${t}-panel`]:{borderRadius:`0 0 ${J(c)} ${J(c)}`}},[`& ${t}-item-disabled > ${t}-header`]:{"&, & > .arrow":{color:m,cursor:`not-allowed`}},[`&${t}-icon-placement-end`]:{[`& > ${t}-item`]:{[`> ${t}-header`]:{[`${t}-expand-icon`]:{order:1,marginInlineEnd:0,marginInlineStart:v}}}}}}},kh=e=>{let{componentCls:t}=e,n=`> ${t}-item > ${t}-header ${t}-arrow`;return{[`${t}-rtl`]:{[n]:{transform:`rotate(180deg)`}}}},Ah=e=>{let{componentCls:t,headerBg:n,borderlessContentPadding:r,borderlessContentBg:i,colorBorder:a}=e;return{[`${t}-borderless`]:{backgroundColor:n,border:0,[`> ${t}-item`]:{borderBottom:`1px solid ${a}`},[`
> ${t}-item:last-child,
> ${t}-item:last-child ${t}-header
- `]:{borderRadius:0},[`> ${t}-item:last-child`]:{borderBottom:0},[`> ${t}-item > ${t}-panel`]:{backgroundColor:i,borderTop:0},[`> ${t}-item > ${t}-panel > ${t}-body`]:{padding:r}}}},Bh=e=>{let{componentCls:t,paddingSM:n}=e;return{[`${t}-ghost`]:{backgroundColor:`transparent`,border:0,[`> ${t}-item`]:{borderBottom:0,[`> ${t}-panel`]:{backgroundColor:`transparent`,border:0,[`> ${t}-body`]:{paddingBlock:n}}}}}},Vh=il(`Collapse`,e=>{let t=_s(e,{collapseHeaderPaddingSM:`${J(e.paddingXS)} ${J(e.paddingSM)}`,collapseHeaderPaddingLG:`${J(e.padding)} ${J(e.paddingLG)}`,collapsePanelBorderRadius:e.borderRadiusLG});return[Lh(t),zh(t),Bh(t),Rh(t),nh(t)]},e=>({headerPadding:`${e.paddingSM}px ${e.padding}px`,headerBg:e.colorFillAlter,contentPadding:`${e.padding}px 16px`,contentBg:e.colorBgContainer,borderlessContentPadding:`${e.paddingXXS}px 16px ${e.padding}px`,borderlessContentBg:`transparent`})),Hh=Object.assign(C.forwardRef((e,t)=>{let{getPrefixCls:n,direction:r,expandIcon:i,className:a,style:o,classNames:s,styles:c}=ui(`collapse`),{prefixCls:l,className:u,rootClassName:d,style:f,bordered:p=!0,ghost:m,size:h,expandIconPlacement:g,expandIconPosition:_,children:v,destroyInactivePanel:y,destroyOnHidden:b,expandIcon:x,classNames:S,styles:w}=e,T=Rm(e=>h??e??`middle`),E=n(`collapse`,l),D=n(),[O,k]=Vh(E),A=g??_??`start`,j={...e,size:T,bordered:p,expandIconPlacement:A},[M,N]=Id([s,S],[c,w],{props:j}),P=x??i,F=C.useCallback((e={})=>Fp(typeof P==`function`?P(e):C.createElement(Ch,{rotate:e.isActive?r===`rtl`?-90:90:void 0,"aria-label":e.isActive?`expanded`:`collapsed`}),e=>({className:q(e.className,`${E}-arrow`)})),[P,E,r]),I=q(`${E}-icon-placement-${A}`,{[`${E}-borderless`]:!p,[`${E}-rtl`]:r===`rtl`,[`${E}-ghost`]:!!m,[`${E}-large`]:T===`large`,[`${E}-small`]:T===`small`},a,u,d,O,k,M.root),L=C.useMemo(()=>({...Mm(D),motionAppear:!1,leavedClassName:`${E}-panel-hidden`}),[D,E]),R=C.useMemo(()=>v?wr(v).map(e=>e):null,[v]);return C.createElement(Fh,{ref:t,openMotion:L,...Cr(e,[`rootClassName`]),expandIcon:F,prefixCls:E,className:I,style:{...N.root,...o,...f},classNames:M,styles:N,destroyOnHidden:b??y},R)}),{Panel:Ih}),Uh=e=>e instanceof bh?e:new bh(e),Wh=(e,t)=>{let{r:n,g:r,b:i,a}=e.toRgb(),o=new yh(e.toRgbString()).onBackground(t).toHsv();return a<=.5?o.v>.5:n*.299+r*.587+i*.114>192},Gh=e=>{let{paddingInline:t,onlyIconSize:n,borderColorDisabled:r}=e;return _s(e,{buttonPaddingHorizontal:t,buttonPaddingVertical:0,buttonIconOnlyFontSize:n,colorBorderDisabled:r})},Kh=e=>{let t=e.contentFontSize??e.fontSize,n=e.contentFontSizeSM??e.fontSize,r=e.contentFontSizeLG??e.fontSizeLG,i=e.contentLineHeight??ks(t),a=e.contentLineHeightSM??ks(n),o=e.contentLineHeightLG??ks(r),s=Wh(new bh(e.colorBgSolid),`#fff`)?`#000`:`#fff`,c=Os.reduce((t,n)=>({...t,[`${n}ShadowColor`]:`0 ${J(e.controlOutlineWidth)} 0 ${Vc(e[`${n}1`],e.colorBgContainer)}`}),{}),l=e.colorBgContainerDisabled,u=e.colorBgContainerDisabled;return{...c,fontWeight:400,iconGap:e.marginXS,defaultShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlTmpOutline}`,primaryShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlOutline}`,dangerShadow:`0 ${e.controlOutlineWidth}px 0 ${e.colorErrorOutline}`,primaryColor:e.colorTextLightSolid,dangerColor:e.colorTextLightSolid,borderColorDisabled:e.colorBorderDisabled,defaultGhostColor:e.colorBgContainer,ghostBg:`transparent`,defaultGhostBorderColor:e.colorBgContainer,paddingInline:e.paddingContentHorizontal-e.lineWidth,paddingInlineLG:e.paddingContentHorizontal-e.lineWidth,paddingInlineSM:8-e.lineWidth,onlyIconSize:`inherit`,onlyIconSizeSM:`inherit`,onlyIconSizeLG:`inherit`,groupBorderColor:e.colorPrimaryHover,linkHoverBg:`transparent`,textTextColor:e.colorText,textTextHoverColor:e.colorText,textTextActiveColor:e.colorText,textHoverBg:e.colorFillTertiary,defaultColor:e.colorText,defaultBg:e.colorBgContainer,defaultBorderColor:e.colorBorder,defaultBorderColorDisabled:e.colorBorder,defaultHoverBg:e.colorBgContainer,defaultHoverColor:e.colorPrimaryHover,defaultHoverBorderColor:e.colorPrimaryHover,defaultActiveBg:e.colorBgContainer,defaultActiveColor:e.colorPrimaryActive,defaultActiveBorderColor:e.colorPrimaryActive,solidTextColor:s,contentFontSize:t,contentFontSizeSM:n,contentFontSizeLG:r,contentLineHeight:i,contentLineHeightSM:a,contentLineHeightLG:o,paddingBlock:Math.max((e.controlHeight-t*i)/2-e.lineWidth,0),paddingBlockSM:Math.max((e.controlHeightSM-n*a)/2-e.lineWidth,0),paddingBlockLG:Math.max((e.controlHeightLG-r*o)/2-e.lineWidth,0),defaultBgDisabled:l,dashedBgDisabled:u}},qh=e=>{let{componentCls:t,antCls:n,lineWidth:r}=e,[i,a]=sl(n,`btn`);return{[t]:[{[i(`border-width`)]:r,[i(`border-color`)]:`#000`,[i(`border-color-hover`)]:a(`border-color`),[i(`border-color-active`)]:a(`border-color`),[i(`border-color-disabled`)]:a(`border-color`),[i(`border-style`)]:`solid`,[i(`text-color`)]:`#000`,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`),[i(`text-color-disabled`)]:a(`text-color`),[i(`bg-color`)]:`#ddd`,[i(`bg-color-hover`)]:a(`bg-color`),[i(`bg-color-active`)]:a(`bg-color`),[i(`bg-color-disabled`)]:e.colorBgContainerDisabled,[i(`bg-color-container`)]:e.colorBgContainer,[i(`shadow`)]:`none`},{border:[a(`border-width`),a(`border-style`),a(`border-color`)].join(` `),color:a(`text-color`),backgroundColor:a(`bg-color`),[`&:not(:disabled):not(${t}-disabled)`]:{"&:hover":{border:[a(`border-width`),a(`border-style`),a(`border-color-hover`)].join(` `),color:a(`text-color-hover`),backgroundColor:a(`bg-color-hover`)},"&:active":{border:[a(`border-width`),a(`border-style`),a(`border-color-active`)].join(` `),color:a(`text-color-active`),backgroundColor:a(`bg-color-active`)}}},{[`&${t}-variant-solid`]:{[i(`solid-bg-color`)]:a(`color-base`),[i(`solid-bg-color-hover`)]:a(`color-hover`),[i(`solid-bg-color-active`)]:a(`color-active`),[i(`border-color`)]:`transparent`,[i(`text-color`)]:e.colorTextLightSolid,[i(`bg-color`)]:a(`solid-bg-color`),[i(`bg-color-hover`)]:a(`solid-bg-color-hover`),[i(`bg-color-active`)]:a(`solid-bg-color-active`),boxShadow:a(`shadow`)},[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`border-color`)]:a(`color-base`),[i(`border-color-hover`)]:a(`color-hover`),[i(`border-color-active`)]:a(`color-active`),[i(`bg-color`)]:a(`bg-color-container`),[i(`text-color`)]:a(`color-base`),[i(`text-color-hover`)]:a(`color-hover`),[i(`text-color-active`)]:a(`color-active`),boxShadow:a(`shadow`)},[`&${t}-variant-dashed`]:{[i(`border-style`)]:`dashed`,[i(`bg-color-disabled`)]:e.dashedBgDisabled},[`&${t}-variant-filled`]:{[i(`border-color`)]:`transparent`,[i(`text-color`)]:a(`color-base`),[i(`bg-color`)]:a(`color-light`),[i(`bg-color-hover`)]:a(`color-light-hover`),[i(`bg-color-active`)]:a(`color-light-active`)},[`&${t}-variant-text, &${t}-variant-link`]:{[i(`border-color`)]:`transparent`,[i(`text-color`)]:a(`color-base`),[i(`text-color-hover`)]:a(`color-hover`),[i(`text-color-active`)]:a(`color-active`),[i(`bg-color`)]:`transparent`,[i(`bg-color-hover`)]:`transparent`,[i(`bg-color-active`)]:`transparent`,[`&:disabled, &${e.componentCls}-disabled`]:{background:`transparent`,borderColor:`transparent`}},[`&${t}-variant-text`]:{[i(`bg-color-hover`)]:a(`color-light`),[i(`bg-color-active`)]:a(`color-light-active`)}},{[`&${t}-variant-link`]:{[i(`color-base`)]:e.colorLink,[i(`color-hover`)]:e.colorLinkHover,[i(`color-active`)]:e.colorLinkActive,[i(`bg-color-hover`)]:e.linkHoverBg},[`&${t}-color-primary`]:{[i(`color-base`)]:e.colorPrimary,[i(`color-hover`)]:e.colorPrimaryHover,[i(`color-active`)]:e.colorPrimaryActive,[i(`color-light`)]:e.colorPrimaryBg,[i(`color-light-hover`)]:e.colorPrimaryBgHover,[i(`color-light-active`)]:e.colorPrimaryBorder,[i(`shadow`)]:e.primaryShadow,[`&${t}-variant-solid`]:{[i(`text-color`)]:e.primaryColor,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)}},[`&${t}-color-dangerous`]:{[i(`color-base`)]:e.colorError,[i(`color-hover`)]:e.colorErrorHover,[i(`color-active`)]:e.colorErrorActive,[i(`color-light`)]:e.colorErrorBg,[i(`color-light-hover`)]:e.colorErrorBgFilledHover,[i(`color-light-active`)]:e.colorErrorBgActive,[i(`shadow`)]:e.dangerShadow,[`&${t}-variant-solid`]:{[i(`text-color`)]:e.dangerColor,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)}},[`&${t}-color-default`]:{[i(`solid-bg-color`)]:e.colorBgSolid,[i(`solid-bg-color-hover`)]:e.colorBgSolidHover,[i(`solid-bg-color-active`)]:e.colorBgSolidActive,[i(`color-base`)]:e.defaultBorderColor,[i(`color-hover`)]:e.defaultHoverBorderColor,[i(`color-active`)]:e.defaultActiveBorderColor,[i(`color-light`)]:e.colorFillTertiary,[i(`color-light-hover`)]:e.colorFillSecondary,[i(`color-light-active`)]:e.colorFill,[i(`text-color`)]:e.defaultColor,[i(`text-color-hover`)]:e.defaultHoverColor,[i(`text-color-active`)]:e.defaultActiveColor,[i(`shadow`)]:e.defaultShadow,[`&${t}-variant-outlined`]:{[i(`bg-color-disabled`)]:e.defaultBgDisabled},[`&${t}-variant-solid`]:{[i(`text-color`)]:e.solidTextColor,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)},[`&${t}-variant-filled, &${t}-variant-text`]:{[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)},[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`text-color`)]:e.defaultColor,[i(`text-color-hover`)]:e.defaultHoverColor,[i(`text-color-active`)]:e.defaultActiveColor,[i(`bg-color-container`)]:e.defaultBg,[i(`bg-color-hover`)]:e.defaultHoverBg,[i(`bg-color-active`)]:e.defaultActiveBg},[`&${t}-variant-text`]:{[i(`text-color`)]:e.textTextColor,[i(`text-color-hover`)]:e.textTextHoverColor,[i(`text-color-active`)]:e.textTextActiveColor,[i(`bg-color-hover`)]:e.textHoverBg},[`&${t}-background-ghost`]:{[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`text-color`)]:e.defaultGhostColor,[i(`border-color`)]:e.defaultGhostBorderColor}}}},Os.map(n=>{let r=e[`${n}6`],a=e[`${n}1`],o=e[`${n}Hover`],s=e[`${n}2`],c=e[`${n}3`],l=e[`${n}Active`],u=e[`${n}ShadowColor`];return{[`&${t}-color-${n}`]:{[i(`color-base`)]:r,[i(`color-hover`)]:o,[i(`color-active`)]:l,[i(`color-light`)]:a,[i(`color-light-hover`)]:s,[i(`color-light-active`)]:c,[i(`shadow`)]:u}}}),{[`&:disabled, &${e.componentCls}-disabled`]:{cursor:`not-allowed`,borderColor:e.colorBorderDisabled,background:a(`bg-color-disabled`),color:e.colorTextDisabled,boxShadow:`none`}},{[`&${t}-background-ghost`]:{[i(`bg-color`)]:e.ghostBg,[i(`bg-color-hover`)]:e.ghostBg,[i(`bg-color-active`)]:e.ghostBg,[i(`shadow`)]:`none`,[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`bg-color-hover`)]:e.ghostBg,[i(`bg-color-active`)]:e.ghostBg}}}]}},Jh=e=>{let{componentCls:t,iconCls:n,fontWeight:r,opacityLoading:i,motionDurationSlow:a,motionEaseInOut:o,iconGap:s,calc:c}=e;return{[t]:{outline:`none`,position:`relative`,display:`inline-flex`,gap:s,alignItems:`center`,justifyContent:`center`,fontWeight:r,whiteSpace:`nowrap`,textAlign:`center`,backgroundImage:`none`,cursor:`pointer`,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,userSelect:`none`,touchAction:`manipulation`,...fh(),"&:disabled > *":{pointerEvents:`none`},[`${t}-icon > svg`]:Xc(),"> a":{color:`currentColor`},"&:not(:disabled)":$c(e),[`&${t}-two-chinese-chars::first-letter`]:{letterSpacing:`0.34em`},[`&${t}-two-chinese-chars > *:not(${n})`]:{marginInlineEnd:`-0.34em`,letterSpacing:`0.34em`},[`&${t}-icon-only`]:{paddingInline:0,[`&${t}-compact-item`]:{flex:`none`}},[`&${t}-loading`]:{opacity:i,cursor:`default`},[`${t}-loading-icon`]:{transition:[`width`,`opacity`,`margin`].map(e=>`${e} ${a} ${o}`).join(`,`)},[`&:not(${t}-icon-end)`]:{[`${t}-loading-icon-motion`]:{"&-appear-start, &-enter-start":{marginInlineEnd:c(s).mul(-1).equal()},"&-appear-active, &-enter-active":{marginInlineEnd:0},"&-leave-start":{marginInlineEnd:0},"&-leave-active":{marginInlineEnd:c(s).mul(-1).equal()}}},"&-icon-end":{flexDirection:`row-reverse`,[`${t}-loading-icon-motion`]:{"&-appear-start, &-enter-start":{marginInlineStart:c(s).mul(-1).equal()},"&-appear-active, &-enter-active":{marginInlineStart:0},"&-leave-start":{marginInlineStart:0},"&-leave-active":{marginInlineStart:c(s).mul(-1).equal()}}}}}},Yh=e=>({minWidth:e.controlHeight,paddingInline:0,borderRadius:`50%`}),Xh=(e,t=``)=>{let{componentCls:n,controlHeight:r,fontSize:i,borderRadius:a,buttonPaddingHorizontal:o,iconCls:s,buttonPaddingVertical:c,buttonIconOnlyFontSize:l}=e;return[{[t]:{fontSize:i,height:r,padding:`${J(c)} ${J(o)}`,borderRadius:a,[`&${n}-icon-only`]:{width:r,[s]:{fontSize:l}}}},{[`${n}${n}-circle${t}`]:Yh(e)},{[`${n}${n}-round${t}`]:{borderRadius:e.controlHeight,[`&:not(${n}-icon-only)`]:{paddingInline:e.buttonPaddingHorizontal}}}]},Zh=e=>Xh(_s(e,{fontSize:e.contentFontSize}),e.componentCls),Qh=e=>Xh(_s(e,{controlHeight:e.controlHeightSM,fontSize:e.contentFontSizeSM,padding:e.paddingXS,buttonPaddingHorizontal:e.paddingInlineSM,buttonPaddingVertical:0,borderRadius:e.borderRadiusSM,buttonIconOnlyFontSize:e.onlyIconSizeSM}),`${e.componentCls}-sm`),$h=e=>Xh(_s(e,{controlHeight:e.controlHeightLG,fontSize:e.contentFontSizeLG,buttonPaddingHorizontal:e.paddingInlineLG,buttonPaddingVertical:0,borderRadius:e.borderRadiusLG,buttonIconOnlyFontSize:e.onlyIconSizeLG}),`${e.componentCls}-lg`),$ee=e=>{let{componentCls:t}=e;return{[t]:{[`&${t}-block`]:{width:`100%`}}}},ete=il(`Button`,e=>{let t=Gh(e);return[Jh(t),Zh(t),Qh(t),$h(t),$ee(t),qh(t),Jee(t)]},Kh,{unitless:{fontWeight:!0,contentLineHeight:!0,contentLineHeightSM:!0,contentLineHeightLG:!0}});function tte(e,t,n,r){let{focusElCls:i,focus:a,borderElCls:o}=n,s=o?`> *`:``,c=[`hover`,a?`focus`:null,`active`].filter(Boolean).map(e=>`&:${e} ${s}`).join(`,`);return{[`&-item:not(${t}-last-item)`]:{marginInlineEnd:e.calc(e.lineWidth).mul(-1).equal()},[`&-item:not(${r}-status-success)`]:{zIndex:2},"&-item":{[c]:{zIndex:3},...i?{[`&${i}`]:{zIndex:3}}:{},[`&[disabled] ${s}`]:{zIndex:0}}}}function nte(e,t,n){let{borderElCls:r}=n,i=r?`> ${r}`:``;return{[`&-item:not(${t}-first-item):not(${t}-last-item) ${i}`]:{borderRadius:0},[`&-item:not(${t}-last-item)${t}-first-item`]:{[`& ${i}, &${e}-sm ${i}, &${e}-lg ${i}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&-item:not(${t}-first-item)${t}-last-item`]:{[`& ${i}, &${e}-sm ${i}, &${e}-lg ${i}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}function eg(e,t={focus:!0}){let{componentCls:n}=e,{componentCls:r}=t,i=r||n,a=`${i}-compact`;return{[a]:{...tte(e,a,t,i),...nte(i,a,t)}}}function rte(e,t,n){return{[`&-item:not(${t}-last-item)`]:{marginBottom:e.calc(e.lineWidth).mul(-1).equal()},[`&-item:not(${n}-status-success)`]:{zIndex:2},"&-item":{"&:hover,&:focus,&:active":{zIndex:3},"&[disabled]":{zIndex:0}}}}function ite(e,t){return{[`&-item:not(${t}-first-item):not(${t}-last-item)`]:{borderRadius:0},[`&-item${t}-first-item:not(${t}-last-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderEndEndRadius:0,borderEndStartRadius:0}},[`&-item${t}-last-item:not(${t}-first-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderStartStartRadius:0,borderStartEndRadius:0}}}}function ate(e){let t=`${e.componentCls}-compact-vertical`;return{[t]:{...rte(e,t,e.componentCls),...ite(e.componentCls,t)}}}var ote=e=>{let{antCls:t,componentCls:n,lineWidth:r,calc:i,colorBgContainer:a}=e,o=`${n}-variant-solid:not([disabled])`,s=i(r).mul(-1).equal(),[c,l]=sl(t,`btn`),u=e=>({[`${n}-compact${e?`-vertical`:``}-item`]:{[c(`compact-connect-border-color`)]:l(`bg-color-hover`),[`&${o}`]:{transition:`none`,[`& + ${o}:before`]:[{position:`absolute`,backgroundColor:l(`compact-connect-border-color`),content:`""`},e?{top:s,insetInline:s,height:r}:{insetBlock:s,insetInlineStart:s,width:r}],"&:hover:before":{display:`none`}}}});return[u(),u(!0),{[`${o}${n}-color-default`]:{[c(`compact-connect-border-color`)]:`color-mix(in srgb, ${l(`bg-color-hover`)} 75%, ${a})`}}]},ste=ol([`Button`,`compact`],e=>{let t=Gh(e);return[eg(t),ate(t),ote(t)]},Kh);function cte(e){if(gd(e)){let t=e?.delay;return t=md(t)?t:0,{loading:t<=0,delay:t}}return{loading:!!e,delay:0}}var lte={default:[`default`,`outlined`],primary:[`primary`,`solid`],dashed:[`default`,`dashed`],link:[`link`,`link`],text:[`default`,`text`]},tg=C.forwardRef((e,t)=>{let{_skipSemantic:n,loading:r=!1,prefixCls:i,color:a,variant:o,type:s,danger:c=!1,shape:l,size:u,disabled:d,className:f,rootClassName:p,children:m,icon:h,iconPosition:g,iconPlacement:_,ghost:v=!1,block:y=!1,htmlType:b=`button`,classNames:x,styles:S,style:w,autoInsertSpace:T,autoFocus:E,...D}=e,O=wr(m),k=s||`default`,{getPrefixCls:A,direction:j,autoInsertSpace:M,className:N,style:P,classNames:F,styles:I,loadingIcon:L,shape:R,color:z,variant:B}=ui(`button`),V=l||R||`default`,[H,U]=(0,C.useMemo)(()=>{if(a&&o)return[a,o];if(s||c){let e=lte[k]||[];return c?[`danger`,e[1]]:e}return z&&B?[z,B]:[`default`,`outlined`]},[a,o,s,c,z,B,k]),[W,ee]=(0,C.useMemo)(()=>v&&U===`solid`?[H,`outlined`]:[H,U],[H,U,v]),te=W===`danger`,ne=te?`dangerous`:W,re=T??M??!0,ie=A(`btn`,i),[ae,G]=ete(ie),oe=(0,C.useContext)(Bp),K=d??oe,se=(0,C.useContext)(Gm),ce=(0,C.useMemo)(()=>cte(r),[r]),[le,ue]=(0,C.useState)(ce.loading),[de,fe]=(0,C.useState)(!1),pe=(0,C.useRef)(null),me=tr(t,pe),he=O.length===1&&!h&&!Xm(ee),ge=(0,C.useRef)(!0);C.useEffect(()=>(ge.current=!1,()=>{ge.current=!0}),[]),Vn(()=>{let e=null;ce.delay>0?e=setTimeout(()=>{e=null,ue(!0)},ce.delay):ue(ce.loading);function t(){e&&=(clearTimeout(e),null)}return t},[ce.delay,ce.loading]),(0,C.useEffect)(()=>{if(!pe.current||!re)return;let e=pe.current.textContent||``;he&&Jm(e)?de||fe(!0):de&&fe(!1)}),(0,C.useEffect)(()=>{E&&pe.current&&pe.current.focus()},[]);let _e=C.useCallback(t=>{if(le||K){t.preventDefault();return}e.onClick?.((`href`in e,t))},[e.onClick,le,K]),{compactSize:ve,compactItemClassnames:ye}=Vm(ie,j),be=Rm(e=>u??ve??se??e),xe=le?`loading`:h,Se=_??g??`start`,Ce=Cr(D,[`navigate`]),we={...e,type:k,color:W,variant:ee,danger:te,shape:V,size:be,disabled:K,loading:le,iconPlacement:Se},[Te,Ee]=Id([n?void 0:F,x],[n?void 0:I,S],{props:we}),De=q(ie,ae,G,{[`${ie}-${V}`]:V!==`default`&&V!==`square`&&V,[`${ie}-${k}`]:k,[`${ie}-dangerous`]:c,[`${ie}-color-${ne}`]:ne,[`${ie}-variant-${ee}`]:ee,[`${ie}-lg`]:be===`large`,[`${ie}-sm`]:be===`small`,[`${ie}-icon-only`]:!m&&m!==0&&!!xe,[`${ie}-background-ghost`]:v&&!Xm(ee),[`${ie}-loading`]:le,[`${ie}-two-chinese-chars`]:de&&re&&!le,[`${ie}-block`]:y,[`${ie}-rtl`]:j===`rtl`,[`${ie}-icon-end`]:Se===`end`},ye,f,p,N,Te.root),Oe={...Ee.root,...P,...w},ke={className:Te.icon,style:Ee.icon},Ae=e=>C.createElement(Qm,{prefixCls:ie,...ke},e),je=C.createElement(Cee,{existIcon:!!h,prefixCls:ie,loading:le,mount:ge.current,...ke}),Me=gd(r)&&r.icon||L,Ne;Ne=h&&!le?Ae(h):r&&Me?Ae(Me):je;let Pe=pd(m)?See(m,he&&re,Ee.content,Te.content):null;if(Ce.href!==void 0)return C.createElement(`a`,{...Ce,className:q(De,{[`${ie}-disabled`]:K}),href:K?void 0:Ce.href,style:Oe,onClick:_e,ref:me,tabIndex:K?-1:0,"aria-disabled":K},Ne,Pe);let Fe=C.createElement(`button`,{...D,type:b,className:De,style:Oe,onClick:_e,disabled:K,ref:me},Ne,Pe,ye&&C.createElement(ste,{prefixCls:ie}));return Xm(ee)||(Fe=C.createElement(Lm,{component:`Button`,disabled:le},Fe)),Fe});tg.Group=Km,tg.__ANT_BUTTON=!0;var ng=e=>{let{type:t,children:n,prefixCls:r,buttonProps:i,close:a,autoFocus:o,emitEvent:s,isSilent:c,quitOnNullishReturnValue:l,actionFn:u}=e,d=C.useRef(!1),f=C.useRef(null),[p,m]=Un(!1),h=(...e)=>{a?.(...e)};C.useEffect(()=>{let e=null;return o&&(e=setTimeout(()=>{f.current?.focus({preventScroll:!0})})),()=>{e&&clearTimeout(e)}},[o]);let g=e=>{vd(e)&&(m(!0),e.then((...e)=>{m(!1,!0),h.apply(void 0,e),d.current=!1},e=>{if(m(!1,!0),d.current=!1,!c?.())return Promise.reject(e)}))},_=e=>{if(d.current)return;if(d.current=!0,!u){h();return}let t;if(s){if(t=u(e),l&&!vd(t)){d.current=!1,h(e);return}}else if(u.length)t=u(a),d.current=!1;else if(t=u(),!vd(t)){h();return}g(t)};return C.createElement(tg,{...Ym(t),onClick:_,loading:p,prefixCls:r,...i,ref:f},n)},rg=C.createContext({}),{Provider:ig}=rg,ag=()=>{let{autoFocusButton:e,cancelButtonProps:t,cancelTextLocale:n,isSilent:r,mergedOkCancel:i,rootPrefixCls:a,close:o,onCancel:s,onConfirm:c,onClose:l}=(0,C.useContext)(rg);return i?C.createElement(ng,{isSilent:r,actionFn:s,close:(...e)=>{o?.(...e),c?.(!1),l?.()},autoFocus:e===`cancel`,buttonProps:t,prefixCls:`${a}-btn`},n):null},og=()=>{let{autoFocusButton:e,close:t,isSilent:n,okButtonProps:r,rootPrefixCls:i,okTextLocale:a,okType:o,onConfirm:s,onOk:c,onClose:l}=(0,C.useContext)(rg);return C.createElement(ng,{isSilent:n,type:o||`primary`,actionFn:c,close:(...e)=>{t?.(...e),s?.(!0),l?.()},autoFocus:e===`ok`,buttonProps:r,prefixCls:`${i}-btn`},a)},sg=C.createContext({});function cg(e,t,n){let r=t;return!r&&n&&(r=`${e}-${n}`),r}function lg(e,t){let n=e[`page${t?`Y`:`X`}Offset`],r=`scroll${t?`Top`:`Left`}`;if(typeof n!=`number`){let t=e.document;n=t.documentElement[r],typeof n!=`number`&&(n=t.body[r])}return n}function ute(e){let t=e.getBoundingClientRect(),n={left:t.left,top:t.top},r=e.ownerDocument,i=r.defaultView||r.parentWindow;return n.left+=lg(i),n.top+=lg(i,!0),n}function ug(e,t=!1){if(lp(e)){let n=e.nodeName.toLowerCase(),r=[`input`,`select`,`textarea`,`button`].includes(n)||e.isContentEditable||n===`a`&&!!e.getAttribute(`href`),i=e.getAttribute(`tabindex`),a=Number(i),o=null;return i&&!Number.isNaN(a)?o=a:r&&o===null&&(o=0),r&&e.disabled&&(o=null),o!==null&&(o>=0||t&&o<0)}return!1}function dg(e,t=!1){let n=[...e.querySelectorAll(`*`)].filter(e=>ug(e,t));return ug(e,t)&&n.unshift(e),n}function fg(e,t){if(!e)return;e.focus(t);let{cursor:n}=t||{};if(n&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){let t=e.value.length;switch(n){case`start`:e.setSelectionRange(0,0);break;case`end`:e.setSelectionRange(t,t);break;default:e.setSelectionRange(0,t)}}}var pg=null,mg=[],hg=new Map,gg=new Map;function _g(){return mg[mg.length-1]}function dte(e){let t=_g();if(e&&t){let n;for(let[e,r]of hg.entries())if(r===t){n=e;break}let r=gg.get(n);return!!r&&(r===e||r.contains(e))}return!1}function fte(e){let{activeElement:t}=document;return e===t||e.contains(t)}function vg(){let e=_g(),{activeElement:t}=document;if(!dte(t))if(e&&!fte(e)){let t=dg(e);(t.includes(pg)?pg:t[0])?.focus({preventScroll:!0})}else pg=t}function yg(e){if(e.key===`Tab`){let{activeElement:t}=document,n=dg(_g()),r=n[n.length-1];e.shiftKey&&t===n[0]?pg=r:!e.shiftKey&&t===r&&(pg=n[0])}}function pte(e,t){return e&&(hg.set(t,e),mg=mg.filter(t=>t!==e),mg.push(e),window.addEventListener(`focusin`,vg),window.addEventListener(`keydown`,yg,!0),vg()),()=>{pg=null,mg=mg.filter(t=>t!==e),hg.delete(t),gg.delete(t),mg.length===0&&(window.removeEventListener(`focusin`,vg),window.removeEventListener(`keydown`,yg,!0))}}function mte(e,t){let n=(0,C.useRef)(0),[r,i]=(0,C.useState)(0);(0,C.useEffect)(()=>{n.current=0},t),(0,C.useEffect)(()=>{let[t,r]=e(n.current);return r||(n.current+=1,i(e=>e+1)),t},[...t,r])}function bg(e,t){let n=Bf(),r=(0,C.useRef)(t);return r.current=t,mte(t=>{if(!e)return[void 0,!0];let i=r.current();return i?[pte(i,n),!0]:[void 0,t>=1]},[n,e]),[e=>{e&&gg.set(n,e)}]}var hte=C.memo(({children:e})=>e,(e,{shouldUpdate:t})=>!t);function xg(){return xg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,className:r,style:i,title:a,ariaId:o,footer:s,closable:c,closeIcon:l,onClose:u,children:d,bodyStyle:f,bodyProps:p,modalRender:m,onMouseDown:h,onMouseUp:g,holderRef:_,visible:v,forceRender:y,width:b,height:x,classNames:S,styles:w,isFixedPos:T,focusTrap:E}=e,{panel:D}=C.useContext(sg),O=(0,C.useRef)(null),k=tr(_,D,O),[A]=bg(v&&T&&E!==!1,()=>O.current);C.useImperativeHandle(t,()=>({focus:()=>{O.current?.focus({preventScroll:!0})}}));let j={};b!==void 0&&(j.width=b),x!==void 0&&(j.height=x);let M=s?C.createElement(`div`,{className:q(`${n}-footer`,S?.footer),style:{...w?.footer}},s):null,N=a?C.createElement(`div`,{className:q(`${n}-header`,S?.header),style:{...w?.header}},C.createElement(`div`,{className:q(`${n}-title`,S?.title),id:o,style:{...w?.title}},a)):null,P=(0,C.useMemo)(()=>typeof c==`object`&&c?c:c?{closeIcon:l??C.createElement(`span`,{className:`${n}-close-x`})}:{},[c,l,n]),F=Hu(P,!0),I=typeof c==`object`&&c.disabled,L=c?C.createElement(`button`,xg({type:`button`,onClick:u,"aria-label":`Close`},F,{className:`${n}-close`,disabled:I}),P.closeIcon):null,R=C.createElement(`div`,{className:q(`${n}-container`,S?.container),style:w?.container},L,N,C.createElement(`div`,xg({className:q(`${n}-body`,S?.body),style:{...f,...w?.body}},p),d),M);return C.createElement(`div`,{key:`dialog-element`,role:`dialog`,"aria-labelledby":a?o:null,"aria-modal":`true`,ref:k,style:{...i,...j},className:q(n,r),onMouseDown:h,onMouseUp:g,tabIndex:-1,onFocus:e=>{A(e.target)}},C.createElement(hte,{shouldUpdate:v||y},m?m(R):R))});function Cg(){return Cg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,title:r,style:i,className:a,visible:o,forceRender:s,destroyOnHidden:c,motionName:l,ariaId:u,onVisibleChanged:d,mousePosition:f}=e,p=(0,C.useRef)(null),m=(0,C.useRef)(null);C.useImperativeHandle(t,()=>({...m.current,inMotion:p.current.inMotion,enableMotion:p.current.enableMotion}));let[h,g]=C.useState(),_={};h&&(_.transformOrigin=h);function v(){if(!p.current?.nativeElement)return;let e=ute(p.current.nativeElement);g(f&&(f.x||f.y)?`${f.x-e.left}px ${f.y-e.top}px`:``)}return C.createElement(Lu,{visible:o,onVisibleChanged:d,onAppearPrepare:v,onEnterPrepare:v,forceRender:s,motionName:l,removeOnLeave:c,ref:p},({className:t,style:o},s)=>C.createElement(Sg,Cg({},e,{ref:m,title:r,ariaId:u,prefixCls:n,holderRef:s,style:{...o,...i,..._},className:q(a,t)})))});function wg(){return wg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:t,style:n,visible:r,maskProps:i,motionName:a,className:o}=e;return C.createElement(Lu,{key:`mask`,visible:r,motionName:a,leavedClassName:`${t}-mask-hidden`},({className:e,style:r},a)=>C.createElement(`div`,wg({ref:a,style:{...r,...n},className:q(`${t}-mask`,e,o)},i)))};function Tg(){return Tg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:t=`rc-dialog`,zIndex:n,visible:r=!1,focusTriggerAfterClose:i=!0,wrapStyle:a,wrapClassName:o,wrapProps:s,onClose:c,afterOpenChange:l,afterClose:u,transitionName:d,animation:f,closable:p=!0,mask:m=!0,maskTransitionName:h,maskAnimation:g,maskClosable:_=!0,maskStyle:v,maskProps:y,rootClassName:b,rootStyle:x,classNames:S,styles:w}=e,T=(0,C.useRef)(null),E=(0,C.useRef)(null),D=(0,C.useRef)(null),[O,k]=C.useState(r),[A,j]=C.useState(!1),M=Bf();function N(){fi(E.current,document.activeElement)||(T.current=document.activeElement)}function P(){fi(E.current,document.activeElement)||D.current?.focus()}function F(){if(k(!1),m&&T.current&&i){try{T.current.focus({preventScroll:!0})}catch{}T.current=null}O&&u?.()}function I(e){e?P():F(),l?.(e)}function L(e){c?.(e)}let R=(0,C.useRef)(!1),z=null;_&&(z=e=>{E.current===e.target&&R.current&&L(e)});function B(e){R.current=e.target===E.current}(0,C.useEffect)(()=>{r?(R.current=!1,k(!0),N(),E.current&&j(getComputedStyle(E.current).position===`fixed`)):O&&D.current.enableMotion()&&!D.current.inMotion()&&F()},[r]);let V={zIndex:n,...a,...w?.wrapper,display:O?null:`none`};return C.createElement(`div`,Tg({className:q(`${t}-root`,b),style:x},Hu(e,{data:!0})),C.createElement(_te,{prefixCls:t,visible:m&&r,motionName:cg(t,h,g),style:{zIndex:n,...v,...w?.mask},maskProps:y,className:S?.mask}),C.createElement(`div`,Tg({className:q(`${t}-wrap`,o,S?.wrapper),ref:E,onClick:z,onMouseDown:B,style:V},s),C.createElement(gte,Tg({},e,{isFixedPos:A,ref:D,closable:p,ariaId:M,prefixCls:t,visible:r&&O,onClose:L,onVisibleChanged:I,motionName:cg(t,d,f)}))))};function Eg(){return Eg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{visible:t,getContainer:n,forceRender:r,destroyOnHidden:i=!1,afterClose:a,closable:o,panelRef:s,keyboard:c=!0,onClose:l}=e,[u,d]=C.useState(t),f=C.useMemo(()=>({panel:s}),[s]);return C.useEffect(()=>{t&&d(!0)},[t]),!r&&i&&!u?null:C.createElement(sg.Provider,{value:f},C.createElement(Zf,{open:t||r||u,onEsc:({top:e,event:t})=>{if(e&&c){t.stopPropagation(),l?.(t);return}},autoDestroy:!1,getContainer:n,autoLock:t||u},C.createElement(vte,Eg({},e,{destroyOnHidden:i,afterClose:()=>{let{afterClose:e}=(o&&typeof o==`object`?o:{})||{};e?.(),a?.(),d(!1)}}))))},Dg=`RC_FORM_INTERNAL_HOOKS`,Og=()=>{xr(!1,`Can not find FormContext. Please make sure you wrap Field under Form.`)},kg=C.createContext({getFieldValue:Og,getFieldsValue:Og,getFieldError:Og,getFieldWarning:Og,getFieldsError:Og,isFieldsTouched:Og,isFieldTouched:Og,isFieldValidating:Og,isFieldsValidating:Og,resetFields:Og,setFields:Og,setFieldValue:Og,setFieldsValue:Og,validateFields:Og,submit:Og,getInternalHooks:()=>(Og(),{dispatch:Og,initEntityValue:Og,registerField:Og,useSubscribe:Og,setInitialValues:Og,destroyForm:Og,setCallbacks:Og,registerWatch:Og,getFields:Og,setValidateMessages:Og,setPreserve:Og,getInitialValue:Og})}),Ag=C.createContext(null);function jg(e){return e==null?[]:Array.isArray(e)?e:[e]}function bte(e){return e&&!!e._init}function Mg(){return{default:`Validation error on field %s`,required:`%s is required`,enum:`%s must be one of %s`,whitespace:`%s cannot be empty`,date:{format:`%s date %s is invalid for format %s`,parse:`%s date could not be parsed, %s is invalid `,invalid:`%s date %s is invalid`},types:{string:`%s is not a %s`,method:`%s is not a %s (function)`,array:`%s is not an %s`,object:`%s is not an %s`,number:`%s is not a %s`,date:`%s is not a %s`,boolean:`%s is not a %s`,integer:`%s is not an %s`,float:`%s is not a %s`,regexp:`%s is not a valid %s`,email:`%s is not a valid %s`,tel:`%s is not a valid %s`,url:`%s is not a valid %s`,hex:`%s is not a valid %s`},string:{len:`%s must be exactly %s characters`,min:`%s must be at least %s characters`,max:`%s cannot be longer than %s characters`,range:`%s must be between %s and %s characters`},number:{len:`%s must equal %s`,min:`%s cannot be less than %s`,max:`%s cannot be greater than %s`,range:`%s must be between %s and %s`},array:{len:`%s must be exactly %s in length`,min:`%s cannot be less than %s in length`,max:`%s cannot be greater than %s in length`,range:`%s must be between %s and %s in length`},pattern:{mismatch:`%s value %s does not match pattern %s`},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Ng=Mg();function xte(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function Ste(e,t,n){if(rs())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&es(i,n.prototype),i}function Pg(e){var t=typeof Map==`function`?new Map:void 0;return Pg=function(e){if(e===null||!xte(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return Ste(e,arguments,ns(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),es(n,e)},Pg(e)}var Cte=/%[sdj%]/g,wte=function(){};function Fg(e){if(!e||!e.length)return null;var t={};return e.forEach(function(e){var n=e.field;t[n]=t[n]||[],t[n].push(e)}),t}function Ig(e){var t=[...arguments].slice(1),n=0,r=t.length;return typeof e==`function`?e.apply(null,t):typeof e==`string`?e.replace(Cte,function(e){if(e===`%%`)return`%`;if(n>=r)return e;switch(e){case`%s`:return String(t[n++]);case`%d`:return Number(t[n++]);case`%j`:try{return JSON.stringify(t[n++])}catch{return`[Circular]`}break;default:return e}}):e}function Tte(e){return e===`string`||e===`url`||e===`hex`||e===`email`||e===`date`||e===`pattern`||e===`tel`}function Lg(e,t){return!!(e==null||t===`array`&&Array.isArray(e)&&!e.length||Tte(t)&&typeof e==`string`&&!e)}function Ete(e,t,n){var r=[],i=0,a=e.length;function o(e){r.push.apply(r,Qr(e||[])),i++,i===a&&n(r)}e.forEach(function(e){t(e,o)})}function Rg(e,t,n){var r=0,i=e.length;function a(o){if(o&&o.length){n(o);return}var s=r;r+=1,se.max?r.push(Ig(i.messages[u].max,e.fullField,e.max)):o&&s&&(le.max)&&r.push(Ig(i.messages[u].range,e.fullField,e.min,e.max))},Ug=function(e,t,n,r,i,a){e.required&&(!n.hasOwnProperty(e.field)||Lg(t,a||e.type))&&r.push(Ig(i.messages.required,e.fullField))},Wg,Pte=(function(){if(Wg)return Wg;var e=`[a-fA-F\\d:]`,t=function(t){return t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=${e})|(?<=${e})(?=\\s|\$))`:``},n=`(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}`,r=`[a-fA-F\\d]{1,4}`,i=`(?:${[`(?:${r}:){7}(?:${r}|:)`,`(?:${r}:){6}(?:${n}|:${r}|:)`,`(?:${r}:){5}(?::${n}|(?::${r}){1,2}|:)`,`(?:${r}:){4}(?:(?::${r}){0,1}:${n}|(?::${r}){1,3}|:)`,`(?:${r}:){3}(?:(?::${r}){0,2}:${n}|(?::${r}){1,4}|:)`,`(?:${r}:){2}(?:(?::${r}){0,3}:${n}|(?::${r}){1,5}|:)`,`(?:${r}:){1}(?:(?::${r}){0,4}:${n}|(?::${r}){1,6}|:)`,`(?::(?:(?::${r}){0,5}:${n}|(?::${r}){1,7}|:))`].join(`|`)})(?:%[0-9a-zA-Z]{1,})?`,a=RegExp(`(?:^${n}\$)|(?:^${i}\$)`),o=RegExp(`^${n}\$`),s=RegExp(`^${i}\$`),c=function(e){return e&&e.exact?a:RegExp(`(?:${t(e)}${n}${t(e)})|(?:${t(e)}${i}${t(e)})`,`g`)};c.v4=function(e){return e&&e.exact?o:RegExp(`${t(e)}${n}${t(e)}`,`g`)},c.v6=function(e){return e&&e.exact?s:RegExp(`${t(e)}${i}${t(e)}`,`g`)};var l=`(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|${c.v4().source}|${c.v6().source}|(?:(?:[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"]*)?`;return Wg=RegExp(`(?:^${l}\$)`,`i`),Wg}),Gg={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,tel:/^(\+[0-9]{1,3}[-\s\u2011]?)?(\([0-9]{1,4}\)[-\s\u2011]?)?([0-9]+[-\s\u2011]?)*[0-9]+$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Kg={integer:function(e){return Kg.number(e)&&parseInt(e,10)===e},float:function(e){return Kg.number(e)&&!Kg.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime==`function`&&typeof e.getMonth==`function`&&typeof e.getYear==`function`&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e==`number`},object:function(e){return Bo(e)===`object`&&!Kg.array(e)},method:function(e){return typeof e==`function`},email:function(e){return typeof e==`string`&&e.length<=320&&!!e.match(Gg.email)},tel:function(e){return typeof e==`string`&&e.length<=32&&!!e.match(Gg.tel)},url:function(e){return typeof e==`string`&&e.length<=2048&&!!e.match(Pte())},hex:function(e){return typeof e==`string`&&!!e.match(Gg.hex)}},qg={required:Ug,whitespace:function(e,t,n,r,i){(/^\s+$/.test(t)||t===``)&&r.push(Ig(i.messages.whitespace,e.fullField))},type:function(e,t,n,r,i){if(e.required&&t===void 0){Ug(e,t,n,r,i);return}var a=[`integer`,`float`,`array`,`regexp`,`object`,`method`,`email`,`tel`,`number`,`date`,`url`,`hex`],o=e.type;a.indexOf(o)>-1?Kg[o](t)||r.push(Ig(i.messages.types[o],e.fullField,e.type)):o&&Bo(t)!==e.type&&r.push(Ig(i.messages.types[o],e.fullField,e.type))},range:Nte,enum:jte,pattern:Mte},Fte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i)}n(a)},Ite=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(t==null&&!e.required)return n();qg.required(e,t,r,a,i,`array`),t!=null&&(qg.type(e,t,r,a,i),qg.range(e,t,r,a,i))}n(a)},Lte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&qg.type(e,t,r,a,i)}n(a)},Rte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t,`date`)&&!e.required)return n();if(qg.required(e,t,r,a,i),!Lg(t,`date`)){var o=t instanceof Date?t:new Date(t);qg.type(e,o,r,a,i),o&&qg.range(e,o.getTime(),r,a,i)}}n(a)},zte=`enum`,Bte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&qg[zte](e,t,r,a,i)}n(a)},Vte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&(qg.type(e,t,r,a,i),qg.range(e,t,r,a,i))}n(a)},Hte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&(qg.type(e,t,r,a,i),qg.range(e,t,r,a,i))}n(a)},Ute=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&qg.type(e,t,r,a,i)}n(a)},Wte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(t===``&&(t=void 0),Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&(qg.type(e,t,r,a,i),qg.range(e,t,r,a,i))}n(a)},Gte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),t!==void 0&&qg.type(e,t,r,a,i)}n(a)},Kte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t,`string`)&&!e.required)return n();qg.required(e,t,r,a,i),Lg(t,`string`)||qg.pattern(e,t,r,a,i)}n(a)},qte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t)&&!e.required)return n();qg.required(e,t,r,a,i),Lg(t)||qg.type(e,t,r,a,i)}n(a)},Jte=function(e,t,n,r,i){var a=[],o=Array.isArray(t)?`array`:Bo(t);qg.required(e,t,r,a,i,o),n(a)},Yte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t,`string`)&&!e.required)return n();qg.required(e,t,r,a,i,`string`),Lg(t,`string`)||(qg.type(e,t,r,a,i),qg.range(e,t,r,a,i),qg.pattern(e,t,r,a,i),e.whitespace===!0&&qg.whitespace(e,t,r,a,i))}n(a)},Jg=function(e,t,n,r,i){var a=e.type,o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(Lg(t,a)&&!e.required)return n();qg.required(e,t,r,o,i,a),Lg(t,a)||qg.type(e,t,r,o,i)}n(o)},Yg={string:Yte,method:Ute,number:Wte,boolean:Lte,regexp:qte,integer:Hte,float:Vte,array:Ite,object:Gte,enum:Bte,pattern:Kte,date:Rte,url:Jg,hex:Jg,email:Jg,tel:Jg,required:Jte,any:Fte},Xg=function(){function e(t){Xo(this,e),qo(this,`rules`,null),qo(this,`_messages`,Ng),this.define(t)}return Qo(e,[{key:`define`,value:function(e){var t=this;if(!e)throw Error(`Cannot configure a schema with no rules`);if(Bo(e)!==`object`||Array.isArray(e))throw Error(`Rules must be an object`);this.rules={},Object.keys(e).forEach(function(n){var r=e[n];t.rules[n]=Array.isArray(r)?r:[r]})}},{key:`messages`,value:function(e){return e&&(this._messages=Vg(Mg(),e)),this._messages}},{key:`validate`,value:function(t){var n=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},a=t,o=r,s=i;if(typeof o==`function`&&(s=o,o={}),!this.rules||Object.keys(this.rules).length===0)return s&&s(null,a),Promise.resolve(a);function c(e){var t=[],n={};function r(e){if(Array.isArray(e)){var n;t=(n=t).concat.apply(n,Qr(e))}else t.push(e)}for(var i=0;i0&&arguments[0]!==void 0?arguments[0]:[],l=Array.isArray(c)?c:[c];!o.suppressWarning&&l.length&&e.warning(`async-validator:`,l),l.length&&r.message!==void 0&&r.message!==null&&(l=[].concat(r.message));var u=l.map(Bg(r,a));if(o.first&&u.length)return d[r.field]=1,n(u);if(!i)n(u);else{if(r.required&&!t.value)return r.message===void 0?o.error&&(u=[o.error(r,Ig(o.messages.required,r.field))]):u=[].concat(r.message).map(Bg(r,a)),n(u);var f={};r.defaultField&&Object.keys(t.value).map(function(e){f[e]=r.defaultField}),f=Yo(Yo({},f),t.rule.fields);var p={};Object.keys(f).forEach(function(e){var t=f[e];p[e]=(Array.isArray(t)?t:[t]).map(s.bind(null,e))});var m=new e(p);m.messages(o.messages),t.rule.options&&(t.rule.options.messages=o.messages,t.rule.options.error=o.error),m.validate(t.value,t.rule.options||o,function(e){var t=[];u&&u.length&&t.push.apply(t,Qr(u)),e&&e.length&&t.push.apply(t,Qr(e)),n(t.length?t:null)})}}var l;if(r.asyncValidator)l=r.asyncValidator(r,t.value,c,t.source,o);else if(r.validator){try{l=r.validator(r,t.value,c,t.source,o)}catch(e){var u,f;(u=(f=console).error)==null||u.call(f,e),o.suppressValidatorError||setTimeout(function(){throw e},0),c(e.message)}l===!0?c():l===!1?c(typeof r.message==`function`?r.message(r.fullField||r.field):r.message||`${r.fullField||r.field} fails`):l instanceof Array?c(l):l instanceof Error&&c(l.message)}l&&l.then&&l.then(function(){return c()},function(e){return c(e)})},function(e){c(e)},a)}},{key:`getType`,value:function(e){if(e.type===void 0&&e.pattern instanceof RegExp&&(e.type=`pattern`),typeof e.validator!=`function`&&e.type&&!Yg.hasOwnProperty(e.type))throw Error(Ig(`Unknown rule type %s`,e.type));return e.type||`string`}},{key:`getValidationMethod`,value:function(e){if(typeof e.validator==`function`)return e.validator;var t=Object.keys(e),n=t.indexOf(`message`);return n!==-1&&t.splice(n,1),t.length===1&&t[0]===`required`?Yg.required:Yg[this.getType(e)]||void 0}}]),e}();qo(Xg,`register`,function(e,t){if(typeof t!=`function`)throw Error(`Cannot register a validator by type, validator is not a function`);Yg[e]=t}),qo(Xg,`warning`,wte),qo(Xg,`messages`,Ng),qo(Xg,`validators`,Yg);var Zg="'${name}' is not a valid ${type}",Qg={default:"Validation error on field '${name}'",required:"'${name}' is required",enum:"'${name}' must be one of [${enum}]",whitespace:"'${name}' cannot be empty",date:{format:"'${name}' is invalid for format date",parse:"'${name}' could not be parsed as date",invalid:"'${name}' is invalid date"},types:{string:Zg,method:Zg,array:Zg,object:Zg,number:Zg,date:Zg,boolean:Zg,integer:Zg,float:Zg,regexp:Zg,email:Zg,tel:Zg,url:Zg,hex:Zg},string:{len:"'${name}' must be exactly ${len} characters",min:"'${name}' must be at least ${min} characters",max:"'${name}' cannot be longer than ${max} characters",range:"'${name}' must be between ${min} and ${max} characters"},number:{len:"'${name}' must equal ${len}",min:"'${name}' cannot be less than ${min}",max:"'${name}' cannot be greater than ${max}",range:"'${name}' must be between ${min} and ${max}"},array:{len:"'${name}' must be exactly ${len} in length",min:"'${name}' cannot be less than ${min} in length",max:"'${name}' cannot be greater than ${max} in length",range:"'${name}' must be between ${min} and ${max} in length"},pattern:{mismatch:"'${name}' does not match pattern ${pattern}"}},$g=Xg;function e_(e,t){return e.replace(/\\?\$\{\w+\}/g,e=>e.startsWith(`\\`)?e.slice(1):t[e.slice(2,-1)])}var t_=`CODE_LOGIC_ERROR`;async function n_(e,t,n,r,i){let a={...n};if(delete a.ruleIndex,$g.warning=()=>void 0,a.validator){let e=a.validator;a.validator=(...t)=>{try{return e(...t)}catch(e){return console.error(e),Promise.reject(t_)}}}let o=null;a&&a.type===`array`&&a.defaultField&&(o=a.defaultField,delete a.defaultField);let s=new $g({[e]:[a]}),c=pr(Qg,r.validateMessages);s.messages(c);let l=[];try{await Promise.resolve(s.validate({[e]:t},{...r}))}catch(e){e.errors&&(l=e.errors.map(({message:e},t)=>{let n=e===t_?c.default:e;return C.isValidElement(n)?C.cloneElement(n,{key:`error_${t}`}):n}))}if(!l.length&&o&&Array.isArray(t)&&t.length>0)return(await Promise.all(t.map((t,n)=>n_(`${e}.${n}`,t,o,r,i)))).reduce((e,t)=>[...e,...t],[]);let u={...n,name:e,enum:(n.enum||[]).join(`, `),...i};return l.map(e=>typeof e==`string`?e_(e,u):e)}function r_(e,t,n,r,i,a){let o=e.join(`.`),s=n.map((e,t)=>{let n=e.validator,r={...e,ruleIndex:t};return n&&(r.validator=(e,t,r)=>{let i=!1,a=n(e,t,(...e)=>{Promise.resolve().then(()=>{xr(!i,"Your validator function has already return a promise. `callback` will be ignored."),i||r(...e)})});i=a&&typeof a.then==`function`&&typeof a.catch==`function`,xr(i,"`callback` is deprecated. Please return a promise instead."),i&&a.then(()=>{r()}).catch(e=>{r(e||` `)})}),r}).sort(({warningOnly:e,ruleIndex:t},{warningOnly:n,ruleIndex:r})=>!!e==!!n?t-r:e?1:-1),c;if(i===!0)c=new Promise(async(e,n)=>{for(let e=0;en_(o,t,e,r,a).then(t=>({errors:t,rule:e})));c=(i?a_(e):i_(e)).then(e=>Promise.reject(e))}return c.catch(e=>e),c}async function i_(e){return Promise.all(e).then(e=>[].concat(...e))}async function a_(e){let t=0;return new Promise(n=>{e.forEach(r=>{r.then(r=>{r.errors.length&&n([r]),t+=1,t===e.length&&n([])})})})}function o_(e){return jg(e)}function s_(e,t){let n={};return t.forEach(t=>{let r=or(e,t);n=cr(n,t,r)}),n}function c_(e,t,n=!1){return e&&e.some(e=>l_(t,e,n))}function l_(e,t,n=!1){return!e||!t||!n&&e.length!==t.length?!1:t.every((t,n)=>e[n]===t)}function u_(e,t){if(e===t)return!0;if(!e&&t||e&&!t||!e||!t||typeof e!=`object`||typeof t!=`object`)return!1;let n=Object.keys(e),r=Object.keys(t);return[...new Set([...n,...r])].every(n=>{let r=e[n],i=t[n];return typeof r==`function`&&typeof i==`function`?!0:r===i})}function d_(e,...t){let n=t[0];return n&&n.target&&typeof n.target==`object`&&e in n.target?n.target[e]:n}function f_(e,t,n){let{length:r}=e;if(t<0||t>=r||n<0||n>=r)return e;let i=e[t],a=t-n;return a>0?[...e.slice(0,n),i,...e.slice(n,t),...e.slice(t+1,r)]:a<0?[...e.slice(0,t),...e.slice(t+1,n+1),i,...e.slice(n+1,r)]:e}var p_=e=>{let t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(null)},m_=class{namePathList=[];taskId=0;watcherList=new Set;form;constructor(e){this.form=e}register(e){return this.watcherList.add(e),()=>{this.watcherList.delete(e)}}notify(e){e.forEach(e=>{this.namePathList.every(t=>!l_(t,e))&&this.namePathList.push(e)}),this.doBatch()}doBatch(){this.taskId+=1;let e=this.taskId;p_(()=>{if(e===this.taskId&&this.watcherList.size){let e=this.form.getForm(),t=e.getFieldsValue(),n=e.getFieldsValue(!0);this.watcherList.forEach(e=>{e(t,n,this.namePathList)}),this.namePathList=[]}})}};async function h_(){return new Promise(e=>{p_(()=>{ii(()=>{e()})})})}function g_(){return g_=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{preserve:e,isListField:t,name:n}=this.props;this.cancelRegisterFunc&&this.cancelRegisterFunc(t,e,o_(n)),this.cancelRegisterFunc=null};getNamePath=()=>{let{name:e,fieldContext:t}=this.props,{prefixName:n=[]}=t;return e===void 0?[]:[...n,...e]};getRules=()=>{let{rules:e=[],fieldContext:t}=this.props;return e.map(e=>typeof e==`function`?e(t):e)};reRender(){this.mounted&&this.forceUpdate()}refresh=()=>{this.mounted&&this.setState(({resetCount:e})=>({resetCount:e+1}))};metaCache=null;triggerMetaEvent=e=>{let{onMetaChange:t}=this.props;if(t){let n={...this.getMeta(),destroy:e};Ei(this.metaCache,n)||t(n),this.metaCache=n}else this.metaCache=null};onStoreChange=(e,t,n)=>{let{shouldUpdate:r,dependencies:i=[],onReset:a}=this.props,{store:o}=n,s=this.getNamePath(),c=this.getValue(e),l=this.getValue(o),u=t&&c_(t,s);switch(n.type===`valueUpdate`&&n.source===`external`&&!Ei(c,l)&&(this.touched=!0,this.dirty=!0,this.validatePromise=null,this.errors=__,this.warnings=v_,this.triggerMetaEvent()),n.type){case`reset`:if(!t||u){this.touched=!1,this.dirty=!1,this.validatePromise=void 0,this.errors=__,this.warnings=v_,this.triggerMetaEvent(),a?.(),this.refresh();return}break;case`remove`:if(r&&y_(r,e,o,c,l,n)){this.reRender();return}break;case`setField`:{let{data:i}=n;if(u){`touched`in i&&(this.touched=i.touched),`validating`in i&&!(`originRCField`in i)&&(this.validatePromise=i.validating?Promise.resolve([]):null),`errors`in i&&(this.errors=i.errors||__),`warnings`in i&&(this.warnings=i.warnings||v_),this.dirty=!0,this.triggerMetaEvent(),this.reRender();return}else if(`value`in i&&c_(t,s,!0)){this.reRender();return}if(r&&!s.length&&y_(r,e,o,c,l,n)){this.reRender();return}break}case`dependenciesUpdate`:if(i.map(o_).some(e=>c_(n.relatedFields,e))){this.reRender();return}break;default:if(u||(!i.length||s.length||r)&&y_(r,e,o,c,l,n)){this.reRender();return}break}r===!0&&this.reRender()};validateRules=e=>{let t=this.getNamePath(),n=this.getValue(),{triggerName:r,validateOnly:i=!1,delayFrame:a}=e||{},o=Promise.resolve().then(async()=>{if(!this.mounted)return[];let{validateFirst:i=!1,messageVariables:s,validateDebounce:c}=this.props;a&&await h_();let l=this.getRules();if(r&&(l=l.filter(e=>e).filter(e=>{let{validateTrigger:t}=e;return t?jg(t).includes(r):!0})),c&&r&&(await new Promise(e=>{setTimeout(e,c)}),this.validatePromise!==o))return[];let u=r_(t,n,l,e,i,s);return u.catch(e=>e).then((e=__)=>{if(this.validatePromise===o){this.validatePromise=null;let t=[],n=[];e.forEach?.(({rule:{warningOnly:e},errors:r=__})=>{e?n.push(...r):t.push(...r)}),this.errors=t,this.warnings=n,this.triggerMetaEvent(),this.reRender()}}),u});return i?o:(this.validatePromise=o,this.dirty=!0,this.errors=__,this.warnings=v_,this.triggerMetaEvent(),this.reRender(),o)};isFieldValidating=()=>!!this.validatePromise;isFieldTouched=()=>this.touched;isFieldDirty=()=>{if(this.dirty||this.props.initialValue!==void 0)return!0;let{fieldContext:e}=this.props,{getInitialValue:t}=e.getInternalHooks(Dg);return t(this.getNamePath())!==void 0};getErrors=()=>this.errors;getWarnings=()=>this.warnings;isListField=()=>this.props.isListField;isList=()=>this.props.isList;isPreserve=()=>this.props.preserve;getMeta=()=>(this.prevValidating=this.isFieldValidating(),{touched:this.isFieldTouched(),validating:this.prevValidating,errors:this.errors,warnings:this.warnings,name:this.getNamePath(),validated:this.validatePromise===null});getOnlyChild=e=>{if(typeof e==`function`){let t=this.getMeta();return{...this.getOnlyChild(e(this.getControlled(),t,this.props.fieldContext)),isFunction:!0}}let t=wr(e);return t.length!==1||!C.isValidElement(t[0])?{child:t,isFunction:!1}:{child:t[0],isFunction:!1}};getValue=e=>{let{getFieldsValue:t}=this.props.fieldContext,n=this.getNamePath();return or(e||t(!0),n)};getControlled=(e={})=>{let{name:t,trigger:n=`onChange`,validateTrigger:r,getValueFromEvent:i,normalize:a,valuePropName:o=`value`,getValueProps:s,fieldContext:c}=this.props,l=r===void 0?c.validateTrigger:r,u=this.getNamePath(),{getInternalHooks:d,getFieldsValue:f}=c,{dispatch:p}=d(Dg),m=this.getValue(),h=s||(e=>({[o]:e})),g=e[n],_=t===void 0?{}:h(m),v={...e,..._};return v[n]=(...e)=>{this.touched=!0,this.dirty=!0,this.triggerMetaEvent();let t;t=i?i(...e):d_(o,...e),a&&(t=a(t,m,f(!0))),t!==m&&p({type:`updateValue`,namePath:u,value:t}),g&&g(...e)},jg(l||[]).forEach(e=>{let t=v[e];v[e]=(...n)=>{t&&t(...n);let{rules:r}=this.props;r&&r.length&&p({type:`validateField`,namePath:u,triggerName:e})}}),v};render(){let{resetCount:e}=this.state,{children:t}=this.props,{child:n,isFunction:r}=this.getOnlyChild(t),i;return r?i=n:C.isValidElement(n)?i=C.cloneElement(n,this.getControlled(n.props)):(xr(!n,"`children` of Field is not validate ReactElement."),i=n),C.createElement(C.Fragment,{key:e},i)}};function x_({name:e,...t}){let n=C.useContext(kg),r=C.useContext(Ag),i=e===void 0?void 0:o_(e),a=t.isListField??!!r,o=`keep`;return a||(o=`_${(i||[]).join(`_`)}`),C.createElement(b_,g_({key:o,name:i,isListField:a},t,{fieldContext:n}))}function S_({name:e,initialValue:t,children:n,rules:r,validateTrigger:i,isListField:a}){let o=C.useContext(kg),s=C.useContext(Ag),c=C.useRef({keys:[],id:0}).current,l=C.useMemo(()=>[...o_(o.prefixName)||[],...o_(e)],[o.prefixName,e]),u=C.useMemo(()=>({...o,prefixName:l}),[o,l]),d=C.useMemo(()=>({getKey:e=>{let t=l.length,n=e[t];return[c.keys[n],e.slice(t+1)]}}),[c,l]);return typeof n==`function`?C.createElement(Ag.Provider,{value:d},C.createElement(kg.Provider,{value:u},C.createElement(x_,{name:[],shouldUpdate:(e,t,{source:n})=>n===`internal`?!1:e!==t,rules:r,validateTrigger:i,initialValue:t,isList:!0,isListField:a??!!s},({value:e=[],onChange:t},r)=>{let{getFieldValue:i}=o,a=()=>i(l||[])||[],s={add:(e,n)=>{let r=a();n>=0&&n<=r.length?(c.keys=[...c.keys.slice(0,n),c.id,...c.keys.slice(n)],t([...r.slice(0,n),e,...r.slice(n)])):(c.keys=[...c.keys,c.id],t([...r,e])),c.id+=1},remove:e=>{let n=a(),r=new Set(Array.isArray(e)?e:[e]);r.size<=0||(c.keys=c.keys.filter((e,t)=>!r.has(t)),t(n.filter((e,t)=>!r.has(t))))},move(e,n){if(e===n)return;let r=a();e<0||e>=r.length||n<0||n>=r.length||(c.keys=f_(c.keys,e,n),t(f_(r,e,n)))}},u=e||[];return Array.isArray(u)||(u=[]),n(u.map((e,t)=>{let n=c.keys[t];return n===void 0&&(c.keys[t]=c.id,n=c.keys[t],c.id+=1),{name:t,key:n,isListField:!0}}),s,r)}))):(xr(!1,`Form.List only accepts function as children.`),null)}function C_(e){let t=!1,n=e.length,r=[];return e.length?new Promise((i,a)=>{e.forEach((e,o)=>{e.catch(e=>(t=!0,e)).then(e=>{--n,r[o]=e,!(n>0)&&(t&&a(r),i(r))})})}):Promise.resolve([])}var w_=`__@field_split__`;function T_(e){return e.map(e=>`${typeof e}:${e}`).join(w_)}var E_=class{kvs=new Map;set(e,t){this.kvs.set(T_(e),t)}get(e){return this.kvs.get(T_(e))}getAsPrefix(e){let t=T_(e),n=t+w_,r=[],i=this.kvs.get(t);return i!==void 0&&r.push(i),this.kvs.forEach((e,t)=>{t.startsWith(n)&&r.push(e)}),r}update(e,t){let n=t(this.get(e));n?this.set(e,n):this.delete(e)}delete(e){this.kvs.delete(T_(e))}map(e){return[...this.kvs.entries()].map(([t,n])=>e({key:t.split(w_).map(e=>{let[,t,n]=e.match(/^([^:]*):(.*)$/);return t===`number`?Number(n):n}),value:n}))}toJSON(){let e={};return this.map(({key:t,value:n})=>(e[t.join(`.`)]=n,null)),e}},D_=class{formHooked=!1;forceRootUpdate;subscribable=!0;store={};fieldEntities=[];initialValues={};callbacks={};validateMessages=null;preserve=null;lastValidatePromise=null;watcherCenter=new m_(this);constructor(e){this.forceRootUpdate=e}getForm=()=>({getFieldValue:this.getFieldValue,getFieldsValue:this.getFieldsValue,getFieldError:this.getFieldError,getFieldWarning:this.getFieldWarning,getFieldsError:this.getFieldsError,isFieldsTouched:this.isFieldsTouched,isFieldTouched:this.isFieldTouched,isFieldValidating:this.isFieldValidating,isFieldsValidating:this.isFieldsValidating,resetFields:this.resetFields,setFields:this.setFields,setFieldValue:this.setFieldValue,setFieldsValue:this.setFieldsValue,validateFields:this.validateFields,submit:this.submit,_init:!0,getInternalHooks:this.getInternalHooks});getInternalHooks=e=>e===`RC_FORM_INTERNAL_HOOKS`?(this.formHooked=!0,{dispatch:this.dispatch,initEntityValue:this.initEntityValue,registerField:this.registerField,useSubscribe:this.useSubscribe,setInitialValues:this.setInitialValues,destroyForm:this.destroyForm,setCallbacks:this.setCallbacks,setValidateMessages:this.setValidateMessages,getFields:this.getFields,setPreserve:this.setPreserve,getInitialValue:this.getInitialValue,registerWatch:this.registerWatch}):(xr(!1,"`getInternalHooks` is internal usage. Should not call directly."),null);useSubscribe=e=>{this.subscribable=e};prevWithoutPreserves=null;setInitialValues=(e,t)=>{if(this.initialValues=e||{},t){let t=pr(e,this.store);this.prevWithoutPreserves?.map(({key:n})=>{t=cr(t,n,or(e,n))}),this.prevWithoutPreserves=null,this.updateStore(t)}};destroyForm=e=>{if(e)this.updateStore({});else{let e=new E_;this.getFieldEntities(!0).forEach(t=>{this.isMergedPreserve(t.isPreserve())||e.set(t.getNamePath(),!0)}),this.prevWithoutPreserves=e}};getInitialValue=e=>{let t=or(this.initialValues,e);return e.length?pr(t):t};setCallbacks=e=>{this.callbacks=e};setValidateMessages=e=>{this.validateMessages=e};setPreserve=e=>{this.preserve=e};registerWatch=e=>this.watcherCenter.register(e);notifyWatch=(e=[])=>{this.watcherCenter.notify(e)};timeoutId=null;warningUnhooked=()=>{};updateStore=e=>{this.store=e};getFieldEntities=(e=!1)=>e?this.fieldEntities.filter(e=>e.getNamePath().length):this.fieldEntities;getFieldsMap=(e=!1)=>{let t=new E_;return this.getFieldEntities(e).forEach(e=>{let n=e.getNamePath();t.set(n,e)}),t};getFieldEntitiesForNamePathList=(e,t=!1)=>{if(!e)return this.getFieldEntities(!0);let n=this.getFieldsMap(!0);return t?e.flatMap(e=>{let t=o_(e),r=n.getAsPrefix(t);return r.length?r:[{INVALIDATE_NAME_PATH:t}]}):e.map(e=>{let t=o_(e);return n.get(t)||{INVALIDATE_NAME_PATH:o_(e)}})};getFieldsValue=(e,t)=>{this.warningUnhooked();let n,r;if(e===!0||Array.isArray(e)?(n=e,r=t):e&&typeof e==`object`&&(r=e.filter),n===!0&&!r)return this.store;let i=this.getFieldEntitiesForNamePathList(Array.isArray(n)?n:null,!0),a=[],o=[];i.forEach(e=>{let t=e.INVALIDATE_NAME_PATH||e.getNamePath();if(e.isList?.()){o.push(t);return}if(!r)a.push(t);else{let n=`getMeta`in e?e.getMeta():null;r(n)&&a.push(t)}});let s=s_(this.store,a.map(o_));return o.forEach(e=>{or(s,e)||(s=cr(s,e,[]))}),s};getFieldValue=e=>{this.warningUnhooked();let t=o_(e);return or(this.store,t)};getFieldsError=e=>(this.warningUnhooked(),this.getFieldEntitiesForNamePathList(e).map((t,n)=>t&&!t.INVALIDATE_NAME_PATH?{name:t.getNamePath(),errors:t.getErrors(),warnings:t.getWarnings()}:{name:o_(e[n]),errors:[],warnings:[]}));getFieldError=e=>{this.warningUnhooked();let t=o_(e);return this.getFieldsError([t])[0].errors};getFieldWarning=e=>{this.warningUnhooked();let t=o_(e);return this.getFieldsError([t])[0].warnings};isFieldsTouched=(...e)=>{this.warningUnhooked();let[t,n]=e,r,i=!1;e.length===0?r=null:e.length===1?Array.isArray(t)?(r=t.map(o_),i=!1):(r=null,i=t):(r=t.map(o_),i=n);let a=this.getFieldEntities(!0),o=e=>e.isFieldTouched();if(!r)return i?a.every(e=>o(e)||e.isList()):a.some(o);let s=new E_;r.forEach(e=>{s.set(e,[])}),a.forEach(e=>{let t=e.getNamePath();r.forEach(n=>{n.every((e,n)=>t[n]===e)&&s.update(n,t=>[...t,e])})});let c=e=>e.some(o),l=s.map(({value:e})=>e);return i?l.every(c):l.some(c)};isFieldTouched=e=>(this.warningUnhooked(),this.isFieldsTouched([e]));isFieldsValidating=e=>{this.warningUnhooked();let t=this.getFieldEntities();if(!e)return t.some(e=>e.isFieldValidating());let n=e.map(o_);return t.some(e=>c_(n,e.getNamePath())&&e.isFieldValidating())};isFieldValidating=e=>(this.warningUnhooked(),this.isFieldsValidating([e]));resetWithFieldInitialValue=(e={})=>{let t=new E_,n=this.getFieldEntities(!0);n.forEach(e=>{let{initialValue:n}=e.props,r=e.getNamePath();if(n!==void 0){let i=t.get(r)||new Set;i.add({entity:e,value:n}),t.set(r,i)}});let r=n=>{n.forEach(n=>{let{initialValue:r}=n.props;if(r!==void 0){let r=n.getNamePath();if(this.getInitialValue(r)!==void 0)xr(!1,`Form already set 'initialValues' with path '${r.join(`.`)}'. Field can not overwrite it.`);else{let i=t.get(r);if(i&&i.size>1)xr(!1,`Multiple Field with path '${r.join(`.`)}' set 'initialValue'. Can not decide which one to pick.`);else if(i){let t=this.getFieldValue(r);!n.isListField()&&(!e.skipExist||t===void 0)&&this.updateStore(cr(this.store,r,[...i][0].value))}}}})},i;e.entities?i=e.entities:e.namePathList?(i=[],e.namePathList.forEach(e=>{let n=t.get(e);n&&i.push(...[...n].map(e=>e.entity))})):i=n,r(i)};resetFields=e=>{this.warningUnhooked();let t=this.store;if(!e){this.updateStore(pr(this.initialValues)),this.resetWithFieldInitialValue(),this.notifyObservers(t,null,{type:`reset`}),this.notifyWatch();return}let n=e.map(o_);n.forEach(e=>{let t=this.getInitialValue(e);this.updateStore(cr(this.store,e,t))}),this.resetWithFieldInitialValue({namePathList:n}),this.notifyObservers(t,n,{type:`reset`}),this.notifyWatch(n)};setFields=e=>{this.warningUnhooked();let t=this.store,n=[];e.forEach(e=>{let{name:r,...i}=e,a=o_(r);n.push(a),`value`in i&&this.updateStore(cr(this.store,a,i.value)),this.notifyObservers(t,[a],{type:`setField`,data:e})}),this.notifyWatch(n)};getFields=()=>this.getFieldEntities(!0).map(e=>{let t=e.getNamePath(),n={...e.getMeta(),name:t,value:this.getFieldValue(t)};return Object.defineProperty(n,`originRCField`,{value:!0}),n});initEntityValue=e=>{let{initialValue:t}=e.props;if(t!==void 0){let n=e.getNamePath();or(this.store,n)===void 0&&this.updateStore(cr(this.store,n,t))}};isMergedPreserve=e=>(e===void 0?this.preserve:e)??!0;registerField=e=>{this.fieldEntities.push(e);let t=e.getNamePath();if(this.notifyWatch([t]),e.props.initialValue!==void 0){let t=this.store;this.resetWithFieldInitialValue({entities:[e],skipExist:!0}),this.notifyObservers(t,[e.getNamePath()],{type:`valueUpdate`,source:`internal`})}return(n,r,i=[])=>{if(this.fieldEntities=this.fieldEntities.filter(t=>t!==e),!this.isMergedPreserve(r)&&(!n||i.length>1)){let e=n?void 0:this.getInitialValue(t);if(t.length&&this.getFieldValue(t)!==e&&this.fieldEntities.every(e=>!l_(e.getNamePath(),t))){let n=this.store;this.updateStore(cr(n,t,e,!0)),this.notifyObservers(n,[t],{type:`remove`}),this.triggerDependenciesUpdate(n,t)}}this.notifyWatch([t])}};dispatch=e=>{switch(e.type){case`updateValue`:{let{namePath:t,value:n}=e;this.updateValue(t,n);break}case`validateField`:{let{namePath:t,triggerName:n}=e;this.validateFields([t],{triggerName:n});break}default:}};notifyObservers=(e,t,n)=>{if(this.subscribable){let r={...n,store:this.getFieldsValue(!0)};this.getFieldEntities().forEach(({onStoreChange:n})=>{n(e,t,r)})}else this.forceRootUpdate()};triggerDependenciesUpdate=(e,t)=>{let n=this.getDependencyChildrenFields(t);return n.length&&this.validateFields(n,{delayFrame:!0}),this.notifyObservers(e,n,{type:`dependenciesUpdate`,relatedFields:[t,...n]}),n};updateValue=(e,t)=>{let n=o_(e),r=this.store;this.updateStore(cr(this.store,n,t)),this.notifyObservers(r,[n],{type:`valueUpdate`,source:`internal`}),this.notifyWatch([n]);let i=this.triggerDependenciesUpdate(r,n),{onValuesChange:a}=this.callbacks;if(a){let e=s_(this.store,[n]);a(e,cr(this.getFieldsValue(),n,or(e,n)))}this.triggerOnFieldsChange([n,...i])};setFieldsValue=e=>{this.warningUnhooked();let t=this.store;if(e){let t=pr(this.store,e);this.updateStore(t)}this.notifyObservers(t,null,{type:`valueUpdate`,source:`external`}),this.notifyWatch()};setFieldValue=(e,t)=>{this.setFields([{name:e,value:t,errors:[],warnings:[],touched:!0}])};getDependencyChildrenFields=e=>{let t=new Set,n=[],r=new E_;this.getFieldEntities().forEach(e=>{let{dependencies:t}=e.props;(t||[]).forEach(t=>{let n=o_(t);r.update(n,(t=new Set)=>(t.add(e),t))})});let i=e=>{(r.get(e)||new Set).forEach(e=>{if(!t.has(e)){t.add(e);let r=e.getNamePath();e.isFieldDirty()&&r.length&&(n.push(r),i(r))}})};return i(e),n};triggerOnFieldsChange=(e,t)=>{let{onFieldsChange:n}=this.callbacks;if(n){let r=this.getFields();if(t){let e=new E_;t.forEach(({name:t,errors:n})=>{e.set(t,n)}),r.forEach(t=>{t.errors=e.get(t.name)||t.errors})}let i=r.filter(({name:t})=>c_(e,t));i.length&&n(i,r)}};validateFields=(e,t)=>{this.warningUnhooked();let n,r;Array.isArray(e)||typeof e==`string`||typeof t==`string`?(n=e,r=t):r=e;let i=!!n,a=i?n.map(o_):[],o=[...a],s=[],c=String(Date.now()),l=new Set,{recursive:u,dirty:d}=r||{};this.getFieldEntities(!0).forEach(e=>{let t=e.getNamePath();if(i||((!e.isList()||!a.some(e=>l_(e,t,!0)))&&o.push(t),a.push(t)),!(!e.props.rules||!e.props.rules.length)&&!(d&&!e.isFieldDirty())&&(l.add(t.join(c)),!i||c_(a,t,u))){let n=e.validateRules({validateMessages:{...Qg,...this.validateMessages},...r});s.push(n.then(()=>({name:t,errors:[],warnings:[]})).catch(e=>{let n=[],r=[];return e.forEach?.(({rule:{warningOnly:e},errors:t})=>{e?r.push(...t):n.push(...t)}),n.length?Promise.reject({name:t,errors:n,warnings:r}):{name:t,errors:n,warnings:r}}))}});let f=C_(s);this.lastValidatePromise=f,f.catch(e=>e).then(e=>{let t=e.map(({name:e})=>e);this.notifyObservers(this.store,t,{type:`validateFinish`}),this.triggerOnFieldsChange(t,e)});let p=f.then(()=>this.lastValidatePromise===f?Promise.resolve(this.getFieldsValue(o)):Promise.reject([])).catch(e=>{let t=e.filter(e=>e&&e.errors.length),n=t[0]?.errors?.[0];return Promise.reject({message:n,values:this.getFieldsValue(a),errorFields:t,outOfDate:this.lastValidatePromise!==f})});p.catch(e=>e);let m=a.filter(e=>l.has(e.join(c)));return this.triggerOnFieldsChange(m),p};submit=()=>{this.warningUnhooked(),this.validateFields().then(e=>{let{onFinish:t}=this.callbacks;if(t)try{t(e)}catch(e){console.error(e)}}).catch(e=>{let{onFinishFailed:t}=this.callbacks;t&&t(e)})}};function O_(e){let t=C.useRef(null),[,n]=C.useState({});return t.current||(e?t.current=e:t.current=new D_(()=>{n({})}).getForm()),[t.current]}var k_=C.createContext({triggerFormChange:()=>{},triggerFormFinish:()=>{},registerForm:()=>{},unregisterForm:()=>{}}),A_=({validateMessages:e,onFormChange:t,onFormFinish:n,children:r})=>{let i=C.useContext(k_),a=C.useRef({});return C.createElement(k_.Provider,{value:{...i,validateMessages:{...i.validateMessages,...e},triggerFormChange:(e,n)=>{t&&t(e,{changedFields:n,forms:a.current}),i.triggerFormChange(e,n)},triggerFormFinish:(e,t)=>{n&&n(e,{values:t,forms:a.current}),i.triggerFormFinish(e,t)},registerForm:(e,t)=>{e&&(a.current={...a.current,[e]:t}),i.registerForm(e,t)},unregisterForm:e=>{let t={...a.current};delete t[e],a.current=t,i.unregisterForm(e)}}},r)};function j_(){return j_=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let g=C.useRef(null),_=C.useContext(k_),[v]=O_(r),{useSubscribe:y,setInitialValues:b,setCallbacks:x,setValidateMessages:S,setPreserve:w,destroyForm:T}=v.getInternalHooks(Dg);C.useImperativeHandle(h,()=>({...v,nativeElement:g.current})),C.useEffect(()=>(_.registerForm(e,v),()=>{_.unregisterForm(e)}),[_,v,e]),S({..._.validateMessages,...s}),x({onValuesChange:l,onFieldsChange:(t,...n)=>{_.triggerFormChange(e,t),u&&u(t,...n)},onFinish:t=>{_.triggerFormFinish(e,t),d&&d(t)},onFinishFailed:f}),w(i);let E=C.useRef(null);b(t,!E.current),E.current||=!0,C.useEffect(()=>()=>T(p),[]);let D,O=typeof a==`function`;D=O?a(v.getFieldsValue(!0),v):a,y(!O);let k=C.useRef(null);C.useEffect(()=>{u_(k.current||[],n||[])||v.setFields(n||[]),k.current=n},[n,v]);let A=C.useMemo(()=>({...v,validateTrigger:c}),[v,c]),j=C.createElement(Ag.Provider,{value:null},C.createElement(kg.Provider,{value:A},D));return o===!1?j:C.createElement(o,j_({},m,{ref:g,onSubmit:e=>{e.preventDefault(),e.stopPropagation(),v.submit()},onReset:e=>{e.preventDefault(),v.resetFields(),m.onReset?.(e)}}),j)};function N_(e){try{return JSON.stringify(e)}catch{return Math.random()}}function P_(...e){let[t,n={}]=e,r=bte(n)?{form:n}:n,i=r.form,[a,o]=(0,C.useState)(()=>typeof t==`function`?t({}):void 0),s=(0,C.useMemo)(()=>N_(a),[a]),c=(0,C.useRef)(s);c.current=s;let l=(0,C.useContext)(kg),u=i||l,d=u&&u._init,{getFieldsValue:f,getInternalHooks:p}=u,{registerWatch:m}=p(Dg),h=Rn((e,n)=>{let i=r.preserve?n??f(!0):e??f(),s=typeof t==`function`?t(i):or(i,o_(t));N_(a)!==N_(s)&&o(s)});return(0,C.useEffect)(()=>{d&&h()},[d,typeof t==`function`?t:JSON.stringify(t)]),(0,C.useEffect)(()=>{if(d)return m((e,t)=>{h(e,t)})},[d]),a}var F_=C.forwardRef(M_);F_.FormProvider=A_,F_.Field=x_,F_.List=S_,F_.useForm=O_,F_.useWatch=P_;var I_=C.createContext({labelAlign:`right`,layout:`horizontal`,itemRef:()=>{}}),L_=C.createContext(null),R_=e=>{let t=Cr(e,[`prefixCls`]);return C.createElement(A_,{...t})},z_=C.createContext({prefixCls:``}),B_=C.createContext({}),V_=({children:e,status:t,override:n})=>{let r=C.useContext(B_),i=C.useMemo(()=>{let e={...r};return n&&delete e.isFormItemInput,t&&(delete e.status,delete e.hasFeedback,delete e.feedbackIcon),e},[t,n,r]);return C.createElement(B_.Provider,{value:i},e)},H_=C.createContext(void 0),U_=e=>{let{space:t,form:n,children:r}=e;if(!pd(r))return null;let i=r;return n&&(i=C.createElement(V_,{override:!0,status:!0},i)),t&&(i=C.createElement(Hm,null,i)),i},W_=e=>{if(zn()&&window.document.documentElement){let t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(e=>e in n.style)}return!1},G_=(e,t)=>{if(!W_(e))return!1;let n=document.createElement(`div`),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function K_(e,t){return!Array.isArray(e)&&t!==void 0?G_(e,t):W_(e)}var Xte=()=>zn()&&window.document.documentElement;function q_(e,t,n){return(0,C.useMemo)(()=>({trap:t??!0,focusTriggerAfterClose:n??!0,...e}),[e,t,n])}var J_=e=>{let{prefixCls:t,className:n,style:r,size:i,shape:a}=e,o=q({[`${t}-lg`]:i===`large`,[`${t}-sm`]:i===`small`}),s=q({[`${t}-circle`]:a===`circle`,[`${t}-square`]:a===`square`,[`${t}-round`]:a===`round`}),c=C.useMemo(()=>md(i)?{width:i,height:i,lineHeight:`${i}px`}:{},[i]);return C.createElement(`span`,{className:q(t,o,s,n),style:{...c,...r}})},Zte=new Ro(`ant-skeleton-loading`,{"0%":{backgroundPosition:`100% 50%`},"100%":{backgroundPosition:`0 50%`}}),Y_=e=>({height:e,lineHeight:J(e)}),X_=e=>({width:e,...Y_(e)}),Qte=e=>({background:e.skeletonLoadingBackground,backgroundSize:`400% 100%`,animationName:Zte,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:`ease`,animationIterationCount:`infinite`}),Z_=(e,t)=>({width:t(e).mul(5).equal(),minWidth:t(e).mul(5).equal(),...Y_(e)}),$te=e=>{let{skeletonAvatarCls:t,gradientFromColor:n,controlHeight:r,controlHeightLG:i,controlHeightSM:a}=e;return{[t]:{display:`inline-block`,verticalAlign:`top`,background:n,...X_(r)},[`${t}${t}-circle`]:{borderRadius:`50%`},[`${t}${t}-lg`]:{...X_(i)},[`${t}${t}-sm`]:{...X_(a)}}},ene=e=>{let{controlHeight:t,borderRadiusSM:n,skeletonInputCls:r,controlHeightLG:i,controlHeightSM:a,gradientFromColor:o,calc:s}=e;return{[r]:{display:`inline-block`,verticalAlign:`top`,background:o,borderRadius:n,...Z_(t,s)},[`${r}-lg`]:{...Z_(i,s)},[`${r}-sm`]:{...Z_(a,s)}}},Q_=e=>{let{gradientFromColor:t,borderRadiusSM:n,imageSizeBase:r,calc:i}=e;return{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,verticalAlign:`middle`,background:t,borderRadius:n,...X_(i(r).mul(2).equal())}},tne=e=>({[e.skeletonNodeCls]:{...Q_(e)}}),nne=e=>{let{skeletonImageCls:t,imageSizeBase:n,calc:r}=e;return{[t]:{...Q_(e),[`${t}-path`]:{fill:`#bfbfbf`},[`${t}-svg`]:{...X_(n),maxWidth:r(n).mul(4).equal(),maxHeight:r(n).mul(4).equal()},[`${t}-svg${t}-svg-circle`]:{borderRadius:`50%`}},[`${t}${t}-circle`]:{borderRadius:`50%`}}},$_=(e,t,n)=>{let{skeletonButtonCls:r}=e;return{[`${n}${r}-circle`]:{width:t,minWidth:t,borderRadius:`50%`},[`${n}${r}-round`]:{borderRadius:t}}},ev=(e,t)=>({width:t(e).mul(2).equal(),minWidth:t(e).mul(2).equal(),...Y_(e)}),rne=e=>{let{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:r,controlHeightLG:i,controlHeightSM:a,gradientFromColor:o,calc:s}=e;return{[n]:{display:`inline-block`,verticalAlign:`top`,background:o,borderRadius:t,width:s(r).mul(2).equal(),minWidth:s(r).mul(2).equal(),...ev(r,s)},...$_(e,r,n),[`${n}-lg`]:{...ev(i,s)},...$_(e,i,`${n}-lg`),[`${n}-sm`]:{...ev(a,s)},...$_(e,a,`${n}-sm`)}},ine=e=>{let{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:r,skeletonParagraphCls:i,skeletonButtonCls:a,skeletonInputCls:o,skeletonNodeCls:s,skeletonImageCls:c,controlHeight:l,controlHeightLG:u,controlHeightSM:d,gradientFromColor:f,padding:p,marginSM:m,borderRadius:h,titleHeight:g,blockRadius:_,paragraphLiHeight:v,controlHeightXS:y,paragraphMarginTop:b}=e;return{[t]:{display:`table`,width:`100%`,[`${t}-header`]:{display:`table-cell`,paddingInlineEnd:p,verticalAlign:`top`,[n]:{display:`inline-block`,verticalAlign:`top`,background:f,...X_(l)},[`${n}-circle`]:{borderRadius:`50%`},[`${n}-lg`]:{...X_(u)},[`${n}-sm`]:{...X_(d)}},[`${t}-section`]:{display:`table-cell`,width:`100%`,verticalAlign:`top`,[r]:{width:`100%`,height:g,background:f,borderRadius:_,[`+ ${i}`]:{marginBlockStart:d}},[i]:{padding:0,"> li":{width:`100%`,height:v,listStyle:`none`,background:f,borderRadius:_,"+ li":{marginBlockStart:y}}},[`${i}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:`61%`}},[`&-round ${t}-section`]:{[`${r}, ${i} > li`]:{borderRadius:h}}},[`${t}-with-avatar ${t}-section`]:{[r]:{marginBlockStart:m,[`+ ${i}`]:{marginBlockStart:b}}},[`${t}${t}-element`]:{display:`inline-block`,width:`auto`,...rne(e),...$te(e),...ene(e),...tne(e),...nne(e)},[`${t}${t}-block`]:{width:`100%`,[a]:{width:`100%`},[o]:{width:`100%`}},[`${t}${t}-active`]:{[`
+ `]:{borderRadius:0},[`> ${t}-item:last-child`]:{borderBottom:0},[`> ${t}-item > ${t}-panel`]:{backgroundColor:i,borderTop:0},[`> ${t}-item > ${t}-panel > ${t}-body`]:{padding:r}}}},jh=e=>{let{componentCls:t,paddingSM:n}=e;return{[`${t}-ghost`]:{backgroundColor:`transparent`,border:0,[`> ${t}-item`]:{borderBottom:0,[`> ${t}-panel`]:{backgroundColor:`transparent`,border:0,[`> ${t}-body`]:{paddingBlock:n}}}}}},Mh=il(`Collapse`,e=>{let t=_s(e,{collapseHeaderPaddingSM:`${J(e.paddingXS)} ${J(e.paddingSM)}`,collapseHeaderPaddingLG:`${J(e.padding)} ${J(e.paddingLG)}`,collapsePanelBorderRadius:e.borderRadiusLG});return[Oh(t),Ah(t),jh(t),kh(t),Jm(t)]},e=>({headerPadding:`${e.paddingSM}px ${e.padding}px`,headerBg:e.colorFillAlter,contentPadding:`${e.padding}px 16px`,contentBg:e.colorBgContainer,borderlessContentPadding:`${e.paddingXXS}px 16px ${e.padding}px`,borderlessContentBg:`transparent`})),Nh=Object.assign(C.forwardRef((e,t)=>{let{getPrefixCls:n,direction:r,expandIcon:i,className:a,style:o,classNames:s,styles:c}=ui(`collapse`),{prefixCls:l,className:u,rootClassName:d,style:f,bordered:p=!0,ghost:m,size:h,expandIconPlacement:g,expandIconPosition:_,children:v,destroyInactivePanel:y,destroyOnHidden:b,expandIcon:x,classNames:S,styles:w}=e,T=Pm(e=>h??e??`middle`),E=n(`collapse`,l),D=n(),[O,k]=Mh(E),A=g??_??`start`,j={...e,size:T,bordered:p,expandIconPlacement:A},[M,N]=Id([s,S],[c,w],{props:j}),P=x??i,F=C.useCallback((e={})=>Fp(typeof P==`function`?P(e):C.createElement(bh,{rotate:e.isActive?r===`rtl`?-90:90:void 0,"aria-label":e.isActive?`expanded`:`collapsed`}),e=>({className:q(e.className,`${E}-arrow`)})),[P,E,r]),I=q(`${E}-icon-placement-${A}`,{[`${E}-borderless`]:!p,[`${E}-rtl`]:r===`rtl`,[`${E}-ghost`]:!!m,[`${E}-large`]:T===`large`,[`${E}-small`]:T===`small`},a,u,d,O,k,M.root),L=C.useMemo(()=>({...Om(D),motionAppear:!1,leavedClassName:`${E}-panel-hidden`}),[D,E]),R=C.useMemo(()=>v?wr(v).map(e=>e):null,[v]);return C.createElement(Eh,{ref:t,openMotion:L,...Cr(e,[`rootClassName`]),expandIcon:F,prefixCls:E,className:I,style:{...N.root,...o,...f},classNames:M,styles:N,destroyOnHidden:b??y},R)}),{Panel:Dh}),Ph=e=>e instanceof vh?e:new vh(e),Fh=(e,t)=>{let{r:n,g:r,b:i,a}=e.toRgb(),o=new _h(e.toRgbString()).onBackground(t).toHsv();return a<=.5?o.v>.5:n*.299+r*.587+i*.114>192},Ih=e=>{let{paddingInline:t,onlyIconSize:n,borderColorDisabled:r}=e;return _s(e,{buttonPaddingHorizontal:t,buttonPaddingVertical:0,buttonIconOnlyFontSize:n,colorBorderDisabled:r})},Lh=e=>{let t=e.contentFontSize??e.fontSize,n=e.contentFontSizeSM??e.fontSize,r=e.contentFontSizeLG??e.fontSizeLG,i=e.contentLineHeight??ks(t),a=e.contentLineHeightSM??ks(n),o=e.contentLineHeightLG??ks(r),s=Fh(new vh(e.colorBgSolid),`#fff`)?`#000`:`#fff`,c=Os.reduce((t,n)=>({...t,[`${n}ShadowColor`]:`0 ${J(e.controlOutlineWidth)} 0 ${Vc(e[`${n}1`],e.colorBgContainer)}`}),{}),l=e.colorBgContainerDisabled,u=e.colorBgContainerDisabled;return{...c,fontWeight:400,iconGap:e.marginXS,defaultShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlTmpOutline}`,primaryShadow:`0 ${e.controlOutlineWidth}px 0 ${e.controlOutline}`,dangerShadow:`0 ${e.controlOutlineWidth}px 0 ${e.colorErrorOutline}`,primaryColor:e.colorTextLightSolid,dangerColor:e.colorTextLightSolid,borderColorDisabled:e.colorBorderDisabled,defaultGhostColor:e.colorBgContainer,ghostBg:`transparent`,defaultGhostBorderColor:e.colorBgContainer,paddingInline:e.paddingContentHorizontal-e.lineWidth,paddingInlineLG:e.paddingContentHorizontal-e.lineWidth,paddingInlineSM:8-e.lineWidth,onlyIconSize:`inherit`,onlyIconSizeSM:`inherit`,onlyIconSizeLG:`inherit`,groupBorderColor:e.colorPrimaryHover,linkHoverBg:`transparent`,textTextColor:e.colorText,textTextHoverColor:e.colorText,textTextActiveColor:e.colorText,textHoverBg:e.colorFillTertiary,defaultColor:e.colorText,defaultBg:e.colorBgContainer,defaultBorderColor:e.colorBorder,defaultBorderColorDisabled:e.colorBorder,defaultHoverBg:e.colorBgContainer,defaultHoverColor:e.colorPrimaryHover,defaultHoverBorderColor:e.colorPrimaryHover,defaultActiveBg:e.colorBgContainer,defaultActiveColor:e.colorPrimaryActive,defaultActiveBorderColor:e.colorPrimaryActive,solidTextColor:s,contentFontSize:t,contentFontSizeSM:n,contentFontSizeLG:r,contentLineHeight:i,contentLineHeightSM:a,contentLineHeightLG:o,paddingBlock:Math.max((e.controlHeight-t*i)/2-e.lineWidth,0),paddingBlockSM:Math.max((e.controlHeightSM-n*a)/2-e.lineWidth,0),paddingBlockLG:Math.max((e.controlHeightLG-r*o)/2-e.lineWidth,0),defaultBgDisabled:l,dashedBgDisabled:u}},Rh=e=>{let{componentCls:t,antCls:n,lineWidth:r}=e,[i,a]=sl(n,`btn`);return{[t]:[{[i(`border-width`)]:r,[i(`border-color`)]:`#000`,[i(`border-color-hover`)]:a(`border-color`),[i(`border-color-active`)]:a(`border-color`),[i(`border-color-disabled`)]:a(`border-color`),[i(`border-style`)]:`solid`,[i(`text-color`)]:`#000`,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`),[i(`text-color-disabled`)]:a(`text-color`),[i(`bg-color`)]:`#ddd`,[i(`bg-color-hover`)]:a(`bg-color`),[i(`bg-color-active`)]:a(`bg-color`),[i(`bg-color-disabled`)]:e.colorBgContainerDisabled,[i(`bg-color-container`)]:e.colorBgContainer,[i(`shadow`)]:`none`},{border:[a(`border-width`),a(`border-style`),a(`border-color`)].join(` `),color:a(`text-color`),backgroundColor:a(`bg-color`),[`&:not(:disabled):not(${t}-disabled)`]:{"&:hover":{border:[a(`border-width`),a(`border-style`),a(`border-color-hover`)].join(` `),color:a(`text-color-hover`),backgroundColor:a(`bg-color-hover`)},"&:active":{border:[a(`border-width`),a(`border-style`),a(`border-color-active`)].join(` `),color:a(`text-color-active`),backgroundColor:a(`bg-color-active`)}}},{[`&${t}-variant-solid`]:{[i(`solid-bg-color`)]:a(`color-base`),[i(`solid-bg-color-hover`)]:a(`color-hover`),[i(`solid-bg-color-active`)]:a(`color-active`),[i(`border-color`)]:`transparent`,[i(`text-color`)]:e.colorTextLightSolid,[i(`bg-color`)]:a(`solid-bg-color`),[i(`bg-color-hover`)]:a(`solid-bg-color-hover`),[i(`bg-color-active`)]:a(`solid-bg-color-active`),boxShadow:a(`shadow`)},[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`border-color`)]:a(`color-base`),[i(`border-color-hover`)]:a(`color-hover`),[i(`border-color-active`)]:a(`color-active`),[i(`bg-color`)]:a(`bg-color-container`),[i(`text-color`)]:a(`color-base`),[i(`text-color-hover`)]:a(`color-hover`),[i(`text-color-active`)]:a(`color-active`),boxShadow:a(`shadow`)},[`&${t}-variant-dashed`]:{[i(`border-style`)]:`dashed`,[i(`bg-color-disabled`)]:e.dashedBgDisabled},[`&${t}-variant-filled`]:{[i(`border-color`)]:`transparent`,[i(`text-color`)]:a(`color-base`),[i(`bg-color`)]:a(`color-light`),[i(`bg-color-hover`)]:a(`color-light-hover`),[i(`bg-color-active`)]:a(`color-light-active`)},[`&${t}-variant-text, &${t}-variant-link`]:{[i(`border-color`)]:`transparent`,[i(`text-color`)]:a(`color-base`),[i(`text-color-hover`)]:a(`color-hover`),[i(`text-color-active`)]:a(`color-active`),[i(`bg-color`)]:`transparent`,[i(`bg-color-hover`)]:`transparent`,[i(`bg-color-active`)]:`transparent`,[`&:disabled, &${e.componentCls}-disabled`]:{background:`transparent`,borderColor:`transparent`}},[`&${t}-variant-text`]:{[i(`bg-color-hover`)]:a(`color-light`),[i(`bg-color-active`)]:a(`color-light-active`)}},{[`&${t}-variant-link`]:{[i(`color-base`)]:e.colorLink,[i(`color-hover`)]:e.colorLinkHover,[i(`color-active`)]:e.colorLinkActive,[i(`bg-color-hover`)]:e.linkHoverBg},[`&${t}-color-primary`]:{[i(`color-base`)]:e.colorPrimary,[i(`color-hover`)]:e.colorPrimaryHover,[i(`color-active`)]:e.colorPrimaryActive,[i(`color-light`)]:e.colorPrimaryBg,[i(`color-light-hover`)]:e.colorPrimaryBgHover,[i(`color-light-active`)]:e.colorPrimaryBorder,[i(`shadow`)]:e.primaryShadow,[`&${t}-variant-solid`]:{[i(`text-color`)]:e.primaryColor,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)}},[`&${t}-color-dangerous`]:{[i(`color-base`)]:e.colorError,[i(`color-hover`)]:e.colorErrorHover,[i(`color-active`)]:e.colorErrorActive,[i(`color-light`)]:e.colorErrorBg,[i(`color-light-hover`)]:e.colorErrorBgFilledHover,[i(`color-light-active`)]:e.colorErrorBgActive,[i(`shadow`)]:e.dangerShadow,[`&${t}-variant-solid`]:{[i(`text-color`)]:e.dangerColor,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)}},[`&${t}-color-default`]:{[i(`solid-bg-color`)]:e.colorBgSolid,[i(`solid-bg-color-hover`)]:e.colorBgSolidHover,[i(`solid-bg-color-active`)]:e.colorBgSolidActive,[i(`color-base`)]:e.defaultBorderColor,[i(`color-hover`)]:e.defaultHoverBorderColor,[i(`color-active`)]:e.defaultActiveBorderColor,[i(`color-light`)]:e.colorFillTertiary,[i(`color-light-hover`)]:e.colorFillSecondary,[i(`color-light-active`)]:e.colorFill,[i(`text-color`)]:e.defaultColor,[i(`text-color-hover`)]:e.defaultHoverColor,[i(`text-color-active`)]:e.defaultActiveColor,[i(`shadow`)]:e.defaultShadow,[`&${t}-variant-outlined`]:{[i(`bg-color-disabled`)]:e.defaultBgDisabled},[`&${t}-variant-solid`]:{[i(`text-color`)]:e.solidTextColor,[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)},[`&${t}-variant-filled, &${t}-variant-text`]:{[i(`text-color-hover`)]:a(`text-color`),[i(`text-color-active`)]:a(`text-color`)},[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`text-color`)]:e.defaultColor,[i(`text-color-hover`)]:e.defaultHoverColor,[i(`text-color-active`)]:e.defaultActiveColor,[i(`bg-color-container`)]:e.defaultBg,[i(`bg-color-hover`)]:e.defaultHoverBg,[i(`bg-color-active`)]:e.defaultActiveBg},[`&${t}-variant-text`]:{[i(`text-color`)]:e.textTextColor,[i(`text-color-hover`)]:e.textTextHoverColor,[i(`text-color-active`)]:e.textTextActiveColor,[i(`bg-color-hover`)]:e.textHoverBg},[`&${t}-background-ghost`]:{[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`text-color`)]:e.defaultGhostColor,[i(`border-color`)]:e.defaultGhostBorderColor}}}},Os.map(n=>{let r=e[`${n}6`],a=e[`${n}1`],o=e[`${n}Hover`],s=e[`${n}2`],c=e[`${n}3`],l=e[`${n}Active`],u=e[`${n}ShadowColor`];return{[`&${t}-color-${n}`]:{[i(`color-base`)]:r,[i(`color-hover`)]:o,[i(`color-active`)]:l,[i(`color-light`)]:a,[i(`color-light-hover`)]:s,[i(`color-light-active`)]:c,[i(`shadow`)]:u}}}),{[`&:disabled, &${e.componentCls}-disabled`]:{cursor:`not-allowed`,borderColor:e.colorBorderDisabled,background:a(`bg-color-disabled`),color:e.colorTextDisabled,boxShadow:`none`}},{[`&${t}-background-ghost`]:{[i(`bg-color`)]:e.ghostBg,[i(`bg-color-hover`)]:e.ghostBg,[i(`bg-color-active`)]:e.ghostBg,[i(`shadow`)]:`none`,[`&${t}-variant-outlined, &${t}-variant-dashed`]:{[i(`bg-color-hover`)]:e.ghostBg,[i(`bg-color-active`)]:e.ghostBg}}}]}},zh=e=>{let{componentCls:t,iconCls:n,fontWeight:r,opacityLoading:i,motionDurationSlow:a,motionEaseInOut:o,iconGap:s,calc:c}=e;return{[t]:{outline:`none`,position:`relative`,display:`inline-flex`,gap:s,alignItems:`center`,justifyContent:`center`,fontWeight:r,whiteSpace:`nowrap`,textAlign:`center`,backgroundImage:`none`,cursor:`pointer`,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,userSelect:`none`,touchAction:`manipulation`,...uh(),"&:disabled > *":{pointerEvents:`none`},[`${t}-icon > svg`]:Xc(),"> a":{color:`currentColor`},"&:not(:disabled)":$c(e),[`&${t}-two-chinese-chars::first-letter`]:{letterSpacing:`0.34em`},[`&${t}-two-chinese-chars > *:not(${n})`]:{marginInlineEnd:`-0.34em`,letterSpacing:`0.34em`},[`&${t}-icon-only`]:{paddingInline:0,[`&${t}-compact-item`]:{flex:`none`}},[`&${t}-loading`]:{opacity:i,cursor:`default`},[`${t}-loading-icon`]:{transition:[`width`,`opacity`,`margin`].map(e=>`${e} ${a} ${o}`).join(`,`)},[`&:not(${t}-icon-end)`]:{[`${t}-loading-icon-motion`]:{"&-appear-start, &-enter-start":{marginInlineEnd:c(s).mul(-1).equal()},"&-appear-active, &-enter-active":{marginInlineEnd:0},"&-leave-start":{marginInlineEnd:0},"&-leave-active":{marginInlineEnd:c(s).mul(-1).equal()}}},"&-icon-end":{flexDirection:`row-reverse`,[`${t}-loading-icon-motion`]:{"&-appear-start, &-enter-start":{marginInlineStart:c(s).mul(-1).equal()},"&-appear-active, &-enter-active":{marginInlineStart:0},"&-leave-start":{marginInlineStart:0},"&-leave-active":{marginInlineStart:c(s).mul(-1).equal()}}}}}},Bh=e=>({minWidth:e.controlHeight,paddingInline:0,borderRadius:`50%`}),Vh=(e,t=``)=>{let{componentCls:n,controlHeight:r,fontSize:i,borderRadius:a,buttonPaddingHorizontal:o,iconCls:s,buttonPaddingVertical:c,buttonIconOnlyFontSize:l}=e;return[{[t]:{fontSize:i,height:r,padding:`${J(c)} ${J(o)}`,borderRadius:a,[`&${n}-icon-only`]:{width:r,[s]:{fontSize:l}}}},{[`${n}${n}-circle${t}`]:Bh(e)},{[`${n}${n}-round${t}`]:{borderRadius:e.controlHeight,[`&:not(${n}-icon-only)`]:{paddingInline:e.buttonPaddingHorizontal}}}]},Hh=e=>Vh(_s(e,{fontSize:e.contentFontSize}),e.componentCls),Uh=e=>Vh(_s(e,{controlHeight:e.controlHeightSM,fontSize:e.contentFontSizeSM,padding:e.paddingXS,buttonPaddingHorizontal:e.paddingInlineSM,buttonPaddingVertical:0,borderRadius:e.borderRadiusSM,buttonIconOnlyFontSize:e.onlyIconSizeSM}),`${e.componentCls}-sm`),Wh=e=>Vh(_s(e,{controlHeight:e.controlHeightLG,fontSize:e.contentFontSizeLG,buttonPaddingHorizontal:e.paddingInlineLG,buttonPaddingVertical:0,borderRadius:e.borderRadiusLG,buttonIconOnlyFontSize:e.onlyIconSizeLG}),`${e.componentCls}-lg`),Gh=e=>{let{componentCls:t}=e;return{[t]:{[`&${t}-block`]:{width:`100%`}}}},Kh=il(`Button`,e=>{let t=Ih(e);return[zh(t),Hh(t),Uh(t),Wh(t),Gh(t),Rh(t),Xee(t)]},Lh,{unitless:{fontWeight:!0,contentLineHeight:!0,contentLineHeightSM:!0,contentLineHeightLG:!0}});function qh(e,t,n,r){let{focusElCls:i,focus:a,borderElCls:o}=n,s=o?`> *`:``,c=[`hover`,a?`focus`:null,`active`].filter(Boolean).map(e=>`&:${e} ${s}`).join(`,`);return{[`&-item:not(${t}-last-item)`]:{marginInlineEnd:e.calc(e.lineWidth).mul(-1).equal()},[`&-item:not(${r}-status-success)`]:{zIndex:2},"&-item":{[c]:{zIndex:3},...i?{[`&${i}`]:{zIndex:3}}:{},[`&[disabled] ${s}`]:{zIndex:0}}}}function Jh(e,t,n){let{borderElCls:r}=n,i=r?`> ${r}`:``;return{[`&-item:not(${t}-first-item):not(${t}-last-item) ${i}`]:{borderRadius:0},[`&-item:not(${t}-last-item)${t}-first-item`]:{[`& ${i}, &${e}-sm ${i}, &${e}-lg ${i}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&-item:not(${t}-first-item)${t}-last-item`]:{[`& ${i}, &${e}-sm ${i}, &${e}-lg ${i}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}function Yh(e,t={focus:!0}){let{componentCls:n}=e,{componentCls:r}=t,i=r||n,a=`${i}-compact`;return{[a]:{...qh(e,a,t,i),...Jh(i,a,t)}}}function Xh(e,t,n){return{[`&-item:not(${t}-last-item)`]:{marginBottom:e.calc(e.lineWidth).mul(-1).equal()},[`&-item:not(${n}-status-success)`]:{zIndex:2},"&-item":{"&:hover,&:focus,&:active":{zIndex:3},"&[disabled]":{zIndex:0}}}}function Zh(e,t){return{[`&-item:not(${t}-first-item):not(${t}-last-item)`]:{borderRadius:0},[`&-item${t}-first-item:not(${t}-last-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderEndEndRadius:0,borderEndStartRadius:0}},[`&-item${t}-last-item:not(${t}-first-item)`]:{[`&, &${e}-sm, &${e}-lg`]:{borderStartStartRadius:0,borderStartEndRadius:0}}}}function Qh(e){let t=`${e.componentCls}-compact-vertical`;return{[t]:{...Xh(e,t,e.componentCls),...Zh(e.componentCls,t)}}}var $h=e=>{let{antCls:t,componentCls:n,lineWidth:r,calc:i,colorBgContainer:a}=e,o=`${n}-variant-solid:not([disabled])`,s=i(r).mul(-1).equal(),[c,l]=sl(t,`btn`),u=e=>({[`${n}-compact${e?`-vertical`:``}-item`]:{[c(`compact-connect-border-color`)]:l(`bg-color-hover`),[`&${o}`]:{transition:`none`,[`& + ${o}:before`]:[{position:`absolute`,backgroundColor:l(`compact-connect-border-color`),content:`""`},e?{top:s,insetInline:s,height:r}:{insetBlock:s,insetInlineStart:s,width:r}],"&:hover:before":{display:`none`}}}});return[u(),u(!0),{[`${o}${n}-color-default`]:{[c(`compact-connect-border-color`)]:`color-mix(in srgb, ${l(`bg-color-hover`)} 75%, ${a})`}}]},eg=ol([`Button`,`compact`],e=>{let t=Ih(e);return[Yh(t),Qh(t),$h(t)]},Lh);function tg(e){if(gd(e)){let t=e?.delay;return t=md(t)?t:0,{loading:t<=0,delay:t}}return{loading:!!e,delay:0}}var ng={default:[`default`,`outlined`],primary:[`primary`,`solid`],dashed:[`default`,`dashed`],link:[`link`,`link`],text:[`default`,`text`]},rg=C.forwardRef((e,t)=>{let{_skipSemantic:n,loading:r=!1,prefixCls:i,color:a,variant:o,type:s,danger:c=!1,shape:l,size:u,disabled:d,className:f,rootClassName:p,children:m,icon:h,iconPosition:g,iconPlacement:_,ghost:v=!1,block:y=!1,htmlType:b=`button`,classNames:x,styles:S,style:w,autoInsertSpace:T,autoFocus:E,...D}=e,O=wr(m),k=s||`default`,{getPrefixCls:A,direction:j,autoInsertSpace:M,className:N,style:P,classNames:F,styles:I,loadingIcon:L,shape:R,color:z,variant:B}=ui(`button`),V=l||R||`default`,[H,U]=(0,C.useMemo)(()=>{if(a&&o)return[a,o];if(s||c){let e=ng[k]||[];return c?[`danger`,e[1]]:e}return z&&B?[z,B]:[`default`,`outlined`]},[a,o,s,c,z,B,k]),[W,ee]=(0,C.useMemo)(()=>v&&U===`solid`?[H,`outlined`]:[H,U],[H,U,v]),te=W===`danger`,ne=te?`dangerous`:W,re=T??M??!0,ie=A(`btn`,i),[ae,G]=Kh(ie),oe=(0,C.useContext)(Bp),K=d??oe,se=(0,C.useContext)(Rm),ce=(0,C.useMemo)(()=>tg(r),[r]),[le,ue]=(0,C.useState)(ce.loading),[de,fe]=(0,C.useState)(!1),pe=(0,C.useRef)(null),me=tr(t,pe),he=O.length===1&&!h&&!Hm(ee),ge=(0,C.useRef)(!0);C.useEffect(()=>(ge.current=!1,()=>{ge.current=!0}),[]),Vn(()=>{let e=null;ce.delay>0?e=setTimeout(()=>{e=null,ue(!0)},ce.delay):ue(ce.loading);function t(){e&&=(clearTimeout(e),null)}return t},[ce.delay,ce.loading]),(0,C.useEffect)(()=>{if(!pe.current||!re)return;let e=pe.current.textContent||``;he&&Bm(e)?de||fe(!0):de&&fe(!1)}),(0,C.useEffect)(()=>{E&&pe.current&&pe.current.focus()},[]);let _e=C.useCallback(t=>{if(le||K){t.preventDefault();return}e.onClick?.((`href`in e,t))},[e.onClick,le,K]),{compactSize:ve,compactItemClassnames:ye}=Im(ie,j),be=Pm(e=>u??ve??se??e),xe=le?`loading`:h,Se=_??g??`start`,Ce=Cr(D,[`navigate`]),we={...e,type:k,color:W,variant:ee,danger:te,shape:V,size:be,disabled:K,loading:le,iconPlacement:Se},[Te,Ee]=Id([n?void 0:F,x],[n?void 0:I,S],{props:we}),De=q(ie,ae,G,{[`${ie}-${V}`]:V!==`default`&&V!==`square`&&V,[`${ie}-${k}`]:k,[`${ie}-dangerous`]:c,[`${ie}-color-${ne}`]:ne,[`${ie}-variant-${ee}`]:ee,[`${ie}-lg`]:be===`large`,[`${ie}-sm`]:be===`small`,[`${ie}-icon-only`]:!m&&m!==0&&!!xe,[`${ie}-background-ghost`]:v&&!Hm(ee),[`${ie}-loading`]:le,[`${ie}-two-chinese-chars`]:de&&re&&!le,[`${ie}-block`]:y,[`${ie}-rtl`]:j===`rtl`,[`${ie}-icon-end`]:Se===`end`},ye,f,p,N,Te.root),Oe={...Ee.root,...P,...w},ke={className:Te.icon,style:Ee.icon},Ae=e=>C.createElement(Um,{prefixCls:ie,...ke},e),je=C.createElement(qm,{existIcon:!!h,prefixCls:ie,loading:le,mount:ge.current,...ke}),Me=gd(r)&&r.icon||L,Ne;Ne=h&&!le?Ae(h):r&&Me?Ae(Me):je;let Pe=pd(m)?jee(m,he&&re,Ee.content,Te.content):null;if(Ce.href!==void 0)return C.createElement(`a`,{...Ce,className:q(De,{[`${ie}-disabled`]:K}),href:K?void 0:Ce.href,style:Oe,onClick:_e,ref:me,tabIndex:K?-1:0,"aria-disabled":K},Ne,Pe);let Fe=C.createElement(`button`,{...D,type:b,className:De,style:Oe,onClick:_e,disabled:K,ref:me},Ne,Pe,ye&&C.createElement(eg,{prefixCls:ie}));return Hm(ee)||(Fe=C.createElement(Nm,{component:`Button`,disabled:le},Fe)),Fe});rg.Group=kee,rg.__ANT_BUTTON=!0;var ig=e=>{let{type:t,children:n,prefixCls:r,buttonProps:i,close:a,autoFocus:o,emitEvent:s,isSilent:c,quitOnNullishReturnValue:l,actionFn:u}=e,d=C.useRef(!1),f=C.useRef(null),[p,m]=Un(!1),h=(...e)=>{a?.(...e)};C.useEffect(()=>{let e=null;return o&&(e=setTimeout(()=>{f.current?.focus({preventScroll:!0})})),()=>{e&&clearTimeout(e)}},[o]);let g=e=>{vd(e)&&(m(!0),e.then((...e)=>{m(!1,!0),h.apply(void 0,e),d.current=!1},e=>{if(m(!1,!0),d.current=!1,!c?.())return Promise.reject(e)}))},_=e=>{if(d.current)return;if(d.current=!0,!u){h();return}let t;if(s){if(t=u(e),l&&!vd(t)){d.current=!1,h(e);return}}else if(u.length)t=u(a),d.current=!1;else if(t=u(),!vd(t)){h();return}g(t)};return C.createElement(rg,{...Vm(t),onClick:_,loading:p,prefixCls:r,...i,ref:f},n)},ag=C.createContext({}),{Provider:og}=ag,sg=()=>{let{autoFocusButton:e,cancelButtonProps:t,cancelTextLocale:n,isSilent:r,mergedOkCancel:i,rootPrefixCls:a,close:o,onCancel:s,onConfirm:c,onClose:l}=(0,C.useContext)(ag);return i?C.createElement(ig,{isSilent:r,actionFn:s,close:(...e)=>{o?.(...e),c?.(!1),l?.()},autoFocus:e===`cancel`,buttonProps:t,prefixCls:`${a}-btn`},n):null},cg=()=>{let{autoFocusButton:e,close:t,isSilent:n,okButtonProps:r,rootPrefixCls:i,okTextLocale:a,okType:o,onConfirm:s,onOk:c,onClose:l}=(0,C.useContext)(ag);return C.createElement(ig,{isSilent:n,type:o||`primary`,actionFn:c,close:(...e)=>{t?.(...e),s?.(!0),l?.()},autoFocus:e===`ok`,buttonProps:r,prefixCls:`${i}-btn`},a)},lg=C.createContext({});function ug(e,t,n){let r=t;return!r&&n&&(r=`${e}-${n}`),r}function dg(e,t){let n=e[`page${t?`Y`:`X`}Offset`],r=`scroll${t?`Top`:`Left`}`;if(typeof n!=`number`){let t=e.document;n=t.documentElement[r],typeof n!=`number`&&(n=t.body[r])}return n}function cte(e){let t=e.getBoundingClientRect(),n={left:t.left,top:t.top},r=e.ownerDocument,i=r.defaultView||r.parentWindow;return n.left+=dg(i),n.top+=dg(i,!0),n}function fg(e,t=!1){if(lp(e)){let n=e.nodeName.toLowerCase(),r=[`input`,`select`,`textarea`,`button`].includes(n)||e.isContentEditable||n===`a`&&!!e.getAttribute(`href`),i=e.getAttribute(`tabindex`),a=Number(i),o=null;return i&&!Number.isNaN(a)?o=a:r&&o===null&&(o=0),r&&e.disabled&&(o=null),o!==null&&(o>=0||t&&o<0)}return!1}function pg(e,t=!1){let n=[...e.querySelectorAll(`*`)].filter(e=>fg(e,t));return fg(e,t)&&n.unshift(e),n}function mg(e,t){if(!e)return;e.focus(t);let{cursor:n}=t||{};if(n&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){let t=e.value.length;switch(n){case`start`:e.setSelectionRange(0,0);break;case`end`:e.setSelectionRange(t,t);break;default:e.setSelectionRange(0,t)}}}var hg=null,gg=[],_g=new Map,vg=new Map;function yg(){return gg[gg.length-1]}function lte(e){let t=yg();if(e&&t){let n;for(let[e,r]of _g.entries())if(r===t){n=e;break}let r=vg.get(n);return!!r&&(r===e||r.contains(e))}return!1}function ute(e){let{activeElement:t}=document;return e===t||e.contains(t)}function bg(){let e=yg(),{activeElement:t}=document;if(!lte(t))if(e&&!ute(e)){let t=pg(e);(t.includes(hg)?hg:t[0])?.focus({preventScroll:!0})}else hg=t}function xg(e){if(e.key===`Tab`){let{activeElement:t}=document,n=pg(yg()),r=n[n.length-1];e.shiftKey&&t===n[0]?hg=r:!e.shiftKey&&t===r&&(hg=n[0])}}function dte(e,t){return e&&(_g.set(t,e),gg=gg.filter(t=>t!==e),gg.push(e),window.addEventListener(`focusin`,bg),window.addEventListener(`keydown`,xg,!0),bg()),()=>{hg=null,gg=gg.filter(t=>t!==e),_g.delete(t),vg.delete(t),gg.length===0&&(window.removeEventListener(`focusin`,bg),window.removeEventListener(`keydown`,xg,!0))}}function fte(e,t){let n=(0,C.useRef)(0),[r,i]=(0,C.useState)(0);(0,C.useEffect)(()=>{n.current=0},t),(0,C.useEffect)(()=>{let[t,r]=e(n.current);return r||(n.current+=1,i(e=>e+1)),t},[...t,r])}function Sg(e,t){let n=Bf(),r=(0,C.useRef)(t);return r.current=t,fte(t=>{if(!e)return[void 0,!0];let i=r.current();return i?[dte(i,n),!0]:[void 0,t>=1]},[n,e]),[e=>{e&&vg.set(n,e)}]}var pte=C.memo(({children:e})=>e,(e,{shouldUpdate:t})=>!t);function Cg(){return Cg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,className:r,style:i,title:a,ariaId:o,footer:s,closable:c,closeIcon:l,onClose:u,children:d,bodyStyle:f,bodyProps:p,modalRender:m,onMouseDown:h,onMouseUp:g,holderRef:_,visible:v,forceRender:y,width:b,height:x,classNames:S,styles:w,isFixedPos:T,focusTrap:E}=e,{panel:D}=C.useContext(lg),O=(0,C.useRef)(null),k=tr(_,D,O),[A]=Sg(v&&T&&E!==!1,()=>O.current);C.useImperativeHandle(t,()=>({focus:()=>{O.current?.focus({preventScroll:!0})}}));let j={};b!==void 0&&(j.width=b),x!==void 0&&(j.height=x);let M=s?C.createElement(`div`,{className:q(`${n}-footer`,S?.footer),style:{...w?.footer}},s):null,N=a?C.createElement(`div`,{className:q(`${n}-header`,S?.header),style:{...w?.header}},C.createElement(`div`,{className:q(`${n}-title`,S?.title),id:o,style:{...w?.title}},a)):null,P=(0,C.useMemo)(()=>typeof c==`object`&&c?c:c?{closeIcon:l??C.createElement(`span`,{className:`${n}-close-x`})}:{},[c,l,n]),F=Hu(P,!0),I=typeof c==`object`&&c.disabled,L=c?C.createElement(`button`,Cg({type:`button`,onClick:u,"aria-label":`Close`},F,{className:`${n}-close`,disabled:I}),P.closeIcon):null,R=C.createElement(`div`,{className:q(`${n}-container`,S?.container),style:w?.container},L,N,C.createElement(`div`,Cg({className:q(`${n}-body`,S?.body),style:{...f,...w?.body}},p),d),M);return C.createElement(`div`,{key:`dialog-element`,role:`dialog`,"aria-labelledby":a?o:null,"aria-modal":`true`,ref:k,style:{...i,...j},className:q(n,r),onMouseDown:h,onMouseUp:g,tabIndex:-1,onFocus:e=>{A(e.target)}},C.createElement(pte,{shouldUpdate:v||y},m?m(R):R))});function Tg(){return Tg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,title:r,style:i,className:a,visible:o,forceRender:s,destroyOnHidden:c,motionName:l,ariaId:u,onVisibleChanged:d,mousePosition:f}=e,p=(0,C.useRef)(null),m=(0,C.useRef)(null);C.useImperativeHandle(t,()=>({...m.current,inMotion:p.current.inMotion,enableMotion:p.current.enableMotion}));let[h,g]=C.useState(),_={};h&&(_.transformOrigin=h);function v(){if(!p.current?.nativeElement)return;let e=cte(p.current.nativeElement);g(f&&(f.x||f.y)?`${f.x-e.left}px ${f.y-e.top}px`:``)}return C.createElement(Lu,{visible:o,onVisibleChanged:d,onAppearPrepare:v,onEnterPrepare:v,forceRender:s,motionName:l,removeOnLeave:c,ref:p},({className:t,style:o},s)=>C.createElement(wg,Tg({},e,{ref:m,title:r,ariaId:u,prefixCls:n,holderRef:s,style:{...o,...i,..._},className:q(a,t)})))});function Eg(){return Eg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:t,style:n,visible:r,maskProps:i,motionName:a,className:o}=e;return C.createElement(Lu,{key:`mask`,visible:r,motionName:a,leavedClassName:`${t}-mask-hidden`},({className:e,style:r},a)=>C.createElement(`div`,Eg({ref:a,style:{...r,...n},className:q(`${t}-mask`,e,o)},i)))};function Dg(){return Dg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:t=`rc-dialog`,zIndex:n,visible:r=!1,focusTriggerAfterClose:i=!0,wrapStyle:a,wrapClassName:o,wrapProps:s,onClose:c,afterOpenChange:l,afterClose:u,transitionName:d,animation:f,closable:p=!0,mask:m=!0,maskTransitionName:h,maskAnimation:g,maskClosable:_=!0,maskStyle:v,maskProps:y,rootClassName:b,rootStyle:x,classNames:S,styles:w}=e,T=(0,C.useRef)(null),E=(0,C.useRef)(null),D=(0,C.useRef)(null),[O,k]=C.useState(r),[A,j]=C.useState(!1),M=Bf();function N(){fi(E.current,document.activeElement)||(T.current=document.activeElement)}function P(){fi(E.current,document.activeElement)||D.current?.focus()}function F(){if(k(!1),m&&T.current&&i){try{T.current.focus({preventScroll:!0})}catch{}T.current=null}O&&u?.()}function I(e){e?P():F(),l?.(e)}function L(e){c?.(e)}let R=(0,C.useRef)(!1),z=null;_&&(z=e=>{E.current===e.target&&R.current&&L(e)});function B(e){R.current=e.target===E.current}(0,C.useEffect)(()=>{r?(R.current=!1,k(!0),N(),E.current&&j(getComputedStyle(E.current).position===`fixed`)):O&&D.current.enableMotion()&&!D.current.inMotion()&&F()},[r]);let V={zIndex:n,...a,...w?.wrapper,display:O?null:`none`};return C.createElement(`div`,Dg({className:q(`${t}-root`,b),style:x},Hu(e,{data:!0})),C.createElement(hte,{prefixCls:t,visible:m&&r,motionName:ug(t,h,g),style:{zIndex:n,...v,...w?.mask},maskProps:y,className:S?.mask}),C.createElement(`div`,Dg({className:q(`${t}-wrap`,o,S?.wrapper),ref:E,onClick:z,onMouseDown:B,style:V},s),C.createElement(mte,Dg({},e,{isFixedPos:A,ref:D,closable:p,ariaId:M,prefixCls:t,visible:r&&O,onClose:L,onVisibleChanged:I,motionName:ug(t,d,f)}))))};function Og(){return Og=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{visible:t,getContainer:n,forceRender:r,destroyOnHidden:i=!1,afterClose:a,closable:o,panelRef:s,keyboard:c=!0,onClose:l}=e,[u,d]=C.useState(t),f=C.useMemo(()=>({panel:s}),[s]);return C.useEffect(()=>{t&&d(!0)},[t]),!r&&i&&!u?null:C.createElement(lg.Provider,{value:f},C.createElement(Zf,{open:t||r||u,onEsc:({top:e,event:t})=>{if(e&&c){t.stopPropagation(),l?.(t);return}},autoDestroy:!1,getContainer:n,autoLock:t||u},C.createElement(gte,Og({},e,{destroyOnHidden:i,afterClose:()=>{let{afterClose:e}=(o&&typeof o==`object`?o:{})||{};e?.(),a?.(),d(!1)}}))))},kg=`RC_FORM_INTERNAL_HOOKS`,Ag=()=>{xr(!1,`Can not find FormContext. Please make sure you wrap Field under Form.`)},jg=C.createContext({getFieldValue:Ag,getFieldsValue:Ag,getFieldError:Ag,getFieldWarning:Ag,getFieldsError:Ag,isFieldsTouched:Ag,isFieldTouched:Ag,isFieldValidating:Ag,isFieldsValidating:Ag,resetFields:Ag,setFields:Ag,setFieldValue:Ag,setFieldsValue:Ag,validateFields:Ag,submit:Ag,getInternalHooks:()=>(Ag(),{dispatch:Ag,initEntityValue:Ag,registerField:Ag,useSubscribe:Ag,setInitialValues:Ag,destroyForm:Ag,setCallbacks:Ag,registerWatch:Ag,getFields:Ag,setValidateMessages:Ag,setPreserve:Ag,getInitialValue:Ag})}),Mg=C.createContext(null);function Ng(e){return e==null?[]:Array.isArray(e)?e:[e]}function vte(e){return e&&!!e._init}function Pg(){return{default:`Validation error on field %s`,required:`%s is required`,enum:`%s must be one of %s`,whitespace:`%s cannot be empty`,date:{format:`%s date %s is invalid for format %s`,parse:`%s date could not be parsed, %s is invalid `,invalid:`%s date %s is invalid`},types:{string:`%s is not a %s`,method:`%s is not a %s (function)`,array:`%s is not an %s`,object:`%s is not an %s`,number:`%s is not a %s`,date:`%s is not a %s`,boolean:`%s is not a %s`,integer:`%s is not an %s`,float:`%s is not a %s`,regexp:`%s is not a valid %s`,email:`%s is not a valid %s`,tel:`%s is not a valid %s`,url:`%s is not a valid %s`,hex:`%s is not a valid %s`},string:{len:`%s must be exactly %s characters`,min:`%s must be at least %s characters`,max:`%s cannot be longer than %s characters`,range:`%s must be between %s and %s characters`},number:{len:`%s must equal %s`,min:`%s cannot be less than %s`,max:`%s cannot be greater than %s`,range:`%s must be between %s and %s`},array:{len:`%s must be exactly %s in length`,min:`%s cannot be less than %s in length`,max:`%s cannot be greater than %s in length`,range:`%s must be between %s and %s in length`},pattern:{mismatch:`%s value %s does not match pattern %s`},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Fg=Pg();function yte(e){try{return Function.toString.call(e).indexOf(`[native code]`)!==-1}catch{return typeof e==`function`}}function bte(e,t,n){if(rs())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var i=new(e.bind.apply(e,r));return n&&es(i,n.prototype),i}function Ig(e){var t=typeof Map==`function`?new Map:void 0;return Ig=function(e){if(e===null||!yte(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return bte(e,arguments,ns(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),es(n,e)},Ig(e)}var xte=/%[sdj%]/g,Ste=function(){};function Lg(e){if(!e||!e.length)return null;var t={};return e.forEach(function(e){var n=e.field;t[n]=t[n]||[],t[n].push(e)}),t}function Rg(e){var t=[...arguments].slice(1),n=0,r=t.length;return typeof e==`function`?e.apply(null,t):typeof e==`string`?e.replace(xte,function(e){if(e===`%%`)return`%`;if(n>=r)return e;switch(e){case`%s`:return String(t[n++]);case`%d`:return Number(t[n++]);case`%j`:try{return JSON.stringify(t[n++])}catch{return`[Circular]`}break;default:return e}}):e}function Cte(e){return e===`string`||e===`url`||e===`hex`||e===`email`||e===`date`||e===`pattern`||e===`tel`}function zg(e,t){return!!(e==null||t===`array`&&Array.isArray(e)&&!e.length||Cte(t)&&typeof e==`string`&&!e)}function wte(e,t,n){var r=[],i=0,a=e.length;function o(e){r.push.apply(r,Qr(e||[])),i++,i===a&&n(r)}e.forEach(function(e){t(e,o)})}function Bg(e,t,n){var r=0,i=e.length;function a(o){if(o&&o.length){n(o);return}var s=r;r+=1,se.max?r.push(Rg(i.messages[u].max,e.fullField,e.max)):o&&s&&(le.max)&&r.push(Rg(i.messages[u].range,e.fullField,e.min,e.max))},Gg=function(e,t,n,r,i,a){e.required&&(!n.hasOwnProperty(e.field)||zg(t,a||e.type))&&r.push(Rg(i.messages.required,e.fullField))},Kg,Mte=(function(){if(Kg)return Kg;var e=`[a-fA-F\\d:]`,t=function(t){return t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=${e})|(?<=${e})(?=\\s|\$))`:``},n=`(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}`,r=`[a-fA-F\\d]{1,4}`,i=`(?:${[`(?:${r}:){7}(?:${r}|:)`,`(?:${r}:){6}(?:${n}|:${r}|:)`,`(?:${r}:){5}(?::${n}|(?::${r}){1,2}|:)`,`(?:${r}:){4}(?:(?::${r}){0,1}:${n}|(?::${r}){1,3}|:)`,`(?:${r}:){3}(?:(?::${r}){0,2}:${n}|(?::${r}){1,4}|:)`,`(?:${r}:){2}(?:(?::${r}){0,3}:${n}|(?::${r}){1,5}|:)`,`(?:${r}:){1}(?:(?::${r}){0,4}:${n}|(?::${r}){1,6}|:)`,`(?::(?:(?::${r}){0,5}:${n}|(?::${r}){1,7}|:))`].join(`|`)})(?:%[0-9a-zA-Z]{1,})?`,a=RegExp(`(?:^${n}\$)|(?:^${i}\$)`),o=RegExp(`^${n}\$`),s=RegExp(`^${i}\$`),c=function(e){return e&&e.exact?a:RegExp(`(?:${t(e)}${n}${t(e)})|(?:${t(e)}${i}${t(e)})`,`g`)};c.v4=function(e){return e&&e.exact?o:RegExp(`${t(e)}${n}${t(e)}`,`g`)},c.v6=function(e){return e&&e.exact?s:RegExp(`${t(e)}${i}${t(e)}`,`g`)};var l=`(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|${c.v4().source}|${c.v6().source}|(?:(?:[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"]*)?`;return Kg=RegExp(`(?:^${l}\$)`,`i`),Kg}),qg={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,tel:/^(\+[0-9]{1,3}[-\s\u2011]?)?(\([0-9]{1,4}\)[-\s\u2011]?)?([0-9]+[-\s\u2011]?)*[0-9]+$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Jg={integer:function(e){return Jg.number(e)&&parseInt(e,10)===e},float:function(e){return Jg.number(e)&&!Jg.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime==`function`&&typeof e.getMonth==`function`&&typeof e.getYear==`function`&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e==`number`},object:function(e){return Bo(e)===`object`&&!Jg.array(e)},method:function(e){return typeof e==`function`},email:function(e){return typeof e==`string`&&e.length<=320&&!!e.match(qg.email)},tel:function(e){return typeof e==`string`&&e.length<=32&&!!e.match(qg.tel)},url:function(e){return typeof e==`string`&&e.length<=2048&&!!e.match(Mte())},hex:function(e){return typeof e==`string`&&!!e.match(qg.hex)}},Yg={required:Gg,whitespace:function(e,t,n,r,i){(/^\s+$/.test(t)||t===``)&&r.push(Rg(i.messages.whitespace,e.fullField))},type:function(e,t,n,r,i){if(e.required&&t===void 0){Gg(e,t,n,r,i);return}var a=[`integer`,`float`,`array`,`regexp`,`object`,`method`,`email`,`tel`,`number`,`date`,`url`,`hex`],o=e.type;a.indexOf(o)>-1?Jg[o](t)||r.push(Rg(i.messages.types[o],e.fullField,e.type)):o&&Bo(t)!==e.type&&r.push(Rg(i.messages.types[o],e.fullField,e.type))},range:jte,enum:kte,pattern:Ate},Nte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i)}n(a)},Pte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(t==null&&!e.required)return n();Yg.required(e,t,r,a,i,`array`),t!=null&&(Yg.type(e,t,r,a,i),Yg.range(e,t,r,a,i))}n(a)},Fte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&Yg.type(e,t,r,a,i)}n(a)},Ite=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t,`date`)&&!e.required)return n();if(Yg.required(e,t,r,a,i),!zg(t,`date`)){var o=t instanceof Date?t:new Date(t);Yg.type(e,o,r,a,i),o&&Yg.range(e,o.getTime(),r,a,i)}}n(a)},Lte=`enum`,Rte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&Yg[Lte](e,t,r,a,i)}n(a)},zte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&(Yg.type(e,t,r,a,i),Yg.range(e,t,r,a,i))}n(a)},Bte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&(Yg.type(e,t,r,a,i),Yg.range(e,t,r,a,i))}n(a)},Vte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&Yg.type(e,t,r,a,i)}n(a)},Hte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(t===``&&(t=void 0),zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&(Yg.type(e,t,r,a,i),Yg.range(e,t,r,a,i))}n(a)},Ute=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),t!==void 0&&Yg.type(e,t,r,a,i)}n(a)},Wte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t,`string`)&&!e.required)return n();Yg.required(e,t,r,a,i),zg(t,`string`)||Yg.pattern(e,t,r,a,i)}n(a)},Gte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t)&&!e.required)return n();Yg.required(e,t,r,a,i),zg(t)||Yg.type(e,t,r,a,i)}n(a)},Kte=function(e,t,n,r,i){var a=[],o=Array.isArray(t)?`array`:Bo(t);Yg.required(e,t,r,a,i,o),n(a)},qte=function(e,t,n,r,i){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t,`string`)&&!e.required)return n();Yg.required(e,t,r,a,i,`string`),zg(t,`string`)||(Yg.type(e,t,r,a,i),Yg.range(e,t,r,a,i),Yg.pattern(e,t,r,a,i),e.whitespace===!0&&Yg.whitespace(e,t,r,a,i))}n(a)},Xg=function(e,t,n,r,i){var a=e.type,o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(zg(t,a)&&!e.required)return n();Yg.required(e,t,r,o,i,a),zg(t,a)||Yg.type(e,t,r,o,i)}n(o)},Zg={string:qte,method:Vte,number:Hte,boolean:Fte,regexp:Gte,integer:Bte,float:zte,array:Pte,object:Ute,enum:Rte,pattern:Wte,date:Ite,url:Xg,hex:Xg,email:Xg,tel:Xg,required:Kte,any:Nte},Qg=function(){function e(t){Xo(this,e),qo(this,`rules`,null),qo(this,`_messages`,Fg),this.define(t)}return Qo(e,[{key:`define`,value:function(e){var t=this;if(!e)throw Error(`Cannot configure a schema with no rules`);if(Bo(e)!==`object`||Array.isArray(e))throw Error(`Rules must be an object`);this.rules={},Object.keys(e).forEach(function(n){var r=e[n];t.rules[n]=Array.isArray(r)?r:[r]})}},{key:`messages`,value:function(e){return e&&(this._messages=Ug(Pg(),e)),this._messages}},{key:`validate`,value:function(t){var n=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},a=t,o=r,s=i;if(typeof o==`function`&&(s=o,o={}),!this.rules||Object.keys(this.rules).length===0)return s&&s(null,a),Promise.resolve(a);function c(e){var t=[],n={};function r(e){if(Array.isArray(e)){var n;t=(n=t).concat.apply(n,Qr(e))}else t.push(e)}for(var i=0;i0&&arguments[0]!==void 0?arguments[0]:[],l=Array.isArray(c)?c:[c];!o.suppressWarning&&l.length&&e.warning(`async-validator:`,l),l.length&&r.message!==void 0&&r.message!==null&&(l=[].concat(r.message));var u=l.map(Hg(r,a));if(o.first&&u.length)return d[r.field]=1,n(u);if(!i)n(u);else{if(r.required&&!t.value)return r.message===void 0?o.error&&(u=[o.error(r,Rg(o.messages.required,r.field))]):u=[].concat(r.message).map(Hg(r,a)),n(u);var f={};r.defaultField&&Object.keys(t.value).map(function(e){f[e]=r.defaultField}),f=Yo(Yo({},f),t.rule.fields);var p={};Object.keys(f).forEach(function(e){var t=f[e];p[e]=(Array.isArray(t)?t:[t]).map(s.bind(null,e))});var m=new e(p);m.messages(o.messages),t.rule.options&&(t.rule.options.messages=o.messages,t.rule.options.error=o.error),m.validate(t.value,t.rule.options||o,function(e){var t=[];u&&u.length&&t.push.apply(t,Qr(u)),e&&e.length&&t.push.apply(t,Qr(e)),n(t.length?t:null)})}}var l;if(r.asyncValidator)l=r.asyncValidator(r,t.value,c,t.source,o);else if(r.validator){try{l=r.validator(r,t.value,c,t.source,o)}catch(e){var u,f;(u=(f=console).error)==null||u.call(f,e),o.suppressValidatorError||setTimeout(function(){throw e},0),c(e.message)}l===!0?c():l===!1?c(typeof r.message==`function`?r.message(r.fullField||r.field):r.message||`${r.fullField||r.field} fails`):l instanceof Array?c(l):l instanceof Error&&c(l.message)}l&&l.then&&l.then(function(){return c()},function(e){return c(e)})},function(e){c(e)},a)}},{key:`getType`,value:function(e){if(e.type===void 0&&e.pattern instanceof RegExp&&(e.type=`pattern`),typeof e.validator!=`function`&&e.type&&!Zg.hasOwnProperty(e.type))throw Error(Rg(`Unknown rule type %s`,e.type));return e.type||`string`}},{key:`getValidationMethod`,value:function(e){if(typeof e.validator==`function`)return e.validator;var t=Object.keys(e),n=t.indexOf(`message`);return n!==-1&&t.splice(n,1),t.length===1&&t[0]===`required`?Zg.required:Zg[this.getType(e)]||void 0}}]),e}();qo(Qg,`register`,function(e,t){if(typeof t!=`function`)throw Error(`Cannot register a validator by type, validator is not a function`);Zg[e]=t}),qo(Qg,`warning`,Ste),qo(Qg,`messages`,Fg),qo(Qg,`validators`,Zg);var $g="'${name}' is not a valid ${type}",e_={default:"Validation error on field '${name}'",required:"'${name}' is required",enum:"'${name}' must be one of [${enum}]",whitespace:"'${name}' cannot be empty",date:{format:"'${name}' is invalid for format date",parse:"'${name}' could not be parsed as date",invalid:"'${name}' is invalid date"},types:{string:$g,method:$g,array:$g,object:$g,number:$g,date:$g,boolean:$g,integer:$g,float:$g,regexp:$g,email:$g,tel:$g,url:$g,hex:$g},string:{len:"'${name}' must be exactly ${len} characters",min:"'${name}' must be at least ${min} characters",max:"'${name}' cannot be longer than ${max} characters",range:"'${name}' must be between ${min} and ${max} characters"},number:{len:"'${name}' must equal ${len}",min:"'${name}' cannot be less than ${min}",max:"'${name}' cannot be greater than ${max}",range:"'${name}' must be between ${min} and ${max}"},array:{len:"'${name}' must be exactly ${len} in length",min:"'${name}' cannot be less than ${min} in length",max:"'${name}' cannot be greater than ${max} in length",range:"'${name}' must be between ${min} and ${max} in length"},pattern:{mismatch:"'${name}' does not match pattern ${pattern}"}},t_=Qg;function Jte(e,t){return e.replace(/\\?\$\{\w+\}/g,e=>e.startsWith(`\\`)?e.slice(1):t[e.slice(2,-1)])}var n_=`CODE_LOGIC_ERROR`;async function r_(e,t,n,r,i){let a={...n};if(delete a.ruleIndex,t_.warning=()=>void 0,a.validator){let e=a.validator;a.validator=(...t)=>{try{return e(...t)}catch(e){return console.error(e),Promise.reject(n_)}}}let o=null;a&&a.type===`array`&&a.defaultField&&(o=a.defaultField,delete a.defaultField);let s=new t_({[e]:[a]}),c=pr(e_,r.validateMessages);s.messages(c);let l=[];try{await Promise.resolve(s.validate({[e]:t},{...r}))}catch(e){e.errors&&(l=e.errors.map(({message:e},t)=>{let n=e===n_?c.default:e;return C.isValidElement(n)?C.cloneElement(n,{key:`error_${t}`}):n}))}if(!l.length&&o&&Array.isArray(t)&&t.length>0)return(await Promise.all(t.map((t,n)=>r_(`${e}.${n}`,t,o,r,i)))).reduce((e,t)=>[...e,...t],[]);let u={...n,name:e,enum:(n.enum||[]).join(`, `),...i};return l.map(e=>typeof e==`string`?Jte(e,u):e)}function Yte(e,t,n,r,i,a){let o=e.join(`.`),s=n.map((e,t)=>{let n=e.validator,r={...e,ruleIndex:t};return n&&(r.validator=(e,t,r)=>{let i=!1,a=n(e,t,(...e)=>{Promise.resolve().then(()=>{xr(!i,"Your validator function has already return a promise. `callback` will be ignored."),i||r(...e)})});i=a&&typeof a.then==`function`&&typeof a.catch==`function`,xr(i,"`callback` is deprecated. Please return a promise instead."),i&&a.then(()=>{r()}).catch(e=>{r(e||` `)})}),r}).sort(({warningOnly:e,ruleIndex:t},{warningOnly:n,ruleIndex:r})=>!!e==!!n?t-r:e?1:-1),c;if(i===!0)c=new Promise(async(e,n)=>{for(let e=0;er_(o,t,e,r,a).then(t=>({errors:t,rule:e})));c=(i?Zte(e):Xte(e)).then(e=>Promise.reject(e))}return c.catch(e=>e),c}async function Xte(e){return Promise.all(e).then(e=>[].concat(...e))}async function Zte(e){let t=0;return new Promise(n=>{e.forEach(r=>{r.then(r=>{r.errors.length&&n([r]),t+=1,t===e.length&&n([])})})})}function i_(e){return Ng(e)}function a_(e,t){let n={};return t.forEach(t=>{let r=or(e,t);n=cr(n,t,r)}),n}function o_(e,t,n=!1){return e&&e.some(e=>s_(t,e,n))}function s_(e,t,n=!1){return!e||!t||!n&&e.length!==t.length?!1:t.every((t,n)=>e[n]===t)}function Qte(e,t){if(e===t)return!0;if(!e&&t||e&&!t||!e||!t||typeof e!=`object`||typeof t!=`object`)return!1;let n=Object.keys(e),r=Object.keys(t);return[...new Set([...n,...r])].every(n=>{let r=e[n],i=t[n];return typeof r==`function`&&typeof i==`function`?!0:r===i})}function $te(e,...t){let n=t[0];return n&&n.target&&typeof n.target==`object`&&e in n.target?n.target[e]:n}function c_(e,t,n){let{length:r}=e;if(t<0||t>=r||n<0||n>=r)return e;let i=e[t],a=t-n;return a>0?[...e.slice(0,n),i,...e.slice(n,t),...e.slice(t+1,r)]:a<0?[...e.slice(0,t),...e.slice(t+1,n+1),i,...e.slice(n+1,r)]:e}var l_=e=>{let t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(null)},ene=class{namePathList=[];taskId=0;watcherList=new Set;form;constructor(e){this.form=e}register(e){return this.watcherList.add(e),()=>{this.watcherList.delete(e)}}notify(e){e.forEach(e=>{this.namePathList.every(t=>!s_(t,e))&&this.namePathList.push(e)}),this.doBatch()}doBatch(){this.taskId+=1;let e=this.taskId;l_(()=>{if(e===this.taskId&&this.watcherList.size){let e=this.form.getForm(),t=e.getFieldsValue(),n=e.getFieldsValue(!0);this.watcherList.forEach(e=>{e(t,n,this.namePathList)}),this.namePathList=[]}})}};async function tne(){return new Promise(e=>{l_(()=>{ii(()=>{e()})})})}function u_(){return u_=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{preserve:e,isListField:t,name:n}=this.props;this.cancelRegisterFunc&&this.cancelRegisterFunc(t,e,i_(n)),this.cancelRegisterFunc=null};getNamePath=()=>{let{name:e,fieldContext:t}=this.props,{prefixName:n=[]}=t;return e===void 0?[]:[...n,...e]};getRules=()=>{let{rules:e=[],fieldContext:t}=this.props;return e.map(e=>typeof e==`function`?e(t):e)};reRender(){this.mounted&&this.forceUpdate()}refresh=()=>{this.mounted&&this.setState(({resetCount:e})=>({resetCount:e+1}))};metaCache=null;triggerMetaEvent=e=>{let{onMetaChange:t}=this.props;if(t){let n={...this.getMeta(),destroy:e};Ei(this.metaCache,n)||t(n),this.metaCache=n}else this.metaCache=null};onStoreChange=(e,t,n)=>{let{shouldUpdate:r,dependencies:i=[],onReset:a}=this.props,{store:o}=n,s=this.getNamePath(),c=this.getValue(e),l=this.getValue(o),u=t&&o_(t,s);switch(n.type===`valueUpdate`&&n.source===`external`&&!Ei(c,l)&&(this.touched=!0,this.dirty=!0,this.validatePromise=null,this.errors=d_,this.warnings=f_,this.triggerMetaEvent()),n.type){case`reset`:if(!t||u){this.touched=!1,this.dirty=!1,this.validatePromise=void 0,this.errors=d_,this.warnings=f_,this.triggerMetaEvent(),a?.(),this.refresh();return}break;case`remove`:if(r&&p_(r,e,o,c,l,n)){this.reRender();return}break;case`setField`:{let{data:i}=n;if(u){`touched`in i&&(this.touched=i.touched),`validating`in i&&!(`originRCField`in i)&&(this.validatePromise=i.validating?Promise.resolve([]):null),`errors`in i&&(this.errors=i.errors||d_),`warnings`in i&&(this.warnings=i.warnings||f_),this.dirty=!0,this.triggerMetaEvent(),this.reRender();return}else if(`value`in i&&o_(t,s,!0)){this.reRender();return}if(r&&!s.length&&p_(r,e,o,c,l,n)){this.reRender();return}break}case`dependenciesUpdate`:if(i.map(i_).some(e=>o_(n.relatedFields,e))){this.reRender();return}break;default:if(u||(!i.length||s.length||r)&&p_(r,e,o,c,l,n)){this.reRender();return}break}r===!0&&this.reRender()};validateRules=e=>{let t=this.getNamePath(),n=this.getValue(),{triggerName:r,validateOnly:i=!1,delayFrame:a}=e||{},o=Promise.resolve().then(async()=>{if(!this.mounted)return[];let{validateFirst:i=!1,messageVariables:s,validateDebounce:c}=this.props;a&&await tne();let l=this.getRules();if(r&&(l=l.filter(e=>e).filter(e=>{let{validateTrigger:t}=e;return t?Ng(t).includes(r):!0})),c&&r&&(await new Promise(e=>{setTimeout(e,c)}),this.validatePromise!==o))return[];let u=Yte(t,n,l,e,i,s);return u.catch(e=>e).then((e=d_)=>{if(this.validatePromise===o){this.validatePromise=null;let t=[],n=[];e.forEach?.(({rule:{warningOnly:e},errors:r=d_})=>{e?n.push(...r):t.push(...r)}),this.errors=t,this.warnings=n,this.triggerMetaEvent(),this.reRender()}}),u});return i?o:(this.validatePromise=o,this.dirty=!0,this.errors=d_,this.warnings=f_,this.triggerMetaEvent(),this.reRender(),o)};isFieldValidating=()=>!!this.validatePromise;isFieldTouched=()=>this.touched;isFieldDirty=()=>{if(this.dirty||this.props.initialValue!==void 0)return!0;let{fieldContext:e}=this.props,{getInitialValue:t}=e.getInternalHooks(kg);return t(this.getNamePath())!==void 0};getErrors=()=>this.errors;getWarnings=()=>this.warnings;isListField=()=>this.props.isListField;isList=()=>this.props.isList;isPreserve=()=>this.props.preserve;getMeta=()=>(this.prevValidating=this.isFieldValidating(),{touched:this.isFieldTouched(),validating:this.prevValidating,errors:this.errors,warnings:this.warnings,name:this.getNamePath(),validated:this.validatePromise===null});getOnlyChild=e=>{if(typeof e==`function`){let t=this.getMeta();return{...this.getOnlyChild(e(this.getControlled(),t,this.props.fieldContext)),isFunction:!0}}let t=wr(e);return t.length!==1||!C.isValidElement(t[0])?{child:t,isFunction:!1}:{child:t[0],isFunction:!1}};getValue=e=>{let{getFieldsValue:t}=this.props.fieldContext,n=this.getNamePath();return or(e||t(!0),n)};getControlled=(e={})=>{let{name:t,trigger:n=`onChange`,validateTrigger:r,getValueFromEvent:i,normalize:a,valuePropName:o=`value`,getValueProps:s,fieldContext:c}=this.props,l=r===void 0?c.validateTrigger:r,u=this.getNamePath(),{getInternalHooks:d,getFieldsValue:f}=c,{dispatch:p}=d(kg),m=this.getValue(),h=s||(e=>({[o]:e})),g=e[n],_=t===void 0?{}:h(m),v={...e,..._};return v[n]=(...e)=>{this.touched=!0,this.dirty=!0,this.triggerMetaEvent();let t;t=i?i(...e):$te(o,...e),a&&(t=a(t,m,f(!0))),t!==m&&p({type:`updateValue`,namePath:u,value:t}),g&&g(...e)},Ng(l||[]).forEach(e=>{let t=v[e];v[e]=(...n)=>{t&&t(...n);let{rules:r}=this.props;r&&r.length&&p({type:`validateField`,namePath:u,triggerName:e})}}),v};render(){let{resetCount:e}=this.state,{children:t}=this.props,{child:n,isFunction:r}=this.getOnlyChild(t),i;return r?i=n:C.isValidElement(n)?i=C.cloneElement(n,this.getControlled(n.props)):(xr(!n,"`children` of Field is not validate ReactElement."),i=n),C.createElement(C.Fragment,{key:e},i)}};function m_({name:e,...t}){let n=C.useContext(jg),r=C.useContext(Mg),i=e===void 0?void 0:i_(e),a=t.isListField??!!r,o=`keep`;return a||(o=`_${(i||[]).join(`_`)}`),C.createElement(nne,u_({key:o,name:i,isListField:a},t,{fieldContext:n}))}function h_({name:e,initialValue:t,children:n,rules:r,validateTrigger:i,isListField:a}){let o=C.useContext(jg),s=C.useContext(Mg),c=C.useRef({keys:[],id:0}).current,l=C.useMemo(()=>[...i_(o.prefixName)||[],...i_(e)],[o.prefixName,e]),u=C.useMemo(()=>({...o,prefixName:l}),[o,l]),d=C.useMemo(()=>({getKey:e=>{let t=l.length,n=e[t];return[c.keys[n],e.slice(t+1)]}}),[c,l]);return typeof n==`function`?C.createElement(Mg.Provider,{value:d},C.createElement(jg.Provider,{value:u},C.createElement(m_,{name:[],shouldUpdate:(e,t,{source:n})=>n===`internal`?!1:e!==t,rules:r,validateTrigger:i,initialValue:t,isList:!0,isListField:a??!!s},({value:e=[],onChange:t},r)=>{let{getFieldValue:i}=o,a=()=>i(l||[])||[],s={add:(e,n)=>{let r=a();n>=0&&n<=r.length?(c.keys=[...c.keys.slice(0,n),c.id,...c.keys.slice(n)],t([...r.slice(0,n),e,...r.slice(n)])):(c.keys=[...c.keys,c.id],t([...r,e])),c.id+=1},remove:e=>{let n=a(),r=new Set(Array.isArray(e)?e:[e]);r.size<=0||(c.keys=c.keys.filter((e,t)=>!r.has(t)),t(n.filter((e,t)=>!r.has(t))))},move(e,n){if(e===n)return;let r=a();e<0||e>=r.length||n<0||n>=r.length||(c.keys=c_(c.keys,e,n),t(c_(r,e,n)))}},u=e||[];return Array.isArray(u)||(u=[]),n(u.map((e,t)=>{let n=c.keys[t];return n===void 0&&(c.keys[t]=c.id,n=c.keys[t],c.id+=1),{name:t,key:n,isListField:!0}}),s,r)}))):(xr(!1,`Form.List only accepts function as children.`),null)}function rne(e){let t=!1,n=e.length,r=[];return e.length?new Promise((i,a)=>{e.forEach((e,o)=>{e.catch(e=>(t=!0,e)).then(e=>{--n,r[o]=e,!(n>0)&&(t&&a(r),i(r))})})}):Promise.resolve([])}var g_=`__@field_split__`;function __(e){return e.map(e=>`${typeof e}:${e}`).join(g_)}var v_=class{kvs=new Map;set(e,t){this.kvs.set(__(e),t)}get(e){return this.kvs.get(__(e))}getAsPrefix(e){let t=__(e),n=t+g_,r=[],i=this.kvs.get(t);return i!==void 0&&r.push(i),this.kvs.forEach((e,t)=>{t.startsWith(n)&&r.push(e)}),r}update(e,t){let n=t(this.get(e));n?this.set(e,n):this.delete(e)}delete(e){this.kvs.delete(__(e))}map(e){return[...this.kvs.entries()].map(([t,n])=>e({key:t.split(g_).map(e=>{let[,t,n]=e.match(/^([^:]*):(.*)$/);return t===`number`?Number(n):n}),value:n}))}toJSON(){let e={};return this.map(({key:t,value:n})=>(e[t.join(`.`)]=n,null)),e}},y_=class{formHooked=!1;forceRootUpdate;subscribable=!0;store={};fieldEntities=[];initialValues={};callbacks={};validateMessages=null;preserve=null;lastValidatePromise=null;watcherCenter=new ene(this);constructor(e){this.forceRootUpdate=e}getForm=()=>({getFieldValue:this.getFieldValue,getFieldsValue:this.getFieldsValue,getFieldError:this.getFieldError,getFieldWarning:this.getFieldWarning,getFieldsError:this.getFieldsError,isFieldsTouched:this.isFieldsTouched,isFieldTouched:this.isFieldTouched,isFieldValidating:this.isFieldValidating,isFieldsValidating:this.isFieldsValidating,resetFields:this.resetFields,setFields:this.setFields,setFieldValue:this.setFieldValue,setFieldsValue:this.setFieldsValue,validateFields:this.validateFields,submit:this.submit,_init:!0,getInternalHooks:this.getInternalHooks});getInternalHooks=e=>e===`RC_FORM_INTERNAL_HOOKS`?(this.formHooked=!0,{dispatch:this.dispatch,initEntityValue:this.initEntityValue,registerField:this.registerField,useSubscribe:this.useSubscribe,setInitialValues:this.setInitialValues,destroyForm:this.destroyForm,setCallbacks:this.setCallbacks,setValidateMessages:this.setValidateMessages,getFields:this.getFields,setPreserve:this.setPreserve,getInitialValue:this.getInitialValue,registerWatch:this.registerWatch}):(xr(!1,"`getInternalHooks` is internal usage. Should not call directly."),null);useSubscribe=e=>{this.subscribable=e};prevWithoutPreserves=null;setInitialValues=(e,t)=>{if(this.initialValues=e||{},t){let t=pr(e,this.store);this.prevWithoutPreserves?.map(({key:n})=>{t=cr(t,n,or(e,n))}),this.prevWithoutPreserves=null,this.updateStore(t)}};destroyForm=e=>{if(e)this.updateStore({});else{let e=new v_;this.getFieldEntities(!0).forEach(t=>{this.isMergedPreserve(t.isPreserve())||e.set(t.getNamePath(),!0)}),this.prevWithoutPreserves=e}};getInitialValue=e=>{let t=or(this.initialValues,e);return e.length?pr(t):t};setCallbacks=e=>{this.callbacks=e};setValidateMessages=e=>{this.validateMessages=e};setPreserve=e=>{this.preserve=e};registerWatch=e=>this.watcherCenter.register(e);notifyWatch=(e=[])=>{this.watcherCenter.notify(e)};timeoutId=null;warningUnhooked=()=>{};updateStore=e=>{this.store=e};getFieldEntities=(e=!1)=>e?this.fieldEntities.filter(e=>e.getNamePath().length):this.fieldEntities;getFieldsMap=(e=!1)=>{let t=new v_;return this.getFieldEntities(e).forEach(e=>{let n=e.getNamePath();t.set(n,e)}),t};getFieldEntitiesForNamePathList=(e,t=!1)=>{if(!e)return this.getFieldEntities(!0);let n=this.getFieldsMap(!0);return t?e.flatMap(e=>{let t=i_(e),r=n.getAsPrefix(t);return r.length?r:[{INVALIDATE_NAME_PATH:t}]}):e.map(e=>{let t=i_(e);return n.get(t)||{INVALIDATE_NAME_PATH:i_(e)}})};getFieldsValue=(e,t)=>{this.warningUnhooked();let n,r;if(e===!0||Array.isArray(e)?(n=e,r=t):e&&typeof e==`object`&&(r=e.filter),n===!0&&!r)return this.store;let i=this.getFieldEntitiesForNamePathList(Array.isArray(n)?n:null,!0),a=[],o=[];i.forEach(e=>{let t=e.INVALIDATE_NAME_PATH||e.getNamePath();if(e.isList?.()){o.push(t);return}if(!r)a.push(t);else{let n=`getMeta`in e?e.getMeta():null;r(n)&&a.push(t)}});let s=a_(this.store,a.map(i_));return o.forEach(e=>{or(s,e)||(s=cr(s,e,[]))}),s};getFieldValue=e=>{this.warningUnhooked();let t=i_(e);return or(this.store,t)};getFieldsError=e=>(this.warningUnhooked(),this.getFieldEntitiesForNamePathList(e).map((t,n)=>t&&!t.INVALIDATE_NAME_PATH?{name:t.getNamePath(),errors:t.getErrors(),warnings:t.getWarnings()}:{name:i_(e[n]),errors:[],warnings:[]}));getFieldError=e=>{this.warningUnhooked();let t=i_(e);return this.getFieldsError([t])[0].errors};getFieldWarning=e=>{this.warningUnhooked();let t=i_(e);return this.getFieldsError([t])[0].warnings};isFieldsTouched=(...e)=>{this.warningUnhooked();let[t,n]=e,r,i=!1;e.length===0?r=null:e.length===1?Array.isArray(t)?(r=t.map(i_),i=!1):(r=null,i=t):(r=t.map(i_),i=n);let a=this.getFieldEntities(!0),o=e=>e.isFieldTouched();if(!r)return i?a.every(e=>o(e)||e.isList()):a.some(o);let s=new v_;r.forEach(e=>{s.set(e,[])}),a.forEach(e=>{let t=e.getNamePath();r.forEach(n=>{n.every((e,n)=>t[n]===e)&&s.update(n,t=>[...t,e])})});let c=e=>e.some(o),l=s.map(({value:e})=>e);return i?l.every(c):l.some(c)};isFieldTouched=e=>(this.warningUnhooked(),this.isFieldsTouched([e]));isFieldsValidating=e=>{this.warningUnhooked();let t=this.getFieldEntities();if(!e)return t.some(e=>e.isFieldValidating());let n=e.map(i_);return t.some(e=>o_(n,e.getNamePath())&&e.isFieldValidating())};isFieldValidating=e=>(this.warningUnhooked(),this.isFieldsValidating([e]));resetWithFieldInitialValue=(e={})=>{let t=new v_,n=this.getFieldEntities(!0);n.forEach(e=>{let{initialValue:n}=e.props,r=e.getNamePath();if(n!==void 0){let i=t.get(r)||new Set;i.add({entity:e,value:n}),t.set(r,i)}});let r=n=>{n.forEach(n=>{let{initialValue:r}=n.props;if(r!==void 0){let r=n.getNamePath();if(this.getInitialValue(r)!==void 0)xr(!1,`Form already set 'initialValues' with path '${r.join(`.`)}'. Field can not overwrite it.`);else{let i=t.get(r);if(i&&i.size>1)xr(!1,`Multiple Field with path '${r.join(`.`)}' set 'initialValue'. Can not decide which one to pick.`);else if(i){let t=this.getFieldValue(r);!n.isListField()&&(!e.skipExist||t===void 0)&&this.updateStore(cr(this.store,r,[...i][0].value))}}}})},i;e.entities?i=e.entities:e.namePathList?(i=[],e.namePathList.forEach(e=>{let n=t.get(e);n&&i.push(...[...n].map(e=>e.entity))})):i=n,r(i)};resetFields=e=>{this.warningUnhooked();let t=this.store;if(!e){this.updateStore(pr(this.initialValues)),this.resetWithFieldInitialValue(),this.notifyObservers(t,null,{type:`reset`}),this.notifyWatch();return}let n=e.map(i_);n.forEach(e=>{let t=this.getInitialValue(e);this.updateStore(cr(this.store,e,t))}),this.resetWithFieldInitialValue({namePathList:n}),this.notifyObservers(t,n,{type:`reset`}),this.notifyWatch(n)};setFields=e=>{this.warningUnhooked();let t=this.store,n=[];e.forEach(e=>{let{name:r,...i}=e,a=i_(r);n.push(a),`value`in i&&this.updateStore(cr(this.store,a,i.value)),this.notifyObservers(t,[a],{type:`setField`,data:e})}),this.notifyWatch(n)};getFields=()=>this.getFieldEntities(!0).map(e=>{let t=e.getNamePath(),n={...e.getMeta(),name:t,value:this.getFieldValue(t)};return Object.defineProperty(n,`originRCField`,{value:!0}),n});initEntityValue=e=>{let{initialValue:t}=e.props;if(t!==void 0){let n=e.getNamePath();or(this.store,n)===void 0&&this.updateStore(cr(this.store,n,t))}};isMergedPreserve=e=>(e===void 0?this.preserve:e)??!0;registerField=e=>{this.fieldEntities.push(e);let t=e.getNamePath();if(this.notifyWatch([t]),e.props.initialValue!==void 0){let t=this.store;this.resetWithFieldInitialValue({entities:[e],skipExist:!0}),this.notifyObservers(t,[e.getNamePath()],{type:`valueUpdate`,source:`internal`})}return(n,r,i=[])=>{if(this.fieldEntities=this.fieldEntities.filter(t=>t!==e),!this.isMergedPreserve(r)&&(!n||i.length>1)){let e=n?void 0:this.getInitialValue(t);if(t.length&&this.getFieldValue(t)!==e&&this.fieldEntities.every(e=>!s_(e.getNamePath(),t))){let n=this.store;this.updateStore(cr(n,t,e,!0)),this.notifyObservers(n,[t],{type:`remove`}),this.triggerDependenciesUpdate(n,t)}}this.notifyWatch([t])}};dispatch=e=>{switch(e.type){case`updateValue`:{let{namePath:t,value:n}=e;this.updateValue(t,n);break}case`validateField`:{let{namePath:t,triggerName:n}=e;this.validateFields([t],{triggerName:n});break}default:}};notifyObservers=(e,t,n)=>{if(this.subscribable){let r={...n,store:this.getFieldsValue(!0)};this.getFieldEntities().forEach(({onStoreChange:n})=>{n(e,t,r)})}else this.forceRootUpdate()};triggerDependenciesUpdate=(e,t)=>{let n=this.getDependencyChildrenFields(t);return n.length&&this.validateFields(n,{delayFrame:!0}),this.notifyObservers(e,n,{type:`dependenciesUpdate`,relatedFields:[t,...n]}),n};updateValue=(e,t)=>{let n=i_(e),r=this.store;this.updateStore(cr(this.store,n,t)),this.notifyObservers(r,[n],{type:`valueUpdate`,source:`internal`}),this.notifyWatch([n]);let i=this.triggerDependenciesUpdate(r,n),{onValuesChange:a}=this.callbacks;if(a){let e=a_(this.store,[n]);a(e,cr(this.getFieldsValue(),n,or(e,n)))}this.triggerOnFieldsChange([n,...i])};setFieldsValue=e=>{this.warningUnhooked();let t=this.store;if(e){let t=pr(this.store,e);this.updateStore(t)}this.notifyObservers(t,null,{type:`valueUpdate`,source:`external`}),this.notifyWatch()};setFieldValue=(e,t)=>{this.setFields([{name:e,value:t,errors:[],warnings:[],touched:!0}])};getDependencyChildrenFields=e=>{let t=new Set,n=[],r=new v_;this.getFieldEntities().forEach(e=>{let{dependencies:t}=e.props;(t||[]).forEach(t=>{let n=i_(t);r.update(n,(t=new Set)=>(t.add(e),t))})});let i=e=>{(r.get(e)||new Set).forEach(e=>{if(!t.has(e)){t.add(e);let r=e.getNamePath();e.isFieldDirty()&&r.length&&(n.push(r),i(r))}})};return i(e),n};triggerOnFieldsChange=(e,t)=>{let{onFieldsChange:n}=this.callbacks;if(n){let r=this.getFields();if(t){let e=new v_;t.forEach(({name:t,errors:n})=>{e.set(t,n)}),r.forEach(t=>{t.errors=e.get(t.name)||t.errors})}let i=r.filter(({name:t})=>o_(e,t));i.length&&n(i,r)}};validateFields=(e,t)=>{this.warningUnhooked();let n,r;Array.isArray(e)||typeof e==`string`||typeof t==`string`?(n=e,r=t):r=e;let i=!!n,a=i?n.map(i_):[],o=[...a],s=[],c=String(Date.now()),l=new Set,{recursive:u,dirty:d}=r||{};this.getFieldEntities(!0).forEach(e=>{let t=e.getNamePath();if(i||((!e.isList()||!a.some(e=>s_(e,t,!0)))&&o.push(t),a.push(t)),!(!e.props.rules||!e.props.rules.length)&&!(d&&!e.isFieldDirty())&&(l.add(t.join(c)),!i||o_(a,t,u))){let n=e.validateRules({validateMessages:{...e_,...this.validateMessages},...r});s.push(n.then(()=>({name:t,errors:[],warnings:[]})).catch(e=>{let n=[],r=[];return e.forEach?.(({rule:{warningOnly:e},errors:t})=>{e?r.push(...t):n.push(...t)}),n.length?Promise.reject({name:t,errors:n,warnings:r}):{name:t,errors:n,warnings:r}}))}});let f=rne(s);this.lastValidatePromise=f,f.catch(e=>e).then(e=>{let t=e.map(({name:e})=>e);this.notifyObservers(this.store,t,{type:`validateFinish`}),this.triggerOnFieldsChange(t,e)});let p=f.then(()=>this.lastValidatePromise===f?Promise.resolve(this.getFieldsValue(o)):Promise.reject([])).catch(e=>{let t=e.filter(e=>e&&e.errors.length),n=t[0]?.errors?.[0];return Promise.reject({message:n,values:this.getFieldsValue(a),errorFields:t,outOfDate:this.lastValidatePromise!==f})});p.catch(e=>e);let m=a.filter(e=>l.has(e.join(c)));return this.triggerOnFieldsChange(m),p};submit=()=>{this.warningUnhooked(),this.validateFields().then(e=>{let{onFinish:t}=this.callbacks;if(t)try{t(e)}catch(e){console.error(e)}}).catch(e=>{let{onFinishFailed:t}=this.callbacks;t&&t(e)})}};function b_(e){let t=C.useRef(null),[,n]=C.useState({});return t.current||(e?t.current=e:t.current=new y_(()=>{n({})}).getForm()),[t.current]}var x_=C.createContext({triggerFormChange:()=>{},triggerFormFinish:()=>{},registerForm:()=>{},unregisterForm:()=>{}}),S_=({validateMessages:e,onFormChange:t,onFormFinish:n,children:r})=>{let i=C.useContext(x_),a=C.useRef({});return C.createElement(x_.Provider,{value:{...i,validateMessages:{...i.validateMessages,...e},triggerFormChange:(e,n)=>{t&&t(e,{changedFields:n,forms:a.current}),i.triggerFormChange(e,n)},triggerFormFinish:(e,t)=>{n&&n(e,{values:t,forms:a.current}),i.triggerFormFinish(e,t)},registerForm:(e,t)=>{e&&(a.current={...a.current,[e]:t}),i.registerForm(e,t)},unregisterForm:e=>{let t={...a.current};delete t[e],a.current=t,i.unregisterForm(e)}}},r)};function C_(){return C_=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let g=C.useRef(null),_=C.useContext(x_),[v]=b_(r),{useSubscribe:y,setInitialValues:b,setCallbacks:x,setValidateMessages:S,setPreserve:w,destroyForm:T}=v.getInternalHooks(kg);C.useImperativeHandle(h,()=>({...v,nativeElement:g.current})),C.useEffect(()=>(_.registerForm(e,v),()=>{_.unregisterForm(e)}),[_,v,e]),S({..._.validateMessages,...s}),x({onValuesChange:l,onFieldsChange:(t,...n)=>{_.triggerFormChange(e,t),u&&u(t,...n)},onFinish:t=>{_.triggerFormFinish(e,t),d&&d(t)},onFinishFailed:f}),w(i);let E=C.useRef(null);b(t,!E.current),E.current||=!0,C.useEffect(()=>()=>T(p),[]);let D,O=typeof a==`function`;D=O?a(v.getFieldsValue(!0),v):a,y(!O);let k=C.useRef(null);C.useEffect(()=>{Qte(k.current||[],n||[])||v.setFields(n||[]),k.current=n},[n,v]);let A=C.useMemo(()=>({...v,validateTrigger:c}),[v,c]),j=C.createElement(Mg.Provider,{value:null},C.createElement(jg.Provider,{value:A},D));return o===!1?j:C.createElement(o,C_({},m,{ref:g,onSubmit:e=>{e.preventDefault(),e.stopPropagation(),v.submit()},onReset:e=>{e.preventDefault(),v.resetFields(),m.onReset?.(e)}}),j)};function T_(e){try{return JSON.stringify(e)}catch{return Math.random()}}function E_(...e){let[t,n={}]=e,r=vte(n)?{form:n}:n,i=r.form,[a,o]=(0,C.useState)(()=>typeof t==`function`?t({}):void 0),s=(0,C.useMemo)(()=>T_(a),[a]),c=(0,C.useRef)(s);c.current=s;let l=(0,C.useContext)(jg),u=i||l,d=u&&u._init,{getFieldsValue:f,getInternalHooks:p}=u,{registerWatch:m}=p(kg),h=Rn((e,n)=>{let i=r.preserve?n??f(!0):e??f(),s=typeof t==`function`?t(i):or(i,i_(t));T_(a)!==T_(s)&&o(s)});return(0,C.useEffect)(()=>{d&&h()},[d,typeof t==`function`?t:JSON.stringify(t)]),(0,C.useEffect)(()=>{if(d)return m((e,t)=>{h(e,t)})},[d]),a}var D_=C.forwardRef(w_);D_.FormProvider=S_,D_.Field=m_,D_.List=h_,D_.useForm=b_,D_.useWatch=E_;var O_=C.createContext({labelAlign:`right`,layout:`horizontal`,itemRef:()=>{}}),k_=C.createContext(null),A_=e=>{let t=Cr(e,[`prefixCls`]);return C.createElement(S_,{...t})},j_=C.createContext({prefixCls:``}),M_=C.createContext({}),N_=({children:e,status:t,override:n})=>{let r=C.useContext(M_),i=C.useMemo(()=>{let e={...r};return n&&delete e.isFormItemInput,t&&(delete e.status,delete e.hasFeedback,delete e.feedbackIcon),e},[t,n,r]);return C.createElement(M_.Provider,{value:i},e)},P_=C.createContext(void 0),F_=e=>{let{space:t,form:n,children:r}=e;if(!pd(r))return null;let i=r;return n&&(i=C.createElement(N_,{override:!0,status:!0},i)),t&&(i=C.createElement(Dee,null,i)),i},I_=e=>{if(zn()&&window.document.documentElement){let t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(e=>e in n.style)}return!1},L_=(e,t)=>{if(!I_(e))return!1;let n=document.createElement(`div`),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function R_(e,t){return!Array.isArray(e)&&t!==void 0?L_(e,t):I_(e)}var z_=()=>zn()&&window.document.documentElement;function B_(e,t,n){return(0,C.useMemo)(()=>({trap:t??!0,focusTriggerAfterClose:n??!0,...e}),[e,t,n])}var V_=e=>{let{prefixCls:t,className:n,style:r,size:i,shape:a}=e,o=q({[`${t}-lg`]:i===`large`,[`${t}-sm`]:i===`small`}),s=q({[`${t}-circle`]:a===`circle`,[`${t}-square`]:a===`square`,[`${t}-round`]:a===`round`}),c=C.useMemo(()=>md(i)?{width:i,height:i,lineHeight:`${i}px`}:{},[i]);return C.createElement(`span`,{className:q(t,o,s,n),style:{...c,...r}})},H_=new Ro(`ant-skeleton-loading`,{"0%":{backgroundPosition:`100% 50%`},"100%":{backgroundPosition:`0 50%`}}),U_=e=>({height:e,lineHeight:J(e)}),W_=e=>({width:e,...U_(e)}),ine=e=>({background:e.skeletonLoadingBackground,backgroundSize:`400% 100%`,animationName:H_,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:`ease`,animationIterationCount:`infinite`}),G_=(e,t)=>({width:t(e).mul(5).equal(),minWidth:t(e).mul(5).equal(),...U_(e)}),ane=e=>{let{skeletonAvatarCls:t,gradientFromColor:n,controlHeight:r,controlHeightLG:i,controlHeightSM:a}=e;return{[t]:{display:`inline-block`,verticalAlign:`top`,background:n,...W_(r)},[`${t}${t}-circle`]:{borderRadius:`50%`},[`${t}${t}-lg`]:{...W_(i)},[`${t}${t}-sm`]:{...W_(a)}}},one=e=>{let{controlHeight:t,borderRadiusSM:n,skeletonInputCls:r,controlHeightLG:i,controlHeightSM:a,gradientFromColor:o,calc:s}=e;return{[r]:{display:`inline-block`,verticalAlign:`top`,background:o,borderRadius:n,...G_(t,s)},[`${r}-lg`]:{...G_(i,s)},[`${r}-sm`]:{...G_(a,s)}}},K_=e=>{let{gradientFromColor:t,borderRadiusSM:n,imageSizeBase:r,calc:i}=e;return{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,verticalAlign:`middle`,background:t,borderRadius:n,...W_(i(r).mul(2).equal())}},sne=e=>({[e.skeletonNodeCls]:{...K_(e)}}),cne=e=>{let{skeletonImageCls:t,imageSizeBase:n,calc:r}=e;return{[t]:{...K_(e),[`${t}-path`]:{fill:`#bfbfbf`},[`${t}-svg`]:{...W_(n),maxWidth:r(n).mul(4).equal(),maxHeight:r(n).mul(4).equal()},[`${t}-svg${t}-svg-circle`]:{borderRadius:`50%`}},[`${t}${t}-circle`]:{borderRadius:`50%`}}},q_=(e,t,n)=>{let{skeletonButtonCls:r}=e;return{[`${n}${r}-circle`]:{width:t,minWidth:t,borderRadius:`50%`},[`${n}${r}-round`]:{borderRadius:t}}},J_=(e,t)=>({width:t(e).mul(2).equal(),minWidth:t(e).mul(2).equal(),...U_(e)}),lne=e=>{let{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:r,controlHeightLG:i,controlHeightSM:a,gradientFromColor:o,calc:s}=e;return{[n]:{display:`inline-block`,verticalAlign:`top`,background:o,borderRadius:t,width:s(r).mul(2).equal(),minWidth:s(r).mul(2).equal(),...J_(r,s)},...q_(e,r,n),[`${n}-lg`]:{...J_(i,s)},...q_(e,i,`${n}-lg`),[`${n}-sm`]:{...J_(a,s)},...q_(e,a,`${n}-sm`)}},une=e=>{let{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:r,skeletonParagraphCls:i,skeletonButtonCls:a,skeletonInputCls:o,skeletonNodeCls:s,skeletonImageCls:c,controlHeight:l,controlHeightLG:u,controlHeightSM:d,gradientFromColor:f,padding:p,marginSM:m,borderRadius:h,titleHeight:g,blockRadius:_,paragraphLiHeight:v,controlHeightXS:y,paragraphMarginTop:b}=e;return{[t]:{display:`table`,width:`100%`,[`${t}-header`]:{display:`table-cell`,paddingInlineEnd:p,verticalAlign:`top`,[n]:{display:`inline-block`,verticalAlign:`top`,background:f,...W_(l)},[`${n}-circle`]:{borderRadius:`50%`},[`${n}-lg`]:{...W_(u)},[`${n}-sm`]:{...W_(d)}},[`${t}-section`]:{display:`table-cell`,width:`100%`,verticalAlign:`top`,[r]:{width:`100%`,height:g,background:f,borderRadius:_,[`+ ${i}`]:{marginBlockStart:d}},[i]:{padding:0,"> li":{width:`100%`,height:v,listStyle:`none`,background:f,borderRadius:_,"+ li":{marginBlockStart:y}}},[`${i}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:`61%`}},[`&-round ${t}-section`]:{[`${r}, ${i} > li`]:{borderRadius:h}}},[`${t}-with-avatar ${t}-section`]:{[r]:{marginBlockStart:m,[`+ ${i}`]:{marginBlockStart:b}}},[`${t}${t}-element`]:{display:`inline-block`,width:`auto`,...lne(e),...ane(e),...one(e),...sne(e),...cne(e)},[`${t}${t}-block`]:{width:`100%`,[a]:{width:`100%`},[o]:{width:`100%`}},[`${t}${t}-active`]:{[`
${r},
${i} > li,
${n},
@@ -164,89 +164,89 @@ html body {
${o},
${s},
${c}
- `]:{...Qte(e)}}}},tv=il(`Skeleton`,e=>{let{componentCls:t,calc:n}=e;return ine(_s(e,{skeletonAvatarCls:`${t}-avatar`,skeletonTitleCls:`${t}-title`,skeletonParagraphCls:`${t}-paragraph`,skeletonButtonCls:`${t}-button`,skeletonInputCls:`${t}-input`,skeletonNodeCls:`${t}-node`,skeletonImageCls:`${t}-image`,imageSizeBase:n(e.controlHeight).mul(1.5).equal(),borderRadius:100,skeletonLoadingBackground:`linear-gradient(90deg, ${e.gradientFromColor} 25%, ${e.gradientToColor} 37%, ${e.gradientFromColor} 63%)`,skeletonLoadingMotionDuration:`1.4s`}))},e=>{let{colorFillContent:t,colorFill:n}=e,r=t,i=n;return{color:r,colorGradientEnd:i,gradientFromColor:r,gradientToColor:i,titleHeight:e.controlHeight/2,blockRadius:e.borderRadiusSM,paragraphMarginTop:e.marginLG+e.marginXXS,paragraphLiHeight:e.controlHeight/2}},{deprecatedTokens:[[`color`,`gradientFromColor`],[`colorGradientEnd`,`gradientToColor`]]}),ane=e=>{let{prefixCls:t,className:n,classNames:r,rootClassName:i,active:a,style:o,styles:s,shape:c=`circle`,size:l,...u}=e,{getPrefixCls:d}=C.useContext(si),f=d(`skeleton`,t),[p,m]=tv(f),h=Rm(e=>l??e),g=q(f,`${f}-element`,{[`${f}-active`]:a},r?.root,n,i,p,m);return C.createElement(`div`,{className:g,style:s?.root},C.createElement(J_,{prefixCls:`${f}-avatar`,className:r?.content,style:{...s?.content,...o},shape:c,size:h,...u}))},one=e=>{let{prefixCls:t,className:n,rootClassName:r,classNames:i,active:a,style:o,styles:s,block:c=!1,size:l,...u}=e,{getPrefixCls:d}=C.useContext(si),f=d(`skeleton`,t),[p,m]=tv(f),h=Rm(e=>l??e),g=q(f,`${f}-element`,{[`${f}-active`]:a,[`${f}-block`]:c},i?.root,n,r,p,m);return C.createElement(`div`,{className:g,style:s?.root},C.createElement(J_,{prefixCls:`${f}-button`,className:i?.content,style:{...s?.content,...o},size:h,...u}))},nv=e=>{let{prefixCls:t,className:n,classNames:r,rootClassName:i,internalClassName:a,style:o,styles:s,active:c,children:l}=e,{getPrefixCls:u}=C.useContext(si),d=u(`skeleton`,t),[f,p]=tv(d),m=q(d,`${d}-element`,{[`${d}-active`]:c},f,r?.root,n,i,p);return C.createElement(`div`,{className:m,style:s?.root},C.createElement(`div`,{className:q(r?.content,a||`${d}-node`),style:{...s?.content,...o}},l))},sne=e=>{let{getPrefixCls:t}=C.useContext(si),n=t(`skeleton`,e.prefixCls);return C.createElement(nv,{...e,internalClassName:`${n}-image`},C.createElement(`svg`,{viewBox:`0 0 1098 1024`,xmlns:`http://www.w3.org/2000/svg`,className:`${n}-image-svg`},C.createElement(`title`,null,`Image placeholder`),C.createElement(`path`,{d:`M365.7 329.1q0 45.8-32 77.7t-77.7 32-77.7-32-32-77.7 32-77.6 77.7-32 77.7 32 32 77.6M951 548.6v256H146.3V694.9L329 512l91.5 91.4L713 311zm54.8-402.3H91.4q-7.4 0-12.8 5.4T73 164.6v694.8q0 7.5 5.5 12.9t12.8 5.4h914.3q7.5 0 12.9-5.4t5.4-12.9V164.6q0-7.5-5.4-12.9t-12.9-5.4m91.4 18.3v694.8q0 37.8-26.8 64.6t-64.6 26.9H91.4q-37.7 0-64.6-26.9T0 859.4V164.6q0-37.8 26.8-64.6T91.4 73h914.3q37.8 0 64.6 26.9t26.8 64.6`,className:`${n}-image-path`})))},cne=e=>{let{prefixCls:t,className:n,classNames:r,rootClassName:i,active:a,block:o,style:s,styles:c,size:l,...u}=e,{getPrefixCls:d}=C.useContext(si),f=d(`skeleton`,t),[p,m]=tv(f),h=Rm(e=>l??e),g=q(f,`${f}-element`,{[`${f}-active`]:a,[`${f}-block`]:o},r?.root,n,i,p,m);return C.createElement(`div`,{className:g,style:c?.root},C.createElement(J_,{prefixCls:`${f}-input`,className:r?.content,style:{...c?.content,...s},size:h,...u}))},lne=(e,t)=>{let{width:n,rows:r=2}=t;if(Array.isArray(n))return n[e];if(r-1===e)return n},une=e=>{let{prefixCls:t,className:n,style:r,rows:i=0}=e,a=Array.from({length:i}).map((t,n)=>C.createElement(`li`,{key:n,style:{width:lne(n,e)}}));return C.createElement(`ul`,{className:q(t,n),style:r},a)},dne=({prefixCls:e,className:t,width:n,style:r})=>C.createElement(`h3`,{className:q(e,t),style:{width:n,...r}});function rv(e){return gd(e)?e:{}}function fne(e,t){return e&&!t?{size:`large`,shape:`square`}:{size:`large`,shape:`circle`}}function pne(e,t){return!e&&t?{width:`38%`}:e&&t?{width:`50%`}:{}}function mne(e,t){let n={};return(!e||!t)&&(n.width=`61%`),!e&&t?n.rows=3:n.rows=2,n}var iv=e=>{let{prefixCls:t,loading:n,className:r,rootClassName:i,classNames:a,style:o,styles:s,children:c,avatar:l=!1,title:u=!0,paragraph:d=!0,active:f,round:p}=e,{getPrefixCls:m,direction:h,className:g,style:_,classNames:v,styles:y}=ui(`skeleton`),b=m(`skeleton`,t),[x,S]=tv(b),w={...e,avatar:l,title:u,paragraph:d},[T,E]=Id([v,a],[y,s],{props:w});if(n||!(`loading`in e)){let e=!!l,t=!!u,n=!!d,a;if(e){let e={className:T.avatar,prefixCls:`${b}-avatar`,...fne(t,n),...rv(l),style:E.avatar};a=C.createElement(`div`,{className:q(T.header,`${b}-header`),style:E.header},C.createElement(J_,{...e}))}let s;if(t||n){let r;if(t){let t={className:T.title,prefixCls:`${b}-title`,...pne(e,n),...rv(u),style:E.title};r=C.createElement(dne,{...t})}let i;if(n){let n={className:T.paragraph,prefixCls:`${b}-paragraph`,...mne(e,t),...rv(d),style:E.paragraph};i=C.createElement(une,{...n})}s=C.createElement(`div`,{className:q(T.section,`${b}-section`),style:E.section},r,i)}let c=q(b,{[`${b}-with-avatar`]:e,[`${b}-active`]:f,[`${b}-rtl`]:h===`rtl`,[`${b}-round`]:p},T.root,g,r,i,x,S);return C.createElement(`div`,{className:c,style:{...E.root,..._,...o}},a,s)}return c??null};iv.Button=one,iv.Avatar=ane,iv.Input=cne,iv.Image=sne,iv.Node=nv;var av=iv;function ov(){}var hne=C.createContext({add:ov,remove:ov});function sv(e){let t=C.useContext(hne),n=C.useRef(null);return Rn(r=>{if(r){let i=e?r.querySelector(e):r;i&&(t.add(i),n.current=i)}else t.remove(n.current)})}var cv=()=>{let{cancelButtonProps:e,cancelTextLocale:t,onCancel:n}=(0,C.useContext)(rg);return C.createElement(tg,{onClick:n,...e},t)},lv=()=>{let{confirmLoading:e,okButtonProps:t,okType:n,okTextLocale:r,onOk:i}=(0,C.useContext)(rg);return C.createElement(tg,{...Ym(n),loading:e,onClick:i,...t},r)};function uv(e,t){return C.createElement(`span`,{className:`${e}-close-x`},t||C.createElement(zl,{className:`${e}-close-icon`}))}var dv=e=>{let{okText:t,okType:n=`primary`,cancelText:r,confirmLoading:i,onOk:a,onCancel:o,okButtonProps:s,cancelButtonProps:c,footer:l}=e,[u]=ld(`Modal`,sd()),d=t||u?.okText,f=r||u?.cancelText,p=C.useMemo(()=>({confirmLoading:i,okButtonProps:s,cancelButtonProps:c,okTextLocale:d,cancelTextLocale:f,okType:n,onOk:a,onCancel:o}),[i,s,c,d,f,n,a,o]),m;return typeof l==`function`||l===void 0?(m=C.createElement(C.Fragment,null,C.createElement(cv,null),C.createElement(lv,null)),typeof l==`function`&&(m=l(m,{OkBtn:lv,CancelBtn:cv})),m=C.createElement(ig,{value:p},m)):m=l,C.createElement(Vp,{disabled:!1},m)},gne=e=>{let{componentCls:t}=e;return{[t]:{display:`flex`,flexFlow:`row wrap`,minWidth:0,"&::before, &::after":{display:`flex`},"&-no-wrap":{flexWrap:`nowrap`},"&-start":{justifyContent:`flex-start`},"&-center":{justifyContent:`center`},"&-end":{justifyContent:`flex-end`},"&-space-between":{justifyContent:`space-between`},"&-space-around":{justifyContent:`space-around`},"&-space-evenly":{justifyContent:`space-evenly`},"&-top":{alignItems:`flex-start`},"&-middle":{alignItems:`center`},"&-bottom":{alignItems:`flex-end`}}}},_ne=e=>{let{componentCls:t}=e;return{[t]:{position:`relative`,maxWidth:`100%`,minHeight:1}}},vne=(e,t)=>{let{componentCls:n,gridColumns:r,antCls:i}=e,[a,o]=sl(i,`grid`),[,s]=sl(i,`col`),c={};for(let e=r;e>=0;e--)e===0?(c[`${n}${t}-${e}`]={display:`none`},c[`${n}-push-${e}`]={insetInlineStart:`auto`},c[`${n}-pull-${e}`]={insetInlineEnd:`auto`},c[`${n}${t}-push-${e}`]={insetInlineStart:`auto`},c[`${n}${t}-pull-${e}`]={insetInlineEnd:`auto`},c[`${n}${t}-offset-${e}`]={marginInlineStart:0},c[`${n}${t}-order-${e}`]={order:0}):(c[`${n}${t}-${e}`]=[{[a(`display`)]:`block`,display:`block`},{display:o(`display`),flex:`0 0 ${e/r*100}%`,maxWidth:`${e/r*100}%`}],c[`${n}${t}-push-${e}`]={insetInlineStart:`${e/r*100}%`},c[`${n}${t}-pull-${e}`]={insetInlineEnd:`${e/r*100}%`},c[`${n}${t}-offset-${e}`]={marginInlineStart:`${e/r*100}%`},c[`${n}${t}-order-${e}`]={order:e});return c[`${n}${t}-flex`]={flex:s(`${t.replace(/-/,``)}-flex`)},c},fv=(e,t)=>vne(e,t),yne=(e,t,n)=>({[`@media (min-width: ${J(t)})`]:{...fv(e,n)}}),bne=()=>({}),xne=()=>({}),Sne=il(`Grid`,gne,bne),pv=e=>({xs:e.screenXSMin,sm:e.screenSMMin,md:e.screenMDMin,lg:e.screenLGMin,xl:e.screenXLMin,xxl:e.screenXXLMin,xxxl:e.screenXXXLMin}),Cne=il(`Grid`,e=>{let t=_s(e,{gridColumns:24}),n=pv(t);return delete n.xs,[_ne(t),fv(t,``),fv(t,`-xs`),Object.keys(n).map(e=>yne(t,n[e],`-${e}`)).reduce((e,t)=>({...e,...t}),{})]},xne);function mv(e){return{position:e,inset:0}}var wne=e=>{let{componentCls:t,antCls:n}=e;return[{[`${t}-root`]:{[`${t}${n}-zoom-enter, ${t}${n}-zoom-appear`]:{transform:`none`,opacity:0,animationDuration:e.motionDurationSlow,userSelect:`none`},[`${t}${n}-zoom-leave ${t}-container`]:{pointerEvents:`none`},[`${t}-mask`]:{...mv(`fixed`),zIndex:e.zIndexPopupBase,height:`100%`,backgroundColor:e.colorBgMask,pointerEvents:`none`,[`&${t}-mask-blur`]:{backdropFilter:`blur(4px)`},[`${t}-hidden`]:{display:`none`}},[`${t}-wrap`]:{...mv(`fixed`),zIndex:e.zIndexPopupBase,overflow:`auto`,outline:0,WebkitOverflowScrolling:`touch`}}},{[`${t}-root`]:ah(e)}]},Tne=e=>{let{componentCls:t,motionDurationMid:n}=e;return[{[`${t}-root`]:{[`${t}-wrap-rtl`]:{direction:`rtl`},[`${t}-centered`]:{textAlign:`center`,"&::before":{display:`inline-block`,width:0,height:`100%`,verticalAlign:`middle`,content:`""`},[t]:{top:0,display:`inline-block`,paddingBottom:0,textAlign:`start`,verticalAlign:`middle`}},[`@media (max-width: ${e.screenSMMax}px)`]:{[t]:{maxWidth:`calc(100vw - 16px)`,margin:`${J(e.marginXS)} auto`},[`${t}-centered`]:{[t]:{flex:1}}}}},{[t]:{...Yc(e),pointerEvents:`none`,position:`relative`,top:100,width:`auto`,maxWidth:`calc(100vw - ${J(e.calc(e.margin).mul(2).equal())})`,margin:`0 auto`,"&:focus-visible":{borderRadius:e.borderRadiusLG,...Qc(e)},[`${t}-title`]:{margin:0,color:e.titleColor,fontWeight:e.fontWeightStrong,fontSize:e.titleFontSize,lineHeight:e.titleLineHeight,wordWrap:`break-word`},[`${t}-container`]:{position:`relative`,backgroundColor:e.contentBg,backgroundClip:`padding-box`,border:0,borderRadius:e.borderRadiusLG,boxShadow:e.boxShadow,pointerEvents:`auto`,padding:e.contentPadding},[`${t}-close`]:{position:`absolute`,top:e.calc(e.modalHeaderHeight).sub(e.modalCloseBtnSize).div(2).equal(),insetInlineEnd:e.calc(e.modalHeaderHeight).sub(e.modalCloseBtnSize).div(2).equal(),zIndex:e.calc(e.zIndexPopupBase).add(10).equal(),padding:0,color:e.modalCloseIconColor,fontWeight:e.fontWeightStrong,lineHeight:1,textDecoration:`none`,background:`transparent`,borderRadius:e.borderRadiusSM,width:e.modalCloseBtnSize,height:e.modalCloseBtnSize,border:0,outline:0,cursor:`pointer`,transition:[`color`,`background-color`].map(e=>`${e} ${n}`).join(`, `),"&-x":{display:`flex`,fontSize:e.fontSizeLG,fontStyle:`normal`,lineHeight:J(e.modalCloseBtnSize),justifyContent:`center`,textTransform:`none`,textRendering:`auto`},"&:disabled":{pointerEvents:`none`},"&:hover":{color:e.modalCloseIconHoverColor,backgroundColor:e.colorBgTextHover,textDecoration:`none`},"&:active":{backgroundColor:e.colorBgTextActive},...$c(e)},[`${t}-header`]:{color:e.colorText,background:e.headerBg,borderRadius:`${J(e.borderRadiusLG)} ${J(e.borderRadiusLG)} 0 0`,marginBottom:e.headerMarginBottom,padding:e.headerPadding,borderBottom:e.headerBorderBottom},[`${t}-body`]:{fontSize:e.fontSize,lineHeight:e.lineHeight,wordWrap:`break-word`,padding:e.bodyPadding,[`${t}-body-skeleton`]:{width:`100%`,height:`100%`,display:`flex`,justifyContent:`center`,alignItems:`center`,margin:`${J(e.margin)} auto`}},[`${t}-footer`]:{textAlign:`end`,background:e.footerBg,marginTop:e.footerMarginTop,padding:e.footerPadding,borderTop:e.footerBorderTop,borderRadius:e.footerBorderRadius,[`> ${e.antCls}-btn + ${e.antCls}-btn`]:{marginInlineStart:e.marginXS}},[`${t}-open`]:{overflow:`hidden`}}},{[`${t}-pure-panel`]:{top:`auto`,padding:0,display:`flex`,flexDirection:`column`,[`${t}-container,
+ `]:{...ine(e)}}}},Y_=il(`Skeleton`,e=>{let{componentCls:t,calc:n}=e;return une(_s(e,{skeletonAvatarCls:`${t}-avatar`,skeletonTitleCls:`${t}-title`,skeletonParagraphCls:`${t}-paragraph`,skeletonButtonCls:`${t}-button`,skeletonInputCls:`${t}-input`,skeletonNodeCls:`${t}-node`,skeletonImageCls:`${t}-image`,imageSizeBase:n(e.controlHeight).mul(1.5).equal(),borderRadius:100,skeletonLoadingBackground:`linear-gradient(90deg, ${e.gradientFromColor} 25%, ${e.gradientToColor} 37%, ${e.gradientFromColor} 63%)`,skeletonLoadingMotionDuration:`1.4s`}))},e=>{let{colorFillContent:t,colorFill:n}=e,r=t,i=n;return{color:r,colorGradientEnd:i,gradientFromColor:r,gradientToColor:i,titleHeight:e.controlHeight/2,blockRadius:e.borderRadiusSM,paragraphMarginTop:e.marginLG+e.marginXXS,paragraphLiHeight:e.controlHeight/2}},{deprecatedTokens:[[`color`,`gradientFromColor`],[`colorGradientEnd`,`gradientToColor`]]}),dne=e=>{let{prefixCls:t,className:n,classNames:r,rootClassName:i,active:a,style:o,styles:s,shape:c=`circle`,size:l,...u}=e,{getPrefixCls:d}=C.useContext(si),f=d(`skeleton`,t),[p,m]=Y_(f),h=Pm(e=>l??e),g=q(f,`${f}-element`,{[`${f}-active`]:a},r?.root,n,i,p,m);return C.createElement(`div`,{className:g,style:s?.root},C.createElement(V_,{prefixCls:`${f}-avatar`,className:r?.content,style:{...s?.content,...o},shape:c,size:h,...u}))},fne=e=>{let{prefixCls:t,className:n,rootClassName:r,classNames:i,active:a,style:o,styles:s,block:c=!1,size:l,...u}=e,{getPrefixCls:d}=C.useContext(si),f=d(`skeleton`,t),[p,m]=Y_(f),h=Pm(e=>l??e),g=q(f,`${f}-element`,{[`${f}-active`]:a,[`${f}-block`]:c},i?.root,n,r,p,m);return C.createElement(`div`,{className:g,style:s?.root},C.createElement(V_,{prefixCls:`${f}-button`,className:i?.content,style:{...s?.content,...o},size:h,...u}))},X_=e=>{let{prefixCls:t,className:n,classNames:r,rootClassName:i,internalClassName:a,style:o,styles:s,active:c,children:l}=e,{getPrefixCls:u}=C.useContext(si),d=u(`skeleton`,t),[f,p]=Y_(d),m=q(d,`${d}-element`,{[`${d}-active`]:c},f,r?.root,n,i,p);return C.createElement(`div`,{className:m,style:s?.root},C.createElement(`div`,{className:q(r?.content,a||`${d}-node`),style:{...s?.content,...o}},l))},pne=e=>{let{getPrefixCls:t}=C.useContext(si),n=t(`skeleton`,e.prefixCls);return C.createElement(X_,{...e,internalClassName:`${n}-image`},C.createElement(`svg`,{viewBox:`0 0 1098 1024`,xmlns:`http://www.w3.org/2000/svg`,className:`${n}-image-svg`},C.createElement(`title`,null,`Image placeholder`),C.createElement(`path`,{d:`M365.7 329.1q0 45.8-32 77.7t-77.7 32-77.7-32-32-77.7 32-77.6 77.7-32 77.7 32 32 77.6M951 548.6v256H146.3V694.9L329 512l91.5 91.4L713 311zm54.8-402.3H91.4q-7.4 0-12.8 5.4T73 164.6v694.8q0 7.5 5.5 12.9t12.8 5.4h914.3q7.5 0 12.9-5.4t5.4-12.9V164.6q0-7.5-5.4-12.9t-12.9-5.4m91.4 18.3v694.8q0 37.8-26.8 64.6t-64.6 26.9H91.4q-37.7 0-64.6-26.9T0 859.4V164.6q0-37.8 26.8-64.6T91.4 73h914.3q37.8 0 64.6 26.9t26.8 64.6`,className:`${n}-image-path`})))},mne=e=>{let{prefixCls:t,className:n,classNames:r,rootClassName:i,active:a,block:o,style:s,styles:c,size:l,...u}=e,{getPrefixCls:d}=C.useContext(si),f=d(`skeleton`,t),[p,m]=Y_(f),h=Pm(e=>l??e),g=q(f,`${f}-element`,{[`${f}-active`]:a,[`${f}-block`]:o},r?.root,n,i,p,m);return C.createElement(`div`,{className:g,style:c?.root},C.createElement(V_,{prefixCls:`${f}-input`,className:r?.content,style:{...c?.content,...s},size:h,...u}))},hne=(e,t)=>{let{width:n,rows:r=2}=t;if(Array.isArray(n))return n[e];if(r-1===e)return n},gne=e=>{let{prefixCls:t,className:n,style:r,rows:i=0}=e,a=Array.from({length:i}).map((t,n)=>C.createElement(`li`,{key:n,style:{width:hne(n,e)}}));return C.createElement(`ul`,{className:q(t,n),style:r},a)},_ne=({prefixCls:e,className:t,width:n,style:r})=>C.createElement(`h3`,{className:q(e,t),style:{width:n,...r}});function Z_(e){return gd(e)?e:{}}function vne(e,t){return e&&!t?{size:`large`,shape:`square`}:{size:`large`,shape:`circle`}}function yne(e,t){return!e&&t?{width:`38%`}:e&&t?{width:`50%`}:{}}function bne(e,t){let n={};return(!e||!t)&&(n.width=`61%`),!e&&t?n.rows=3:n.rows=2,n}var Q_=e=>{let{prefixCls:t,loading:n,className:r,rootClassName:i,classNames:a,style:o,styles:s,children:c,avatar:l=!1,title:u=!0,paragraph:d=!0,active:f,round:p}=e,{getPrefixCls:m,direction:h,className:g,style:_,classNames:v,styles:y}=ui(`skeleton`),b=m(`skeleton`,t),[x,S]=Y_(b),w={...e,avatar:l,title:u,paragraph:d},[T,E]=Id([v,a],[y,s],{props:w});if(n||!(`loading`in e)){let e=!!l,t=!!u,n=!!d,a;if(e){let e={className:T.avatar,prefixCls:`${b}-avatar`,...vne(t,n),...Z_(l),style:E.avatar};a=C.createElement(`div`,{className:q(T.header,`${b}-header`),style:E.header},C.createElement(V_,{...e}))}let s;if(t||n){let r;if(t){let t={className:T.title,prefixCls:`${b}-title`,...yne(e,n),...Z_(u),style:E.title};r=C.createElement(_ne,{...t})}let i;if(n){let n={className:T.paragraph,prefixCls:`${b}-paragraph`,...bne(e,t),...Z_(d),style:E.paragraph};i=C.createElement(gne,{...n})}s=C.createElement(`div`,{className:q(T.section,`${b}-section`),style:E.section},r,i)}let c=q(b,{[`${b}-with-avatar`]:e,[`${b}-active`]:f,[`${b}-rtl`]:h===`rtl`,[`${b}-round`]:p},T.root,g,r,i,x,S);return C.createElement(`div`,{className:c,style:{...E.root,..._,...o}},a,s)}return c??null};Q_.Button=fne,Q_.Avatar=dne,Q_.Input=mne,Q_.Image=pne,Q_.Node=X_;var $_=Q_;function ev(){}var xne=C.createContext({add:ev,remove:ev});function tv(e){let t=C.useContext(xne),n=C.useRef(null);return Rn(r=>{if(r){let i=e?r.querySelector(e):r;i&&(t.add(i),n.current=i)}else t.remove(n.current)})}var nv=()=>{let{cancelButtonProps:e,cancelTextLocale:t,onCancel:n}=(0,C.useContext)(ag);return C.createElement(rg,{onClick:n,...e},t)},rv=()=>{let{confirmLoading:e,okButtonProps:t,okType:n,okTextLocale:r,onOk:i}=(0,C.useContext)(ag);return C.createElement(rg,{...Vm(n),loading:e,onClick:i,...t},r)};function iv(e,t){return C.createElement(`span`,{className:`${e}-close-x`},t||C.createElement(zl,{className:`${e}-close-icon`}))}var av=e=>{let{okText:t,okType:n=`primary`,cancelText:r,confirmLoading:i,onOk:a,onCancel:o,okButtonProps:s,cancelButtonProps:c,footer:l}=e,[u]=ld(`Modal`,sd()),d=t||u?.okText,f=r||u?.cancelText,p=C.useMemo(()=>({confirmLoading:i,okButtonProps:s,cancelButtonProps:c,okTextLocale:d,cancelTextLocale:f,okType:n,onOk:a,onCancel:o}),[i,s,c,d,f,n,a,o]),m;return typeof l==`function`||l===void 0?(m=C.createElement(C.Fragment,null,C.createElement(nv,null),C.createElement(rv,null)),typeof l==`function`&&(m=l(m,{OkBtn:rv,CancelBtn:nv})),m=C.createElement(og,{value:p},m)):m=l,C.createElement(Vp,{disabled:!1},m)},Sne=e=>{let{componentCls:t}=e;return{[t]:{display:`flex`,flexFlow:`row wrap`,minWidth:0,"&::before, &::after":{display:`flex`},"&-no-wrap":{flexWrap:`nowrap`},"&-start":{justifyContent:`flex-start`},"&-center":{justifyContent:`center`},"&-end":{justifyContent:`flex-end`},"&-space-between":{justifyContent:`space-between`},"&-space-around":{justifyContent:`space-around`},"&-space-evenly":{justifyContent:`space-evenly`},"&-top":{alignItems:`flex-start`},"&-middle":{alignItems:`center`},"&-bottom":{alignItems:`flex-end`}}}},Cne=e=>{let{componentCls:t}=e;return{[t]:{position:`relative`,maxWidth:`100%`,minHeight:1}}},wne=(e,t)=>{let{componentCls:n,gridColumns:r,antCls:i}=e,[a,o]=sl(i,`grid`),[,s]=sl(i,`col`),c={};for(let e=r;e>=0;e--)e===0?(c[`${n}${t}-${e}`]={display:`none`},c[`${n}-push-${e}`]={insetInlineStart:`auto`},c[`${n}-pull-${e}`]={insetInlineEnd:`auto`},c[`${n}${t}-push-${e}`]={insetInlineStart:`auto`},c[`${n}${t}-pull-${e}`]={insetInlineEnd:`auto`},c[`${n}${t}-offset-${e}`]={marginInlineStart:0},c[`${n}${t}-order-${e}`]={order:0}):(c[`${n}${t}-${e}`]=[{[a(`display`)]:`block`,display:`block`},{display:o(`display`),flex:`0 0 ${e/r*100}%`,maxWidth:`${e/r*100}%`}],c[`${n}${t}-push-${e}`]={insetInlineStart:`${e/r*100}%`},c[`${n}${t}-pull-${e}`]={insetInlineEnd:`${e/r*100}%`},c[`${n}${t}-offset-${e}`]={marginInlineStart:`${e/r*100}%`},c[`${n}${t}-order-${e}`]={order:e});return c[`${n}${t}-flex`]={flex:s(`${t.replace(/-/,``)}-flex`)},c},ov=(e,t)=>wne(e,t),Tne=(e,t,n)=>({[`@media (min-width: ${J(t)})`]:{...ov(e,n)}}),Ene=()=>({}),Dne=()=>({}),One=il(`Grid`,Sne,Ene),sv=e=>({xs:e.screenXSMin,sm:e.screenSMMin,md:e.screenMDMin,lg:e.screenLGMin,xl:e.screenXLMin,xxl:e.screenXXLMin,xxxl:e.screenXXXLMin}),kne=il(`Grid`,e=>{let t=_s(e,{gridColumns:24}),n=sv(t);return delete n.xs,[Cne(t),ov(t,``),ov(t,`-xs`),Object.keys(n).map(e=>Tne(t,n[e],`-${e}`)).reduce((e,t)=>({...e,...t}),{})]},Dne);function cv(e){return{position:e,inset:0}}var Ane=e=>{let{componentCls:t,antCls:n}=e;return[{[`${t}-root`]:{[`${t}${n}-zoom-enter, ${t}${n}-zoom-appear`]:{transform:`none`,opacity:0,animationDuration:e.motionDurationSlow,userSelect:`none`},[`${t}${n}-zoom-leave ${t}-container`]:{pointerEvents:`none`},[`${t}-mask`]:{...cv(`fixed`),zIndex:e.zIndexPopupBase,height:`100%`,backgroundColor:e.colorBgMask,pointerEvents:`none`,[`&${t}-mask-blur`]:{backdropFilter:`blur(4px)`},[`${t}-hidden`]:{display:`none`}},[`${t}-wrap`]:{...cv(`fixed`),zIndex:e.zIndexPopupBase,overflow:`auto`,outline:0,WebkitOverflowScrolling:`touch`}}},{[`${t}-root`]:$m(e)}]},jne=e=>{let{componentCls:t,motionDurationMid:n}=e;return[{[`${t}-root`]:{[`${t}-wrap-rtl`]:{direction:`rtl`},[`${t}-centered`]:{textAlign:`center`,"&::before":{display:`inline-block`,width:0,height:`100%`,verticalAlign:`middle`,content:`""`},[t]:{top:0,display:`inline-block`,paddingBottom:0,textAlign:`start`,verticalAlign:`middle`}},[`@media (max-width: ${e.screenSMMax}px)`]:{[t]:{maxWidth:`calc(100vw - 16px)`,margin:`${J(e.marginXS)} auto`},[`${t}-centered`]:{[t]:{flex:1}}}}},{[t]:{...Yc(e),pointerEvents:`none`,position:`relative`,top:100,width:`auto`,maxWidth:`calc(100vw - ${J(e.calc(e.margin).mul(2).equal())})`,margin:`0 auto`,"&:focus-visible":{borderRadius:e.borderRadiusLG,...Qc(e)},[`${t}-title`]:{margin:0,color:e.titleColor,fontWeight:e.fontWeightStrong,fontSize:e.titleFontSize,lineHeight:e.titleLineHeight,wordWrap:`break-word`},[`${t}-container`]:{position:`relative`,backgroundColor:e.contentBg,backgroundClip:`padding-box`,border:0,borderRadius:e.borderRadiusLG,boxShadow:e.boxShadow,pointerEvents:`auto`,padding:e.contentPadding},[`${t}-close`]:{position:`absolute`,top:e.calc(e.modalHeaderHeight).sub(e.modalCloseBtnSize).div(2).equal(),insetInlineEnd:e.calc(e.modalHeaderHeight).sub(e.modalCloseBtnSize).div(2).equal(),zIndex:e.calc(e.zIndexPopupBase).add(10).equal(),padding:0,color:e.modalCloseIconColor,fontWeight:e.fontWeightStrong,lineHeight:1,textDecoration:`none`,background:`transparent`,borderRadius:e.borderRadiusSM,width:e.modalCloseBtnSize,height:e.modalCloseBtnSize,border:0,outline:0,cursor:`pointer`,transition:[`color`,`background-color`].map(e=>`${e} ${n}`).join(`, `),"&-x":{display:`flex`,fontSize:e.fontSizeLG,fontStyle:`normal`,lineHeight:J(e.modalCloseBtnSize),justifyContent:`center`,textTransform:`none`,textRendering:`auto`},"&:disabled":{pointerEvents:`none`},"&:hover":{color:e.modalCloseIconHoverColor,backgroundColor:e.colorBgTextHover,textDecoration:`none`},"&:active":{backgroundColor:e.colorBgTextActive},...$c(e)},[`${t}-header`]:{color:e.colorText,background:e.headerBg,borderRadius:`${J(e.borderRadiusLG)} ${J(e.borderRadiusLG)} 0 0`,marginBottom:e.headerMarginBottom,padding:e.headerPadding,borderBottom:e.headerBorderBottom},[`${t}-body`]:{fontSize:e.fontSize,lineHeight:e.lineHeight,wordWrap:`break-word`,padding:e.bodyPadding,[`${t}-body-skeleton`]:{width:`100%`,height:`100%`,display:`flex`,justifyContent:`center`,alignItems:`center`,margin:`${J(e.margin)} auto`}},[`${t}-footer`]:{textAlign:`end`,background:e.footerBg,marginTop:e.footerMarginTop,padding:e.footerPadding,borderTop:e.footerBorderTop,borderRadius:e.footerBorderRadius,[`> ${e.antCls}-btn + ${e.antCls}-btn`]:{marginInlineStart:e.marginXS}},[`${t}-open`]:{overflow:`hidden`}}},{[`${t}-pure-panel`]:{top:`auto`,padding:0,display:`flex`,flexDirection:`column`,[`${t}-container,
${t}-body,
- ${t}-confirm-body-wrapper`]:{display:`flex`,flexDirection:`column`,flex:`auto`},[`${t}-confirm-body`]:{marginBottom:`auto`}}}]},Ene=e=>{let{componentCls:t}=e;return{[`${t}-root`]:{[`${t}-wrap-rtl`]:{direction:`rtl`,[`${t}-confirm-body`]:{direction:`rtl`}}}}},Dne=e=>{let{componentCls:t}=e,n=pv(e),r={...n};delete r.xs;let i=`--${t.replace(`.`,``)}-`,a=Object.keys(r).map(e=>({[`@media (min-width: ${J(r[e])})`]:{width:`var(${i}${e}-width)`}}));return{[`${t}-root`]:{[t]:[].concat(Qr(Object.keys(n).map((e,t)=>{let r=Object.keys(n)[t-1];return r?{[`${i}${e}-width`]:`var(${i}${r}-width)`}:null})),[{width:`var(${i}xs-width)`}],Qr(a))}}},hv=e=>{let t=e.padding,n=e.fontSizeHeading5,r=e.lineHeightHeading5;return _s(e,{modalHeaderHeight:e.calc(e.calc(r).mul(n).equal()).add(e.calc(t).mul(2).equal()).equal(),modalFooterBorderColorSplit:e.colorSplit,modalFooterBorderStyle:e.lineType,modalFooterBorderWidth:e.lineWidth,modalCloseIconColor:e.colorIcon,modalCloseIconHoverColor:e.colorIconHover,modalCloseBtnSize:e.controlHeight,modalConfirmIconSize:e.fontHeight,modalTitleHeight:e.calc(e.titleFontSize).mul(e.titleLineHeight).equal()})},gv=e=>({footerBg:`transparent`,headerBg:`transparent`,titleLineHeight:e.lineHeightHeading5,titleFontSize:e.fontSizeHeading5,contentBg:e.colorBgElevated,titleColor:e.colorTextHeading,contentPadding:e.wireframe?0:`${J(e.paddingMD)} ${J(e.paddingContentHorizontalLG)}`,headerPadding:e.wireframe?`${J(e.padding)} ${J(e.paddingLG)}`:0,headerBorderBottom:e.wireframe?`${J(e.lineWidth)} ${e.lineType} ${e.colorSplit}`:`none`,headerMarginBottom:e.wireframe?0:e.marginXS,bodyPadding:e.wireframe?e.paddingLG:0,footerPadding:e.wireframe?`${J(e.paddingXS)} ${J(e.padding)}`:0,footerBorderTop:e.wireframe?`${J(e.lineWidth)} ${e.lineType} ${e.colorSplit}`:`none`,footerBorderRadius:e.wireframe?`0 0 ${J(e.borderRadiusLG)} ${J(e.borderRadiusLG)}`:0,footerMarginTop:e.wireframe?0:e.marginSM,confirmBodyPadding:e.wireframe?`${J(e.padding*2)} ${J(e.padding*2)} ${J(e.paddingLG)}`:0,confirmIconMarginInlineEnd:e.wireframe?e.margin:e.marginSM,confirmBtnsMarginTop:e.wireframe?e.marginLG:e.marginSM,mask:!0}),_v=il(`Modal`,e=>{let t=hv(e);return[Tne(t),Ene(t),wne(t),gh(t,`zoom`),Dne(t)]},gv,{unitless:{titleLineHeight:!0}}),vv;Xte()&&document.documentElement.addEventListener(`click`,e=>{vv={x:e.pageX,y:e.pageY},setTimeout(()=>{vv=null},100)},!0);var yv=e=>{let{prefixCls:t,className:n,rootClassName:r,open:i,wrapClassName:a,centered:o,getContainer:s,style:c,width:l=520,footer:u,classNames:d,styles:f,children:p,loading:m,confirmLoading:h,zIndex:g,mousePosition:_,onOk:v,onCancel:y,okButtonProps:b,cancelButtonProps:x,destroyOnHidden:S,destroyOnClose:w,panelRef:T=null,closable:E,mask:D,modalRender:O,maskClosable:k,focusTriggerAfterClose:A,focusable:j,...M}=e,{getPopupContainer:N,getPrefixCls:P,direction:F,className:I,style:L,classNames:R,styles:z,centered:B,cancelButtonProps:V,okButtonProps:H,mask:U}=ui(`modal`),{modal:W}=C.useContext(si),[ee,te]=C.useMemo(()=>typeof E==`boolean`?[void 0,void 0]:[E?.afterClose,E?.onClose],[E]),ne=P(`modal`,t),re=P(),[ie,ae,G]=kd(D,U,ne,k),oe=q_(j,ie,A),K=e=>{h||(y?.(e),te?.())},se=e=>{v?.(e),te?.()},ce=xf(ne),[le,ue]=_v(ne,ce),de=q(a,{[`${ne}-centered`]:o??B,[`${ne}-wrap-rtl`]:F===`rtl`}),fe=u!==null&&!m?C.createElement(dv,{...e,okButtonProps:{...H,...b},onOk:se,cancelButtonProps:{...V,...x},onCancel:K}):null,[pe,me,he,ge]=Ed(bd(e),bd(W),{closable:!0,closeIcon:C.createElement(zl,{className:`${ne}-close-icon`}),closeIconRender:e=>uv(ne,e)}),_e=pe?{disabled:he,closeIcon:me,afterClose:ee,...ge}:!1,ve=O?e=>C.createElement(`div`,{className:`${ne}-render`},O(e)):void 0,ye=er(T,sv(`.${ne}-${O?`render`:`container`}`)),[be,xe]=Xd(`Modal`,g),Se={...e,width:l,panelRef:T,focusTriggerAfterClose:oe.focusTriggerAfterClose,focusable:oe,mask:ie,maskClosable:G,zIndex:be},[Ce,we]=Id([R,d,ae],[z,f],{props:Se}),[Te,Ee]=C.useMemo(()=>gd(l)?[void 0,l]:[l,void 0],[l]),De=C.useMemo(()=>{let e={};return Ee&&Object.keys(Ee).forEach(t=>{let n=Ee[t];pd(n)&&(e[`--${ne}-${t}-width`]=md(n)?`${n}px`:n)}),e},[ne,Ee]);return C.createElement(U_,{form:!0,space:!0},C.createElement(Wd.Provider,{value:xe},C.createElement(yte,{width:Te,...M,zIndex:be,getContainer:s===void 0?N:s,prefixCls:ne,rootClassName:q(le,r,ue,ce,Ce.root),rootStyle:we.root,footer:fe,visible:i,mousePosition:_??vv,onClose:K,closable:_e,closeIcon:me,transitionName:Nm(re,`zoom`,e.transitionName),maskTransitionName:Nm(re,`fade`,e.maskTransitionName),mask:ie,maskClosable:G,className:q(le,n,I),style:{...L,...c,...De},classNames:{...Ce,wrapper:q(Ce.wrapper,de)},styles:we,panelRef:ye,destroyOnHidden:S??w,modalRender:ve,focusTriggerAfterClose:oe.focusTriggerAfterClose,focusTrap:oe.trap},m?C.createElement(av,{active:!0,title:!1,paragraph:{rows:4},className:`${ne}-body-skeleton`}):p)))},One=e=>{let{componentCls:t,titleFontSize:n,titleLineHeight:r,modalConfirmIconSize:i,fontSize:a,lineHeight:o,modalTitleHeight:s,fontHeight:c,confirmBodyPadding:l}=e,u=`${t}-confirm`;return{[u]:{"&-rtl":{direction:`rtl`},[`${e.antCls}-modal-header`]:{display:`none`},[`${u}-body-wrapper`]:{...Zc()},[`&${t} ${t}-body`]:{padding:l},[`${u}-body`]:{display:`flex`,flexWrap:`nowrap`,alignItems:`start`,[`> ${e.iconCls}`]:{flex:`none`,fontSize:i,marginInlineEnd:e.confirmIconMarginInlineEnd,marginTop:e.calc(e.calc(c).sub(i).equal()).div(2).equal()},[`&-has-title > ${e.iconCls}`]:{marginTop:e.calc(e.calc(s).sub(i).equal()).div(2).equal()}},[`${u}-paragraph`]:{display:`flex`,flexDirection:`column`,flex:`auto`,rowGap:e.marginXS,maxWidth:`calc(100% - ${J(e.marginSM)})`},[`${u}-body-no-icon ${u}-paragraph`]:{maxWidth:`100%`},[`${e.iconCls} + ${u}-paragraph`]:{maxWidth:`calc(100% - ${J(e.calc(e.modalConfirmIconSize).add(e.marginSM).equal())})`},[`${u}-title`]:{color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:n,lineHeight:r},[`${u}-container`]:{color:e.colorText,fontSize:a,lineHeight:o},[`${u}-btns`]:{textAlign:`end`,marginTop:e.confirmBtnsMarginTop,[`${e.antCls}-btn + ${e.antCls}-btn`]:{marginBottom:0,marginInlineStart:e.marginXS}}},[`${u}-error ${u}-body > ${e.iconCls}`]:{color:e.colorError},[`${u}-warning ${u}-body > ${e.iconCls},
- ${u}-confirm ${u}-body > ${e.iconCls}`]:{color:e.colorWarning},[`${u}-info ${u}-body > ${e.iconCls}`]:{color:e.colorInfo},[`${u}-success ${u}-body > ${e.iconCls}`]:{color:e.colorSuccess}}},kne=ol([`Modal`,`confirm`],e=>One(hv(e)),gv,{order:-1e3}),bv=e=>{let{prefixCls:t,icon:n,okText:r,cancelText:i,confirmPrefixCls:a,type:o,okCancel:s,footer:c,locale:l,autoFocusButton:u,focusable:d,...f}=e,p=n;if(!n&&n!==null)switch(o){case`info`:p=C.createElement(Gl,null);break;case`success`:p=C.createElement(Nl,null);break;case`error`:p=C.createElement(Il,null);break;default:p=C.createElement(Hl,null)}let m=s??o===`confirm`,h=C.useMemo(()=>{let e=d?.autoFocusButton||u;return e||e===null?e:`ok`},[u,d?.autoFocusButton]),[g]=ld(`Modal`),_=l||g,v=r||(m?_?.okText:_?.justOkText),y=i||_?.cancelText,{closable:b}=f,{onClose:x}=gd(b)?b:{},S=C.useMemo(()=>({autoFocusButton:h,cancelTextLocale:y,okTextLocale:v,mergedOkCancel:m,onClose:x,...f}),[h,y,v,m,x,f]),w=C.createElement(C.Fragment,null,C.createElement(ag,null),C.createElement(og,null)),T=pd(e.title)&&e.title!==``,E=pd(p),D=`${a}-body`;return C.createElement(`div`,{className:`${a}-body-wrapper`},C.createElement(`div`,{className:q(D,{[`${D}-has-title`]:T,[`${D}-no-icon`]:!E})},p,C.createElement(`div`,{className:`${a}-paragraph`},T&&C.createElement(`span`,{className:`${a}-title`},e.title),C.createElement(`div`,{className:`${a}-content`},e.content))),c===void 0||typeof c==`function`?C.createElement(ig,{value:S},C.createElement(`div`,{className:`${a}-btns`},typeof c==`function`?c(w,{OkBtn:og,CancelBtn:ag}):w)):c,C.createElement(kne,{prefixCls:t}))},Ane=e=>{let{close:t,zIndex:n,maskStyle:r,direction:i,prefixCls:a,wrapClassName:o,rootPrefixCls:s,bodyStyle:c,closable:l=!1,onConfirm:u,styles:d,title:f,mask:p,maskClosable:m,okButtonProps:h,cancelButtonProps:g}=e,{cancelButtonProps:_,okButtonProps:v}=ui(`modal`),y=`${a}-confirm`,b=e.width||416,x=e.style||{},S=q(y,`${y}-${e.type}`,{[`${y}-rtl`]:i===`rtl`},e.className),w=C.useMemo(()=>{let e=Od(p,m);return e.closable??=!1,e},[p,m]),[,T]=qc(),E=C.useMemo(()=>n===void 0?T.zIndexPopupBase+Kd:n,[n,T]);return C.createElement(yv,{...e,className:S,wrapClassName:q({[`${y}-centered`]:!!e.centered},o),onCancel:()=>{t?.({triggerCancel:!0}),u?.(!1)},title:f,footer:null,transitionName:Nm(s||``,`zoom`,e.transitionName),maskTransitionName:Nm(s||``,`fade`,e.maskTransitionName),mask:w,style:x,styles:{body:c,mask:r,...d},width:b,zIndex:E,closable:l},C.createElement(bv,{...e,confirmPrefixCls:y,okButtonProps:{...v,...h},cancelButtonProps:{..._,...g}}))},xv=e=>{let{rootPrefixCls:t,iconPrefixCls:n,direction:r,theme:i}=e;return C.createElement($p,{prefixCls:t,iconPrefixCls:n,direction:r,theme:i},C.createElement(Ane,{...e}))},Sv=[],Cv=``;function wv(){return Cv}var jne=e=>{let{prefixCls:t,getContainer:n,direction:r}=e,i=sd(),a=(0,C.useContext)(si),o=wv()||a.getPrefixCls(),s=t||`${o}-modal`,c=n;return c===!1&&(c=void 0),C.createElement(xv,{...e,rootPrefixCls:o,prefixCls:s,iconPrefixCls:a.iconPrefixCls,theme:a.theme,direction:r??a.direction,locale:a.locale?.Modal??i,getContainer:c})};function Tv(e){let t=Qp(),n=document.createDocumentFragment(),r={...e,close:s,open:!0},i;function a(...t){t.some(e=>e?.triggerCancel)&&e.onCancel?.(()=>{},...t.slice(1));for(let e=0;e{})}let o=e=>{clearTimeout(i),i=setTimeout(()=>{let r=t.getPrefixCls(void 0,wv()),i=t.getIconPrefixCls(),a=t.getTheme(),o=C.createElement(jne,{...e});Dm(C.createElement($p,{prefixCls:r,iconPrefixCls:i,theme:a},typeof t.holderRender==`function`?t.holderRender(o):o),n)})};function s(...t){r={...r,open:!1,afterClose:()=>{typeof e.afterClose==`function`&&e.afterClose(),a.apply(this,t)}},o(r)}function c(e){r=typeof e==`function`?e(r):{...r,...e},o(r)}return o(r),Sv.push(s),{destroy:s,update:c}}function Ev(e){return{...e,type:`warning`}}function Dv(e){return{...e,type:`info`}}function Ov(e){return{...e,type:`success`}}function kv(e){return{...e,type:`error`}}function Av(e){return{...e,type:`confirm`}}function Mne({rootPrefixCls:e}){Cv=e}var Nne=C.forwardRef((e,t)=>{let{afterClose:n,config:r,...i}=e,[a,o]=C.useState(!0),[s,c]=C.useState(r),{direction:l,getPrefixCls:u}=C.useContext(si),d=u(`modal`),f=u(),p=()=>{n(),s.afterClose?.()},m=(...e)=>{o(!1),e.some(e=>e?.triggerCancel)&&s.onCancel?.(()=>{},...e.slice(1))};C.useImperativeHandle(t,()=>({destroy:m,update:e=>{c(t=>{let n=typeof e==`function`?e(t):e;return{...t,...n}})}}));let h=s.okCancel??s.type===`confirm`,[g]=ld(`Modal`,nd.Modal);return C.createElement(xv,{prefixCls:d,rootPrefixCls:f,...s,close:m,open:a,afterClose:p,okText:s.okText||(h?g?.okText:g?.justOkText),direction:s.direction||l,cancelText:s.cancelText||g?.cancelText,...i})}),jv=0,Pne=C.memo(C.forwardRef((e,t)=>{let[n,r]=Bd();return C.useImperativeHandle(t,()=>({patchElement:r}),[r]),C.createElement(C.Fragment,null,n)}));function Mv(){let e=C.useRef(null),[t,n]=C.useState([]);C.useEffect(()=>{t.length&&(Qr(t).forEach(e=>{e()}),n([]))},[t]);let r=C.useCallback(t=>function(r){jv+=1;let i=C.createRef(),a,o=new Promise(e=>{a=e}),s=!1,c,l=C.createElement(Nne,{key:`modal-${jv}`,config:t(r),ref:i,afterClose:()=>{c?.()},isSilent:()=>s,onConfirm:e=>{a(e)}});return c=e.current?.patchElement(l),c&&Sv.push(c),{destroy:()=>{function e(){i.current?.destroy()}i.current?e():n(t=>[].concat(Qr(t),[e]))},update:e=>{function t(){i.current?.update(e)}i.current?t():n(e=>[].concat(Qr(e),[t]))},then:e=>(s=!0,o.then(e))}},[]);return[C.useMemo(()=>({info:r(Dv),success:r(Ov),error:r(kv),warning:r(Ev),confirm:r(Av)}),[r]),C.createElement(Pne,{key:`modal-holder`,ref:e})]}var Fne=e=>{let{componentCls:t,notificationMarginEdge:n,animationMaxHeight:r}=e,i=`${t}-notice`,a=new Ro(`antNotificationFadeIn`,{"0%":{transform:`translate3d(100%, 0, 0)`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,opacity:1}}),o=new Ro(`antNotificationTopFadeIn`,{"0%":{top:-r,opacity:0},"100%":{top:0,opacity:1}}),s=new Ro(`antNotificationBottomFadeIn`,{"0%":{bottom:e.calc(r).mul(-1).equal(),opacity:0},"100%":{bottom:0,opacity:1}}),c=new Ro(`antNotificationLeftFadeIn`,{"0%":{transform:`translate3d(-100%, 0, 0)`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,opacity:1}});return{[t]:{[`&${t}-top, &${t}-bottom`]:{marginInline:0,[i]:{marginInline:`auto auto`}},[`&${t}-top`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:o}},[`&${t}-bottom`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:s}},[`&${t}-topRight, &${t}-bottomRight`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:a}},[`&${t}-topLeft, &${t}-bottomLeft`]:{marginRight:{value:0,_skip_check_:!0},marginLeft:{value:n,_skip_check_:!0},[i]:{marginInlineEnd:`auto`,marginInlineStart:0},[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:c}}}}},Ine=[`top`,`topLeft`,`topRight`,`bottom`,`bottomLeft`,`bottomRight`],Lne={topLeft:`left`,topRight:`right`,bottomLeft:`left`,bottomRight:`right`,top:`left`,bottom:`left`},Rne=(e,t)=>{let{componentCls:n}=e;return{[`${n}-${t}`]:{[`&${n}-stack > ${n}-notice-wrapper`]:{[t.startsWith(`top`)?`top`:`bottom`]:0,[Lne[t]]:{value:0,_skip_check_:!0}}}}},zne=e=>{let t={};for(let n=1;n ${e.componentCls}-notice`]:{opacity:0,transition:`opacity ${e.motionDurationMid}`}};return{[`&:not(:nth-last-child(-n+${e.notificationStackLayer}))`]:{opacity:0,overflow:`hidden`,color:`transparent`,pointerEvents:`none`},...t}},Bne=e=>{let t={};for(let n=1;n{let{componentCls:t}=e;return{[`${t}-stack`]:{[`& > ${t}-notice-wrapper`]:{transition:`transform ${e.motionDurationSlow}, backdrop-filter 0s`,willChange:`transform, opacity`,position:`absolute`,...zne(e)}},[`${t}-stack:not(${t}-stack-expanded)`]:{[`& > ${t}-notice-wrapper`]:{...Bne(e)}},[`${t}-stack${t}-stack-expanded`]:{[`& > ${t}-notice-wrapper`]:{"&:not(:nth-last-child(-n + 1))":{opacity:1,overflow:`unset`,color:`inherit`,pointerEvents:`auto`,[`& > ${e.componentCls}-notice`]:{opacity:1}},"&:after":{content:`""`,position:`absolute`,height:e.margin,width:`100%`,insetInline:0,bottom:e.calc(e.margin).mul(-1).equal(),background:`transparent`,pointerEvents:`auto`}}},...Ine.map(t=>Rne(e,t)).reduce((e,t)=>({...e,...t}),{})}},Hne=e=>{let{iconCls:t,componentCls:n,boxShadow:r,fontSizeLG:i,notificationMarginBottom:a,borderRadiusLG:o,colorSuccess:s,colorInfo:c,colorWarning:l,colorError:u,colorTextHeading:d,notificationBg:f,notificationPadding:p,notificationMarginEdge:m,progressBg:h,notificationProgressHeight:g,fontSize:_,lineHeight:v,width:y,notificationIconSize:b,colorText:x,colorSuccessBg:S,colorErrorBg:C,colorInfoBg:w,colorWarningBg:T,motionDurationMid:E}=e,D=`${n}-notice`;return{position:`relative`,marginBottom:a,marginInlineStart:`auto`,background:f,borderRadius:o,boxShadow:r,[D]:{padding:p,width:y,maxWidth:`calc(100vw - ${J(e.calc(m).mul(2).equal())})`,lineHeight:v,wordWrap:`break-word`,borderRadius:o,overflow:`hidden`,"&-success":S?{background:S}:{},"&-error":C?{background:C}:{},"&-info":w?{background:w}:{},"&-warning":T?{background:T}:{}},[`${D}-title`]:{marginBottom:e.marginXS,color:d,fontSize:i,lineHeight:e.lineHeightLG},[`${D}-description`]:{fontSize:_,color:x,marginTop:e.marginXS,"&:first-child":{marginTop:0,marginInlineEnd:e.marginSM}},[`${D}-closable ${D}-title`]:{paddingInlineEnd:e.paddingLG},[`${D}-with-icon ${D}-title`]:{marginBottom:e.marginXS,marginInlineStart:e.calc(e.marginSM).add(b).equal(),fontSize:i},[`${D}-with-icon ${D}-description`]:{marginInlineStart:e.calc(e.marginSM).add(b).equal(),fontSize:_},[`${D}-icon`]:{position:`absolute`,fontSize:b,lineHeight:1,[`&-success${t}`]:{color:s},[`&-info${t}`]:{color:c},[`&-warning${t}`]:{color:l},[`&-error${t}`]:{color:u}},[`${D}-close`]:{position:`absolute`,top:e.notificationPaddingVertical,insetInlineEnd:e.notificationPaddingHorizontal,color:e.colorIcon,outline:`none`,width:e.notificationCloseButtonSize,height:e.notificationCloseButtonSize,borderRadius:e.borderRadiusSM,transition:[`color`,`background-color`].map(e=>`${e} ${E}`).join(`, `),display:`flex`,alignItems:`center`,justifyContent:`center`,background:`none`,border:`none`,"&:hover":{color:e.colorIconHover,backgroundColor:e.colorBgTextHover},"&:active":{backgroundColor:e.colorBgTextActive},...$c(e)},[`${D}-progress`]:{position:`absolute`,display:`block`,appearance:`none`,inlineSize:`calc(100% - ${J(o)} * 2)`,left:{_skip_check_:!0,value:o},right:{_skip_check_:!0,value:o},bottom:0,blockSize:g,border:0,"&, &::-webkit-progress-bar":{borderRadius:o,backgroundColor:`rgba(0, 0, 0, 0.04)`},"&::-moz-progress-bar":{background:h},"&::-webkit-progress-value":{borderRadius:o,background:h}},[`${D}-actions`]:{float:`right`,marginTop:e.marginSM}}},Une=e=>{let{componentCls:t,notificationMarginBottom:n,notificationMarginEdge:r,motionDurationMid:i,motionEaseInOut:a}=e,o=`${t}-notice`,s=new Ro(`antNotificationFadeOut`,{"0%":{maxHeight:e.animationMaxHeight,marginBottom:n},"100%":{maxHeight:0,marginBottom:0,paddingTop:0,paddingBottom:0,opacity:0}});return[{[t]:{...Yc(e),position:`fixed`,zIndex:e.zIndexPopup,marginRight:{value:r,_skip_check_:!0},[`${t}-hook-holder`]:{position:`relative`},[`${t}-fade-appear-prepare`]:{opacity:`0 !important`},[`${t}-fade-enter, ${t}-fade-appear`]:{animationDuration:e.motionDurationMid,animationTimingFunction:a,animationFillMode:`both`,opacity:0,animationPlayState:`paused`},[`${t}-fade-leave`]:{animationTimingFunction:a,animationFillMode:`both`,animationDuration:i,animationPlayState:`paused`},[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationPlayState:`running`},[`${t}-fade-leave${t}-fade-leave-active`]:{animationName:s,animationPlayState:`running`},"&-rtl":{direction:`rtl`,[`${o}-actions`]:{float:`left`}}}},{[t]:{[`${o}-wrapper`]:Hne(e)}}]},Wne=e=>({zIndexPopup:e.zIndexPopupBase+Kd+50,width:384,progressBg:`linear-gradient(90deg, ${e.colorPrimaryBorderHover}, ${e.colorPrimary})`,colorSuccessBg:void 0,colorErrorBg:void 0,colorInfoBg:void 0,colorWarningBg:void 0}),Gne=e=>{let t=e.paddingMD,n=e.paddingLG;return _s(e,{notificationBg:e.colorBgElevated,notificationPaddingVertical:t,notificationPaddingHorizontal:n,notificationIconSize:e.calc(e.fontSizeLG).mul(e.lineHeightLG).equal(),notificationCloseButtonSize:e.calc(e.controlHeightLG).mul(.55).equal(),notificationMarginBottom:e.margin,notificationPadding:`${J(e.paddingMD)} ${J(e.paddingContentHorizontalLG)}`,notificationMarginEdge:e.marginLG,animationMaxHeight:150,notificationStackLayer:3,notificationProgressHeight:2})},Kne=il(`Notification`,e=>{let t=Gne(e);return[Une(t),Fne(t),Vne(t)]},Wne);function Nv(e,t){return t===null||t===!1?null:t||C.createElement(zl,{className:`${e}-close-icon`})}var qne={success:Nl,info:Gl,error:Il,warning:Hl},Jne=e=>{let{prefixCls:t,icon:n,type:r,title:i,description:a,actions:o,role:s=`alert`,styles:c,classNames:l}=e,u=null;return n?u=C.createElement(`span`,{className:q(`${t}-icon`,l.icon),style:c.icon},n):r&&(u=C.createElement(qne[r]||null,{className:q(`${t}-icon`,l.icon,`${t}-icon-${r}`),style:c.icon})),C.createElement(`div`,{className:q({[`${t}-with-icon`]:u}),role:s},u,i&&C.createElement(`div`,{className:q(`${t}-title`,l.title),style:c.title},i),a&&C.createElement(`div`,{className:q(`${t}-description`,l.description),style:c.description},a),o&&C.createElement(`div`,{className:q(`${t}-actions`,l.actions),style:c.actions},o))};function Yne(e,t,n){let r;switch(e){case`top`:r={left:`50%`,transform:`translateX(-50%)`,right:`auto`,top:t,bottom:`auto`};break;case`topLeft`:r={left:0,top:t,bottom:`auto`};break;case`topRight`:r={right:0,top:t,bottom:`auto`};break;case`bottom`:r={left:`50%`,transform:`translateX(-50%)`,right:`auto`,top:`auto`,bottom:n};break;case`bottomLeft`:r={left:0,top:`auto`,bottom:n};break;default:r={right:0,top:`auto`,bottom:n};break}return r}function Xne(e){return{motionName:`${e}-fade`}}function Zne(e,t,n){return e===void 0?t?.closeIcon===void 0?n?.closeIcon:t.closeIcon:e}var Pv=24,Qne=4.5,$ne=`topRight`,ere=({children:e,prefixCls:t})=>{let n=xf(t),[r,i]=Kne(t,n);return C.createElement(im,{classNames:{list:q(r,i,n)}},e)},tre=(e,{prefixCls:t,key:n})=>C.createElement(ere,{prefixCls:t,key:n},e),nre=C.forwardRef((e,t)=>{let{top:n,bottom:r,prefixCls:i,getContainer:a,maxCount:o,rtl:s,onAllRemoved:c,stack:l,duration:u=Qne,pauseOnHover:d=!0,showProgress:f}=e,{getPrefixCls:p,getPopupContainer:m,direction:h}=ui(`notification`),{notification:g}=(0,C.useContext)(si),[,_]=qc(),v=i||p(`notification`),y=(0,C.useMemo)(()=>md(u)&&u>0?u:!1,[u]),[b,x]=um({prefixCls:v,style:e=>Yne(e,n??Pv,r??Pv),className:()=>q({[`${v}-rtl`]:s??h===`rtl`}),motion:()=>Xne(v),closable:{closeIcon:Nv(v)},duration:y,getContainer:()=>a?.()||m?.()||document.body,maxCount:o,pauseOnHover:d,showProgress:f,onAllRemoved:c,renderNotifications:tre,stack:l===!1?!1:{threshold:gd(l)?l?.threshold:void 0,offset:8,gap:_.margin}}),[S,w]=Id([g?.classNames,e?.classNames],[g?.styles,e?.styles],{props:e});return C.useImperativeHandle(t,()=>({...b,prefixCls:v,notification:g,classNames:S,styles:w})),x});function rre(e){let t=C.useRef(null);Or(`Notification`);let{notification:n}=C.useContext(si);return[C.useMemo(()=>{let r=r=>{if(!t.current)return;let{open:i,prefixCls:a,notification:o,classNames:s,styles:c}=t.current,l=o?.className||{},u=o?.style||{},d=`${a}-notice`,{title:f,message:p,description:m,icon:h,type:g,btn:_,actions:v,className:y,style:b,role:x=`alert`,closeIcon:S,closable:w,classNames:T={},styles:E={},...D}=r,O=f??p,k=v??_,A=Nv(d,Zne(S,e,o)),[j,M,,N]=Td(bd({...e||{},...r}),bd(n),{closable:!0,closeIcon:A}),P=j?{onClose:gd(w)?w.onClose:void 0,closeIcon:M,...N}:!1,F=Fd(T,{props:r}),I=Fd(E,{props:r}),L=Ad(void 0,s,F),R=Md(c,I);return i({placement:e?.placement??$ne,...D,content:C.createElement(Jne,{prefixCls:d,icon:h,type:g,title:O,description:m,actions:k,role:x,classNames:L,styles:R}),className:q({[`${d}-${g}`]:g},y,l,L.root),style:{...u,...R.root,...b},closable:P})},i={open:r,destroy:e=>{e===void 0?t.current?.destroy():t.current?.close(e)}};return[`success`,`info`,`warning`,`error`].forEach(e=>{i[e]=t=>r({...t,type:e})}),i},[e,n]),C.createElement(nre,{key:`notification-holder`,...e,ref:t})]}function ire(e){return rre(e)}var Fv=C.createContext({}),Iv=C.createContext({message:{},notification:{},modal:{}}),are=il(`App`,e=>{let{componentCls:t,colorText:n,fontSize:r,lineHeight:i,fontFamily:a}=e;return{[t]:{color:n,fontSize:r,lineHeight:i,fontFamily:a,[`&${t}-rtl`]:{direction:`rtl`}}}},()=>({})),ore=e=>{let{prefixCls:t,children:n,className:r,rootClassName:i,message:a,notification:o,style:s,component:c=`div`}=e,{direction:l,getPrefixCls:u,className:d,style:f}=ui(`app`),p=u(`app`,t),[m,h]=are(p),g=q(m,p,r,i,h,{[`${p}-rtl`]:l===`rtl`}),_=(0,C.useContext)(Fv),v=C.useMemo(()=>({message:{..._.message,...a},notification:{..._.notification,...o}}),[a,o,_.message,_.notification]),[y,b]=Tm(v.message),[x,S]=ire(v.notification),[w,T]=Mv(),E=C.useMemo(()=>({message:y,notification:x,modal:w}),[y,x,w]);Or(`App`)(!(h&&c===!1),`usage`,"When using cssVar, ensure `component` is assigned a valid React component string.");let D=c===!1?C.Fragment:c,O={className:q(d,g),style:{...f,...s}};return C.createElement(Iv.Provider,{value:E},C.createElement(Fv.Provider,{value:v},C.createElement(D,{...c===!1?void 0:O},T,b,S,n)))},sre=()=>C.useContext(Iv),Lv=ore;Lv.useApp=sre;function Rv(e){return t=>C.createElement($p,{theme:{token:{motion:!1,zIndexPopupBase:0}}},C.createElement(e,{...t}))}var zv=(e,t,n,r,i)=>Rv(a=>{let{prefixCls:o,style:s}=a,c=C.useRef(null),[l,u]=C.useState(0),[d,f]=C.useState(0),[p,m]=Wn(!1,a.open),{getPrefixCls:h}=C.useContext(si),g=h(r||`select`,o);C.useEffect(()=>{if(m(!0),typeof ResizeObserver<`u`){let e=new ResizeObserver(e=>{let t=e[0].target;u(t.offsetHeight+8),f(t.offsetWidth)}),t=setInterval(()=>{let n=i?`.${i(g)}`:`.${g}-dropdown`,r=c.current?.querySelector(n);r&&(clearInterval(t),e.observe(r))},10);return()=>{clearInterval(t),e.disconnect()}}},[g]);let _={...a,style:{...s,margin:0},open:p,getPopupContainer:()=>c.current};n&&(_=n(_)),t&&(_={..._,[t]:{overflow:{adjustX:!1,adjustY:!1}}});let v={paddingBottom:l,position:`relative`,minWidth:d};return C.createElement(`div`,{ref:c,style:v},C.createElement(e,{..._}))}),cre=(e,t,n,r,i=!1,a,o)=>{let s=(0,C.useMemo)(()=>typeof n==`boolean`?{allowClear:n}:n&&typeof n==`object`?n:{allowClear:!1},[n]);return(0,C.useMemo)(()=>{let e=!i&&s.allowClear!==!1&&(t.length||a)&&!(o===`combobox`&&a===``);return{allowClear:e,clearIcon:e?s.clearIcon||r||`×`:null}},[s,r,i,t.length,a,o])},Bv=C.createContext(null);function Vv(){return C.useContext(Bv)}function lre(e=250){let t=C.useRef(null),n=C.useRef(null);C.useEffect(()=>()=>{window.clearTimeout(n.current)},[]);function r(r){(r||t.current===null)&&(t.current=r),window.clearTimeout(n.current),n.current=window.setTimeout(()=>{t.current=null},e)}return[()=>t.current,r]}function Hv(e,t){return e.filter(e=>e).some(e=>e.contains(t)||e===t)}function ure(e,t,n,r){let i=Rn(i=>{if(r)return;let a=i.target;a.shadowRoot&&i.composed&&(a=i.composedPath()[0]||a),i._ori_target&&(a=i._ori_target),t&&!Hv(e(),a)&&n(!1)});C.useEffect(()=>(window.addEventListener(`mousedown`,i),()=>window.removeEventListener(`mousedown`,i)),[i])}function Uv(){return Uv=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let t=e===!0?0:1;return{bottomLeft:{points:[`tl`,`bl`],offset:[0,4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`},bottomRight:{points:[`tr`,`br`],offset:[0,4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`},topLeft:{points:[`bl`,`tl`],offset:[0,-4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`},topRight:{points:[`br`,`tr`],offset:[0,-4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`}}},fre=C.forwardRef((e,t)=>{let{prefixCls:n,disabled:r,visible:i,children:a,popupElement:o,animation:s,transitionName:c,popupStyle:l,popupClassName:u,direction:d=`ltr`,placement:f,builtinPlacements:p,popupMatchSelectWidth:m,popupRender:h,popupAlign:g,getPopupContainer:_,empty:v,onPopupVisibleChange:y,onPopupMouseEnter:b,onPopupMouseDown:x,onPopupBlur:S,...w}=e,T=`${n}-dropdown`,E=o;h&&(E=h(o));let D=C.useMemo(()=>p||dre(m),[p,m]),O=s?`${T}-${s}`:c,k=typeof m==`number`,A=C.useMemo(()=>k?null:m===!1?`minWidth`:`width`,[m,k]),j=l;k&&(j={...l,width:m});let M=C.useRef(null);return C.useImperativeHandle(t,()=>({getPopupElement:()=>M.current?.popupElement})),C.createElement(Mp,Uv({},w,{showAction:y?[`click`]:[],hideAction:y?[`click`]:[],popupPlacement:f||(d===`rtl`?`bottomRight`:`bottomLeft`),builtinPlacements:D,prefixCls:T,popupMotion:{motionName:O},popup:C.createElement(`div`,{onMouseEnter:b,onMouseDown:x,onBlur:S},E),ref:M,stretch:A,popupAlign:g,popupVisible:i,getPopupContainer:_,popupClassName:q(u,{[`${T}-empty`]:v}),popupStyle:j,onPopupVisibleChange:y}),a)});function Wv(e,t){let{key:n}=e,r;return`value`in e&&({value:r}=e),n??(r===void 0?`rc-index-key-${t}`:r)}function Gv(e){return e!==void 0&&!Number.isNaN(e)}function Kv(e,t){let{label:n,value:r,options:i,groupLabel:a}=e||{},o=n||(t?`children`:`label`);return{label:o,value:r||`value`,options:i||`options`,groupLabel:a||o}}function pre(e,{fieldNames:t,childrenAsData:n}={}){let r=[],{label:i,value:a,options:o,groupLabel:s}=Kv(t,!1);function c(e,t){Array.isArray(e)&&e.forEach(e=>{if(t||!(o in e)){let n=e[a];r.push({key:Wv(e,r.length),groupOption:t,data:e,label:e[i],value:n})}else{let t=e[s];t===void 0&&n&&(t=e.label),r.push({key:Wv(e,r.length),group:!0,data:e,label:t}),c(e[o],!0)}})}return c(e,!1),r}function qv(e){let t={...e};return`props`in t||Object.defineProperty(t,`props`,{get(){return xr(!1,"Return type is option instead of Option instance. Please read value directly instead of reading from `props`."),t}}),t}var mre=(e,t,n)=>{if(!t||!t.length)return null;let r=!1,i=(e,[t,...n])=>{if(!t)return[e];let a=e.split(t);return r||=a.length>1,a.reduce((e,t)=>[...e,...i(t,n)],[]).filter(Boolean)},a=i(e,t);return r?n===void 0?a:a.slice(0,n):null};function hre(e){let{visible:t,values:n}=e;return t?C.createElement(`span`,{"aria-live":`polite`,style:{width:0,height:0,position:`absolute`,overflow:`hidden`,opacity:0}},`${n.slice(0,50).map(({label:e,value:t})=>[`number`,`string`].includes(typeof e)?e:t).join(`, `)}`,n.length>50?`, ...`:null):null}var gre=e=>{let t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(null)},Jv=(e,t=1)=>{if(t<=0){e();return}gre(()=>{Jv(e,t-1)})};function _re(e,t,n,r){let[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{a(!0)},[]);let[o,s]=Wn(e,t),[c,l]=(0,C.useState)(!1),u=i?o:!1,d=r(u),f=(0,C.useRef)(0),p=Rn(e=>{n&&d!==e&&n(e),s(e)});return[u,d,Rn((e,t={})=>{let{cancelFun:n}=t;f.current+=1;let r=f.current,i=typeof e==`boolean`?e:!d;l(!i);function a(){r===f.current&&!n?.()&&(p(i),l(!1))}i?a():Jv(()=>{a()})}),c]}function Yv(e){let{children:t,...n}=e;return t?C.createElement(`div`,n,t):null}var Xv=C.createContext(null);function Zv(){return C.useContext(Xv)}var Qv=C.forwardRef((e,t)=>{let{onChange:n,onKeyDown:r,onBlur:i,style:a,syncWidth:o,value:s,className:c,autoComplete:l,...u}=e,{prefixCls:d,mode:f,onSearch:p,onSearchSubmit:m,onInputBlur:h,autoFocus:g,tokenWithEnter:_,placeholder:v,components:{input:y=`input`}}=Zv(),{id:b,classNames:x,styles:S,open:w,activeDescendantId:T,role:E,disabled:D}=Vv()||{},O=q(`${d}-input`,x?.input,c),k=C.useRef(!1),A=C.useRef(null),j=C.useRef(null);C.useImperativeHandle(t,()=>j.current);let M=e=>{let{value:t}=e.target;if(_&&A.current&&/[\r\n]/.test(A.current)){let e=A.current.replace(/[\r\n]+$/,``).replace(/\r\n/g,` `).replace(/[\r\n]/g,` `);t=t.replace(e,A.current)}A.current=null,p&&p(t,!0,k.current),n?.(e)},N=e=>{let{key:t}=e,{value:n}=e.currentTarget;t===`Enter`&&f===`tags`&&!w&&!k.current&&m&&m(n),r?.(e)},P=e=>{h?.(),i?.(e)},F=()=>{k.current=!0},I=e=>{if(k.current=!1,f!==`combobox`){let{value:t}=e.currentTarget;p?.(t,!0,!1)}},L=e=>{let{clipboardData:t}=e;A.current=t?.getData(`text`)||``},[R,z]=C.useState(void 0);Vn(()=>{let e=j.current;if(o&&e){e.style.width=`0px`;let t=e.scrollWidth;z(t),e.style.width=``}},[o,s]);let B={id:b,type:f===`combobox`?`text`:`search`,...u,ref:j,style:{...S?.input,...a,"--select-input-width":R},autoFocus:g,autoComplete:l||`off`,className:O,disabled:D,value:s||``,onChange:M,onKeyDown:N,onBlur:P,onPaste:L,onCompositionStart:F,onCompositionEnd:I,role:E||`combobox`,"aria-expanded":w||!1,"aria-haspopup":`listbox`,"aria-owns":w?`${b}_list`:void 0,"aria-autocomplete":`list`,"aria-controls":w?`${b}_list`:void 0,"aria-activedescendant":w?T:void 0};if(C.isValidElement(y)){let t=y.props||{},n={placeholder:e.placeholder||v,...B,...t};return Object.keys(t).forEach(e=>{let r=t[e];typeof r==`function`&&(n[e]=(...t)=>{r(...t),B[e]?.(...t)})}),n.ref=er(y.ref,B.ref),C.cloneElement(y,n)}let V=y;return C.createElement(V,B)});function $v(e){let{prefixCls:t,placeholder:n,displayValues:r}=Zv(),{classNames:i,styles:a}=Vv(),{show:o=!0}=e;return r.length?null:C.createElement(`div`,{className:q(`${t}-placeholder`,i?.placeholder),style:{visibility:o?`visible`:`hidden`,...a?.placeholder}},n)}var ey=C.createContext(null);function ty(e){return Array.isArray(e)?e:e===void 0?[]:[e]}typeof window<`u`&&window.document&&window.document.documentElement;function vre(e){return e!=null}function yre(e){return!e&&e!==0}function ny(e){return[`string`,`number`].includes(typeof e)}function ry(e){let t;return e&&(ny(e.title)?t=e.title.toString():ny(e.label)&&(t=e.label.toString())),t}function iy(){return iy=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,searchValue:r,activeValue:i,displayValues:a,maxLength:o,mode:s,components:c}=Zv(),{triggerOpen:l,title:u,showSearch:d,classNames:f,styles:p}=Vv(),m=C.useContext(ey),[h,g]=C.useState(!1),_=s===`combobox`,v=a[0],y=C.useMemo(()=>_&&i&&!h&&l?i:d?r:``,[_,i,h,l,r,d]),[b,x,S,w]=C.useMemo(()=>{let e,t,n;if(v&&m?.flattenOptions){let r=m.flattenOptions.find(e=>e.value===v.value);r?.data&&(e=r.data.className,t=r.data.style,n=ry(r.data))}return v&&!n&&(n=ry(v)),u!==void 0&&(n=u),[e,t,n,!!e||!!t]},[v,m?.flattenOptions,u]);C.useEffect(()=>{_&&g(!1)},[_,i]);let T=v&&v.label!==null&&v.label!==void 0&&String(v.label).trim()!==``,E=_&&c?.input?null:v?w?C.createElement(`div`,{className:q(`${n}-content-value`,b),style:{...y?{visibility:`hidden`}:{},...x},title:S},v.label):v.label:C.createElement($v,{show:!y});return C.createElement(`div`,{className:q(`${n}-content`,T&&`${n}-content-has-value`,y&&`${n}-content-has-search-value`,w&&`${n}-content-has-option-style`,f?.content),style:p?.content,title:w?void 0:S},E,C.createElement(Qv,iy({ref:t},e,{value:y,maxLength:s===`combobox`?o:void 0,onChange:t=>{g(!0),e.onChange?.(t)}})))}),ay=void 0;function xre(e,t){let{prefixCls:n,invalidate:r,item:i,renderItem:a,responsive:o,responsiveDisabled:s,registerSize:c,itemKey:l,className:u,style:d,children:f,display:p,order:m,component:h=`div`,...g}=e,_=o&&!p;function v(e){c(l,e)}C.useEffect(()=>()=>{v(null)},[]);let y=a&&i!==ay?a(i,{index:m}):f,b;r||(b={opacity:+!_,height:_?0:ay,overflowY:_?`hidden`:ay,order:o?m:ay,pointerEvents:_?`none`:ay,position:_?`absolute`:ay});let x={};_&&(x[`aria-hidden`]=!0);let S=C.createElement(h,wh({className:q(!r&&n,u),style:{...b,...d}},x,g,{ref:t}),y);return o&&(S=C.createElement(Gr,{onResize:({offsetWidth:e})=>{v(e)},disabled:s},S)),S}var oy=C.forwardRef(xre);function Sre(e){if(typeof MessageChannel>`u`)ii(e);else{let t=new MessageChannel;t.port1.onmessage=()=>e(),t.port2.postMessage(void 0)}}function Cre(){let e=C.useRef(null);return t=>{e.current||(e.current=[],Sre(()=>{(0,Yf.unstable_batchedUpdates)(()=>{e.current.forEach(e=>{e()}),e.current=null})})),e.current.push(t)}}function sy(e,t){let[n,r]=C.useState(t);return[n,Rn(t=>{e(()=>{r(t)})})]}var cy=C.createContext(null),wre=C.forwardRef((e,t)=>{let n=C.useContext(cy);if(!n){let{component:n=`div`,...r}=e;return C.createElement(n,wh({},r,{ref:t}))}let{className:r,...i}=n,{className:a,...o}=e;return C.createElement(cy.Provider,{value:null},C.createElement(oy,wh({ref:t,className:q(r,a)},i,o)))}),ly=`responsive`,uy=`invalidate`;function Tre(e){return`+ ${e.length} ...`}function Ere(e,t){let{prefixCls:n=`rc-overflow`,data:r=[],renderItem:i,renderRawItem:a,itemKey:o,itemWidth:s=10,ssr:c,style:l,className:u,maxCount:d,renderRest:f,renderRawRest:p,prefix:m,suffix:h,component:g=`div`,itemComponent:_,onVisibleChange:v,...y}=e,b=c===`full`,x=Cre(),[S,w]=sy(x,null),T=S||0,[E,D]=sy(x,new Map),[O,k]=sy(x,0),[A,j]=sy(x,0),[M,N]=sy(x,0),[P,F]=sy(x,0),[I,L]=(0,C.useState)(null),[R,z]=(0,C.useState)(null),B=C.useMemo(()=>R===null&&b?2**53-1:R||0,[R,S]),[V,H]=(0,C.useState)(!1),U=`${n}-item`,W=Math.max(O,A),ee=d===ly,te=r.length&&ee,ne=d===uy,re=te||typeof d==`number`&&r.length>d,ie=(0,C.useMemo)(()=>{let e=r;return te?e=S===null&&b?r:r.slice(0,Math.min(r.length,T/s)):typeof d==`number`&&(e=r.slice(0,d)),e},[r,s,S,d,te]),ae=(0,C.useMemo)(()=>te?r.slice(B+1):r.slice(ie.length),[r,ie,te,B]),G=(0,C.useCallback)((e,t)=>typeof o==`function`?o(e):(o&&e?.[o])??t,[o]),oe=(0,C.useCallback)(i||(e=>e),[i]);function K(e,t,n){R===e&&(t===void 0||t===I)||(z(e),n||(H(e{let r=new Map(n);return t===null?r.delete(e):r.set(e,t),r})}function le(e,t){j(t),k(A)}function ue(e,t){N(t)}function de(e,t){F(t)}function fe(e){return E.get(G(ie[e],e))}Vn(()=>{if(T&&typeof W==`number`&&ie){let e=M+P,t=ie.length,n=t-1;if(!t){K(0,null);return}for(let r=0;rT){K(r-1,e-t-P+A);break}}h&&fe(0)+P>T&&L(null)}},[T,E,A,M,P,G,ie]);let pe=V&&!!ae.length,me={};I!==null&&te&&(me={position:`absolute`,top:0,insetInlineStart:I});let he={prefixCls:U,responsive:te,component:_,invalidate:ne},ge=a?(e,t)=>{let n=G(e,t);return C.createElement(cy.Provider,{key:n,value:{...he,order:t,item:e,itemKey:n,registerSize:ce,display:t<=B}},a(e,t))}:(e,t)=>{let n=G(e,t);return C.createElement(oy,wh({},he,{order:t,key:n,item:e,renderItem:oe,itemKey:n,registerSize:ce,display:t<=B}))},_e={order:pe?B:2**53-1,className:`${U}-rest`,registerSize:le,display:pe},ve=f||Tre,ye=p?C.createElement(cy.Provider,{value:{...he,..._e}},p(ae)):C.createElement(oy,wh({},he,_e),typeof ve==`function`?ve(ae):ve),be=C.createElement(g,wh({className:q(!ne&&n,u),style:l,ref:t},y),m&&C.createElement(oy,wh({},he,{responsive:ee,responsiveDisabled:!te,order:-1,className:`${U}-prefix`,registerSize:ue,display:!0}),m),ie.map(ge),re?ye:null,h&&C.createElement(oy,wh({},he,{responsive:ee,responsiveDisabled:!te,order:B,className:`${U}-suffix`,registerSize:de,display:!0,style:me}),h));return ee?C.createElement(Gr,{onResize:se,disabled:!te},be):be}var dy=C.forwardRef(Ere);dy.Item=wre,dy.RESPONSIVE=ly,dy.INVALIDATE=uy;var fy=dy,py=e=>{let{className:t,style:n,customizeIcon:r,customizeIconProps:i,children:a,onMouseDown:o,onClick:s}=e,c=typeof r==`function`?r(i):r;return C.createElement(`span`,{className:t,onMouseDown:e=>{e.preventDefault(),o?.(e)},style:{userSelect:`none`,WebkitUserSelect:`none`,...n},unselectable:`on`,onClick:s,"aria-hidden":!0},c===void 0?C.createElement(`span`,{className:q(t.split(/\s+/).map(e=>`${e}-icon`))},a):c)};function my(){return my=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.preventDefault(),e.stopPropagation()},Ore=C.forwardRef(function({inputProps:e},t){let{prefixCls:n,displayValues:r,searchValue:i,mode:a,onSelectorRemove:o,removeIcon:s}=Zv(),{disabled:c,showSearch:l,triggerOpen:u,rawOpen:d,toggleOpen:f,autoClearSearchValue:p,tagRender:m,maxTagPlaceholder:h,maxTagTextLength:g,maxTagCount:_,classNames:v,styles:y}=Vv(),b=`${n}-selection-item`,x=i;!d&&a===`multiple`&&p!==!1&&(x=``);let S=l&&x||``,w=l&&!c,T=s??`×`,E=h??(e=>`+ ${e.length} ...`),D=m,O=e=>{f(e)},k=e=>{o?.(e)},A=(e,t,n,r,i)=>C.createElement(`span`,{title:ry(e),className:q(b,{[`${b}-disabled`]:n},v?.item),style:y?.item},C.createElement(`span`,{className:q(`${b}-content`,v?.itemContent),style:y?.itemContent},t),r&&C.createElement(py,{className:q(`${b}-remove`,v?.itemRemove),style:y?.itemRemove,onMouseDown:hy,onClick:i,customizeIcon:T},`×`)),j=(e,t,n,r,i,a,o)=>C.createElement(`span`,{onMouseDown:e=>{hy(e),O(!u)}},D({label:t,value:e,index:o?.index,disabled:n,closable:r,onClose:i,isMaxTag:!!a}));return C.createElement(fy,{prefixCls:`${n}-content`,className:v?.content,style:y?.content,prefix:!r.length&&!S&&C.createElement($v,null),data:r,renderItem:(e,t)=>{let{disabled:n,label:r,value:i}=e,a=!c&&!n,o=r;if(typeof g==`number`&&(typeof r==`string`||typeof r==`number`)){let e=String(o);e.length>g&&(o=`${e.slice(0,g)}...`)}let s=t=>{t&&t.stopPropagation(),k(e)};return typeof D==`function`?j(i,o,n,a,s,void 0,t):A(e,o,n,a,s)},renderRest:e=>{if(!r.length)return null;let t=typeof E==`function`?E(e):E;return typeof D==`function`?j(void 0,t,!1,!1,void 0,!0):A({title:t},t,!1)},suffix:C.createElement(Qv,my({ref:t,disabled:c,readOnly:!w},e,{value:S||``,syncWidth:!0})),itemKey:Dre,maxCount:_})}),kre=C.forwardRef(function(e,t){let{multiple:n,onInputKeyDown:r,tabIndex:i}=Zv(),a=Vv(),{showSearch:o}=a,s={...Hu(a,{aria:!0}),onKeyDown:r,readOnly:!o,tabIndex:i};return n?C.createElement(Ore,{ref:t,inputProps:s}):C.createElement(bre,{ref:t,inputProps:s})});function Are(e){return e&&![em.ESC,em.SHIFT,em.BACKSPACE,em.TAB,em.WIN_KEY,em.ALT,em.META,em.WIN_KEY_RIGHT,em.CTRL,em.SEMICOLON,em.EQUALS,em.CAPS_LOCK,em.CONTEXT_MENU,em.UP,em.LEFT,em.RIGHT,em.F1,em.F2,em.F3,em.F4,em.F5,em.F6,em.F7,em.F8,em.F9,em.F10,em.F11,em.F12].includes(e)}function gy(){return gy=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{which:t}=e,n=F.current instanceof HTMLTextAreaElement;!n&&D&&(t===em.UP||t===em.DOWN)&&e.preventDefault(),x&&x(e),!(n&&!D&&~[em.UP,em.DOWN,em.LEFT,em.RIGHT].indexOf(t))&&!(e.ctrlKey||e.altKey||e.metaKey)&&Are(t)&&O(!0)});C.useImperativeHandle(t,()=>({focus:e=>{(F.current||P.current).focus?.(e)},blur:()=>{(F.current||P.current).blur?.()},nativeElement:Ar(P.current)}));let L=Rn(e=>{if(!A){let t=Ar(F.current);e.nativeEvent._ori_target=t;let n=t===e.target||t?.contains(e.target);t&&!n&&e.preventDefault();let r=D&&!l&&(f===`combobox`||k)||D&&l&&n;e.nativeEvent._select_lazy?D&&O(!1):(F.current?.focus(),r||O())}y?.(e)}),{root:R}=T,z=Cr(E,jre),B=Hu(z,{aria:!0}),V=Object.keys(B),H={...e,onInputKeyDown:I};if(R){let e=R.props||{},t={...e,...z};return Object.keys(e).forEach(n=>{let r=e[n],i=z[n];typeof r==`function`&&typeof i==`function`&&(t[n]=(...e)=>{i(...e),r(...e)})}),C.isValidElement(R)?C.cloneElement(R,{...t,ref:er(R.ref,P)}):C.createElement(R,gy({},t,{ref:P}))}return C.createElement(Xv.Provider,{value:H},C.createElement(`div`,gy({},Cr(z,V),{ref:P,className:r,style:i,onMouseDown:L}),C.createElement(Yv,{className:q(`${n}-prefix`,M?.prefix),style:N?.prefix},a),C.createElement(kre,{ref:F}),C.createElement(Yv,{className:q(`${n}-suffix`,{[`${n}-suffix-loading`]:j},M?.suffix),style:N?.suffix},o),s&&C.createElement(Yv,{className:q(`${n}-clear`,M?.clear),style:N?.clear,onMouseDown:e=>{e.nativeEvent._select_lazy=!0,b?.(e)}},s),c))});function Nre(e,t,n){return C.useMemo(()=>{let{root:r,input:i}=e||{};return n&&(r=n()),t&&(i=t()),{root:r,input:i}},[e,t,n])}function _y(){return _y=Object.assign?Object.assign.bind():function(e){for(var t=1;te===`tags`||e===`multiple`,Pre=C.forwardRef((e,t)=>{let{id:n,prefixCls:r,className:i,styles:a,classNames:o,showSearch:s,tagRender:c,showScrollBar:l=`optional`,direction:u,omitDomProps:d,displayValues:f,onDisplayValuesChange:p,emptyOptions:m,notFoundContent:h=`Not Found`,onClear:g,maxCount:_,placeholder:v,mode:y,disabled:b,loading:x,getInputElement:S,getRawInputElement:w,open:T,defaultOpen:E,onPopupVisibleChange:D,activeValue:O,onActiveValueChange:k,activeDescendantId:A,searchValue:j,autoClearSearchValue:M,onSearch:N,onSearchSplit:P,tokenSeparators:F,allowClear:I,prefix:L,suffix:R,suffixIcon:z,clearIcon:B,OptionList:V,animation:H,transitionName:U,popupStyle:W,popupClassName:ee,popupMatchSelectWidth:te,popupRender:ne,popupAlign:re,placement:ie,builtinPlacements:ae,getPopupContainer:G,showAction:oe=[],onFocus:K,onBlur:se,onKeyUp:ce,onKeyDown:le,onMouseDown:ue,components:de,...fe}=e,pe=vy(y),me=C.useRef(null),he=C.useRef(null),ge=C.useRef(null),[_e,ve]=C.useState(!1);C.useImperativeHandle(t,()=>({focus:me.current?.focus,blur:me.current?.blur,scrollTo:e=>ge.current?.scrollTo(e),nativeElement:Ar(me.current)}));let ye=Nre(de,S,w),be=C.useMemo(()=>{if(y!==`combobox`)return j;let e=f[0]?.value;return typeof e==`string`||typeof e==`number`?String(e):``},[j,y,f]),xe=y===`combobox`&&typeof S==`function`&&S()||null,Se=!h&&m,[Ce,we,Te,Ee]=_re(E||!1,T,D,e=>b||Se?!1:e),De=C.useMemo(()=>(F||[]).some(e=>[`
+ ${t}-confirm-body-wrapper`]:{display:`flex`,flexDirection:`column`,flex:`auto`},[`${t}-confirm-body`]:{marginBottom:`auto`}}}]},Mne=e=>{let{componentCls:t}=e;return{[`${t}-root`]:{[`${t}-wrap-rtl`]:{direction:`rtl`,[`${t}-confirm-body`]:{direction:`rtl`}}}}},Nne=e=>{let{componentCls:t}=e,n=sv(e),r={...n};delete r.xs;let i=`--${t.replace(`.`,``)}-`,a=Object.keys(r).map(e=>({[`@media (min-width: ${J(r[e])})`]:{width:`var(${i}${e}-width)`}}));return{[`${t}-root`]:{[t]:[].concat(Qr(Object.keys(n).map((e,t)=>{let r=Object.keys(n)[t-1];return r?{[`${i}${e}-width`]:`var(${i}${r}-width)`}:null})),[{width:`var(${i}xs-width)`}],Qr(a))}}},lv=e=>{let t=e.padding,n=e.fontSizeHeading5,r=e.lineHeightHeading5;return _s(e,{modalHeaderHeight:e.calc(e.calc(r).mul(n).equal()).add(e.calc(t).mul(2).equal()).equal(),modalFooterBorderColorSplit:e.colorSplit,modalFooterBorderStyle:e.lineType,modalFooterBorderWidth:e.lineWidth,modalCloseIconColor:e.colorIcon,modalCloseIconHoverColor:e.colorIconHover,modalCloseBtnSize:e.controlHeight,modalConfirmIconSize:e.fontHeight,modalTitleHeight:e.calc(e.titleFontSize).mul(e.titleLineHeight).equal()})},uv=e=>({footerBg:`transparent`,headerBg:`transparent`,titleLineHeight:e.lineHeightHeading5,titleFontSize:e.fontSizeHeading5,contentBg:e.colorBgElevated,titleColor:e.colorTextHeading,contentPadding:e.wireframe?0:`${J(e.paddingMD)} ${J(e.paddingContentHorizontalLG)}`,headerPadding:e.wireframe?`${J(e.padding)} ${J(e.paddingLG)}`:0,headerBorderBottom:e.wireframe?`${J(e.lineWidth)} ${e.lineType} ${e.colorSplit}`:`none`,headerMarginBottom:e.wireframe?0:e.marginXS,bodyPadding:e.wireframe?e.paddingLG:0,footerPadding:e.wireframe?`${J(e.paddingXS)} ${J(e.padding)}`:0,footerBorderTop:e.wireframe?`${J(e.lineWidth)} ${e.lineType} ${e.colorSplit}`:`none`,footerBorderRadius:e.wireframe?`0 0 ${J(e.borderRadiusLG)} ${J(e.borderRadiusLG)}`:0,footerMarginTop:e.wireframe?0:e.marginSM,confirmBodyPadding:e.wireframe?`${J(e.padding*2)} ${J(e.padding*2)} ${J(e.paddingLG)}`:0,confirmIconMarginInlineEnd:e.wireframe?e.margin:e.marginSM,confirmBtnsMarginTop:e.wireframe?e.marginLG:e.marginSM,mask:!0}),dv=il(`Modal`,e=>{let t=lv(e);return[jne(t),Mne(t),Ane(t),mh(t,`zoom`),Nne(t)]},uv,{unitless:{titleLineHeight:!0}}),fv;z_()&&document.documentElement.addEventListener(`click`,e=>{fv={x:e.pageX,y:e.pageY},setTimeout(()=>{fv=null},100)},!0);var pv=e=>{let{prefixCls:t,className:n,rootClassName:r,open:i,wrapClassName:a,centered:o,getContainer:s,style:c,width:l=520,footer:u,classNames:d,styles:f,children:p,loading:m,confirmLoading:h,zIndex:g,mousePosition:_,onOk:v,onCancel:y,okButtonProps:b,cancelButtonProps:x,destroyOnHidden:S,destroyOnClose:w,panelRef:T=null,closable:E,mask:D,modalRender:O,maskClosable:k,focusTriggerAfterClose:A,focusable:j,...M}=e,{getPopupContainer:N,getPrefixCls:P,direction:F,className:I,style:L,classNames:R,styles:z,centered:B,cancelButtonProps:V,okButtonProps:H,mask:U}=ui(`modal`),{modal:W}=C.useContext(si),[ee,te]=C.useMemo(()=>typeof E==`boolean`?[void 0,void 0]:[E?.afterClose,E?.onClose],[E]),ne=P(`modal`,t),re=P(),[ie,ae,G]=kd(D,U,ne,k),oe=B_(j,ie,A),K=e=>{h||(y?.(e),te?.())},se=e=>{v?.(e),te?.()},ce=xf(ne),[le,ue]=dv(ne,ce),de=q(a,{[`${ne}-centered`]:o??B,[`${ne}-wrap-rtl`]:F===`rtl`}),fe=u!==null&&!m?C.createElement(av,{...e,okButtonProps:{...H,...b},onOk:se,cancelButtonProps:{...V,...x},onCancel:K}):null,[pe,me,he,ge]=Ed(bd(e),bd(W),{closable:!0,closeIcon:C.createElement(zl,{className:`${ne}-close-icon`}),closeIconRender:e=>iv(ne,e)}),_e=pe?{disabled:he,closeIcon:me,afterClose:ee,...ge}:!1,ve=O?e=>C.createElement(`div`,{className:`${ne}-render`},O(e)):void 0,ye=er(T,tv(`.${ne}-${O?`render`:`container`}`)),[be,xe]=Xd(`Modal`,g),Se={...e,width:l,panelRef:T,focusTriggerAfterClose:oe.focusTriggerAfterClose,focusable:oe,mask:ie,maskClosable:G,zIndex:be},[Ce,we]=Id([R,d,ae],[z,f],{props:Se}),[Te,Ee]=C.useMemo(()=>gd(l)?[void 0,l]:[l,void 0],[l]),De=C.useMemo(()=>{let e={};return Ee&&Object.keys(Ee).forEach(t=>{let n=Ee[t];pd(n)&&(e[`--${ne}-${t}-width`]=md(n)?`${n}px`:n)}),e},[ne,Ee]);return C.createElement(F_,{form:!0,space:!0},C.createElement(Wd.Provider,{value:xe},C.createElement(_te,{width:Te,...M,zIndex:be,getContainer:s===void 0?N:s,prefixCls:ne,rootClassName:q(le,r,ue,ce,Ce.root),rootStyle:we.root,footer:fe,visible:i,mousePosition:_??fv,onClose:K,closable:_e,closeIcon:me,transitionName:km(re,`zoom`,e.transitionName),maskTransitionName:km(re,`fade`,e.maskTransitionName),mask:ie,maskClosable:G,className:q(le,n,I),style:{...L,...c,...De},classNames:{...Ce,wrapper:q(Ce.wrapper,de)},styles:we,panelRef:ye,destroyOnHidden:S??w,modalRender:ve,focusTriggerAfterClose:oe.focusTriggerAfterClose,focusTrap:oe.trap},m?C.createElement($_,{active:!0,title:!1,paragraph:{rows:4},className:`${ne}-body-skeleton`}):p)))},Pne=e=>{let{componentCls:t,titleFontSize:n,titleLineHeight:r,modalConfirmIconSize:i,fontSize:a,lineHeight:o,modalTitleHeight:s,fontHeight:c,confirmBodyPadding:l}=e,u=`${t}-confirm`;return{[u]:{"&-rtl":{direction:`rtl`},[`${e.antCls}-modal-header`]:{display:`none`},[`${u}-body-wrapper`]:{...Zc()},[`&${t} ${t}-body`]:{padding:l},[`${u}-body`]:{display:`flex`,flexWrap:`nowrap`,alignItems:`start`,[`> ${e.iconCls}`]:{flex:`none`,fontSize:i,marginInlineEnd:e.confirmIconMarginInlineEnd,marginTop:e.calc(e.calc(c).sub(i).equal()).div(2).equal()},[`&-has-title > ${e.iconCls}`]:{marginTop:e.calc(e.calc(s).sub(i).equal()).div(2).equal()}},[`${u}-paragraph`]:{display:`flex`,flexDirection:`column`,flex:`auto`,rowGap:e.marginXS,maxWidth:`calc(100% - ${J(e.marginSM)})`},[`${u}-body-no-icon ${u}-paragraph`]:{maxWidth:`100%`},[`${e.iconCls} + ${u}-paragraph`]:{maxWidth:`calc(100% - ${J(e.calc(e.modalConfirmIconSize).add(e.marginSM).equal())})`},[`${u}-title`]:{color:e.colorTextHeading,fontWeight:e.fontWeightStrong,fontSize:n,lineHeight:r},[`${u}-container`]:{color:e.colorText,fontSize:a,lineHeight:o},[`${u}-btns`]:{textAlign:`end`,marginTop:e.confirmBtnsMarginTop,[`${e.antCls}-btn + ${e.antCls}-btn`]:{marginBottom:0,marginInlineStart:e.marginXS}}},[`${u}-error ${u}-body > ${e.iconCls}`]:{color:e.colorError},[`${u}-warning ${u}-body > ${e.iconCls},
+ ${u}-confirm ${u}-body > ${e.iconCls}`]:{color:e.colorWarning},[`${u}-info ${u}-body > ${e.iconCls}`]:{color:e.colorInfo},[`${u}-success ${u}-body > ${e.iconCls}`]:{color:e.colorSuccess}}},Fne=ol([`Modal`,`confirm`],e=>Pne(lv(e)),uv,{order:-1e3}),mv=e=>{let{prefixCls:t,icon:n,okText:r,cancelText:i,confirmPrefixCls:a,type:o,okCancel:s,footer:c,locale:l,autoFocusButton:u,focusable:d,...f}=e,p=n;if(!n&&n!==null)switch(o){case`info`:p=C.createElement(Gl,null);break;case`success`:p=C.createElement(Nl,null);break;case`error`:p=C.createElement(Il,null);break;default:p=C.createElement(Hl,null)}let m=s??o===`confirm`,h=C.useMemo(()=>{let e=d?.autoFocusButton||u;return e||e===null?e:`ok`},[u,d?.autoFocusButton]),[g]=ld(`Modal`),_=l||g,v=r||(m?_?.okText:_?.justOkText),y=i||_?.cancelText,{closable:b}=f,{onClose:x}=gd(b)?b:{},S=C.useMemo(()=>({autoFocusButton:h,cancelTextLocale:y,okTextLocale:v,mergedOkCancel:m,onClose:x,...f}),[h,y,v,m,x,f]),w=C.createElement(C.Fragment,null,C.createElement(sg,null),C.createElement(cg,null)),T=pd(e.title)&&e.title!==``,E=pd(p),D=`${a}-body`;return C.createElement(`div`,{className:`${a}-body-wrapper`},C.createElement(`div`,{className:q(D,{[`${D}-has-title`]:T,[`${D}-no-icon`]:!E})},p,C.createElement(`div`,{className:`${a}-paragraph`},T&&C.createElement(`span`,{className:`${a}-title`},e.title),C.createElement(`div`,{className:`${a}-content`},e.content))),c===void 0||typeof c==`function`?C.createElement(og,{value:S},C.createElement(`div`,{className:`${a}-btns`},typeof c==`function`?c(w,{OkBtn:cg,CancelBtn:sg}):w)):c,C.createElement(Fne,{prefixCls:t}))},Ine=e=>{let{close:t,zIndex:n,maskStyle:r,direction:i,prefixCls:a,wrapClassName:o,rootPrefixCls:s,bodyStyle:c,closable:l=!1,onConfirm:u,styles:d,title:f,mask:p,maskClosable:m,okButtonProps:h,cancelButtonProps:g}=e,{cancelButtonProps:_,okButtonProps:v}=ui(`modal`),y=`${a}-confirm`,b=e.width||416,x=e.style||{},S=q(y,`${y}-${e.type}`,{[`${y}-rtl`]:i===`rtl`},e.className),w=C.useMemo(()=>{let e=Od(p,m);return e.closable??=!1,e},[p,m]),[,T]=qc(),E=C.useMemo(()=>n===void 0?T.zIndexPopupBase+Kd:n,[n,T]);return C.createElement(pv,{...e,className:S,wrapClassName:q({[`${y}-centered`]:!!e.centered},o),onCancel:()=>{t?.({triggerCancel:!0}),u?.(!1)},title:f,footer:null,transitionName:km(s||``,`zoom`,e.transitionName),maskTransitionName:km(s||``,`fade`,e.maskTransitionName),mask:w,style:x,styles:{body:c,mask:r,...d},width:b,zIndex:E,closable:l},C.createElement(mv,{...e,confirmPrefixCls:y,okButtonProps:{...v,...h},cancelButtonProps:{..._,...g}}))},hv=e=>{let{rootPrefixCls:t,iconPrefixCls:n,direction:r,theme:i}=e;return C.createElement(Zp,{prefixCls:t,iconPrefixCls:n,direction:r,theme:i},C.createElement(Ine,{...e}))},gv=[],_v=``;function vv(){return _v}var Lne=e=>{let{prefixCls:t,getContainer:n,direction:r}=e,i=sd(),a=(0,C.useContext)(si),o=vv()||a.getPrefixCls(),s=t||`${o}-modal`,c=n;return c===!1&&(c=void 0),C.createElement(hv,{...e,rootPrefixCls:o,prefixCls:s,iconPrefixCls:a.iconPrefixCls,theme:a.theme,direction:r??a.direction,locale:a.locale?.Modal??i,getContainer:c})};function yv(e){let t=Xp(),n=document.createDocumentFragment(),r={...e,close:s,open:!0},i;function a(...t){t.some(e=>e?.triggerCancel)&&e.onCancel?.(()=>{},...t.slice(1));for(let e=0;e{})}let o=e=>{clearTimeout(i),i=setTimeout(()=>{let r=t.getPrefixCls(void 0,vv()),i=t.getIconPrefixCls(),a=t.getTheme(),o=C.createElement(Lne,{...e});xm(C.createElement(Zp,{prefixCls:r,iconPrefixCls:i,theme:a},typeof t.holderRender==`function`?t.holderRender(o):o),n)})};function s(...t){r={...r,open:!1,afterClose:()=>{typeof e.afterClose==`function`&&e.afterClose(),a.apply(this,t)}},o(r)}function c(e){r=typeof e==`function`?e(r):{...r,...e},o(r)}return o(r),gv.push(s),{destroy:s,update:c}}function bv(e){return{...e,type:`warning`}}function xv(e){return{...e,type:`info`}}function Sv(e){return{...e,type:`success`}}function Cv(e){return{...e,type:`error`}}function wv(e){return{...e,type:`confirm`}}function Rne({rootPrefixCls:e}){_v=e}var zne=C.forwardRef((e,t)=>{let{afterClose:n,config:r,...i}=e,[a,o]=C.useState(!0),[s,c]=C.useState(r),{direction:l,getPrefixCls:u}=C.useContext(si),d=u(`modal`),f=u(),p=()=>{n(),s.afterClose?.()},m=(...e)=>{o(!1),e.some(e=>e?.triggerCancel)&&s.onCancel?.(()=>{},...e.slice(1))};C.useImperativeHandle(t,()=>({destroy:m,update:e=>{c(t=>{let n=typeof e==`function`?e(t):e;return{...t,...n}})}}));let h=s.okCancel??s.type===`confirm`,[g]=ld(`Modal`,nd.Modal);return C.createElement(hv,{prefixCls:d,rootPrefixCls:f,...s,close:m,open:a,afterClose:p,okText:s.okText||(h?g?.okText:g?.justOkText),direction:s.direction||l,cancelText:s.cancelText||g?.cancelText,...i})}),Tv=0,Bne=C.memo(C.forwardRef((e,t)=>{let[n,r]=Bd();return C.useImperativeHandle(t,()=>({patchElement:r}),[r]),C.createElement(C.Fragment,null,n)}));function Ev(){let e=C.useRef(null),[t,n]=C.useState([]);C.useEffect(()=>{t.length&&(Qr(t).forEach(e=>{e()}),n([]))},[t]);let r=C.useCallback(t=>function(r){Tv+=1;let i=C.createRef(),a,o=new Promise(e=>{a=e}),s=!1,c,l=C.createElement(zne,{key:`modal-${Tv}`,config:t(r),ref:i,afterClose:()=>{c?.()},isSilent:()=>s,onConfirm:e=>{a(e)}});return c=e.current?.patchElement(l),c&&gv.push(c),{destroy:()=>{function e(){i.current?.destroy()}i.current?e():n(t=>[].concat(Qr(t),[e]))},update:e=>{function t(){i.current?.update(e)}i.current?t():n(e=>[].concat(Qr(e),[t]))},then:e=>(s=!0,o.then(e))}},[]);return[C.useMemo(()=>({info:r(xv),success:r(Sv),error:r(Cv),warning:r(bv),confirm:r(wv)}),[r]),C.createElement(Bne,{key:`modal-holder`,ref:e})]}var Vne=e=>{let{componentCls:t,notificationMarginEdge:n,animationMaxHeight:r}=e,i=`${t}-notice`,a=new Ro(`antNotificationFadeIn`,{"0%":{transform:`translate3d(100%, 0, 0)`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,opacity:1}}),o=new Ro(`antNotificationTopFadeIn`,{"0%":{top:-r,opacity:0},"100%":{top:0,opacity:1}}),s=new Ro(`antNotificationBottomFadeIn`,{"0%":{bottom:e.calc(r).mul(-1).equal(),opacity:0},"100%":{bottom:0,opacity:1}}),c=new Ro(`antNotificationLeftFadeIn`,{"0%":{transform:`translate3d(-100%, 0, 0)`,opacity:0},"100%":{transform:`translate3d(0, 0, 0)`,opacity:1}});return{[t]:{[`&${t}-top, &${t}-bottom`]:{marginInline:0,[i]:{marginInline:`auto auto`}},[`&${t}-top`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:o}},[`&${t}-bottom`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:s}},[`&${t}-topRight, &${t}-bottomRight`]:{[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:a}},[`&${t}-topLeft, &${t}-bottomLeft`]:{marginRight:{value:0,_skip_check_:!0},marginLeft:{value:n,_skip_check_:!0},[i]:{marginInlineEnd:`auto`,marginInlineStart:0},[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationName:c}}}}},Hne=[`top`,`topLeft`,`topRight`,`bottom`,`bottomLeft`,`bottomRight`],Une={topLeft:`left`,topRight:`right`,bottomLeft:`left`,bottomRight:`right`,top:`left`,bottom:`left`},Wne=(e,t)=>{let{componentCls:n}=e;return{[`${n}-${t}`]:{[`&${n}-stack > ${n}-notice-wrapper`]:{[t.startsWith(`top`)?`top`:`bottom`]:0,[Une[t]]:{value:0,_skip_check_:!0}}}}},Gne=e=>{let t={};for(let n=1;n ${e.componentCls}-notice`]:{opacity:0,transition:`opacity ${e.motionDurationMid}`}};return{[`&:not(:nth-last-child(-n+${e.notificationStackLayer}))`]:{opacity:0,overflow:`hidden`,color:`transparent`,pointerEvents:`none`},...t}},Kne=e=>{let t={};for(let n=1;n{let{componentCls:t}=e;return{[`${t}-stack`]:{[`& > ${t}-notice-wrapper`]:{transition:`transform ${e.motionDurationSlow}, backdrop-filter 0s`,willChange:`transform, opacity`,position:`absolute`,...Gne(e)}},[`${t}-stack:not(${t}-stack-expanded)`]:{[`& > ${t}-notice-wrapper`]:{...Kne(e)}},[`${t}-stack${t}-stack-expanded`]:{[`& > ${t}-notice-wrapper`]:{"&:not(:nth-last-child(-n + 1))":{opacity:1,overflow:`unset`,color:`inherit`,pointerEvents:`auto`,[`& > ${e.componentCls}-notice`]:{opacity:1}},"&:after":{content:`""`,position:`absolute`,height:e.margin,width:`100%`,insetInline:0,bottom:e.calc(e.margin).mul(-1).equal(),background:`transparent`,pointerEvents:`auto`}}},...Hne.map(t=>Wne(e,t)).reduce((e,t)=>({...e,...t}),{})}},Jne=e=>{let{iconCls:t,componentCls:n,boxShadow:r,fontSizeLG:i,notificationMarginBottom:a,borderRadiusLG:o,colorSuccess:s,colorInfo:c,colorWarning:l,colorError:u,colorTextHeading:d,notificationBg:f,notificationPadding:p,notificationMarginEdge:m,progressBg:h,notificationProgressHeight:g,fontSize:_,lineHeight:v,width:y,notificationIconSize:b,colorText:x,colorSuccessBg:S,colorErrorBg:C,colorInfoBg:w,colorWarningBg:T,motionDurationMid:E}=e,D=`${n}-notice`;return{position:`relative`,marginBottom:a,marginInlineStart:`auto`,background:f,borderRadius:o,boxShadow:r,[D]:{padding:p,width:y,maxWidth:`calc(100vw - ${J(e.calc(m).mul(2).equal())})`,lineHeight:v,wordWrap:`break-word`,borderRadius:o,overflow:`hidden`,"&-success":S?{background:S}:{},"&-error":C?{background:C}:{},"&-info":w?{background:w}:{},"&-warning":T?{background:T}:{}},[`${D}-title`]:{marginBottom:e.marginXS,color:d,fontSize:i,lineHeight:e.lineHeightLG},[`${D}-description`]:{fontSize:_,color:x,marginTop:e.marginXS,"&:first-child":{marginTop:0,marginInlineEnd:e.marginSM}},[`${D}-closable ${D}-title`]:{paddingInlineEnd:e.paddingLG},[`${D}-with-icon ${D}-title`]:{marginBottom:e.marginXS,marginInlineStart:e.calc(e.marginSM).add(b).equal(),fontSize:i},[`${D}-with-icon ${D}-description`]:{marginInlineStart:e.calc(e.marginSM).add(b).equal(),fontSize:_},[`${D}-icon`]:{position:`absolute`,fontSize:b,lineHeight:1,[`&-success${t}`]:{color:s},[`&-info${t}`]:{color:c},[`&-warning${t}`]:{color:l},[`&-error${t}`]:{color:u}},[`${D}-close`]:{position:`absolute`,top:e.notificationPaddingVertical,insetInlineEnd:e.notificationPaddingHorizontal,color:e.colorIcon,outline:`none`,width:e.notificationCloseButtonSize,height:e.notificationCloseButtonSize,borderRadius:e.borderRadiusSM,transition:[`color`,`background-color`].map(e=>`${e} ${E}`).join(`, `),display:`flex`,alignItems:`center`,justifyContent:`center`,background:`none`,border:`none`,"&:hover":{color:e.colorIconHover,backgroundColor:e.colorBgTextHover},"&:active":{backgroundColor:e.colorBgTextActive},...$c(e)},[`${D}-progress`]:{position:`absolute`,display:`block`,appearance:`none`,inlineSize:`calc(100% - ${J(o)} * 2)`,left:{_skip_check_:!0,value:o},right:{_skip_check_:!0,value:o},bottom:0,blockSize:g,border:0,"&, &::-webkit-progress-bar":{borderRadius:o,backgroundColor:`rgba(0, 0, 0, 0.04)`},"&::-moz-progress-bar":{background:h},"&::-webkit-progress-value":{borderRadius:o,background:h}},[`${D}-actions`]:{float:`right`,marginTop:e.marginSM}}},Yne=e=>{let{componentCls:t,notificationMarginBottom:n,notificationMarginEdge:r,motionDurationMid:i,motionEaseInOut:a}=e,o=`${t}-notice`,s=new Ro(`antNotificationFadeOut`,{"0%":{maxHeight:e.animationMaxHeight,marginBottom:n},"100%":{maxHeight:0,marginBottom:0,paddingTop:0,paddingBottom:0,opacity:0}});return[{[t]:{...Yc(e),position:`fixed`,zIndex:e.zIndexPopup,marginRight:{value:r,_skip_check_:!0},[`${t}-hook-holder`]:{position:`relative`},[`${t}-fade-appear-prepare`]:{opacity:`0 !important`},[`${t}-fade-enter, ${t}-fade-appear`]:{animationDuration:e.motionDurationMid,animationTimingFunction:a,animationFillMode:`both`,opacity:0,animationPlayState:`paused`},[`${t}-fade-leave`]:{animationTimingFunction:a,animationFillMode:`both`,animationDuration:i,animationPlayState:`paused`},[`${t}-fade-enter${t}-fade-enter-active, ${t}-fade-appear${t}-fade-appear-active`]:{animationPlayState:`running`},[`${t}-fade-leave${t}-fade-leave-active`]:{animationName:s,animationPlayState:`running`},"&-rtl":{direction:`rtl`,[`${o}-actions`]:{float:`left`}}}},{[t]:{[`${o}-wrapper`]:Jne(e)}}]},Xne=e=>({zIndexPopup:e.zIndexPopupBase+Kd+50,width:384,progressBg:`linear-gradient(90deg, ${e.colorPrimaryBorderHover}, ${e.colorPrimary})`,colorSuccessBg:void 0,colorErrorBg:void 0,colorInfoBg:void 0,colorWarningBg:void 0}),Zne=e=>{let t=e.paddingMD,n=e.paddingLG;return _s(e,{notificationBg:e.colorBgElevated,notificationPaddingVertical:t,notificationPaddingHorizontal:n,notificationIconSize:e.calc(e.fontSizeLG).mul(e.lineHeightLG).equal(),notificationCloseButtonSize:e.calc(e.controlHeightLG).mul(.55).equal(),notificationMarginBottom:e.margin,notificationPadding:`${J(e.paddingMD)} ${J(e.paddingContentHorizontalLG)}`,notificationMarginEdge:e.marginLG,animationMaxHeight:150,notificationStackLayer:3,notificationProgressHeight:2})},Qne=il(`Notification`,e=>{let t=Zne(e);return[Yne(t),Vne(t),qne(t)]},Xne);function Dv(e,t){return t===null||t===!1?null:t||C.createElement(zl,{className:`${e}-close-icon`})}var $ne={success:Nl,info:Gl,error:Il,warning:Hl},ere=e=>{let{prefixCls:t,icon:n,type:r,title:i,description:a,actions:o,role:s=`alert`,styles:c,classNames:l}=e,u=null;return n?u=C.createElement(`span`,{className:q(`${t}-icon`,l.icon),style:c.icon},n):r&&(u=C.createElement($ne[r]||null,{className:q(`${t}-icon`,l.icon,`${t}-icon-${r}`),style:c.icon})),C.createElement(`div`,{className:q({[`${t}-with-icon`]:u}),role:s},u,i&&C.createElement(`div`,{className:q(`${t}-title`,l.title),style:c.title},i),a&&C.createElement(`div`,{className:q(`${t}-description`,l.description),style:c.description},a),o&&C.createElement(`div`,{className:q(`${t}-actions`,l.actions),style:c.actions},o))};function tre(e,t,n){let r;switch(e){case`top`:r={left:`50%`,transform:`translateX(-50%)`,right:`auto`,top:t,bottom:`auto`};break;case`topLeft`:r={left:0,top:t,bottom:`auto`};break;case`topRight`:r={right:0,top:t,bottom:`auto`};break;case`bottom`:r={left:`50%`,transform:`translateX(-50%)`,right:`auto`,top:`auto`,bottom:n};break;case`bottomLeft`:r={left:0,top:`auto`,bottom:n};break;default:r={right:0,top:`auto`,bottom:n};break}return r}function nre(e){return{motionName:`${e}-fade`}}function rre(e,t,n){return e===void 0?t?.closeIcon===void 0?n?.closeIcon:t.closeIcon:e}var Ov=24,ire=4.5,are=`topRight`,ore=({children:e,prefixCls:t})=>{let n=xf(t),[r,i]=Qne(t,n);return C.createElement(nm,{classNames:{list:q(r,i,n)}},e)},sre=(e,{prefixCls:t,key:n})=>C.createElement(ore,{prefixCls:t,key:n},e),cre=C.forwardRef((e,t)=>{let{top:n,bottom:r,prefixCls:i,getContainer:a,maxCount:o,rtl:s,onAllRemoved:c,stack:l,duration:u=ire,pauseOnHover:d=!0,showProgress:f}=e,{getPrefixCls:p,getPopupContainer:m,direction:h}=ui(`notification`),{notification:g}=(0,C.useContext)(si),[,_]=qc(),v=i||p(`notification`),y=(0,C.useMemo)(()=>md(u)&&u>0?u:!1,[u]),[b,x]=um({prefixCls:v,style:e=>tre(e,n??Ov,r??Ov),className:()=>q({[`${v}-rtl`]:s??h===`rtl`}),motion:()=>nre(v),closable:{closeIcon:Dv(v)},duration:y,getContainer:()=>a?.()||m?.()||document.body,maxCount:o,pauseOnHover:d,showProgress:f,onAllRemoved:c,renderNotifications:sre,stack:l===!1?!1:{threshold:gd(l)?l?.threshold:void 0,offset:8,gap:_.margin}}),[S,w]=Id([g?.classNames,e?.classNames],[g?.styles,e?.styles],{props:e});return C.useImperativeHandle(t,()=>({...b,prefixCls:v,notification:g,classNames:S,styles:w})),x});function lre(e){let t=C.useRef(null);Or(`Notification`);let{notification:n}=C.useContext(si);return[C.useMemo(()=>{let r=r=>{if(!t.current)return;let{open:i,prefixCls:a,notification:o,classNames:s,styles:c}=t.current,l=o?.className||{},u=o?.style||{},d=`${a}-notice`,{title:f,message:p,description:m,icon:h,type:g,btn:_,actions:v,className:y,style:b,role:x=`alert`,closeIcon:S,closable:w,classNames:T={},styles:E={},...D}=r,O=f??p,k=v??_,A=Dv(d,rre(S,e,o)),[j,M,,N]=Td(bd({...e||{},...r}),bd(n),{closable:!0,closeIcon:A}),P=j?{onClose:gd(w)?w.onClose:void 0,closeIcon:M,...N}:!1,F=Fd(T,{props:r}),I=Fd(E,{props:r}),L=Ad(void 0,s,F),R=Md(c,I);return i({placement:e?.placement??are,...D,content:C.createElement(ere,{prefixCls:d,icon:h,type:g,title:O,description:m,actions:k,role:x,classNames:L,styles:R}),className:q({[`${d}-${g}`]:g},y,l,L.root),style:{...u,...R.root,...b},closable:P})},i={open:r,destroy:e=>{e===void 0?t.current?.destroy():t.current?.close(e)}};return[`success`,`info`,`warning`,`error`].forEach(e=>{i[e]=t=>r({...t,type:e})}),i},[e,n]),C.createElement(cre,{key:`notification-holder`,...e,ref:t})]}function kv(e){return lre(e)}var Av=C.createContext({}),jv=C.createContext({message:{},notification:{},modal:{}}),Mv=il(`App`,e=>{let{componentCls:t,colorText:n,fontSize:r,lineHeight:i,fontFamily:a}=e;return{[t]:{color:n,fontSize:r,lineHeight:i,fontFamily:a,[`&${t}-rtl`]:{direction:`rtl`}}}},()=>({})),ure=e=>{let{prefixCls:t,children:n,className:r,rootClassName:i,message:a,notification:o,style:s,component:c=`div`}=e,{direction:l,getPrefixCls:u,className:d,style:f}=ui(`app`),p=u(`app`,t),[m,h]=Mv(p),g=q(m,p,r,i,h,{[`${p}-rtl`]:l===`rtl`}),_=(0,C.useContext)(Av),v=C.useMemo(()=>({message:{..._.message,...a},notification:{..._.notification,...o}}),[a,o,_.message,_.notification]),[y,b]=ym(v.message),[x,S]=kv(v.notification),[w,T]=Ev(),E=C.useMemo(()=>({message:y,notification:x,modal:w}),[y,x,w]);Or(`App`)(!(h&&c===!1),`usage`,"When using cssVar, ensure `component` is assigned a valid React component string.");let D=c===!1?C.Fragment:c,O={className:q(d,g),style:{...f,...s}};return C.createElement(jv.Provider,{value:E},C.createElement(Av.Provider,{value:v},C.createElement(D,{...c===!1?void 0:O},T,b,S,n)))},dre=()=>C.useContext(jv),Nv=ure;Nv.useApp=dre;function Pv(e){return t=>C.createElement(Zp,{theme:{token:{motion:!1,zIndexPopupBase:0}}},C.createElement(e,{...t}))}var Fv=(e,t,n,r,i)=>Pv(a=>{let{prefixCls:o,style:s}=a,c=C.useRef(null),[l,u]=C.useState(0),[d,f]=C.useState(0),[p,m]=Wn(!1,a.open),{getPrefixCls:h}=C.useContext(si),g=h(r||`select`,o);C.useEffect(()=>{if(m(!0),typeof ResizeObserver<`u`){let e=new ResizeObserver(e=>{let t=e[0].target;u(t.offsetHeight+8),f(t.offsetWidth)}),t=setInterval(()=>{let n=i?`.${i(g)}`:`.${g}-dropdown`,r=c.current?.querySelector(n);r&&(clearInterval(t),e.observe(r))},10);return()=>{clearInterval(t),e.disconnect()}}},[g]);let _={...a,style:{...s,margin:0},open:p,getPopupContainer:()=>c.current};n&&(_=n(_)),t&&(_={..._,[t]:{overflow:{adjustX:!1,adjustY:!1}}});let v={paddingBottom:l,position:`relative`,minWidth:d};return C.createElement(`div`,{ref:c,style:v},C.createElement(e,{..._}))}),fre=(e,t,n,r,i=!1,a,o)=>{let s=(0,C.useMemo)(()=>typeof n==`boolean`?{allowClear:n}:n&&typeof n==`object`?n:{allowClear:!1},[n]);return(0,C.useMemo)(()=>{let e=!i&&s.allowClear!==!1&&(t.length||a)&&!(o===`combobox`&&a===``);return{allowClear:e,clearIcon:e?s.clearIcon||r||`×`:null}},[s,r,i,t.length,a,o])},Iv=C.createContext(null);function Lv(){return C.useContext(Iv)}function pre(e=250){let t=C.useRef(null),n=C.useRef(null);C.useEffect(()=>()=>{window.clearTimeout(n.current)},[]);function r(r){(r||t.current===null)&&(t.current=r),window.clearTimeout(n.current),n.current=window.setTimeout(()=>{t.current=null},e)}return[()=>t.current,r]}function Rv(e,t){return e.filter(e=>e).some(e=>e.contains(t)||e===t)}function mre(e,t,n,r){let i=Rn(i=>{if(r)return;let a=i.target;a.shadowRoot&&i.composed&&(a=i.composedPath()[0]||a),i._ori_target&&(a=i._ori_target),t&&!Rv(e(),a)&&n(!1)});C.useEffect(()=>(window.addEventListener(`mousedown`,i),()=>window.removeEventListener(`mousedown`,i)),[i])}function zv(){return zv=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let t=e===!0?0:1;return{bottomLeft:{points:[`tl`,`bl`],offset:[0,4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`},bottomRight:{points:[`tr`,`br`],offset:[0,4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`},topLeft:{points:[`bl`,`tl`],offset:[0,-4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`},topRight:{points:[`br`,`tr`],offset:[0,-4],overflow:{adjustX:t,adjustY:1},htmlRegion:`scroll`}}},Vv=C.forwardRef((e,t)=>{let{prefixCls:n,disabled:r,visible:i,children:a,popupElement:o,animation:s,transitionName:c,popupStyle:l,popupClassName:u,direction:d=`ltr`,placement:f,builtinPlacements:p,popupMatchSelectWidth:m,popupRender:h,popupAlign:g,getPopupContainer:_,empty:v,onPopupVisibleChange:y,onPopupMouseEnter:b,onPopupMouseDown:x,onPopupBlur:S,...w}=e,T=`${n}-dropdown`,E=o;h&&(E=h(o));let D=C.useMemo(()=>p||Bv(m),[p,m]),O=s?`${T}-${s}`:c,k=typeof m==`number`,A=C.useMemo(()=>k?null:m===!1?`minWidth`:`width`,[m,k]),j=l;k&&(j={...l,width:m});let M=C.useRef(null);return C.useImperativeHandle(t,()=>({getPopupElement:()=>M.current?.popupElement})),C.createElement(Mp,zv({},w,{showAction:y?[`click`]:[],hideAction:y?[`click`]:[],popupPlacement:f||(d===`rtl`?`bottomRight`:`bottomLeft`),builtinPlacements:D,prefixCls:T,popupMotion:{motionName:O},popup:C.createElement(`div`,{onMouseEnter:b,onMouseDown:x,onBlur:S},E),ref:M,stretch:A,popupAlign:g,popupVisible:i,getPopupContainer:_,popupClassName:q(u,{[`${T}-empty`]:v}),popupStyle:j,onPopupVisibleChange:y}),a)});function Hv(e,t){let{key:n}=e,r;return`value`in e&&({value:r}=e),n??(r===void 0?`rc-index-key-${t}`:r)}function Uv(e){return e!==void 0&&!Number.isNaN(e)}function Wv(e,t){let{label:n,value:r,options:i,groupLabel:a}=e||{},o=n||(t?`children`:`label`);return{label:o,value:r||`value`,options:i||`options`,groupLabel:a||o}}function hre(e,{fieldNames:t,childrenAsData:n}={}){let r=[],{label:i,value:a,options:o,groupLabel:s}=Wv(t,!1);function c(e,t){Array.isArray(e)&&e.forEach(e=>{if(t||!(o in e)){let n=e[a];r.push({key:Hv(e,r.length),groupOption:t,data:e,label:e[i],value:n})}else{let t=e[s];t===void 0&&n&&(t=e.label),r.push({key:Hv(e,r.length),group:!0,data:e,label:t}),c(e[o],!0)}})}return c(e,!1),r}function Gv(e){let t={...e};return`props`in t||Object.defineProperty(t,`props`,{get(){return xr(!1,"Return type is option instead of Option instance. Please read value directly instead of reading from `props`."),t}}),t}var gre=(e,t,n)=>{if(!t||!t.length)return null;let r=!1,i=(e,[t,...n])=>{if(!t)return[e];let a=e.split(t);return r||=a.length>1,a.reduce((e,t)=>[...e,...i(t,n)],[]).filter(Boolean)},a=i(e,t);return r?n===void 0?a:a.slice(0,n):null};function _re(e){let{visible:t,values:n}=e;return t?C.createElement(`span`,{"aria-live":`polite`,style:{width:0,height:0,position:`absolute`,overflow:`hidden`,opacity:0}},`${n.slice(0,50).map(({label:e,value:t})=>[`number`,`string`].includes(typeof e)?e:t).join(`, `)}`,n.length>50?`, ...`:null):null}var vre=e=>{let t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(null)},Kv=(e,t=1)=>{if(t<=0){e();return}vre(()=>{Kv(e,t-1)})};function yre(e,t,n,r){let[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{a(!0)},[]);let[o,s]=Wn(e,t),[c,l]=(0,C.useState)(!1),u=i?o:!1,d=r(u),f=(0,C.useRef)(0),p=Rn(e=>{n&&d!==e&&n(e),s(e)});return[u,d,Rn((e,t={})=>{let{cancelFun:n}=t;f.current+=1;let r=f.current,i=typeof e==`boolean`?e:!d;l(!i);function a(){r===f.current&&!n?.()&&(p(i),l(!1))}i?a():Kv(()=>{a()})}),c]}function qv(e){let{children:t,...n}=e;return t?C.createElement(`div`,n,t):null}var Jv=C.createContext(null);function Yv(){return C.useContext(Jv)}var Xv=C.forwardRef((e,t)=>{let{onChange:n,onKeyDown:r,onBlur:i,style:a,syncWidth:o,value:s,className:c,autoComplete:l,...u}=e,{prefixCls:d,mode:f,onSearch:p,onSearchSubmit:m,onInputBlur:h,autoFocus:g,tokenWithEnter:_,placeholder:v,components:{input:y=`input`}}=Yv(),{id:b,classNames:x,styles:S,open:w,activeDescendantId:T,role:E,disabled:D}=Lv()||{},O=q(`${d}-input`,x?.input,c),k=C.useRef(!1),A=C.useRef(null),j=C.useRef(null);C.useImperativeHandle(t,()=>j.current);let M=e=>{let{value:t}=e.target;if(_&&A.current&&/[\r\n]/.test(A.current)){let e=A.current.replace(/[\r\n]+$/,``).replace(/\r\n/g,` `).replace(/[\r\n]/g,` `);t=t.replace(e,A.current)}A.current=null,p&&p(t,!0,k.current),n?.(e)},N=e=>{let{key:t}=e,{value:n}=e.currentTarget;t===`Enter`&&f===`tags`&&!w&&!k.current&&m&&m(n),r?.(e)},P=e=>{h?.(),i?.(e)},F=()=>{k.current=!0},I=e=>{if(k.current=!1,f!==`combobox`){let{value:t}=e.currentTarget;p?.(t,!0,!1)}},L=e=>{let{clipboardData:t}=e;A.current=t?.getData(`text`)||``},[R,z]=C.useState(void 0);Vn(()=>{let e=j.current;if(o&&e){e.style.width=`0px`;let t=e.scrollWidth;z(t),e.style.width=``}},[o,s]);let B={id:b,type:f===`combobox`?`text`:`search`,...u,ref:j,style:{...S?.input,...a,"--select-input-width":R},autoFocus:g,autoComplete:l||`off`,className:O,disabled:D,value:s||``,onChange:M,onKeyDown:N,onBlur:P,onPaste:L,onCompositionStart:F,onCompositionEnd:I,role:E||`combobox`,"aria-expanded":w||!1,"aria-haspopup":`listbox`,"aria-owns":w?`${b}_list`:void 0,"aria-autocomplete":`list`,"aria-controls":w?`${b}_list`:void 0,"aria-activedescendant":w?T:void 0};if(C.isValidElement(y)){let t=y.props||{},n={placeholder:e.placeholder||v,...B,...t};return Object.keys(t).forEach(e=>{let r=t[e];typeof r==`function`&&(n[e]=(...t)=>{r(...t),B[e]?.(...t)})}),n.ref=er(y.ref,B.ref),C.cloneElement(y,n)}let V=y;return C.createElement(V,B)});function Zv(e){let{prefixCls:t,placeholder:n,displayValues:r}=Yv(),{classNames:i,styles:a}=Lv(),{show:o=!0}=e;return r.length?null:C.createElement(`div`,{className:q(`${t}-placeholder`,i?.placeholder),style:{visibility:o?`visible`:`hidden`,...a?.placeholder}},n)}var Qv=C.createContext(null);function $v(e){return Array.isArray(e)?e:e===void 0?[]:[e]}typeof window<`u`&&window.document&&window.document.documentElement;function ey(e){return e!=null}function ty(e){return!e&&e!==0}function ny(e){return[`string`,`number`].includes(typeof e)}function ry(e){let t;return e&&(ny(e.title)?t=e.title.toString():ny(e.label)&&(t=e.label.toString())),t}function iy(){return iy=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,searchValue:r,activeValue:i,displayValues:a,maxLength:o,mode:s,components:c}=Yv(),{triggerOpen:l,title:u,showSearch:d,classNames:f,styles:p}=Lv(),m=C.useContext(Qv),[h,g]=C.useState(!1),_=s===`combobox`,v=a[0],y=C.useMemo(()=>_&&i&&!h&&l?i:d?r:``,[_,i,h,l,r,d]),[b,x,S,w]=C.useMemo(()=>{let e,t,n;if(v&&m?.flattenOptions){let r=m.flattenOptions.find(e=>e.value===v.value);r?.data&&(e=r.data.className,t=r.data.style,n=ry(r.data))}return v&&!n&&(n=ry(v)),u!==void 0&&(n=u),[e,t,n,!!e||!!t]},[v,m?.flattenOptions,u]);C.useEffect(()=>{_&&g(!1)},[_,i]);let T=v&&v.label!==null&&v.label!==void 0&&String(v.label).trim()!==``,E=_&&c?.input?null:v?w?C.createElement(`div`,{className:q(`${n}-content-value`,b),style:{...y?{visibility:`hidden`}:{},...x},title:S},v.label):v.label:C.createElement(Zv,{show:!y});return C.createElement(`div`,{className:q(`${n}-content`,T&&`${n}-content-has-value`,y&&`${n}-content-has-search-value`,w&&`${n}-content-has-option-style`,f?.content),style:p?.content,title:w?void 0:S},E,C.createElement(Xv,iy({ref:t},e,{value:y,maxLength:s===`combobox`?o:void 0,onChange:t=>{g(!0),e.onChange?.(t)}})))}),ay=void 0;function xre(e,t){let{prefixCls:n,invalidate:r,item:i,renderItem:a,responsive:o,responsiveDisabled:s,registerSize:c,itemKey:l,className:u,style:d,children:f,display:p,order:m,component:h=`div`,...g}=e,_=o&&!p;function v(e){c(l,e)}C.useEffect(()=>()=>{v(null)},[]);let y=a&&i!==ay?a(i,{index:m}):f,b;r||(b={opacity:+!_,height:_?0:ay,overflowY:_?`hidden`:ay,order:o?m:ay,pointerEvents:_?`none`:ay,position:_?`absolute`:ay});let x={};_&&(x[`aria-hidden`]=!0);let S=C.createElement(h,xh({className:q(!r&&n,u),style:{...b,...d}},x,g,{ref:t}),y);return o&&(S=C.createElement(Gr,{onResize:({offsetWidth:e})=>{v(e)},disabled:s},S)),S}var oy=C.forwardRef(xre);function Sre(e){if(typeof MessageChannel>`u`)ii(e);else{let t=new MessageChannel;t.port1.onmessage=()=>e(),t.port2.postMessage(void 0)}}function Cre(){let e=C.useRef(null);return t=>{e.current||(e.current=[],Sre(()=>{(0,Yf.unstable_batchedUpdates)(()=>{e.current.forEach(e=>{e()}),e.current=null})})),e.current.push(t)}}function sy(e,t){let[n,r]=C.useState(t);return[n,Rn(t=>{e(()=>{r(t)})})]}var cy=C.createContext(null),wre=C.forwardRef((e,t)=>{let n=C.useContext(cy);if(!n){let{component:n=`div`,...r}=e;return C.createElement(n,xh({},r,{ref:t}))}let{className:r,...i}=n,{className:a,...o}=e;return C.createElement(cy.Provider,{value:null},C.createElement(oy,xh({ref:t,className:q(r,a)},i,o)))}),ly=`responsive`,uy=`invalidate`;function Tre(e){return`+ ${e.length} ...`}function Ere(e,t){let{prefixCls:n=`rc-overflow`,data:r=[],renderItem:i,renderRawItem:a,itemKey:o,itemWidth:s=10,ssr:c,style:l,className:u,maxCount:d,renderRest:f,renderRawRest:p,prefix:m,suffix:h,component:g=`div`,itemComponent:_,onVisibleChange:v,...y}=e,b=c===`full`,x=Cre(),[S,w]=sy(x,null),T=S||0,[E,D]=sy(x,new Map),[O,k]=sy(x,0),[A,j]=sy(x,0),[M,N]=sy(x,0),[P,F]=sy(x,0),[I,L]=(0,C.useState)(null),[R,z]=(0,C.useState)(null),B=C.useMemo(()=>R===null&&b?2**53-1:R||0,[R,S]),[V,H]=(0,C.useState)(!1),U=`${n}-item`,W=Math.max(O,A),ee=d===ly,te=r.length&&ee,ne=d===uy,re=te||typeof d==`number`&&r.length>d,ie=(0,C.useMemo)(()=>{let e=r;return te?e=S===null&&b?r:r.slice(0,Math.min(r.length,T/s)):typeof d==`number`&&(e=r.slice(0,d)),e},[r,s,S,d,te]),ae=(0,C.useMemo)(()=>te?r.slice(B+1):r.slice(ie.length),[r,ie,te,B]),G=(0,C.useCallback)((e,t)=>typeof o==`function`?o(e):(o&&e?.[o])??t,[o]),oe=(0,C.useCallback)(i||(e=>e),[i]);function K(e,t,n){R===e&&(t===void 0||t===I)||(z(e),n||(H(e{let r=new Map(n);return t===null?r.delete(e):r.set(e,t),r})}function le(e,t){j(t),k(A)}function ue(e,t){N(t)}function de(e,t){F(t)}function fe(e){return E.get(G(ie[e],e))}Vn(()=>{if(T&&typeof W==`number`&&ie){let e=M+P,t=ie.length,n=t-1;if(!t){K(0,null);return}for(let r=0;rT){K(r-1,e-t-P+A);break}}h&&fe(0)+P>T&&L(null)}},[T,E,A,M,P,G,ie]);let pe=V&&!!ae.length,me={};I!==null&&te&&(me={position:`absolute`,top:0,insetInlineStart:I});let he={prefixCls:U,responsive:te,component:_,invalidate:ne},ge=a?(e,t)=>{let n=G(e,t);return C.createElement(cy.Provider,{key:n,value:{...he,order:t,item:e,itemKey:n,registerSize:ce,display:t<=B}},a(e,t))}:(e,t)=>{let n=G(e,t);return C.createElement(oy,xh({},he,{order:t,key:n,item:e,renderItem:oe,itemKey:n,registerSize:ce,display:t<=B}))},_e={order:pe?B:2**53-1,className:`${U}-rest`,registerSize:le,display:pe},ve=f||Tre,ye=p?C.createElement(cy.Provider,{value:{...he,..._e}},p(ae)):C.createElement(oy,xh({},he,_e),typeof ve==`function`?ve(ae):ve),be=C.createElement(g,xh({className:q(!ne&&n,u),style:l,ref:t},y),m&&C.createElement(oy,xh({},he,{responsive:ee,responsiveDisabled:!te,order:-1,className:`${U}-prefix`,registerSize:ue,display:!0}),m),ie.map(ge),re?ye:null,h&&C.createElement(oy,xh({},he,{responsive:ee,responsiveDisabled:!te,order:B,className:`${U}-suffix`,registerSize:de,display:!0,style:me}),h));return ee?C.createElement(Gr,{onResize:se,disabled:!te},be):be}var dy=C.forwardRef(Ere);dy.Item=wre,dy.RESPONSIVE=ly,dy.INVALIDATE=uy;var fy=dy,py=e=>{let{className:t,style:n,customizeIcon:r,customizeIconProps:i,children:a,onMouseDown:o,onClick:s}=e,c=typeof r==`function`?r(i):r;return C.createElement(`span`,{className:t,onMouseDown:e=>{e.preventDefault(),o?.(e)},style:{userSelect:`none`,WebkitUserSelect:`none`,...n},unselectable:`on`,onClick:s,"aria-hidden":!0},c===void 0?C.createElement(`span`,{className:q(t.split(/\s+/).map(e=>`${e}-icon`))},a):c)};function my(){return my=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.preventDefault(),e.stopPropagation()},Ore=C.forwardRef(function({inputProps:e},t){let{prefixCls:n,displayValues:r,searchValue:i,mode:a,onSelectorRemove:o,removeIcon:s}=Yv(),{disabled:c,showSearch:l,triggerOpen:u,rawOpen:d,toggleOpen:f,autoClearSearchValue:p,tagRender:m,maxTagPlaceholder:h,maxTagTextLength:g,maxTagCount:_,classNames:v,styles:y}=Lv(),b=`${n}-selection-item`,x=i;!d&&a===`multiple`&&p!==!1&&(x=``);let S=l&&x||``,w=l&&!c,T=s??`×`,E=h??(e=>`+ ${e.length} ...`),D=m,O=e=>{f(e)},k=e=>{o?.(e)},A=(e,t,n,r,i)=>C.createElement(`span`,{title:ry(e),className:q(b,{[`${b}-disabled`]:n},v?.item),style:y?.item},C.createElement(`span`,{className:q(`${b}-content`,v?.itemContent),style:y?.itemContent},t),r&&C.createElement(py,{className:q(`${b}-remove`,v?.itemRemove),style:y?.itemRemove,onMouseDown:hy,onClick:i,customizeIcon:T},`×`)),j=(e,t,n,r,i,a,o)=>C.createElement(`span`,{onMouseDown:e=>{hy(e),O(!u)}},D({label:t,value:e,index:o?.index,disabled:n,closable:r,onClose:i,isMaxTag:!!a}));return C.createElement(fy,{prefixCls:`${n}-content`,className:v?.content,style:y?.content,prefix:!r.length&&!S&&C.createElement(Zv,null),data:r,renderItem:(e,t)=>{let{disabled:n,label:r,value:i}=e,a=!c&&!n,o=r;if(typeof g==`number`&&(typeof r==`string`||typeof r==`number`)){let e=String(o);e.length>g&&(o=`${e.slice(0,g)}...`)}let s=t=>{t&&t.stopPropagation(),k(e)};return typeof D==`function`?j(i,o,n,a,s,void 0,t):A(e,o,n,a,s)},renderRest:e=>{if(!r.length)return null;let t=typeof E==`function`?E(e):E;return typeof D==`function`?j(void 0,t,!1,!1,void 0,!0):A({title:t},t,!1)},suffix:C.createElement(Xv,my({ref:t,disabled:c,readOnly:!w},e,{value:S||``,syncWidth:!0})),itemKey:Dre,maxCount:_})}),kre=C.forwardRef(function(e,t){let{multiple:n,onInputKeyDown:r,tabIndex:i}=Yv(),a=Lv(),{showSearch:o}=a,s={...Hu(a,{aria:!0}),onKeyDown:r,readOnly:!o,tabIndex:i};return n?C.createElement(Ore,{ref:t,inputProps:s}):C.createElement(bre,{ref:t,inputProps:s})});function Are(e){return e&&![Qp.ESC,Qp.SHIFT,Qp.BACKSPACE,Qp.TAB,Qp.WIN_KEY,Qp.ALT,Qp.META,Qp.WIN_KEY_RIGHT,Qp.CTRL,Qp.SEMICOLON,Qp.EQUALS,Qp.CAPS_LOCK,Qp.CONTEXT_MENU,Qp.UP,Qp.LEFT,Qp.RIGHT,Qp.F1,Qp.F2,Qp.F3,Qp.F4,Qp.F5,Qp.F6,Qp.F7,Qp.F8,Qp.F9,Qp.F10,Qp.F11,Qp.F12].includes(e)}function gy(){return gy=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{which:t}=e,n=F.current instanceof HTMLTextAreaElement;!n&&D&&(t===Qp.UP||t===Qp.DOWN)&&e.preventDefault(),x&&x(e),!(n&&!D&&~[Qp.UP,Qp.DOWN,Qp.LEFT,Qp.RIGHT].indexOf(t))&&!(e.ctrlKey||e.altKey||e.metaKey)&&Are(t)&&O(!0)});C.useImperativeHandle(t,()=>({focus:e=>{(F.current||P.current).focus?.(e)},blur:()=>{(F.current||P.current).blur?.()},nativeElement:Ar(P.current)}));let L=Rn(e=>{if(!A){let t=Ar(F.current);e.nativeEvent._ori_target=t;let n=t===e.target||t?.contains(e.target);t&&!n&&e.preventDefault();let r=D&&!l&&(f===`combobox`||k)||D&&l&&n;e.nativeEvent._select_lazy?D&&O(!1):(F.current?.focus(),r||O())}y?.(e)}),{root:R}=T,z=Cr(E,jre),B=Hu(z,{aria:!0}),V=Object.keys(B),H={...e,onInputKeyDown:I};if(R){let e=R.props||{},t={...e,...z};return Object.keys(e).forEach(n=>{let r=e[n],i=z[n];typeof r==`function`&&typeof i==`function`&&(t[n]=(...e)=>{i(...e),r(...e)})}),C.isValidElement(R)?C.cloneElement(R,{...t,ref:er(R.ref,P)}):C.createElement(R,gy({},t,{ref:P}))}return C.createElement(Jv.Provider,{value:H},C.createElement(`div`,gy({},Cr(z,V),{ref:P,className:r,style:i,onMouseDown:L}),C.createElement(qv,{className:q(`${n}-prefix`,M?.prefix),style:N?.prefix},a),C.createElement(kre,{ref:F}),C.createElement(qv,{className:q(`${n}-suffix`,{[`${n}-suffix-loading`]:j},M?.suffix),style:N?.suffix},o),s&&C.createElement(qv,{className:q(`${n}-clear`,M?.clear),style:N?.clear,onMouseDown:e=>{e.nativeEvent._select_lazy=!0,b?.(e)}},s),c))});function vy(e,t,n){return C.useMemo(()=>{let{root:r,input:i}=e||{};return n&&(r=n()),t&&(i=t()),{root:r,input:i}},[e,t,n])}function yy(){return yy=Object.assign?Object.assign.bind():function(e){for(var t=1;te===`tags`||e===`multiple`,xy=C.forwardRef((e,t)=>{let{id:n,prefixCls:r,className:i,styles:a,classNames:o,showSearch:s,tagRender:c,showScrollBar:l=`optional`,direction:u,omitDomProps:d,displayValues:f,onDisplayValuesChange:p,emptyOptions:m,notFoundContent:h=`Not Found`,onClear:g,maxCount:_,placeholder:v,mode:y,disabled:b,loading:x,getInputElement:S,getRawInputElement:w,open:T,defaultOpen:E,onPopupVisibleChange:D,activeValue:O,onActiveValueChange:k,activeDescendantId:A,searchValue:j,autoClearSearchValue:M,onSearch:N,onSearchSplit:P,tokenSeparators:F,allowClear:I,prefix:L,suffix:R,suffixIcon:z,clearIcon:B,OptionList:V,animation:H,transitionName:U,popupStyle:W,popupClassName:ee,popupMatchSelectWidth:te,popupRender:ne,popupAlign:re,placement:ie,builtinPlacements:ae,getPopupContainer:G,showAction:oe=[],onFocus:K,onBlur:se,onKeyUp:ce,onKeyDown:le,onMouseDown:ue,components:de,...fe}=e,pe=by(y),me=C.useRef(null),he=C.useRef(null),ge=C.useRef(null),[_e,ve]=C.useState(!1);C.useImperativeHandle(t,()=>({focus:me.current?.focus,blur:me.current?.blur,scrollTo:e=>ge.current?.scrollTo(e),nativeElement:Ar(me.current)}));let ye=vy(de,S,w),be=C.useMemo(()=>{if(y!==`combobox`)return j;let e=f[0]?.value;return typeof e==`string`||typeof e==`number`?String(e):``},[j,y,f]),xe=y===`combobox`&&typeof S==`function`&&S()||null,Se=!h&&m,[Ce,we,Te,Ee]=yre(E||!1,T,D,e=>b||Se?!1:e),De=C.useMemo(()=>(F||[]).some(e=>[`
`,`\r
-`].includes(e)),[F]),Oe=(e,t,n)=>{if(pe&&Gv(_)&&f.length>=_)return;let r=!0,i=e;k?.(null);let a=mre(e,F,Gv(_)?_-f.length:void 0),o=n?null:a;return y!==`combobox`&&o&&(i=``,P?.(o),Te(!1),r=!1),N&&be!==i&&N(i,{source:t?`typing`:`effect`}),e&&t&&r&&Te(!0),r},ke=e=>{!e||!e.trim()||N(e,{source:`submit`})};C.useEffect(()=>{!Ce&&!pe&&y!==`combobox`&&Oe(``,!1,!1)},[Ce]),C.useEffect(()=>{b&&(Te(!1),ve(!1))},[b,we]);let[Ae,je]=lre(),Me=C.useRef(!1),Ne=e=>{let t=Ae(),{key:n}=e,r=n===`Enter`,i=n===` `;if(r||i){let t=y===`combobox`;(i&&!(t||s)||r&&!t)&&e.preventDefault(),we||Te(!0)}if(je(!!be),n===`Backspace`&&!t&&pe&&!be&&f.length){let e=[...f],t=null;for(let n=e.length-1;n>=0;--n){let r=e[n];if(!r.disabled){e.splice(n,1),t=r;break}}t&&p(e,{type:`remove`,values:[t]})}we&&(!r||!Me.current)&&!i&&(r&&(Me.current=!0),ge.current?.onKeyDown(e)),le?.(e)},Pe=(e,...t)=>{we&&ge.current?.onKeyUp(e,...t),e.key===`Enter`&&(Me.current=!1),ce?.(e,...t)},Fe=Rn(e=>{p(f.filter(t=>t!==e),{type:`remove`,values:[e]})}),Ie=()=>{Me.current=!1},Le=()=>[Ar(me.current),he.current?.getPopupElement()];ure(Le,we,Te,!!ye.root);let Re=C.useRef(!1),ze=e=>{ve(!0),b||(oe.includes(`focus`)&&Te(!0),K?.(e))},Be=()=>{we&&!Re.current&&Te(!1,{cancelFun:()=>Hv(Le(),document.activeElement)})},Ve=e=>{ve(!1),be&&(y===`tags`?N(be,{source:`submit`}):y===`multiple`&&N(``,{source:`blur`})),Be(),b||se?.(e)},He=(e,...t)=>{let{target:n}=e;(he.current?.getPopupElement())?.contains(n)&&Te&&Te(!0),ue?.(e,...t),Re.current=!0,Jv(()=>{Re.current=!1})},[,Ue]=C.useState({});function We(){Ue({})}let Ge;ye.root&&(Ge=e=>{Te(e)});let Ke=C.useMemo(()=>({...e,notFoundContent:h,open:we,triggerOpen:we,rawOpen:Ce,id:n,showSearch:s,multiple:pe,toggleOpen:Te,showScrollBar:l,styles:a,classNames:o,lockOptions:Ee}),[e,h,Te,n,s,pe,we,Ce,l,a,o,Ee]),qe=C.useMemo(()=>{let e=R??z;return typeof e==`function`?e({searchValue:be,open:we,focused:_e,showSearch:s,loading:x}):e},[R,z,be,we,_e,s,x]),Je=()=>{g?.(),me.current?.focus(),p([],{type:`clear`,values:f}),Oe(``,!1,!1)},{allowClear:Ye,clearIcon:Xe}=cre(r,f,I,B,b,be,y),Ze=C.createElement(V,{ref:ge}),Qe=q(r,i,{[`${r}-focused`]:_e,[`${r}-multiple`]:pe,[`${r}-single`]:!pe,[`${r}-allow-clear`]:Ye,[`${r}-show-arrow`]:qe!=null,[`${r}-disabled`]:b,[`${r}-loading`]:x,[`${r}-open`]:we,[`${r}-customize-input`]:xe,[`${r}-show-search`]:s}),$e=C.createElement(Mre,_y({},fe,{ref:me,prefixCls:r,className:Qe,focused:_e,prefix:L,suffix:qe,clearIcon:Xe,multiple:pe,mode:y,displayValues:f,placeholder:v,searchValue:be,activeValue:O,onSearch:Oe,onSearchSubmit:ke,onInputBlur:Ie,onFocus:ze,onBlur:Ve,onClearMouseDown:Je,onKeyDown:Ne,onKeyUp:Pe,onSelectorRemove:Fe,tokenWithEnter:De,onMouseDown:He,components:ye}));return $e=C.createElement(fre,{ref:he,disabled:b,prefixCls:r,visible:we,popupElement:Ze,animation:H,transitionName:U,popupStyle:W,popupClassName:ee,direction:u,popupMatchSelectWidth:te,popupRender:ne,popupAlign:re,placement:ie,builtinPlacements:ae,getPopupContainer:G,empty:m,onPopupVisibleChange:Ge,onPopupMouseEnter:We,onPopupMouseDown:He,onPopupBlur:Be},$e),C.createElement(Bv.Provider,{value:Ke},C.createElement(hre,{visible:_e&&!we,values:f}),$e)}),yy=()=>null;yy.isSelectOptGroup=!0;var by=()=>null;by.isSelectOption=!0;var xy=C.forwardRef(({height:e,offsetY:t,offsetX:n,children:r,prefixCls:i,onInnerResize:a,innerProps:o,rtl:s,extra:c},l)=>{let u={},d={display:`flex`,flexDirection:`column`};return t!==void 0&&(u={height:e,position:`relative`,overflow:`hidden`},d={...d,transform:`translateY(${t}px)`,[s?`marginRight`:`marginLeft`]:-n,position:`absolute`,left:0,right:0,top:0}),C.createElement(`div`,{style:u},C.createElement(Gr,{onResize:({offsetHeight:e})=>{e&&a&&a()}},C.createElement(`div`,wh({style:d,className:q({[`${i}-holder-inner`]:i}),ref:l},o),r,c)))});xy.displayName=`Filler`;function Fre({children:e,setRef:t}){let n=C.useCallback(e=>{t(e)},[]);return C.cloneElement(e,{ref:n})}function Ire(e,t,n,r,i,a,o,{getKey:s}){return e.slice(t,n+1).map((e,n)=>{let c=o(e,t+n,{style:{width:r},offsetX:i}),l=s(e);return C.createElement(Fre,{key:l,setRef:t=>a(e,t)},c)})}function Lre(e,t,n){let r=e.length,i=t.length,a,o;if(r===0&&i===0)return null;r{let a=Lre(r||[],e||[],t);a?.index!==void 0&&(n?.(a.index),o(e[a.index])),i(e)},[e]),[a]}var Sy=typeof navigator==`object`&&/Firefox/i.test(navigator.userAgent),Cy=((e,t,n,r)=>{let i=(0,C.useRef)(!1),a=(0,C.useRef)(null);function o(){clearTimeout(a.current),i.current=!0,a.current=setTimeout(()=>{i.current=!1},50)}let s=(0,C.useRef)({top:e,bottom:t,left:n,right:r});return s.current.top=e,s.current.bottom=t,s.current.left=n,s.current.right=r,(e,t,n=!1)=>{let r=e?t<0&&s.current.left||t>0&&s.current.right:t<0&&s.current.top||t>0&&s.current.bottom;return n&&r?(clearTimeout(a.current),i.current=!1):(!r||i.current)&&o(),!i.current&&r}});function zre(e,t,n,r,i,a,o){let s=(0,C.useRef)(0),c=(0,C.useRef)(null),l=(0,C.useRef)(null),u=(0,C.useRef)(!1),d=Cy(t,n,r,i);function f(e,t){if(ii.cancel(c.current),d(!1,t))return;let n=e;if(!n._virtualHandled)n._virtualHandled=!0;else return;s.current+=t,l.current=t,Sy||n.preventDefault(),c.current=ii(()=>{let e=u.current?10:1;o(s.current*e,!1),s.current=0})}function p(e,t){o(t,!0),Sy||e.preventDefault()}let m=(0,C.useRef)(null),h=(0,C.useRef)(null);function g(t){if(!e)return;ii.cancel(h.current),h.current=ii(()=>{m.current=null},2);let{deltaX:n,deltaY:r,shiftKey:i}=t,o=n,s=r;(m.current===`sx`||!m.current&&i&&r&&!n)&&(o=r,s=0,m.current=`sx`);let c=Math.abs(o),l=Math.abs(s);m.current===null&&(m.current=a&&c>l?`x`:`y`),m.current===`y`?f(t,s):p(t,o)}function _(t){e&&(u.current=t.detail===l.current)}return[g,_]}function Bre(e,t,n,r){let[i,a]=C.useMemo(()=>[new Map,[]],[e,n.id,r]);return(o,s=o)=>{let c=i.get(o),l=i.get(s);if(c===void 0||l===void 0){let u=e.length;for(let d=a.length;d{let e=!1;a.current.forEach((t,n)=>{if(t&&t.offsetParent){let{offsetHeight:r}=t,{marginTop:i,marginBottom:a}=getComputedStyle(t),s=wy(i),c=wy(a),l=r+s+c;o.current.get(n)!==l&&(o.current.set(n,l),e=!0)}}),e&&i(e=>e+1)};if(e)t();else{s.current+=1;let e=s.current;Promise.resolve().then(()=>{e===s.current&&t()})}}function u(r,i){let o=e(r),s=a.current.get(o);i?(a.current.set(o,i),l()):a.current.delete(o),!s!=!i&&(i?t?.(r):n?.(r))}return(0,C.useEffect)(()=>c,[]),[u,l,o.current,r]}var Ty=14/15;function Ure(e,t,n){let r=(0,C.useRef)(!1),i=(0,C.useRef)(0),a=(0,C.useRef)(0),o=(0,C.useRef)(null),s=(0,C.useRef)(null),c,l=e=>{if(r.current){let t=Math.ceil(e.touches[0].pageX),r=Math.ceil(e.touches[0].pageY),o=i.current-t,c=a.current-r,l=Math.abs(o)>Math.abs(c);l?i.current=t:a.current=r;let u=n(l,l?o:c,!1,e);u&&e.preventDefault(),clearInterval(s.current),u&&(s.current=setInterval(()=>{l?o*=Ty:c*=Ty;let e=Math.floor(l?o:c);(!n(l,e,!0)||Math.abs(e)<=.1)&&clearInterval(s.current)},16))}},u=()=>{r.current=!1,c()},d=e=>{c(),e.touches.length===1&&!r.current&&(r.current=!0,i.current=Math.ceil(e.touches[0].pageX),a.current=Math.ceil(e.touches[0].pageY),o.current=e.target,o.current.addEventListener(`touchmove`,l,{passive:!1}),o.current.addEventListener(`touchend`,u,{passive:!0}))};c=()=>{o.current&&(o.current.removeEventListener(`touchmove`,l),o.current.removeEventListener(`touchend`,u))},Vn(()=>(e&&t.current.addEventListener(`touchstart`,d,{passive:!0}),()=>{t.current?.removeEventListener(`touchstart`,d),c(),clearInterval(s.current)}),[e])}function Ey(e){return Math.floor(e**.5)}function Dy(e,t){return(`touches`in e?e.touches[0]:e)[t?`pageX`:`pageY`]-window[t?`scrollX`:`scrollY`]}function Wre(e,t,n){C.useEffect(()=>{let r=t.current;if(e&&r){let e=!1,t,i,a=()=>{ii.cancel(t)},o=()=>{a(),t=ii(()=>{n(i),o()})},s=()=>{e=!1,a()},c=t=>{if(t.target.draggable||t.button!==0)return;let n=t;n._virtualHandled||(n._virtualHandled=!0,e=!0)},l=t=>{if(e){let e=Dy(t,!1),{top:n,bottom:s}=r.getBoundingClientRect();e<=n?(i=-Ey(n-e),o()):e>=s?(i=Ey(e-s),o()):a()}};return r.addEventListener(`mousedown`,c),r.ownerDocument.addEventListener(`mouseup`,s),r.ownerDocument.addEventListener(`mousemove`,l),r.ownerDocument.addEventListener(`dragend`,s),()=>{r.removeEventListener(`mousedown`,c),r.ownerDocument.removeEventListener(`mouseup`,s),r.ownerDocument.removeEventListener(`mousemove`,l),r.ownerDocument.removeEventListener(`dragend`,s),a()}}},[e])}var Gre=10;function Kre(e,t,n,r,i,a,o,s){let c=C.useRef(),[l,u]=C.useState(null);return Vn(()=>{if(l&&l.times({...e}));return}a();let{targetAlign:s,originAlign:c,index:d,offset:f}=l,p=e.current.clientHeight,m=!1,h=s,g=null;if(p){let a=s||c,u=0,_=0,v=0,y=Math.min(t.length-1,d);for(let e=0;e<=y;e+=1){let a=i(t[e]);_=u;let o=n.get(a);v=_+(o===void 0?r:o),u=v}let b=a===`top`?f:p-f;for(let e=y;e>=0;--e){let r=i(t[e]),a=n.get(r);if(a===void 0){m=!0;break}if(b-=a,b<=0)break}switch(a){case`top`:g=_-f;break;case`bottom`:g=v-p+f;break;default:{let{scrollTop:t}=e.current,n=t+p;_n&&(h=`bottom`)}}g!==null&&o(g),g!==l.lastTop&&(m=!0)}m&&u({...l,times:l.times+1,targetAlign:h,lastTop:g})}},[l,e.current]),e=>{if(e==null){s();return}if(ii.cancel(c.current),typeof e==`number`)o(e);else if(e&&typeof e==`object`){let n,{align:r}=e;`index`in e?{index:n}=e:n=t.findIndex(t=>i(t)===e.key);let{offset:a=0}=e;u({times:0,index:n,offset:a,originAlign:r})}}}var Oy=C.forwardRef((e,t)=>{let{prefixCls:n,rtl:r,scrollOffset:i,scrollRange:a,onStartMove:o,onStopMove:s,onScroll:c,horizontal:l,spinSize:u,containerSize:d,style:f,thumbStyle:p,showScrollBar:m}=e,[h,g]=C.useState(!1),[_,v]=C.useState(null),[y,b]=C.useState(null),x=!r,S=C.useRef(),w=C.useRef(),[T,E]=C.useState(m),D=C.useRef(),O=()=>{m===!0||m===!1||(clearTimeout(D.current),E(!0),D.current=setTimeout(()=>{E(!1)},3e3))},k=a-d||0,A=d-u||0,j=C.useMemo(()=>i===0||k===0?0:i/k*A,[i,k,A]),M=e=>{e.stopPropagation(),e.preventDefault()},N=C.useRef({top:j,dragging:h,pageY:_,startTop:y});N.current={top:j,dragging:h,pageY:_,startTop:y};let P=e=>{g(!0),v(Dy(e,l)),b(N.current.top),o(),e.stopPropagation(),e.preventDefault()};C.useEffect(()=>{let e=e=>{e.preventDefault()},t=S.current,n=w.current;return t.addEventListener(`touchstart`,e,{passive:!1}),n.addEventListener(`touchstart`,P,{passive:!1}),()=>{t.removeEventListener(`touchstart`,e),n.removeEventListener(`touchstart`,P)}},[]);let F=C.useRef();F.current=k;let I=C.useRef();I.current=A,C.useEffect(()=>{if(h){let e,t=t=>{let{dragging:n,pageY:r,startTop:i}=N.current;ii.cancel(e);let a=S.current.getBoundingClientRect(),o=d/(l?a.width:a.height);if(n){let n=(Dy(t,l)-r)*o,a=i;!x&&l?a-=n:a+=n;let s=F.current,u=I.current,d=u?a/u:0,f=Math.ceil(d*s);f=Math.max(f,0),f=Math.min(f,s),e=ii(()=>{c(f,l)})}},n=()=>{g(!1),s()};return window.addEventListener(`mousemove`,t,{passive:!0}),window.addEventListener(`touchmove`,t,{passive:!0}),window.addEventListener(`mouseup`,n,{passive:!0}),window.addEventListener(`touchend`,n,{passive:!0}),()=>{window.removeEventListener(`mousemove`,t),window.removeEventListener(`touchmove`,t),window.removeEventListener(`mouseup`,n),window.removeEventListener(`touchend`,n),ii.cancel(e)}}},[h]),C.useEffect(()=>(O(),()=>{clearTimeout(D.current)}),[i]),C.useImperativeHandle(t,()=>({delayHidden:O}));let L=`${n}-scrollbar`,R={position:`absolute`,visibility:T?null:`hidden`},z={position:`absolute`,borderRadius:99,background:`var(--rc-virtual-list-scrollbar-bg, rgba(0, 0, 0, 0.5))`,cursor:`pointer`,userSelect:`none`};return l?(Object.assign(R,{height:8,left:0,right:0,bottom:0}),Object.assign(z,{height:`100%`,width:u,[x?`left`:`right`]:j})):(Object.assign(R,{width:8,top:0,bottom:0,[x?`right`:`left`]:0}),Object.assign(z,{width:`100%`,height:u,top:j})),C.createElement(`div`,{ref:S,className:q(L,{[`${L}-horizontal`]:l,[`${L}-vertical`]:!l,[`${L}-visible`]:T}),style:{...R,...f},onMouseDown:M,onMouseMove:O},C.createElement(`div`,{ref:w,className:q(`${L}-thumb`,{[`${L}-thumb-moving`]:h}),style:{...z,...p},onMouseDown:P}))}),qre=20;function ky(e=0,t=0){let n=e/t*e;return isNaN(n)&&(n=0),n=Math.max(n,qre),Math.floor(n)}var Jre=[],Yre={overflowY:`auto`,overflowAnchor:`none`};function Xre(e,t){let{prefixCls:n=`rc-virtual-list`,className:r,height:i,itemHeight:a,fullHeight:o=!0,style:s,data:c,children:l,itemKey:u,virtual:d,direction:f,scrollWidth:p,component:m=`div`,onScroll:h,onVirtualScroll:g,onVisibleChange:_,innerProps:v,extraRender:y,styles:b,showScrollBar:x=`optional`,...S}=e,w=C.useCallback(e=>typeof u==`function`?u(e):e?.[u],[u]),[T,E,D,O]=Hre(w,null,null),k=!!(d!==!1&&i&&a),A=C.useMemo(()=>Object.values(D.maps).reduce((e,t)=>e+t,0),[D.id,D.maps]),j=k&&c&&(Math.max(a*c.length,A)>i||!!p),M=f===`rtl`,N=q(n,{[`${n}-rtl`]:M},r),P=c||Jre,F=(0,C.useRef)(),I=(0,C.useRef)(),L=(0,C.useRef)(),[R,z]=(0,C.useState)(0),[B,V]=(0,C.useState)(0),[H,U]=(0,C.useState)(!1),W=()=>{U(!0)},ee=()=>{U(!1)},te={getKey:w};function ne(e){z(t=>{let n;n=typeof e==`function`?e(t):e;let r=_e(n);return F.current.scrollTop=r,r})}let re=(0,C.useRef)({start:0,end:P.length}),ie=(0,C.useRef)(),[ae]=Rre(P,w);ie.current=ae;let{scrollHeight:G,start:oe,end:K,offset:se}=C.useMemo(()=>{if(!k)return{scrollHeight:void 0,start:0,end:P.length-1,offset:void 0};if(!j)return{scrollHeight:I.current?.offsetHeight||0,start:0,end:P.length-1,offset:void 0};let e=0,t,n,r,o=P.length;for(let s=0;s=R&&t===void 0&&(t=s,n=e),u>R+i&&r===void 0&&(r=s),e=u}return t===void 0&&(t=0,n=0,r=Math.ceil(i/a)),r===void 0&&(r=P.length-1),r=Math.min(r+1,P.length-1),{scrollHeight:e,start:t,end:r,offset:n}},[j,k,R,P,O,i]);re.current.start=oe,re.current.end=K,C.useLayoutEffect(()=>{let e=D.getRecord();if(e.size===1){let t=Array.from(e.keys())[0],n=e.get(t),r=P[oe];if(r&&n===void 0&&w(r)===t){let e=D.get(t)-a;ne(t=>t+e)}}D.resetRecord()},[G]);let[ce,le]=C.useState({width:0,height:i}),ue=e=>{le({width:e.offsetWidth,height:e.offsetHeight})},de=(0,C.useRef)(),fe=(0,C.useRef)(),pe=C.useMemo(()=>ky(ce.width,p),[ce.width,p]),me=C.useMemo(()=>ky(ce.height,G),[ce.height,G]),he=G-i,ge=(0,C.useRef)(he);ge.current=he;function _e(e){let t=e;return Number.isNaN(ge.current)||(t=Math.min(t,ge.current)),t=Math.max(t,0),t}let ve=R<=0,ye=R>=he,be=B<=0,xe=B>=p,Se=Cy(ve,ye,be,xe),Ce=()=>({x:M?-B:B,y:R}),we=(0,C.useRef)(Ce()),Te=Rn(e=>{if(g){let t={...Ce(),...e};(we.current.x!==t.x||we.current.y!==t.y)&&(g(t),we.current=t)}});function Ee(e,t){let n=e;t?((0,Yf.flushSync)(()=>{V(n)}),Te()):ne(n)}function De(e){let{scrollTop:t}=e.currentTarget;t!==R&&ne(t),h?.(e),Te()}let Oe=e=>{let t=e,n=p?p-ce.width:0;return t=Math.max(t,0),t=Math.min(t,n),t},ke=Rn((e,t)=>{t?((0,Yf.flushSync)(()=>{V(t=>Oe(t+(M?-e:e)))}),Te()):ne(t=>t+e)}),[Ae,je]=zre(k,ve,ye,be,xe,!!p,ke);Ure(k,F,(e,t,n,r)=>{let i=r;return Se(e,t,n)?!1:!i||!i._virtualHandled?(i&&(i._virtualHandled=!0),Ae({preventDefault(){},deltaX:e?t:0,deltaY:e?0:t}),!0):!1}),Wre(j,F,e=>{ne(t=>t+e)}),Vn(()=>{function e(e){let t=ve&&e.detail<0,n=ye&&e.detail>0;k&&!t&&!n&&e.preventDefault()}let t=F.current;return t.addEventListener(`wheel`,Ae,{passive:!1}),t.addEventListener(`DOMMouseScroll`,je,{passive:!0}),t.addEventListener(`MozMousePixelScroll`,e,{passive:!1}),()=>{t.removeEventListener(`wheel`,Ae),t.removeEventListener(`DOMMouseScroll`,je),t.removeEventListener(`MozMousePixelScroll`,e)}},[k,ve,ye]),Vn(()=>{if(p){let e=Oe(B);V(e),Te({x:e})}},[ce.width,p]);let Me=()=>{de.current?.delayHidden(),fe.current?.delayHidden()},Ne=Kre(F,P,D,a,w,()=>E(!0),ne,Me);C.useImperativeHandle(t,()=>({nativeElement:L.current,getScrollInfo:Ce,scrollTo:e=>{function t(e){return e&&typeof e==`object`&&(`left`in e||`top`in e)}t(e)?(e.left!==void 0&&V(Oe(e.left)),Ne(e.top)):Ne(e)}})),Vn(()=>{_&&_(P.slice(oe,K+1),P)},[oe,K,P]);let Pe=Bre(P,w,D,a),Fe=y?.({start:oe,end:K,virtual:j,offsetX:B,offsetY:se,rtl:M,getSize:Pe}),Ie=Ire(P,oe,K,p,B,T,l,te),Le=null;i&&(Le={[o?`height`:`maxHeight`]:i,...Yre},k&&(Le.overflowY=`hidden`,p&&(Le.overflowX=`hidden`),H&&(Le.pointerEvents=`none`)));let Re={};return M&&(Re.dir=`rtl`),C.createElement(`div`,wh({ref:L,style:{...s,position:`relative`},className:N},Re,S),C.createElement(Gr,{onResize:ue},C.createElement(m,{className:`${n}-holder`,style:Le,ref:F,onScroll:De,onMouseEnter:Me},C.createElement(xy,{prefixCls:n,height:G,offsetX:B,offsetY:se,scrollWidth:p,onInnerResize:E,ref:I,innerProps:v,rtl:M,extra:Fe},Ie))),j&&G>i&&C.createElement(Oy,{ref:de,prefixCls:n,scrollOffset:R,scrollRange:G,rtl:M,onScroll:Ee,onStartMove:W,onStopMove:ee,spinSize:me,containerSize:ce.height,style:b?.verticalScrollBar,thumbStyle:b?.verticalScrollBarThumb,showScrollBar:x}),j&&p>ce.width&&C.createElement(Oy,{ref:fe,prefixCls:n,scrollOffset:B,scrollRange:p,rtl:M,onScroll:Ee,onStartMove:W,onStopMove:ee,spinSize:pe,containerSize:ce.width,horizontal:!0,style:b?.horizontalScrollBar,thumbStyle:b?.horizontalScrollBarThumb,showScrollBar:x}))}var Ay=C.forwardRef(Xre);Ay.displayName=`List`;var jy=Ay;function Zre(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}function My(){return My=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,id:r,open:i,multiple:a,mode:o,searchValue:s,toggleOpen:c,notFoundContent:l,onPopupScroll:u,showScrollBar:d,lockOptions:f}=Vv(),{maxCount:p,flattenOptions:m,onActiveValue:h,defaultActiveFirstOption:g,onSelect:_,menuItemSelectedIcon:v,rawValues:y,fieldNames:b,virtual:x,direction:S,listHeight:w,listItemHeight:T,optionRender:E,classNames:D,styles:O}=C.useContext(ey),k=`${n}-item`,A=qn(()=>m,[i,f],(e,t)=>t[0]&&!t[1]),j=C.useRef(null),M=C.useMemo(()=>a&&Gv(p)&&y?.size>=p,[a,p,y?.size]),N=e=>{e.preventDefault()},P=e=>{j.current?.scrollTo(typeof e==`number`?{index:e}:e)},F=C.useCallback(e=>o===`combobox`?!1:y.has(e),[o,[...y].toString(),y.size]),I=(e,t=1)=>{let n=A.length;for(let r=0;rI(0)),z=(e,t=!1)=>{R(e);let n={source:t?`keyboard`:`mouse`},r=A[e];if(!r){h(null,-1,n);return}h(r.value,e,n)};(0,C.useEffect)(()=>{z(g===!1?-1:I(0))},[A.length,s]);let B=C.useCallback(e=>o===`combobox`?String(e).toLowerCase()===s.toLowerCase():y.has(e),[o,s,[...y].toString(),y.size]);(0,C.useEffect)(()=>{let e;if(!a&&i&&y.size===1){let t=Array.from(y)[0],n=A.findIndex(({data:e})=>s?String(e.value).startsWith(s):e.value===t);n!==-1&&(z(n),e=setTimeout(()=>{P(n)}))}return i&&j.current?.scrollTo(void 0),()=>clearTimeout(e)},[i,s]);let V=e=>{e!==void 0&&_(e,{selected:!y.has(e)}),a||c(!1)};if(C.useImperativeHandle(t,()=>({onKeyDown:e=>{let{which:t,ctrlKey:n}=e;switch(t){case em.N:case em.P:case em.UP:case em.DOWN:{let e=0;if(t===em.UP?e=-1:t===em.DOWN?e=1:Zre()&&n&&(t===em.N?e=1:t===em.P&&(e=-1)),e!==0){let t=I(L+e,e);P(t),z(t,!0)}break}case em.TAB:case em.ENTER:{let t=A[L];if(!t||t.data.disabled)return V(void 0);!M||y.has(t.value)?V(t.value):V(void 0),i&&e.preventDefault();break}case em.ESC:c(!1),i&&e.stopPropagation()}},onKeyUp:()=>{},scrollTo:e=>{P(e)}})),A.length===0)return C.createElement(`div`,{role:`listbox`,id:`${r}_list`,className:`${k}-empty`,onMouseDown:N},l);let H=Object.keys(b).map(e=>b[e]),U=e=>e.label;function W(e,t){let{group:n}=e;return{role:n?`presentation`:`option`,id:`${r}_list_${t}`}}let ee=e=>{let t=A[e];if(!t)return null;let n=t.data||{},{value:r,disabled:i}=n,{group:a}=t,o=Hu(n,!0),s=U(t);return t?C.createElement(`div`,My({"aria-label":typeof s==`string`&&!a?s:null},o,{key:e},W(t,e),{"aria-selected":B(r),"aria-disabled":i}),r):null},te={role:`listbox`,id:`${r}_list`};return C.createElement(C.Fragment,null,x&&C.createElement(`div`,My({},te,{style:{height:0,width:0,overflow:`hidden`}}),ee(L-1),ee(L),ee(L+1)),C.createElement(jy,{itemKey:`key`,ref:j,data:A,height:w,itemHeight:T,fullHeight:!1,onMouseDown:N,onScroll:u,virtual:x,direction:S,innerProps:x?null:te,showScrollBar:d,className:D?.popup?.list,style:O?.popup?.list},(e,t)=>{let{group:n,groupOption:r,data:i,label:a,value:o}=e,{key:s}=i;if(n){let e=i.title??(Ny(a)?a.toString():void 0);return C.createElement(`div`,{className:q(k,`${k}-group`,i.className),title:e},a===void 0?s:a)}let{disabled:c,title:l,children:u,style:d,className:f,...p}=i,m=Cr(p,H),h=F(o),g=c||!h&&M,_=`${k}-option`,y=q(k,_,f,D?.popup?.listItem,{[`${_}-grouped`]:r,[`${_}-active`]:L===t&&!g,[`${_}-disabled`]:g,[`${_}-selected`]:h}),b=U(e),S=!v||typeof v==`function`||h,w=typeof b==`number`?b:b||o,T=Ny(w)?w.toString():void 0;return l!==void 0&&(T=l),C.createElement(`div`,My({},Hu(m),x?{}:W(e,t),{"aria-selected":x?void 0:B(o),"aria-disabled":g,className:y,title:T,onMouseMove:()=>{L===t||g||z(t)},onClick:()=>{g||V(o)},style:{...O?.popup?.listItem,...d}}),C.createElement(`div`,{className:`${_}-content`},typeof E==`function`?E(e,{index:t}):w),C.isValidElement(v)||h,S&&C.createElement(py,{className:`${k}-option-state`,customizeIcon:v,customizeIconProps:{value:o,disabled:g,isSelected:h}},h?`✓`:null))}))}),$re=((e,t)=>{let n=C.useRef({values:new Map,options:new Map});return[C.useMemo(()=>{let{values:r,options:i}=n.current,a=e.map(e=>e.label===void 0?{...e,label:r.get(e.value)?.label}:e),o=new Map,s=new Map;return a.forEach(e=>{o.set(e.value,e),s.set(e.value,t.get(e.value)||i.get(e.value))}),n.current.values=o,n.current.options=s,a},[e,t]),C.useCallback(e=>t.get(e)||n.current.options.get(e),[t])]});function Py(e,t){return ty(e).join(``).toUpperCase().includes(t)}var eie=((e,t,n,r,i)=>C.useMemo(()=>{if(!n||r===!1)return e;let{options:a,label:o,value:s}=t,c=[],l=typeof r==`function`,u=n.toUpperCase(),d=l?r:(e,t)=>i&&i.length?i.some(e=>Py(t[e],u)):t[a]?Py(t[o===`children`?`label`:o],u):Py(t[s],u),f=l?e=>qv(e):e=>e;return e.forEach(e=>{if(e[a]){if(d(n,f(e)))c.push(e);else{let t=e[a].filter(e=>d(n,f(e)));t.length&&c.push({...e,[a]:t})}return}d(n,f(e))&&c.push(e)}),c},[e,r,i,n,t]));function tie(e){let{key:t,props:{children:n,value:r,...i}}=e;return{key:t,value:r===void 0?t:r,children:n,...i}}function Fy(e,t=!1){return wr(e).map((e,n)=>{if(!C.isValidElement(e)||!e.type)return null;let{type:{isSelectOptGroup:r},key:i,props:{children:a,...o}}=e;return t||!r?tie(e):{key:`__RC_SELECT_GRP__${i===null?n:i}__`,label:i,...o,options:Fy(a)}}).filter(e=>e)}var nie=(e,t,n,r,i)=>C.useMemo(()=>{let a=e;e||(a=Fy(t));let o=new Map,s=new Map,c=(e,t,n)=>{n&&typeof n==`string`&&e.set(t[n],t)},l=(e,t=!1)=>{for(let a=0;a{c(s,u,e)}),c(s,u,i)):l(u[n.options],!0)}};return l(a),{options:a,valueOptions:o,labelOptions:s}},[e,t,n,r,i]);function Iy(e){let t=C.useRef();return t.current=e,C.useCallback((...e)=>t.current(...e),[])}function rie(e,t,n){let{filterOption:r,searchValue:i,optionFilterProp:a,filterSort:o,onSearch:s,autoClearSearchValue:c}=t;return C.useMemo(()=>{let t=typeof e==`object`,l={filterOption:r,searchValue:i,optionFilterProp:a,filterSort:o,onSearch:s,autoClearSearchValue:c,...t?e:{}};return[t||n===`combobox`||n===`tags`||n===`multiple`&&e===void 0?!0:e,l]},[n,e,r,i,a,o,s,c])}function Ly(){return Ly=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{id:n,mode:r,prefixCls:i=`rc-select`,backfill:a,fieldNames:o,showSearch:s,searchValue:c,onSearch:l,autoClearSearchValue:u,filterOption:d,optionFilterProp:f,filterSort:p,onSelect:m,onDeselect:h,onActive:g,popupMatchSelectWidth:_=!0,optionLabelProp:v,options:y,optionRender:b,children:x,defaultActiveFirstOption:S,menuItemSelectedIcon:w,virtual:T,direction:E,listHeight:D=200,listItemHeight:O=20,labelRender:k,value:A,defaultValue:j,labelInValue:M,onChange:N,maxCount:P,classNames:F,styles:I,...L}=e,[R,z]=rie(s,{searchValue:c,onSearch:l,autoClearSearchValue:u,filterOption:d,optionFilterProp:f,filterSort:p},r),{filterOption:B,searchValue:V,optionFilterProp:H,filterSort:U,onSearch:W,autoClearSearchValue:ee=!0}=z,te=C.useMemo(()=>H?Array.isArray(H)?H:[H]:[],[H]),ne=Bf(n),re=vy(r),ie=!!(!y&&x),ae=C.useMemo(()=>B===void 0&&r===`combobox`?!1:B,[B,r]),G=C.useMemo(()=>Kv(o,ie),[JSON.stringify(o),ie]),[oe,K]=Wn(``,V),se=oe||``,ce=nie(y,x,G,te,v),{valueOptions:le,labelOptions:ue,options:de}=ce,fe=C.useCallback(e=>ty(e).map(e=>{let t,n,r,i;aie(e)?t=e:(n=e.label,t=e.value);let a=le.get(t);return a&&(n===void 0&&(n=a?.[v||G.label]),r=a?.disabled,i=a?.title),{label:n,value:t,key:t,disabled:r,title:i}}),[G,v,le]),[pe,me]=Wn(j,A),[he,ge]=$re(C.useMemo(()=>{let e=fe(re&&pe===null?[]:pe);return r===`combobox`&&yre(e[0]?.value)?[]:e},[pe,fe,r,re]),le),_e=C.useMemo(()=>{if(!r&&he.length===1){let e=he[0];if(e.value===null&&(e.label===null||e.label===void 0))return[]}return he.map(e=>({...e,label:(typeof k==`function`?k(e):e.label)??e.value}))},[r,he,k]),ve=C.useMemo(()=>new Set(he.map(e=>e.value)),[he]);C.useEffect(()=>{if(r===`combobox`){let e=he[0]?.value;K(vre(e)?String(e):``)}},[he]);let ye=Iy((e,t)=>{let n=t??e;return{[G.value]:e,[G.label]:n}}),be=eie(C.useMemo(()=>{if(r!==`tags`)return de;let e=[...de],t=e=>le.has(e);return[...he].sort((e,t)=>e.value{let r=n.value;t(r)||e.push(ye(r,n.label))}),e},[ye,de,le,he,r]),G,se,ae,te),xe=C.useMemo(()=>{let e=e=>te.length?te.some(t=>e?.[t]===se):e?.value===se;return r!==`tags`||!se||be.some(t=>e(t))||be.some(e=>e[G.value]===se)?be:[ye(se),...be]},[ye,te,r,be,se,G]),Se=e=>[...e].sort((e,t)=>U(e,t,{searchValue:se})).map(e=>Array.isArray(e.options)?{...e,options:e.options.length>0?Se(e.options):e.options}:e),Ce=C.useMemo(()=>U?Se(xe):xe,[xe,U,se]),we=C.useMemo(()=>pre(Ce,{fieldNames:G,childrenAsData:ie}),[Ce,G,ie]),Te=e=>{let t=fe(e);if(me(t),N&&(t.length!==he.length||t.some((e,t)=>he[t]?.value!==e?.value))){let e=M?t.map(({label:e,value:t})=>({label:e,value:t})):t.map(e=>e.value),n=t.map(e=>qv(ge(e.value)));N(re?e:e[0],re?n:n[0])}},[Ee,De]=C.useState(null),[Oe,ke]=C.useState(0),Ae=S===void 0?r!==`combobox`:S,je=C.useRef(),Me=C.useCallback((e,t,{source:n=`keyboard`}={})=>{ke(t),a&&r===`combobox`&&e!==null&&n===`keyboard`&&De(String(e));let i=Promise.resolve().then(()=>{je.current===i&&g?.(e)});je.current=i},[a,r,g]),Ne=(e,t,n)=>{let r=()=>{let t=ge(e);return[M?{label:t?.[G.label],value:e}:e,qv(t)]};if(t&&m){let[e,t]=r();m(e,t)}else if(!t&&h&&n!==`clear`){let[e,t]=r();h(e,t)}},Pe=Iy((e,t)=>{let n,i=re?t.selected:!0;n=i?re?[...he,e]:[e]:he.filter(t=>t.value!==e),Te(n),Ne(e,i),r===`combobox`?De(``):(!vy||ee)&&(K(``),De(``))}),Fe=(e,t)=>{Te(e);let{type:n,values:r}=t;(n===`remove`||n===`clear`)&&r.forEach(e=>{Ne(e.value,!1,n)})},Ie=(e,t)=>{if(K(e),De(null),t.source===`submit`){let t=(e||``).trim();t&&(Te(Array.from(new Set([...ve,t]))),Ne(t,!0),K(``));return}t.source!==`blur`&&(r===`combobox`&&Te(e),W?.(e))},Le=e=>{let t=e;r!==`tags`&&(t=e.map(e=>ue.get(e)?.value).filter(e=>e!==void 0));let n=Array.from(new Set([...ve,...t]));Te(n),n.forEach(e=>{Ne(e,!0)})},Re=C.useMemo(()=>{let e=T!==!1&&_!==!1;return{...ce,flattenOptions:we,onActiveValue:Me,defaultActiveFirstOption:Ae,onSelect:Pe,menuItemSelectedIcon:w,rawValues:ve,fieldNames:G,virtual:e,direction:E,listHeight:D,listItemHeight:O,childrenAsData:ie,maxCount:P,optionRender:b,classNames:F,styles:I}},[P,ce,we,Me,Ae,Pe,w,ve,G,T,_,E,D,O,ie,b,F,I]);return C.createElement(ey.Provider,{value:Re},C.createElement(Pre,Ly({},L,{id:ne,prefixCls:i,ref:t,omitDomProps:iie,mode:r,classNames:F,styles:I,displayValues:_e,onDisplayValuesChange:Fe,maxCount:P,direction:E,showSearch:R,searchValue:se,onSearch:Ie,autoClearSearchValue:ee,onSearchSplit:Le,popupMatchSelectWidth:_,OptionList:Qre,emptyOptions:!we.length,activeValue:Ee,activeDescendantId:`${ne}_list_${Oe}`})))});Ry.Option=by,Ry.OptGroup=yy;var oie=Ry,zy=(e,t,n)=>q({[`${e}-status-success`]:t===`success`,[`${e}-status-warning`]:t===`warning`,[`${e}-status-error`]:t===`error`,[`${e}-status-validating`]:t===`validating`,[`${e}-has-feedback`]:n}),By=(e,t)=>t||e,sie=()=>{let[,e]=qc(),[t]=ld(`Empty`),n=new zs(e.colorBgBase).toHsl().l<.5?{opacity:.65}:{};return C.createElement(`svg`,{style:n,width:`184`,height:`152`,viewBox:`0 0 184 152`,xmlns:`http://www.w3.org/2000/svg`},C.createElement(`title`,null,t?.description||`Empty`),C.createElement(`g`,{fill:`none`,fillRule:`evenodd`},C.createElement(`g`,{transform:`translate(24 31.7)`},C.createElement(`ellipse`,{fillOpacity:`.8`,fill:`#F5F5F7`,cx:`67.8`,cy:`106.9`,rx:`67.8`,ry:`12.7`}),C.createElement(`path`,{fill:`#aeb8c2`,d:`M122 69.7 98.1 40.2a6 6 0 0 0-4.6-2.2H42.1a6 6 0 0 0-4.6 2.2l-24 29.5V85H122z`}),C.createElement(`path`,{fill:`#f5f5f7`,d:`M33.8 0h68a4 4 0 0 1 4 4v93.3a4 4 0 0 1-4 4h-68a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4`}),C.createElement(`path`,{fill:`#dce0e6`,d:`M42.7 10h50.2a2 2 0 0 1 2 2v25a2 2 0 0 1-2 2H42.7a2 2 0 0 1-2-2V12a2 2 0 0 1 2-2m.2 39.8h49.8a2.3 2.3 0 1 1 0 4.5H42.9a2.3 2.3 0 0 1 0-4.5m0 11.7h49.8a2.3 2.3 0 1 1 0 4.6H42.9a2.3 2.3 0 0 1 0-4.6m79 43.5a7 7 0 0 1-6.8 5.4H20.5a7 7 0 0 1-6.7-5.4l-.2-1.8V69.7h26.3c2.9 0 5.2 2.4 5.2 5.4s2.4 5.4 5.3 5.4h34.8c2.9 0 5.3-2.4 5.3-5.4s2.3-5.4 5.2-5.4H122v33.5q0 1-.2 1.8`})),C.createElement(`path`,{fill:`#dce0e6`,d:`m149.1 33.3-6.8 2.6a1 1 0 0 1-1.3-1.2l2-6.2q-4.1-4.5-4.2-10.4c0-10 10.1-18.1 22.6-18.1S184 8.1 184 18.1s-10.1 18-22.6 18q-6.8 0-12.3-2.8`}),C.createElement(`g`,{fill:`#fff`,transform:`translate(149.7 15.4)`},C.createElement(`circle`,{cx:`20.7`,cy:`3.2`,r:`2.8`}),C.createElement(`path`,{d:`M5.7 5.6H0L2.9.7zM9.3.7h5v5h-5z`}))))},Vy=()=>{let[,e]=qc(),[t]=ld(`Empty`),{colorFill:n,colorFillTertiary:r,colorFillQuaternary:i,colorBgContainer:a}=e,{borderColor:o,shadowColor:s,contentColor:c}=(0,C.useMemo)(()=>({borderColor:new zs(n).onBackground(a).toHexString(),shadowColor:new zs(r).onBackground(a).toHexString(),contentColor:new zs(i).onBackground(a).toHexString()}),[n,r,i,a]);return C.createElement(`svg`,{width:`64`,height:`41`,viewBox:`0 0 64 41`,xmlns:`http://www.w3.org/2000/svg`},C.createElement(`title`,null,t?.description||`Empty`),C.createElement(`g`,{transform:`translate(0 1)`,fill:`none`,fillRule:`evenodd`},C.createElement(`ellipse`,{fill:s,cx:`32`,cy:`33`,rx:`32`,ry:`7`}),C.createElement(`g`,{fillRule:`nonzero`,stroke:o},C.createElement(`path`,{d:`M55 12.8 44.9 1.3Q44 0 42.9 0H21.1q-1.2 0-2 1.3L9 12.8V22h46z`}),C.createElement(`path`,{d:`M41.6 16c0-1.7 1-3 2.2-3H55v18.1c0 2.2-1.3 3.9-3 3.9H12c-1.7 0-3-1.7-3-3.9V13h11.2c1.2 0 2.2 1.3 2.2 3s1 2.9 2.2 2.9h14.8c1.2 0 2.2-1.4 2.2-3`,fill:c}))))},Hy=e=>{let{componentCls:t,margin:n,marginXS:r,marginXL:i,fontSize:a,lineHeight:o}=e;return{[t]:{marginInline:r,fontSize:a,lineHeight:o,textAlign:`center`,[`${t}-image`]:{height:e.emptyImgHeight,marginBottom:r,opacity:e.opacityImage,img:{height:`100%`},svg:{maxWidth:`100%`,height:`100%`,margin:`auto`}},[`${t}-description`]:{color:e.colorTextDescription},[`${t}-footer`]:{marginTop:n},"&-normal":{marginBlock:i,color:e.colorTextDescription,[`${t}-description`]:{color:e.colorTextDescription},[`${t}-image`]:{height:e.emptyImgHeightMD}},"&-small":{marginBlock:r,color:e.colorTextDescription,[`${t}-image`]:{height:e.emptyImgHeightSM}}}}},Uy=il(`Empty`,e=>{let{componentCls:t,controlHeightLG:n,calc:r}=e;return Hy(_s(e,{emptyImgCls:`${t}-img`,emptyImgHeight:r(n).mul(2.5).equal(),emptyImgHeightMD:n,emptyImgHeightSM:r(n).mul(.875).equal()}))}),Wy=C.createElement(sie,null),Gy=C.createElement(Vy,null),Ky=e=>{let{className:t,rootClassName:n,prefixCls:r,image:i,description:a,children:o,imageStyle:s,style:c,classNames:l,styles:u,...d}=e,{getPrefixCls:f,direction:p,className:m,style:h,classNames:g,styles:_,image:v}=ui(`empty`),y=f(`empty`,r),[b,x]=Uy(y),[S,w]=Id([g,l],[_,u],{props:e}),[T]=ld(`Empty`),E=a===void 0?T?.description:a,D=typeof E==`string`?E:`empty`,O=i??v??Wy,k=null;return k=typeof O==`string`?C.createElement(`img`,{draggable:!1,alt:D,src:O}):O,C.createElement(`div`,{className:q(b,x,y,m,{[`${y}-normal`]:O===Gy,[`${y}-rtl`]:p===`rtl`},t,n,S.root),style:{...w.root,...h,...c},...d},C.createElement(`div`,{className:q(`${y}-image`,S.image),style:{...s,...w.image}},k),E&&C.createElement(`div`,{className:q(`${y}-description`,S.description),style:w.description},E),o&&C.createElement(`div`,{className:q(`${y}-footer`,S.footer),style:w.footer},o))};Ky.PRESENTED_IMAGE_DEFAULT=Wy,Ky.PRESENTED_IMAGE_SIMPLE=Gy;var qy=e=>{let{componentName:t}=e,{getPrefixCls:n}=(0,C.useContext)(si),r=n(`empty`);switch(t){case`Table`:case`List`:return C.createElement(Ky,{image:Ky.PRESENTED_IMAGE_SIMPLE});case`Select`:case`TreeSelect`:case`Cascader`:case`Transfer`:case`Mentions`:return C.createElement(Ky,{image:Ky.PRESENTED_IMAGE_SIMPLE,className:`${r}-small`});case`Table.filter`:return null;default:return C.createElement(Ky,null)}},Jy=(e,t,n)=>{let{variant:r,[e]:i}=C.useContext(si),a=C.useContext(H_),o=i?.variant,s;s=t===void 0?n===!1?`borderless`:a??o??r??`outlined`:t;let c=oi.includes(s);return[s,c]},Yy=e=>{let t={overflow:{adjustX:!0,adjustY:!0,shiftY:!0},htmlRegion:e===`scroll`?`scroll`:`visible`,dynamicInset:!0};return{bottomLeft:{...t,points:[`tl`,`bl`],offset:[0,4]},bottomRight:{...t,points:[`tr`,`br`],offset:[0,4]},topLeft:{...t,points:[`bl`,`tl`],offset:[0,-4]},topRight:{...t,points:[`br`,`tr`],offset:[0,-4]}}};function Xy(e,t){return e||Yy(t)}var Zy=e=>{let{optionHeight:t,optionFontSize:n,optionLineHeight:r,optionPadding:i}=e;return{position:`relative`,display:`block`,minHeight:t,padding:i,color:e.colorText,fontWeight:`normal`,fontSize:n,lineHeight:r,boxSizing:`border-box`}},Qy=e=>{let{antCls:t,componentCls:n}=e,r=`${n}-item`,i=`&${t}-slide-up-enter${t}-slide-up-enter-active`,a=`&${t}-slide-up-appear${t}-slide-up-appear-active`,o=`&${t}-slide-up-leave${t}-slide-up-leave-active`,s=`${n}-dropdown-placement-`,c=`${r}-option-selected`;return[{[`${n}-dropdown`]:{...Yc(e),position:`absolute`,top:-9999,zIndex:e.zIndexPopup,boxSizing:`border-box`,padding:e.paddingXXS,overflow:`hidden`,fontSize:e.fontSize,fontVariant:`initial`,backgroundColor:e.colorBgElevated,borderRadius:e.borderRadiusLG,outline:`none`,boxShadow:e.boxShadowSecondary,[`
+`].includes(e)),[F]),Oe=(e,t,n)=>{if(pe&&Uv(_)&&f.length>=_)return;let r=!0,i=e;k?.(null);let a=gre(e,F,Uv(_)?_-f.length:void 0),o=n?null:a;return y!==`combobox`&&o&&(i=``,P?.(o),Te(!1),r=!1),N&&be!==i&&N(i,{source:t?`typing`:`effect`}),e&&t&&r&&Te(!0),r},ke=e=>{!e||!e.trim()||N(e,{source:`submit`})};C.useEffect(()=>{!Ce&&!pe&&y!==`combobox`&&Oe(``,!1,!1)},[Ce]),C.useEffect(()=>{b&&(Te(!1),ve(!1))},[b,we]);let[Ae,je]=pre(),Me=C.useRef(!1),Ne=e=>{let t=Ae(),{key:n}=e,r=n===`Enter`,i=n===` `;if(r||i){let t=y===`combobox`;(i&&!(t||s)||r&&!t)&&e.preventDefault(),we||Te(!0)}if(je(!!be),n===`Backspace`&&!t&&pe&&!be&&f.length){let e=[...f],t=null;for(let n=e.length-1;n>=0;--n){let r=e[n];if(!r.disabled){e.splice(n,1),t=r;break}}t&&p(e,{type:`remove`,values:[t]})}we&&(!r||!Me.current)&&!i&&(r&&(Me.current=!0),ge.current?.onKeyDown(e)),le?.(e)},Pe=(e,...t)=>{we&&ge.current?.onKeyUp(e,...t),e.key===`Enter`&&(Me.current=!1),ce?.(e,...t)},Fe=Rn(e=>{p(f.filter(t=>t!==e),{type:`remove`,values:[e]})}),Ie=()=>{Me.current=!1},Le=()=>[Ar(me.current),he.current?.getPopupElement()];mre(Le,we,Te,!!ye.root);let Re=C.useRef(!1),ze=e=>{ve(!0),b||(oe.includes(`focus`)&&Te(!0),K?.(e))},Be=()=>{we&&!Re.current&&Te(!1,{cancelFun:()=>Rv(Le(),document.activeElement)})},Ve=e=>{ve(!1),be&&(y===`tags`?N(be,{source:`submit`}):y===`multiple`&&N(``,{source:`blur`})),Be(),b||se?.(e)},He=(e,...t)=>{let{target:n}=e;(he.current?.getPopupElement())?.contains(n)&&Te&&Te(!0),ue?.(e,...t),Re.current=!0,Kv(()=>{Re.current=!1})},[,Ue]=C.useState({});function We(){Ue({})}let Ge;ye.root&&(Ge=e=>{Te(e)});let Ke=C.useMemo(()=>({...e,notFoundContent:h,open:we,triggerOpen:we,rawOpen:Ce,id:n,showSearch:s,multiple:pe,toggleOpen:Te,showScrollBar:l,styles:a,classNames:o,lockOptions:Ee}),[e,h,Te,n,s,pe,we,Ce,l,a,o,Ee]),qe=C.useMemo(()=>{let e=R??z;return typeof e==`function`?e({searchValue:be,open:we,focused:_e,showSearch:s,loading:x}):e},[R,z,be,we,_e,s,x]),Je=()=>{g?.(),me.current?.focus(),p([],{type:`clear`,values:f}),Oe(``,!1,!1)},{allowClear:Ye,clearIcon:Xe}=fre(r,f,I,B,b,be,y),Ze=C.createElement(V,{ref:ge}),Qe=q(r,i,{[`${r}-focused`]:_e,[`${r}-multiple`]:pe,[`${r}-single`]:!pe,[`${r}-allow-clear`]:Ye,[`${r}-show-arrow`]:qe!=null,[`${r}-disabled`]:b,[`${r}-loading`]:x,[`${r}-open`]:we,[`${r}-customize-input`]:xe,[`${r}-show-search`]:s}),$e=C.createElement(_y,yy({},fe,{ref:me,prefixCls:r,className:Qe,focused:_e,prefix:L,suffix:qe,clearIcon:Xe,multiple:pe,mode:y,displayValues:f,placeholder:v,searchValue:be,activeValue:O,onSearch:Oe,onSearchSubmit:ke,onInputBlur:Ie,onFocus:ze,onBlur:Ve,onClearMouseDown:Je,onKeyDown:Ne,onKeyUp:Pe,onSelectorRemove:Fe,tokenWithEnter:De,onMouseDown:He,components:ye}));return $e=C.createElement(Vv,{ref:he,disabled:b,prefixCls:r,visible:we,popupElement:Ze,animation:H,transitionName:U,popupStyle:W,popupClassName:ee,direction:u,popupMatchSelectWidth:te,popupRender:ne,popupAlign:re,placement:ie,builtinPlacements:ae,getPopupContainer:G,empty:m,onPopupVisibleChange:Ge,onPopupMouseEnter:We,onPopupMouseDown:He,onPopupBlur:Be},$e),C.createElement(Iv.Provider,{value:Ke},C.createElement(_re,{visible:_e&&!we,values:f}),$e)}),Sy=()=>null;Sy.isSelectOptGroup=!0;var Cy=()=>null;Cy.isSelectOption=!0;var wy=C.forwardRef(({height:e,offsetY:t,offsetX:n,children:r,prefixCls:i,onInnerResize:a,innerProps:o,rtl:s,extra:c},l)=>{let u={},d={display:`flex`,flexDirection:`column`};return t!==void 0&&(u={height:e,position:`relative`,overflow:`hidden`},d={...d,transform:`translateY(${t}px)`,[s?`marginRight`:`marginLeft`]:-n,position:`absolute`,left:0,right:0,top:0}),C.createElement(`div`,{style:u},C.createElement(Gr,{onResize:({offsetHeight:e})=>{e&&a&&a()}},C.createElement(`div`,xh({style:d,className:q({[`${i}-holder-inner`]:i}),ref:l},o),r,c)))});wy.displayName=`Filler`;function Ty({children:e,setRef:t}){let n=C.useCallback(e=>{t(e)},[]);return C.cloneElement(e,{ref:n})}function Ey(e,t,n,r,i,a,o,{getKey:s}){return e.slice(t,n+1).map((e,n)=>{let c=o(e,t+n,{style:{width:r},offsetX:i}),l=s(e);return C.createElement(Ty,{key:l,setRef:t=>a(e,t)},c)})}function Dy(e,t,n){let r=e.length,i=t.length,a,o;if(r===0&&i===0)return null;r{let a=Dy(r||[],e||[],t);a?.index!==void 0&&(n?.(a.index),o(e[a.index])),i(e)},[e]),[a]}var ky=typeof navigator==`object`&&/Firefox/i.test(navigator.userAgent),Ay=((e,t,n,r)=>{let i=(0,C.useRef)(!1),a=(0,C.useRef)(null);function o(){clearTimeout(a.current),i.current=!0,a.current=setTimeout(()=>{i.current=!1},50)}let s=(0,C.useRef)({top:e,bottom:t,left:n,right:r});return s.current.top=e,s.current.bottom=t,s.current.left=n,s.current.right=r,(e,t,n=!1)=>{let r=e?t<0&&s.current.left||t>0&&s.current.right:t<0&&s.current.top||t>0&&s.current.bottom;return n&&r?(clearTimeout(a.current),i.current=!1):(!r||i.current)&&o(),!i.current&&r}});function Mre(e,t,n,r,i,a,o){let s=(0,C.useRef)(0),c=(0,C.useRef)(null),l=(0,C.useRef)(null),u=(0,C.useRef)(!1),d=Ay(t,n,r,i);function f(e,t){if(ii.cancel(c.current),d(!1,t))return;let n=e;if(!n._virtualHandled)n._virtualHandled=!0;else return;s.current+=t,l.current=t,ky||n.preventDefault(),c.current=ii(()=>{let e=u.current?10:1;o(s.current*e,!1),s.current=0})}function p(e,t){o(t,!0),ky||e.preventDefault()}let m=(0,C.useRef)(null),h=(0,C.useRef)(null);function g(t){if(!e)return;ii.cancel(h.current),h.current=ii(()=>{m.current=null},2);let{deltaX:n,deltaY:r,shiftKey:i}=t,o=n,s=r;(m.current===`sx`||!m.current&&i&&r&&!n)&&(o=r,s=0,m.current=`sx`);let c=Math.abs(o),l=Math.abs(s);m.current===null&&(m.current=a&&c>l?`x`:`y`),m.current===`y`?f(t,s):p(t,o)}function _(t){e&&(u.current=t.detail===l.current)}return[g,_]}function Nre(e,t,n,r){let[i,a]=C.useMemo(()=>[new Map,[]],[e,n.id,r]);return(o,s=o)=>{let c=i.get(o),l=i.get(s);if(c===void 0||l===void 0){let u=e.length;for(let d=a.length;d{let e=!1;a.current.forEach((t,n)=>{if(t&&t.offsetParent){let{offsetHeight:r}=t,{marginTop:i,marginBottom:a}=getComputedStyle(t),s=jy(i),c=jy(a),l=r+s+c;o.current.get(n)!==l&&(o.current.set(n,l),e=!0)}}),e&&i(e=>e+1)};if(e)t();else{s.current+=1;let e=s.current;Promise.resolve().then(()=>{e===s.current&&t()})}}function u(r,i){let o=e(r),s=a.current.get(o);i?(a.current.set(o,i),l()):a.current.delete(o),!s!=!i&&(i?t?.(r):n?.(r))}return(0,C.useEffect)(()=>c,[]),[u,l,o.current,r]}var My=14/15;function Ire(e,t,n){let r=(0,C.useRef)(!1),i=(0,C.useRef)(0),a=(0,C.useRef)(0),o=(0,C.useRef)(null),s=(0,C.useRef)(null),c,l=e=>{if(r.current){let t=Math.ceil(e.touches[0].pageX),r=Math.ceil(e.touches[0].pageY),o=i.current-t,c=a.current-r,l=Math.abs(o)>Math.abs(c);l?i.current=t:a.current=r;let u=n(l,l?o:c,!1,e);u&&e.preventDefault(),clearInterval(s.current),u&&(s.current=setInterval(()=>{l?o*=My:c*=My;let e=Math.floor(l?o:c);(!n(l,e,!0)||Math.abs(e)<=.1)&&clearInterval(s.current)},16))}},u=()=>{r.current=!1,c()},d=e=>{c(),e.touches.length===1&&!r.current&&(r.current=!0,i.current=Math.ceil(e.touches[0].pageX),a.current=Math.ceil(e.touches[0].pageY),o.current=e.target,o.current.addEventListener(`touchmove`,l,{passive:!1}),o.current.addEventListener(`touchend`,u,{passive:!0}))};c=()=>{o.current&&(o.current.removeEventListener(`touchmove`,l),o.current.removeEventListener(`touchend`,u))},Vn(()=>(e&&t.current.addEventListener(`touchstart`,d,{passive:!0}),()=>{t.current?.removeEventListener(`touchstart`,d),c(),clearInterval(s.current)}),[e])}function Ny(e){return Math.floor(e**.5)}function Py(e,t){return(`touches`in e?e.touches[0]:e)[t?`pageX`:`pageY`]-window[t?`scrollX`:`scrollY`]}function Lre(e,t,n){C.useEffect(()=>{let r=t.current;if(e&&r){let e=!1,t,i,a=()=>{ii.cancel(t)},o=()=>{a(),t=ii(()=>{n(i),o()})},s=()=>{e=!1,a()},c=t=>{if(t.target.draggable||t.button!==0)return;let n=t;n._virtualHandled||(n._virtualHandled=!0,e=!0)},l=t=>{if(e){let e=Py(t,!1),{top:n,bottom:s}=r.getBoundingClientRect();e<=n?(i=-Ny(n-e),o()):e>=s?(i=Ny(e-s),o()):a()}};return r.addEventListener(`mousedown`,c),r.ownerDocument.addEventListener(`mouseup`,s),r.ownerDocument.addEventListener(`mousemove`,l),r.ownerDocument.addEventListener(`dragend`,s),()=>{r.removeEventListener(`mousedown`,c),r.ownerDocument.removeEventListener(`mouseup`,s),r.ownerDocument.removeEventListener(`mousemove`,l),r.ownerDocument.removeEventListener(`dragend`,s),a()}}},[e])}var Rre=10;function zre(e,t,n,r,i,a,o,s){let c=C.useRef(),[l,u]=C.useState(null);return Vn(()=>{if(l&&l.times({...e}));return}a();let{targetAlign:s,originAlign:c,index:d,offset:f}=l,p=e.current.clientHeight,m=!1,h=s,g=null;if(p){let a=s||c,u=0,_=0,v=0,y=Math.min(t.length-1,d);for(let e=0;e<=y;e+=1){let a=i(t[e]);_=u;let o=n.get(a);v=_+(o===void 0?r:o),u=v}let b=a===`top`?f:p-f;for(let e=y;e>=0;--e){let r=i(t[e]),a=n.get(r);if(a===void 0){m=!0;break}if(b-=a,b<=0)break}switch(a){case`top`:g=_-f;break;case`bottom`:g=v-p+f;break;default:{let{scrollTop:t}=e.current,n=t+p;_n&&(h=`bottom`)}}g!==null&&o(g),g!==l.lastTop&&(m=!0)}m&&u({...l,times:l.times+1,targetAlign:h,lastTop:g})}},[l,e.current]),e=>{if(e==null){s();return}if(ii.cancel(c.current),typeof e==`number`)o(e);else if(e&&typeof e==`object`){let n,{align:r}=e;`index`in e?{index:n}=e:n=t.findIndex(t=>i(t)===e.key);let{offset:a=0}=e;u({times:0,index:n,offset:a,originAlign:r})}}}var Fy=C.forwardRef((e,t)=>{let{prefixCls:n,rtl:r,scrollOffset:i,scrollRange:a,onStartMove:o,onStopMove:s,onScroll:c,horizontal:l,spinSize:u,containerSize:d,style:f,thumbStyle:p,showScrollBar:m}=e,[h,g]=C.useState(!1),[_,v]=C.useState(null),[y,b]=C.useState(null),x=!r,S=C.useRef(),w=C.useRef(),[T,E]=C.useState(m),D=C.useRef(),O=()=>{m===!0||m===!1||(clearTimeout(D.current),E(!0),D.current=setTimeout(()=>{E(!1)},3e3))},k=a-d||0,A=d-u||0,j=C.useMemo(()=>i===0||k===0?0:i/k*A,[i,k,A]),M=e=>{e.stopPropagation(),e.preventDefault()},N=C.useRef({top:j,dragging:h,pageY:_,startTop:y});N.current={top:j,dragging:h,pageY:_,startTop:y};let P=e=>{g(!0),v(Py(e,l)),b(N.current.top),o(),e.stopPropagation(),e.preventDefault()};C.useEffect(()=>{let e=e=>{e.preventDefault()},t=S.current,n=w.current;return t.addEventListener(`touchstart`,e,{passive:!1}),n.addEventListener(`touchstart`,P,{passive:!1}),()=>{t.removeEventListener(`touchstart`,e),n.removeEventListener(`touchstart`,P)}},[]);let F=C.useRef();F.current=k;let I=C.useRef();I.current=A,C.useEffect(()=>{if(h){let e,t=t=>{let{dragging:n,pageY:r,startTop:i}=N.current;ii.cancel(e);let a=S.current.getBoundingClientRect(),o=d/(l?a.width:a.height);if(n){let n=(Py(t,l)-r)*o,a=i;!x&&l?a-=n:a+=n;let s=F.current,u=I.current,d=u?a/u:0,f=Math.ceil(d*s);f=Math.max(f,0),f=Math.min(f,s),e=ii(()=>{c(f,l)})}},n=()=>{g(!1),s()};return window.addEventListener(`mousemove`,t,{passive:!0}),window.addEventListener(`touchmove`,t,{passive:!0}),window.addEventListener(`mouseup`,n,{passive:!0}),window.addEventListener(`touchend`,n,{passive:!0}),()=>{window.removeEventListener(`mousemove`,t),window.removeEventListener(`touchmove`,t),window.removeEventListener(`mouseup`,n),window.removeEventListener(`touchend`,n),ii.cancel(e)}}},[h]),C.useEffect(()=>(O(),()=>{clearTimeout(D.current)}),[i]),C.useImperativeHandle(t,()=>({delayHidden:O}));let L=`${n}-scrollbar`,R={position:`absolute`,visibility:T?null:`hidden`},z={position:`absolute`,borderRadius:99,background:`var(--rc-virtual-list-scrollbar-bg, rgba(0, 0, 0, 0.5))`,cursor:`pointer`,userSelect:`none`};return l?(Object.assign(R,{height:8,left:0,right:0,bottom:0}),Object.assign(z,{height:`100%`,width:u,[x?`left`:`right`]:j})):(Object.assign(R,{width:8,top:0,bottom:0,[x?`right`:`left`]:0}),Object.assign(z,{width:`100%`,height:u,top:j})),C.createElement(`div`,{ref:S,className:q(L,{[`${L}-horizontal`]:l,[`${L}-vertical`]:!l,[`${L}-visible`]:T}),style:{...R,...f},onMouseDown:M,onMouseMove:O},C.createElement(`div`,{ref:w,className:q(`${L}-thumb`,{[`${L}-thumb-moving`]:h}),style:{...z,...p},onMouseDown:P}))}),Bre=20;function Iy(e=0,t=0){let n=e/t*e;return isNaN(n)&&(n=0),n=Math.max(n,Bre),Math.floor(n)}var Vre=[],Hre={overflowY:`auto`,overflowAnchor:`none`};function Ure(e,t){let{prefixCls:n=`rc-virtual-list`,className:r,height:i,itemHeight:a,fullHeight:o=!0,style:s,data:c,children:l,itemKey:u,virtual:d,direction:f,scrollWidth:p,component:m=`div`,onScroll:h,onVirtualScroll:g,onVisibleChange:_,innerProps:v,extraRender:y,styles:b,showScrollBar:x=`optional`,...S}=e,w=C.useCallback(e=>typeof u==`function`?u(e):e?.[u],[u]),[T,E,D,O]=Fre(w,null,null),k=!!(d!==!1&&i&&a),A=C.useMemo(()=>Object.values(D.maps).reduce((e,t)=>e+t,0),[D.id,D.maps]),j=k&&c&&(Math.max(a*c.length,A)>i||!!p),M=f===`rtl`,N=q(n,{[`${n}-rtl`]:M},r),P=c||Vre,F=(0,C.useRef)(),I=(0,C.useRef)(),L=(0,C.useRef)(),[R,z]=(0,C.useState)(0),[B,V]=(0,C.useState)(0),[H,U]=(0,C.useState)(!1),W=()=>{U(!0)},ee=()=>{U(!1)},te={getKey:w};function ne(e){z(t=>{let n;n=typeof e==`function`?e(t):e;let r=_e(n);return F.current.scrollTop=r,r})}let re=(0,C.useRef)({start:0,end:P.length}),ie=(0,C.useRef)(),[ae]=Oy(P,w);ie.current=ae;let{scrollHeight:G,start:oe,end:K,offset:se}=C.useMemo(()=>{if(!k)return{scrollHeight:void 0,start:0,end:P.length-1,offset:void 0};if(!j)return{scrollHeight:I.current?.offsetHeight||0,start:0,end:P.length-1,offset:void 0};let e=0,t,n,r,o=P.length;for(let s=0;s=R&&t===void 0&&(t=s,n=e),u>R+i&&r===void 0&&(r=s),e=u}return t===void 0&&(t=0,n=0,r=Math.ceil(i/a)),r===void 0&&(r=P.length-1),r=Math.min(r+1,P.length-1),{scrollHeight:e,start:t,end:r,offset:n}},[j,k,R,P,O,i]);re.current.start=oe,re.current.end=K,C.useLayoutEffect(()=>{let e=D.getRecord();if(e.size===1){let t=Array.from(e.keys())[0],n=e.get(t),r=P[oe];if(r&&n===void 0&&w(r)===t){let e=D.get(t)-a;ne(t=>t+e)}}D.resetRecord()},[G]);let[ce,le]=C.useState({width:0,height:i}),ue=e=>{le({width:e.offsetWidth,height:e.offsetHeight})},de=(0,C.useRef)(),fe=(0,C.useRef)(),pe=C.useMemo(()=>Iy(ce.width,p),[ce.width,p]),me=C.useMemo(()=>Iy(ce.height,G),[ce.height,G]),he=G-i,ge=(0,C.useRef)(he);ge.current=he;function _e(e){let t=e;return Number.isNaN(ge.current)||(t=Math.min(t,ge.current)),t=Math.max(t,0),t}let ve=R<=0,ye=R>=he,be=B<=0,xe=B>=p,Se=Ay(ve,ye,be,xe),Ce=()=>({x:M?-B:B,y:R}),we=(0,C.useRef)(Ce()),Te=Rn(e=>{if(g){let t={...Ce(),...e};(we.current.x!==t.x||we.current.y!==t.y)&&(g(t),we.current=t)}});function Ee(e,t){let n=e;t?((0,Yf.flushSync)(()=>{V(n)}),Te()):ne(n)}function De(e){let{scrollTop:t}=e.currentTarget;t!==R&&ne(t),h?.(e),Te()}let Oe=e=>{let t=e,n=p?p-ce.width:0;return t=Math.max(t,0),t=Math.min(t,n),t},ke=Rn((e,t)=>{t?((0,Yf.flushSync)(()=>{V(t=>Oe(t+(M?-e:e)))}),Te()):ne(t=>t+e)}),[Ae,je]=Mre(k,ve,ye,be,xe,!!p,ke);Ire(k,F,(e,t,n,r)=>{let i=r;return Se(e,t,n)?!1:!i||!i._virtualHandled?(i&&(i._virtualHandled=!0),Ae({preventDefault(){},deltaX:e?t:0,deltaY:e?0:t}),!0):!1}),Lre(j,F,e=>{ne(t=>t+e)}),Vn(()=>{function e(e){let t=ve&&e.detail<0,n=ye&&e.detail>0;k&&!t&&!n&&e.preventDefault()}let t=F.current;return t.addEventListener(`wheel`,Ae,{passive:!1}),t.addEventListener(`DOMMouseScroll`,je,{passive:!0}),t.addEventListener(`MozMousePixelScroll`,e,{passive:!1}),()=>{t.removeEventListener(`wheel`,Ae),t.removeEventListener(`DOMMouseScroll`,je),t.removeEventListener(`MozMousePixelScroll`,e)}},[k,ve,ye]),Vn(()=>{if(p){let e=Oe(B);V(e),Te({x:e})}},[ce.width,p]);let Me=()=>{de.current?.delayHidden(),fe.current?.delayHidden()},Ne=zre(F,P,D,a,w,()=>E(!0),ne,Me);C.useImperativeHandle(t,()=>({nativeElement:L.current,getScrollInfo:Ce,scrollTo:e=>{function t(e){return e&&typeof e==`object`&&(`left`in e||`top`in e)}t(e)?(e.left!==void 0&&V(Oe(e.left)),Ne(e.top)):Ne(e)}})),Vn(()=>{_&&_(P.slice(oe,K+1),P)},[oe,K,P]);let Pe=Nre(P,w,D,a),Fe=y?.({start:oe,end:K,virtual:j,offsetX:B,offsetY:se,rtl:M,getSize:Pe}),Ie=Ey(P,oe,K,p,B,T,l,te),Le=null;i&&(Le={[o?`height`:`maxHeight`]:i,...Hre},k&&(Le.overflowY=`hidden`,p&&(Le.overflowX=`hidden`),H&&(Le.pointerEvents=`none`)));let Re={};return M&&(Re.dir=`rtl`),C.createElement(`div`,xh({ref:L,style:{...s,position:`relative`},className:N},Re,S),C.createElement(Gr,{onResize:ue},C.createElement(m,{className:`${n}-holder`,style:Le,ref:F,onScroll:De,onMouseEnter:Me},C.createElement(wy,{prefixCls:n,height:G,offsetX:B,offsetY:se,scrollWidth:p,onInnerResize:E,ref:I,innerProps:v,rtl:M,extra:Fe},Ie))),j&&G>i&&C.createElement(Fy,{ref:de,prefixCls:n,scrollOffset:R,scrollRange:G,rtl:M,onScroll:Ee,onStartMove:W,onStopMove:ee,spinSize:me,containerSize:ce.height,style:b?.verticalScrollBar,thumbStyle:b?.verticalScrollBarThumb,showScrollBar:x}),j&&p>ce.width&&C.createElement(Fy,{ref:fe,prefixCls:n,scrollOffset:B,scrollRange:p,rtl:M,onScroll:Ee,onStartMove:W,onStopMove:ee,spinSize:pe,containerSize:ce.width,horizontal:!0,style:b?.horizontalScrollBar,thumbStyle:b?.horizontalScrollBarThumb,showScrollBar:x}))}var Ly=C.forwardRef(Ure);Ly.displayName=`List`;var Ry=Ly;function Wre(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}function zy(){return zy=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n,id:r,open:i,multiple:a,mode:o,searchValue:s,toggleOpen:c,notFoundContent:l,onPopupScroll:u,showScrollBar:d,lockOptions:f}=Lv(),{maxCount:p,flattenOptions:m,onActiveValue:h,defaultActiveFirstOption:g,onSelect:_,menuItemSelectedIcon:v,rawValues:y,fieldNames:b,virtual:x,direction:S,listHeight:w,listItemHeight:T,optionRender:E,classNames:D,styles:O}=C.useContext(Qv),k=`${n}-item`,A=qn(()=>m,[i,f],(e,t)=>t[0]&&!t[1]),j=C.useRef(null),M=C.useMemo(()=>a&&Uv(p)&&y?.size>=p,[a,p,y?.size]),N=e=>{e.preventDefault()},P=e=>{j.current?.scrollTo(typeof e==`number`?{index:e}:e)},F=C.useCallback(e=>o===`combobox`?!1:y.has(e),[o,[...y].toString(),y.size]),I=(e,t=1)=>{let n=A.length;for(let r=0;rI(0)),z=(e,t=!1)=>{R(e);let n={source:t?`keyboard`:`mouse`},r=A[e];if(!r){h(null,-1,n);return}h(r.value,e,n)};(0,C.useEffect)(()=>{z(g===!1?-1:I(0))},[A.length,s]);let B=C.useCallback(e=>o===`combobox`?String(e).toLowerCase()===s.toLowerCase():y.has(e),[o,s,[...y].toString(),y.size]);(0,C.useEffect)(()=>{let e;if(!a&&i&&y.size===1){let t=Array.from(y)[0],n=A.findIndex(({data:e})=>s?String(e.value).startsWith(s):e.value===t);n!==-1&&(z(n),e=setTimeout(()=>{P(n)}))}return i&&j.current?.scrollTo(void 0),()=>clearTimeout(e)},[i,s]);let V=e=>{e!==void 0&&_(e,{selected:!y.has(e)}),a||c(!1)};if(C.useImperativeHandle(t,()=>({onKeyDown:e=>{let{which:t,ctrlKey:n}=e;switch(t){case Qp.N:case Qp.P:case Qp.UP:case Qp.DOWN:{let e=0;if(t===Qp.UP?e=-1:t===Qp.DOWN?e=1:Wre()&&n&&(t===Qp.N?e=1:t===Qp.P&&(e=-1)),e!==0){let t=I(L+e,e);P(t),z(t,!0)}break}case Qp.TAB:case Qp.ENTER:{let t=A[L];if(!t||t.data.disabled)return V(void 0);!M||y.has(t.value)?V(t.value):V(void 0),i&&e.preventDefault();break}case Qp.ESC:c(!1),i&&e.stopPropagation()}},onKeyUp:()=>{},scrollTo:e=>{P(e)}})),A.length===0)return C.createElement(`div`,{role:`listbox`,id:`${r}_list`,className:`${k}-empty`,onMouseDown:N},l);let H=Object.keys(b).map(e=>b[e]),U=e=>e.label;function W(e,t){let{group:n}=e;return{role:n?`presentation`:`option`,id:`${r}_list_${t}`}}let ee=e=>{let t=A[e];if(!t)return null;let n=t.data||{},{value:r,disabled:i}=n,{group:a}=t,o=Hu(n,!0),s=U(t);return t?C.createElement(`div`,zy({"aria-label":typeof s==`string`&&!a?s:null},o,{key:e},W(t,e),{"aria-selected":B(r),"aria-disabled":i}),r):null},te={role:`listbox`,id:`${r}_list`};return C.createElement(C.Fragment,null,x&&C.createElement(`div`,zy({},te,{style:{height:0,width:0,overflow:`hidden`}}),ee(L-1),ee(L),ee(L+1)),C.createElement(Ry,{itemKey:`key`,ref:j,data:A,height:w,itemHeight:T,fullHeight:!1,onMouseDown:N,onScroll:u,virtual:x,direction:S,innerProps:x?null:te,showScrollBar:d,className:D?.popup?.list,style:O?.popup?.list},(e,t)=>{let{group:n,groupOption:r,data:i,label:a,value:o}=e,{key:s}=i;if(n){let e=i.title??(By(a)?a.toString():void 0);return C.createElement(`div`,{className:q(k,`${k}-group`,i.className),title:e},a===void 0?s:a)}let{disabled:c,title:l,children:u,style:d,className:f,...p}=i,m=Cr(p,H),h=F(o),g=c||!h&&M,_=`${k}-option`,y=q(k,_,f,D?.popup?.listItem,{[`${_}-grouped`]:r,[`${_}-active`]:L===t&&!g,[`${_}-disabled`]:g,[`${_}-selected`]:h}),b=U(e),S=!v||typeof v==`function`||h,w=typeof b==`number`?b:b||o,T=By(w)?w.toString():void 0;return l!==void 0&&(T=l),C.createElement(`div`,zy({},Hu(m),x?{}:W(e,t),{"aria-selected":x?void 0:B(o),"aria-disabled":g,className:y,title:T,onMouseMove:()=>{L===t||g||z(t)},onClick:()=>{g||V(o)},style:{...O?.popup?.listItem,...d}}),C.createElement(`div`,{className:`${_}-content`},typeof E==`function`?E(e,{index:t}):w),C.isValidElement(v)||h,S&&C.createElement(py,{className:`${k}-option-state`,customizeIcon:v,customizeIconProps:{value:o,disabled:g,isSelected:h}},h?`✓`:null))}))}),Kre=((e,t)=>{let n=C.useRef({values:new Map,options:new Map});return[C.useMemo(()=>{let{values:r,options:i}=n.current,a=e.map(e=>e.label===void 0?{...e,label:r.get(e.value)?.label}:e),o=new Map,s=new Map;return a.forEach(e=>{o.set(e.value,e),s.set(e.value,t.get(e.value)||i.get(e.value))}),n.current.values=o,n.current.options=s,a},[e,t]),C.useCallback(e=>t.get(e)||n.current.options.get(e),[t])]});function Vy(e,t){return $v(e).join(``).toUpperCase().includes(t)}var qre=((e,t,n,r,i)=>C.useMemo(()=>{if(!n||r===!1)return e;let{options:a,label:o,value:s}=t,c=[],l=typeof r==`function`,u=n.toUpperCase(),d=l?r:(e,t)=>i&&i.length?i.some(e=>Vy(t[e],u)):t[a]?Vy(t[o===`children`?`label`:o],u):Vy(t[s],u),f=l?e=>Gv(e):e=>e;return e.forEach(e=>{if(e[a]){if(d(n,f(e)))c.push(e);else{let t=e[a].filter(e=>d(n,f(e)));t.length&&c.push({...e,[a]:t})}return}d(n,f(e))&&c.push(e)}),c},[e,r,i,n,t]));function Jre(e){let{key:t,props:{children:n,value:r,...i}}=e;return{key:t,value:r===void 0?t:r,children:n,...i}}function Hy(e,t=!1){return wr(e).map((e,n)=>{if(!C.isValidElement(e)||!e.type)return null;let{type:{isSelectOptGroup:r},key:i,props:{children:a,...o}}=e;return t||!r?Jre(e):{key:`__RC_SELECT_GRP__${i===null?n:i}__`,label:i,...o,options:Hy(a)}}).filter(e=>e)}var Yre=(e,t,n,r,i)=>C.useMemo(()=>{let a=e;e||(a=Hy(t));let o=new Map,s=new Map,c=(e,t,n)=>{n&&typeof n==`string`&&e.set(t[n],t)},l=(e,t=!1)=>{for(let a=0;a{c(s,u,e)}),c(s,u,i)):l(u[n.options],!0)}};return l(a),{options:a,valueOptions:o,labelOptions:s}},[e,t,n,r,i]);function Uy(e){let t=C.useRef();return t.current=e,C.useCallback((...e)=>t.current(...e),[])}function Xre(e,t,n){let{filterOption:r,searchValue:i,optionFilterProp:a,filterSort:o,onSearch:s,autoClearSearchValue:c}=t;return C.useMemo(()=>{let t=typeof e==`object`,l={filterOption:r,searchValue:i,optionFilterProp:a,filterSort:o,onSearch:s,autoClearSearchValue:c,...t?e:{}};return[t||n===`combobox`||n===`tags`||n===`multiple`&&e===void 0?!0:e,l]},[n,e,r,i,a,o,s,c])}function Wy(){return Wy=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{id:n,mode:r,prefixCls:i=`rc-select`,backfill:a,fieldNames:o,showSearch:s,searchValue:c,onSearch:l,autoClearSearchValue:u,filterOption:d,optionFilterProp:f,filterSort:p,onSelect:m,onDeselect:h,onActive:g,popupMatchSelectWidth:_=!0,optionLabelProp:v,options:y,optionRender:b,children:x,defaultActiveFirstOption:S,menuItemSelectedIcon:w,virtual:T,direction:E,listHeight:D=200,listItemHeight:O=20,labelRender:k,value:A,defaultValue:j,labelInValue:M,onChange:N,maxCount:P,classNames:F,styles:I,...L}=e,[R,z]=Xre(s,{searchValue:c,onSearch:l,autoClearSearchValue:u,filterOption:d,optionFilterProp:f,filterSort:p},r),{filterOption:B,searchValue:V,optionFilterProp:H,filterSort:U,onSearch:W,autoClearSearchValue:ee=!0}=z,te=C.useMemo(()=>H?Array.isArray(H)?H:[H]:[],[H]),ne=Bf(n),re=by(r),ie=!!(!y&&x),ae=C.useMemo(()=>B===void 0&&r===`combobox`?!1:B,[B,r]),G=C.useMemo(()=>Wv(o,ie),[JSON.stringify(o),ie]),[oe,K]=Wn(``,V),se=oe||``,ce=Yre(y,x,G,te,v),{valueOptions:le,labelOptions:ue,options:de}=ce,fe=C.useCallback(e=>$v(e).map(e=>{let t,n,r,i;Qre(e)?t=e:(n=e.label,t=e.value);let a=le.get(t);return a&&(n===void 0&&(n=a?.[v||G.label]),r=a?.disabled,i=a?.title),{label:n,value:t,key:t,disabled:r,title:i}}),[G,v,le]),[pe,me]=Wn(j,A),[he,ge]=Kre(C.useMemo(()=>{let e=fe(re&&pe===null?[]:pe);return r===`combobox`&&ty(e[0]?.value)?[]:e},[pe,fe,r,re]),le),_e=C.useMemo(()=>{if(!r&&he.length===1){let e=he[0];if(e.value===null&&(e.label===null||e.label===void 0))return[]}return he.map(e=>({...e,label:(typeof k==`function`?k(e):e.label)??e.value}))},[r,he,k]),ve=C.useMemo(()=>new Set(he.map(e=>e.value)),[he]);C.useEffect(()=>{if(r===`combobox`){let e=he[0]?.value;K(ey(e)?String(e):``)}},[he]);let ye=Uy((e,t)=>{let n=t??e;return{[G.value]:e,[G.label]:n}}),be=qre(C.useMemo(()=>{if(r!==`tags`)return de;let e=[...de],t=e=>le.has(e);return[...he].sort((e,t)=>e.value{let r=n.value;t(r)||e.push(ye(r,n.label))}),e},[ye,de,le,he,r]),G,se,ae,te),xe=C.useMemo(()=>{let e=e=>te.length?te.some(t=>e?.[t]===se):e?.value===se;return r!==`tags`||!se||be.some(t=>e(t))||be.some(e=>e[G.value]===se)?be:[ye(se),...be]},[ye,te,r,be,se,G]),Se=e=>[...e].sort((e,t)=>U(e,t,{searchValue:se})).map(e=>Array.isArray(e.options)?{...e,options:e.options.length>0?Se(e.options):e.options}:e),Ce=C.useMemo(()=>U?Se(xe):xe,[xe,U,se]),we=C.useMemo(()=>hre(Ce,{fieldNames:G,childrenAsData:ie}),[Ce,G,ie]),Te=e=>{let t=fe(e);if(me(t),N&&(t.length!==he.length||t.some((e,t)=>he[t]?.value!==e?.value))){let e=M?t.map(({label:e,value:t})=>({label:e,value:t})):t.map(e=>e.value),n=t.map(e=>Gv(ge(e.value)));N(re?e:e[0],re?n:n[0])}},[Ee,De]=C.useState(null),[Oe,ke]=C.useState(0),Ae=S===void 0?r!==`combobox`:S,je=C.useRef(),Me=C.useCallback((e,t,{source:n=`keyboard`}={})=>{ke(t),a&&r===`combobox`&&e!==null&&n===`keyboard`&&De(String(e));let i=Promise.resolve().then(()=>{je.current===i&&g?.(e)});je.current=i},[a,r,g]),Ne=(e,t,n)=>{let r=()=>{let t=ge(e);return[M?{label:t?.[G.label],value:e}:e,Gv(t)]};if(t&&m){let[e,t]=r();m(e,t)}else if(!t&&h&&n!==`clear`){let[e,t]=r();h(e,t)}},Pe=Uy((e,t)=>{let n,i=re?t.selected:!0;n=i?re?[...he,e]:[e]:he.filter(t=>t.value!==e),Te(n),Ne(e,i),r===`combobox`?De(``):(!by||ee)&&(K(``),De(``))}),Fe=(e,t)=>{Te(e);let{type:n,values:r}=t;(n===`remove`||n===`clear`)&&r.forEach(e=>{Ne(e.value,!1,n)})},Ie=(e,t)=>{if(K(e),De(null),t.source===`submit`){let t=(e||``).trim();t&&(Te(Array.from(new Set([...ve,t]))),Ne(t,!0),K(``));return}t.source!==`blur`&&(r===`combobox`&&Te(e),W?.(e))},Le=e=>{let t=e;r!==`tags`&&(t=e.map(e=>ue.get(e)?.value).filter(e=>e!==void 0));let n=Array.from(new Set([...ve,...t]));Te(n),n.forEach(e=>{Ne(e,!0)})},Re=C.useMemo(()=>{let e=T!==!1&&_!==!1;return{...ce,flattenOptions:we,onActiveValue:Me,defaultActiveFirstOption:Ae,onSelect:Pe,menuItemSelectedIcon:w,rawValues:ve,fieldNames:G,virtual:e,direction:E,listHeight:D,listItemHeight:O,childrenAsData:ie,maxCount:P,optionRender:b,classNames:F,styles:I}},[P,ce,we,Me,Ae,Pe,w,ve,G,T,_,E,D,O,ie,b,F,I]);return C.createElement(Qv.Provider,{value:Re},C.createElement(xy,Wy({},L,{id:ne,prefixCls:i,ref:t,omitDomProps:Zre,mode:r,classNames:F,styles:I,displayValues:_e,onDisplayValuesChange:Fe,maxCount:P,direction:E,showSearch:R,searchValue:se,onSearch:Ie,autoClearSearchValue:ee,onSearchSplit:Le,popupMatchSelectWidth:_,OptionList:Gre,emptyOptions:!we.length,activeValue:Ee,activeDescendantId:`${ne}_list_${Oe}`})))});Gy.Option=Cy,Gy.OptGroup=Sy;var $re=Gy,Ky=(e,t,n)=>q({[`${e}-status-success`]:t===`success`,[`${e}-status-warning`]:t===`warning`,[`${e}-status-error`]:t===`error`,[`${e}-status-validating`]:t===`validating`,[`${e}-has-feedback`]:n}),qy=(e,t)=>t||e,eie=()=>{let[,e]=qc(),[t]=ld(`Empty`),n=new zs(e.colorBgBase).toHsl().l<.5?{opacity:.65}:{};return C.createElement(`svg`,{style:n,width:`184`,height:`152`,viewBox:`0 0 184 152`,xmlns:`http://www.w3.org/2000/svg`},C.createElement(`title`,null,t?.description||`Empty`),C.createElement(`g`,{fill:`none`,fillRule:`evenodd`},C.createElement(`g`,{transform:`translate(24 31.7)`},C.createElement(`ellipse`,{fillOpacity:`.8`,fill:`#F5F5F7`,cx:`67.8`,cy:`106.9`,rx:`67.8`,ry:`12.7`}),C.createElement(`path`,{fill:`#aeb8c2`,d:`M122 69.7 98.1 40.2a6 6 0 0 0-4.6-2.2H42.1a6 6 0 0 0-4.6 2.2l-24 29.5V85H122z`}),C.createElement(`path`,{fill:`#f5f5f7`,d:`M33.8 0h68a4 4 0 0 1 4 4v93.3a4 4 0 0 1-4 4h-68a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4`}),C.createElement(`path`,{fill:`#dce0e6`,d:`M42.7 10h50.2a2 2 0 0 1 2 2v25a2 2 0 0 1-2 2H42.7a2 2 0 0 1-2-2V12a2 2 0 0 1 2-2m.2 39.8h49.8a2.3 2.3 0 1 1 0 4.5H42.9a2.3 2.3 0 0 1 0-4.5m0 11.7h49.8a2.3 2.3 0 1 1 0 4.6H42.9a2.3 2.3 0 0 1 0-4.6m79 43.5a7 7 0 0 1-6.8 5.4H20.5a7 7 0 0 1-6.7-5.4l-.2-1.8V69.7h26.3c2.9 0 5.2 2.4 5.2 5.4s2.4 5.4 5.3 5.4h34.8c2.9 0 5.3-2.4 5.3-5.4s2.3-5.4 5.2-5.4H122v33.5q0 1-.2 1.8`})),C.createElement(`path`,{fill:`#dce0e6`,d:`m149.1 33.3-6.8 2.6a1 1 0 0 1-1.3-1.2l2-6.2q-4.1-4.5-4.2-10.4c0-10 10.1-18.1 22.6-18.1S184 8.1 184 18.1s-10.1 18-22.6 18q-6.8 0-12.3-2.8`}),C.createElement(`g`,{fill:`#fff`,transform:`translate(149.7 15.4)`},C.createElement(`circle`,{cx:`20.7`,cy:`3.2`,r:`2.8`}),C.createElement(`path`,{d:`M5.7 5.6H0L2.9.7zM9.3.7h5v5h-5z`}))))},tie=()=>{let[,e]=qc(),[t]=ld(`Empty`),{colorFill:n,colorFillTertiary:r,colorFillQuaternary:i,colorBgContainer:a}=e,{borderColor:o,shadowColor:s,contentColor:c}=(0,C.useMemo)(()=>({borderColor:new zs(n).onBackground(a).toHexString(),shadowColor:new zs(r).onBackground(a).toHexString(),contentColor:new zs(i).onBackground(a).toHexString()}),[n,r,i,a]);return C.createElement(`svg`,{width:`64`,height:`41`,viewBox:`0 0 64 41`,xmlns:`http://www.w3.org/2000/svg`},C.createElement(`title`,null,t?.description||`Empty`),C.createElement(`g`,{transform:`translate(0 1)`,fill:`none`,fillRule:`evenodd`},C.createElement(`ellipse`,{fill:s,cx:`32`,cy:`33`,rx:`32`,ry:`7`}),C.createElement(`g`,{fillRule:`nonzero`,stroke:o},C.createElement(`path`,{d:`M55 12.8 44.9 1.3Q44 0 42.9 0H21.1q-1.2 0-2 1.3L9 12.8V22h46z`}),C.createElement(`path`,{d:`M41.6 16c0-1.7 1-3 2.2-3H55v18.1c0 2.2-1.3 3.9-3 3.9H12c-1.7 0-3-1.7-3-3.9V13h11.2c1.2 0 2.2 1.3 2.2 3s1 2.9 2.2 2.9h14.8c1.2 0 2.2-1.4 2.2-3`,fill:c}))))},nie=e=>{let{componentCls:t,margin:n,marginXS:r,marginXL:i,fontSize:a,lineHeight:o}=e;return{[t]:{marginInline:r,fontSize:a,lineHeight:o,textAlign:`center`,[`${t}-image`]:{height:e.emptyImgHeight,marginBottom:r,opacity:e.opacityImage,img:{height:`100%`},svg:{maxWidth:`100%`,height:`100%`,margin:`auto`}},[`${t}-description`]:{color:e.colorTextDescription},[`${t}-footer`]:{marginTop:n},"&-normal":{marginBlock:i,color:e.colorTextDescription,[`${t}-description`]:{color:e.colorTextDescription},[`${t}-image`]:{height:e.emptyImgHeightMD}},"&-small":{marginBlock:r,color:e.colorTextDescription,[`${t}-image`]:{height:e.emptyImgHeightSM}}}}},rie=il(`Empty`,e=>{let{componentCls:t,controlHeightLG:n,calc:r}=e;return nie(_s(e,{emptyImgCls:`${t}-img`,emptyImgHeight:r(n).mul(2.5).equal(),emptyImgHeightMD:n,emptyImgHeightSM:r(n).mul(.875).equal()}))}),Jy=C.createElement(eie,null),Yy=C.createElement(tie,null),Xy=e=>{let{className:t,rootClassName:n,prefixCls:r,image:i,description:a,children:o,imageStyle:s,style:c,classNames:l,styles:u,...d}=e,{getPrefixCls:f,direction:p,className:m,style:h,classNames:g,styles:_,image:v}=ui(`empty`),y=f(`empty`,r),[b,x]=rie(y),[S,w]=Id([g,l],[_,u],{props:e}),[T]=ld(`Empty`),E=a===void 0?T?.description:a,D=typeof E==`string`?E:`empty`,O=i??v??Jy,k=null;return k=typeof O==`string`?C.createElement(`img`,{draggable:!1,alt:D,src:O}):O,C.createElement(`div`,{className:q(b,x,y,m,{[`${y}-normal`]:O===Yy,[`${y}-rtl`]:p===`rtl`},t,n,S.root),style:{...w.root,...h,...c},...d},C.createElement(`div`,{className:q(`${y}-image`,S.image),style:{...s,...w.image}},k),E&&C.createElement(`div`,{className:q(`${y}-description`,S.description),style:w.description},E),o&&C.createElement(`div`,{className:q(`${y}-footer`,S.footer),style:w.footer},o))};Xy.PRESENTED_IMAGE_DEFAULT=Jy,Xy.PRESENTED_IMAGE_SIMPLE=Yy;var Zy=e=>{let{componentName:t}=e,{getPrefixCls:n}=(0,C.useContext)(si),r=n(`empty`);switch(t){case`Table`:case`List`:return C.createElement(Xy,{image:Xy.PRESENTED_IMAGE_SIMPLE});case`Select`:case`TreeSelect`:case`Cascader`:case`Transfer`:case`Mentions`:return C.createElement(Xy,{image:Xy.PRESENTED_IMAGE_SIMPLE,className:`${r}-small`});case`Table.filter`:return null;default:return C.createElement(Xy,null)}},Qy=(e,t,n)=>{let{variant:r,[e]:i}=C.useContext(si),a=C.useContext(P_),o=i?.variant,s;s=t===void 0?n===!1?`borderless`:a??o??r??`outlined`:t;let c=oi.includes(s);return[s,c]},iie=e=>{let t={overflow:{adjustX:!0,adjustY:!0,shiftY:!0},htmlRegion:e===`scroll`?`scroll`:`visible`,dynamicInset:!0};return{bottomLeft:{...t,points:[`tl`,`bl`],offset:[0,4]},bottomRight:{...t,points:[`tr`,`br`],offset:[0,4]},topLeft:{...t,points:[`bl`,`tl`],offset:[0,-4]},topRight:{...t,points:[`br`,`tr`],offset:[0,-4]}}};function aie(e,t){return e||iie(t)}var $y=e=>{let{optionHeight:t,optionFontSize:n,optionLineHeight:r,optionPadding:i}=e;return{position:`relative`,display:`block`,minHeight:t,padding:i,color:e.colorText,fontWeight:`normal`,fontSize:n,lineHeight:r,boxSizing:`border-box`}},oie=e=>{let{antCls:t,componentCls:n}=e,r=`${n}-item`,i=`&${t}-slide-up-enter${t}-slide-up-enter-active`,a=`&${t}-slide-up-appear${t}-slide-up-appear-active`,o=`&${t}-slide-up-leave${t}-slide-up-leave-active`,s=`${n}-dropdown-placement-`,c=`${r}-option-selected`;return[{[`${n}-dropdown`]:{...Yc(e),position:`absolute`,top:-9999,zIndex:e.zIndexPopup,boxSizing:`border-box`,padding:e.paddingXXS,overflow:`hidden`,fontSize:e.fontSize,fontVariant:`initial`,backgroundColor:e.colorBgElevated,borderRadius:e.borderRadiusLG,outline:`none`,boxShadow:e.boxShadowSecondary,[`
${i}${s}bottomLeft,
${a}${s}bottomLeft
- `]:{animationName:sh},[`
+ `]:{animationName:ah},[`
${i}${s}topLeft,
${a}${s}topLeft,
${i}${s}topRight,
${a}${s}topRight
- `]:{animationName:lh},[`${o}${s}bottomLeft`]:{animationName:ch},[`
+ `]:{animationName:sh},[`${o}${s}bottomLeft`]:{animationName:oh},[`
${o}${s}topLeft,
${o}${s}topRight
- `]:{animationName:uh},"&-hidden":{display:`none`},[r]:{...Zy(e),cursor:`pointer`,transition:`background-color ${e.motionDurationSlow} ease`,borderRadius:e.borderRadiusSM,"&-group":{color:e.colorTextDescription,fontSize:e.fontSizeSM,cursor:`default`},"&-option":{display:`flex`,"&-content":{flex:`auto`,...Jc},"&-state":{flex:`none`,display:`flex`,alignItems:`center`},[`&-active:not(${r}-option-disabled)`]:{backgroundColor:e.optionActiveBg},[`&-selected:not(${r}-option-disabled)`]:{color:e.optionSelectedColor,fontWeight:e.optionSelectedFontWeight,backgroundColor:e.optionSelectedBg,[`${r}-option-state`]:{color:e.colorPrimary}},"&-disabled":{[`&${r}-option-selected`]:{backgroundColor:e.colorBgContainerDisabled},color:e.colorTextDisabled,cursor:`not-allowed`},"&-grouped":{paddingInlineStart:e.calc(e.controlPaddingHorizontal).mul(2).equal()}},"&-empty":{...Zy(e),color:e.colorTextDisabled}},[`${c}:has(+ ${c})`]:{borderEndStartRadius:0,borderEndEndRadius:0,[`& + ${c}`]:{borderStartStartRadius:0,borderStartEndRadius:0}},"&-rtl":{direction:`rtl`}}},dh(e,`slide-up`),dh(e,`slide-down`),oh(e,`move-up`),oh(e,`move-down`)]},$y=e=>{let{componentCls:t}=e;return{[`&${t}-customize`]:{border:0,padding:0,fontSize:`inherit`,lineHeight:`inherit`,[`${t}-placeholder`]:{display:`none`},[`${t}-content`]:{margin:0,padding:0,"&-value":{display:`none`}}}}},eb=4,tb=e=>{let{componentCls:t,calc:n,iconCls:r,paddingXS:i,paddingXXS:a,INTERNAL_FIXED_ITEM_MARGIN:o,lineWidth:s,colorIcon:c,colorIconHover:l,inputPaddingHorizontalBase:u,antCls:d}=e,[f,p]=sl(d,`select`);return{"&-multiple":{[f(`multi-item-background`)]:e.multipleItemBg,[f(`multi-item-border-color`)]:`transparent`,[f(`multi-item-border-radius`)]:e.borderRadiusSM,[f(`multi-item-height`)]:e.multipleItemHeight,[f(`multi-padding-base`)]:`calc((${p(`height`)} - ${p(`multi-item-height`)}) / 2)`,[f(`multi-padding-vertical`)]:`calc(${p(`multi-padding-base`)} - ${o} - ${s})`,[f(`multi-item-padding-horizontal`)]:`calc(${u} - ${p(`multi-padding-vertical`)} - ${s} * 2)`,paddingBlock:p(`multi-padding-vertical`),paddingInlineStart:`calc(${p(`multi-padding-base`)} - ${s})`,[`${t}-prefix`]:{marginInlineStart:p(`multi-item-padding-horizontal`)},[`${t}-prefix + ${t}-content`]:{[`${t}-placeholder`]:{insetInlineStart:0},[`${t}-content-item${t}-content-item-suffix`]:{marginInlineStart:0}},[`${t}-placeholder`]:{position:`absolute`,lineHeight:p(`line-height`),insetInlineStart:p(`multi-item-padding-horizontal`),width:`calc(100% - ${p(`multi-item-padding-horizontal`)})`,top:`50%`,transform:`translateY(-50%)`},[`${t}-content`]:{flexWrap:`wrap`,alignItems:`center`,lineHeight:1,"&-item-prefix":{height:p(`font-size`)},"&-item":{lineHeight:1,maxWidth:`calc(100% - ${eb}px)`},[`${t}-content-item-prefix + ${t}-content-item-suffix,
- ${t}-content-item-suffix:first-child`]:{marginInlineStart:p(`multi-item-padding-horizontal`)},[`${t}-selection-item`]:{lineHeight:`calc(${p(`multi-item-height`)} - ${s} * 2)`,border:`${s} solid ${p(`multi-item-border-color`)}`,display:`flex`,marginBlock:o,marginInlineEnd:n(o).mul(2).equal(),background:p(`multi-item-background`),borderRadius:p(`multi-item-border-radius`),paddingInlineStart:i,paddingInlineEnd:a,transition:[`height`,`line-height`,`padding`].map(t=>`${t} ${e.motionDurationSlow}`).join(`,`),"&-content":{...Jc,marginInlineEnd:a},"&-remove":{...Xc(),display:`inline-flex`,alignItems:`center`,color:c,fontWeight:`bold`,fontSize:10,lineHeight:`inherit`,cursor:`pointer`,[`> ${r}`]:{verticalAlign:`-0.2em`},"&:hover":{color:l}}},[`${t}-input`]:{lineHeight:n(o).mul(2).add(p(`multi-item-height`)).equal(),width:`calc(var(--select-input-width, 0) * 1px)`,minWidth:eb,maxWidth:`100%`,transition:`line-height ${e.motionDurationSlow}`}},[`&${t}-sm`]:{[f(`multi-item-height`)]:e.multipleItemHeightSM,[f(`multi-item-border-radius`)]:e.borderRadiusXS},[`&${t}-lg`]:{[f(`multi-item-height`)]:e.multipleItemHeightLG,[f(`multi-item-border-radius`)]:e.borderRadius},[`&${t}-filled`]:{[f(`multi-item-border-color`)]:e.colorSplit,[f(`multi-item-background`)]:e.colorBgContainer,[`&${t}-disabled`]:{[f(`multi-item-border-color`)]:`transparent`}}}}},nb=(e,t)=>{let{componentCls:n,antCls:r}=e,[i]=sl(r,`select`),{border:a,borderHover:o,borderActive:s,borderOutline:c}=t,l=t.background||e.selectorBg||e.colorBgContainer;return{[i(`border-color`)]:a,[i(`background-color`)]:l,[i(`color`)]:t.color||e.colorText,[`&:not(${n}-disabled)`]:{"&:hover":{[i(`border-color`)]:o,[i(`background-color`)]:t.backgroundHover||l},[`&${n}-focused`]:{[i(`border-color`)]:s,[i(`background-color`)]:t.backgroundActive||l,boxShadow:`0 0 0 ${J(e.controlOutlineWidth)} ${c}`}},[`&${n}-disabled`]:{[i(`border-color`)]:t.borderDisabled||t.border,[i(`background-color`)]:t.backgroundDisabled||t.background}}},rb=(e,t,n,r={},i={},a)=>{let{componentCls:o}=e;return{[`&${o}-${t}`]:[nb(e,n),{[`&${o}-status-error`]:nb(e,{...n,color:r.color||e.colorError,...r}),[`&${o}-status-warning`]:nb(e,{...n,color:i.color||e.colorWarning,...i})},a]}},ib=e=>{let{componentCls:t,fontHeight:n,controlHeight:r,iconCls:i,antCls:a,calc:o}=e,[s,c]=sl(a,`select`);return{[t]:[{[s(`border-radius`)]:e.borderRadius,[s(`border-color`)]:`#000`,[s(`border-size`)]:e.lineWidth,[s(`background-color`)]:e.colorBgContainer,[s(`font-size`)]:e.fontSize,[s(`line-height`)]:e.lineHeight,[s(`font-height`)]:n,[s(`color`)]:e.colorText,[s(`height`)]:r,[s(`padding-horizontal`)]:o(e.paddingSM).sub(e.lineWidth).equal(),[s(`padding-vertical`)]:`calc((${c(`height`)} - ${c(`font-height`)}) / 2 - ${c(`border-size`)})`,...Yc(e,!0),display:`inline-flex`,flexWrap:`nowrap`,position:`relative`,transition:`all ${e.motionDurationSlow}`,alignItems:`flex-start`,outline:0,cursor:`pointer`,borderRadius:c(`border-radius`),borderWidth:c(`border-size`),borderStyle:e.lineType,borderColor:c(`border-color`),background:c(`background-color`),fontSize:c(`font-size`),lineHeight:c(`line-height`),color:c(`color`),paddingInline:c(`padding-horizontal`),paddingBlock:c(`padding-vertical`),[`${t}-prefix`]:{flex:`none`,lineHeight:1},[`${t}-placeholder`]:{...Jc,color:e.colorTextPlaceholder,pointerEvents:`none`,zIndex:1},[`${t}-content`]:{flex:`auto`,minWidth:0,position:`relative`,display:`flex`,marginInlineEnd:o(e.paddingXXS).mul(1.5).equal(),"&:before":{content:`"\\a0"`,width:0,overflow:`hidden`},"&-value":{visibility:`inherit`},"input[readonly]":{cursor:`inherit`,caretColor:`transparent`}},[`${t}-suffix`]:{flex:`none`,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,lineHeight:1,"> :not(:last-child)":{marginInlineEnd:e.marginXS}},[`${t}-prefix, ${t}-suffix`]:{alignSelf:`center`,[i]:{verticalAlign:`top`}},"&-disabled":{background:e.colorBgContainerDisabled,color:e.colorTextDisabled,cursor:`not-allowed`,input:{cursor:`not-allowed`}},"&-sm":{[s(`height`)]:e.controlHeightSM,[s(`padding-horizontal`)]:o(e.paddingXS).sub(e.lineWidth).equal(),[s(`border-radius`)]:e.borderRadiusSM,[`${t}-clear`]:{insetInlineEnd:c(`padding-horizontal`)}},"&-lg":{[s(`height`)]:e.controlHeightLG,[s(`font-size`)]:e.fontSizeLG,[s(`line-height`)]:e.lineHeightLG,[s(`font-height`)]:e.fontHeightLG,[s(`border-radius`)]:e.borderRadiusLG}},{[`&:not(${t}-customize)`]:{[`${t}-input`]:{outline:`none`,background:`transparent`,appearance:`none`,border:0,margin:0,padding:0,color:c(`color`),"&::-webkit-search-cancel-button":{display:`none`,appearance:`none`}}}},{[`&-single:not(${t}-customize)`]:{[`${t}-input`]:{position:`absolute`,inset:0,lineHeight:`calc(${c(`font-height`)} + ${c(`padding-vertical`)} * 2)`},[`${t}-content`]:{...Jc,alignSelf:`center`,"&-has-value":{display:`block`,"&:before":{display:`none`}},"&-has-search-value":{color:`transparent`},"&-value":{transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,zIndex:1}},[`&${t}-open ${t}-content`]:{color:e.colorTextPlaceholder,"&-has-search-value":{color:`transparent`}}}},{[`&-show-search:not(${t}-customize-input):not(${t}-disabled)`]:{cursor:`text`}},tb(e),rb(e,`outlined`,{border:e.colorBorder,borderHover:e.hoverBorderColor,borderActive:e.activeBorderColor,borderOutline:e.activeOutlineColor,borderDisabled:e.colorBorderDisabled},{border:e.colorError,borderHover:e.colorErrorHover,borderActive:e.colorError,borderOutline:e.colorErrorOutline},{border:e.colorWarning,borderHover:e.colorWarningHover,borderActive:e.colorWarning,borderOutline:e.colorWarningOutline}),rb(e,`filled`,{border:`transparent`,borderHover:`transparent`,borderActive:e.activeBorderColor,borderOutline:`transparent`,borderDisabled:e.colorBorderDisabled,background:e.colorFillTertiary,backgroundHover:e.colorFillSecondary,backgroundActive:e.colorBgContainer},{background:e.colorErrorBg,backgroundHover:e.colorErrorBgHover,borderActive:e.colorError},{background:e.colorWarningBg,backgroundHover:e.colorWarningBgHover,borderActive:e.colorWarning}),rb(e,`borderless`,{border:`transparent`,borderHover:`transparent`,borderActive:`transparent`,borderOutline:`transparent`,background:`transparent`}),rb(e,`underlined`,{border:e.colorBorder,borderHover:e.hoverBorderColor,borderActive:e.activeBorderColor,borderOutline:`transparent`},{border:e.colorError,borderHover:e.colorErrorHover,borderActive:e.colorError},{border:e.colorWarning,borderHover:e.colorWarningHover,borderActive:e.colorWarning},{borderRadius:0,borderTopColor:`transparent`,borderInlineColor:`transparent`}),$y(e)]}},ab=e=>{let{fontSize:t,lineHeight:n,lineWidth:r,controlHeight:i,controlHeightSM:a,controlHeightLG:o,paddingXXS:s,controlPaddingHorizontal:c,zIndexPopupBase:l,colorText:u,fontWeightStrong:d,controlItemBgActive:f,controlItemBgHover:p,colorBgContainer:m,colorFillSecondary:h,colorBgContainerDisabled:g,colorTextDisabled:_,colorPrimaryHover:v,colorPrimary:y,controlOutline:b}=e,x=s*2,S=r*2,C=Math.min(i-x,i-S),w=Math.min(a-x,a-S),T=Math.min(o-x,o-S);return{INTERNAL_FIXED_ITEM_MARGIN:Math.floor(s/2),zIndexPopup:l+50,optionSelectedColor:u,optionSelectedFontWeight:d,optionSelectedBg:f,optionActiveBg:p,optionPadding:`${(i-t*n)/2}px ${c}px`,optionFontSize:t,optionLineHeight:n,optionHeight:i,selectorBg:m,clearBg:m,singleItemHeightLG:o,multipleItemBg:h,multipleItemBorderColor:`transparent`,multipleItemHeight:C,multipleItemHeightSM:w,multipleItemHeightLG:T,multipleSelectorBgDisabled:g,multipleItemColorDisabled:_,multipleItemBorderColorDisabled:`transparent`,showArrowPaddingInlineEnd:Math.ceil(e.fontSize*1.25),hoverBorderColor:v,activeBorderColor:y,activeOutlineColor:b,selectAffixPadding:s}},ob=e=>{let{antCls:t,componentCls:n,motionDurationMid:r,inputPaddingHorizontalBase:i}=e,a={[`${n}-clear`]:{opacity:1,background:e.colorBgBase,borderRadius:`50%`}};return{[n]:{...Yc(e),[`${n}-selection-item`]:{flex:1,fontWeight:`normal`,position:`relative`,userSelect:`none`,...Jc,[`> ${t}-typography`]:{display:`inline`}},[`${n}-prefix`]:{flex:`none`,marginInlineEnd:e.selectAffixPadding},[`${n}-clear`]:{position:`absolute`,top:`50%`,insetInlineStart:`auto`,insetInlineEnd:i,zIndex:1,display:`inline-block`,width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:e.calc(e.fontSizeIcon).mul(-1).div(2).equal(),color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:`normal`,lineHeight:1,textAlign:`center`,textTransform:`none`,cursor:`pointer`,opacity:0,transition:[`color`,`opacity`].map(e=>`${e} ${r} ease`).join(`, `),textRendering:`auto`,transform:`translateZ(0)`,"&:before":{display:`block`},"&:hover":{color:e.colorIcon}},"@media(hover:none)":a,"&:hover":a},[`${n}-status`]:{"&-error, &-warning, &-success, &-validating":{[`&${n}-has-feedback`]:{[`${n}-clear`]:{insetInlineEnd:e.calc(i).add(e.fontSize).add(e.paddingXS).equal()}}}}}},sb=e=>{let{componentCls:t}=e;return[{[t]:{[`&${t}-in-form-item`]:{width:`100%`}}},ob(e),Qy(e),{[`${t}-rtl`]:{direction:`rtl`}},eg(e,{focusElCls:`${t}-focused`})]},cb=il(`Select`,(e,{rootPrefixCls:t})=>{let n=_s(e,{rootPrefixCls:t,inputPaddingHorizontalBase:e.calc(e.paddingSM).sub(e.lineWidth).equal(),multipleSelectItemHeight:e.multipleItemHeight,selectHeight:e.controlHeight});return[sb(n),ib(n)]},ab,{unitless:{optionLineHeight:!0,optionSelectedFontWeight:!0}}),lb={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z`}}]},name:`check`,theme:`outlined`};function ub(){return ub=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,ub({},e,{ref:t,icon:lb}))),fb={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z`}}]},name:`down`,theme:`outlined`};function pb(){return pb=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,pb({},e,{ref:t,icon:fb}))),hb={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z`}}]},name:`search`,theme:`outlined`};function gb(){return gb=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,gb({},e,{ref:t,icon:hb})));function vb({suffixIcon:e,clearIcon:t,menuItemSelectedIcon:n,removeIcon:r,loading:i,loadingIcon:a,multiple:o,hasFeedback:s,showSuffixIcon:c,feedbackIcon:l,showArrow:u,componentName:d}){let f=t??C.createElement(Il,null),p=t=>e===null&&!s&&!u?null:C.createElement(C.Fragment,null,c!==!1&&t,s&&l),m=null;m=e===void 0?i?p(a??C.createElement(fm,{spin:!0})):({open:e,showSearch:t})=>p(e&&t?C.createElement(_b,null):C.createElement(mb,null)):p(e);let h=null;h=n===void 0?o?C.createElement(db,null):null:n;let g=null;return g=r===void 0?C.createElement(zl,null):r,{clearIcon:f,suffixIcon:m,itemIcon:h,removeIcon:g}}function yb(e){return C.useMemo(()=>{if(e)return(...t)=>C.createElement(U_,{space:!0},e.apply(void 0,t))},[e])}function bb(e,t){return t===void 0?e!==null:t}var xb=`SECRET_COMBOBOX_MODE_DO_NOT_USE`,Sb=C.forwardRef((e,t)=>{let{prefixCls:n,bordered:r,className:i,rootClassName:a,getPopupContainer:o,popupClassName:s,dropdownClassName:c,listHeight:l=256,placement:u,listItemHeight:d,size:f,disabled:p,notFoundContent:m,status:h,builtinPlacements:g,dropdownMatchSelectWidth:_,popupMatchSelectWidth:v,direction:y,style:b,allowClear:x,variant:S,popupStyle:w,dropdownStyle:T,transitionName:E,tagRender:D,maxCount:O,prefix:k,dropdownRender:A,popupRender:j,onDropdownVisibleChange:M,onOpenChange:N,styles:P,classNames:F,...I}=e,{getPopupContainer:L,getPrefixCls:R,renderEmpty:z,direction:B,virtual:V,popupMatchSelectWidth:H,popupOverflow:U}=C.useContext(si),{showSearch:W,style:ee,styles:te,className:ne,classNames:re}=ui(`select`),[,ie]=qc(),ae=d??ie?.controlHeight,G=R(`select`,n),oe=R(),K=y??B,{compactSize:se,compactItemClassnames:ce}=Vm(G,K),[le,ue]=Jy(`select`,S,r),de=xf(G),[fe,pe]=cb(G,de),me=C.useMemo(()=>{let{mode:t}=e;if(t!==`combobox`)return t===xb?`combobox`:t},[e.mode]),he=me===`multiple`||me===`tags`,ge=bb(e.suffixIcon,e.showArrow),_e=v??_??H,ve=yb(j||A),ye=N||M,{status:be,hasFeedback:xe,isFormItemInput:Se,feedbackIcon:Ce}=C.useContext(B_),we=By(be,h),Te;Te=m===void 0?me===`combobox`?null:z?.(`Select`)||C.createElement(qy,{componentName:`Select`}):m;let{suffixIcon:Ee,itemIcon:De,removeIcon:Oe,clearIcon:ke}=vb({...I,multiple:he,hasFeedback:xe,feedbackIcon:Ce,showSuffixIcon:ge,prefixCls:G,componentName:`Select`}),Ae=x===!0?{clearIcon:ke}:x,je=Cr(I,[`suffixIcon`,`itemIcon`]),Me=Rm(e=>f??se??e),Ne=C.useContext(Bp),Pe=p??Ne,Fe={...e,variant:le,status:we,disabled:Pe,size:Me},[Ie,Le]=Id([re,F],[te,P],{props:Fe},{popup:{_default:`root`}}),Re=q(Ie.popup?.root,s,c,{[`${G}-dropdown-${K}`]:K===`rtl`},a,pe,de,fe),ze={...Le.popup?.root,...w??T},Be=q({[`${G}-lg`]:Me===`large`,[`${G}-sm`]:Me===`small`,[`${G}-rtl`]:K===`rtl`,[`${G}-${le}`]:ue,[`${G}-in-form-item`]:Se},zy(G,we,xe),ce,ne,i,Ie.root,a,pe,de,fe),Ve=C.useMemo(()=>u===void 0?K===`rtl`?`bottomRight`:`bottomLeft`:u,[u,K]),[He]=Xd(`SelectLike`,Le.popup?.root?.zIndex??ze?.zIndex);return C.createElement(oie,{ref:t,virtual:V,classNames:Ie,styles:Le,showSearch:W,...je,style:{...Le.root,...ee,...b},popupMatchSelectWidth:_e,transitionName:Nm(oe,`slide-up`,E),builtinPlacements:Xy(g,U),listHeight:l,listItemHeight:ae,mode:me,prefixCls:G,placement:Ve,direction:K,prefix:k,suffixIcon:Ee,menuItemSelectedIcon:De,removeIcon:Oe,allowClear:Ae,notFoundContent:Te,className:Be,getPopupContainer:o||L,popupClassName:Re,disabled:Pe,popupStyle:{...Le.popup?.root,...ze,zIndex:He},maxCount:he?O:void 0,tagRender:he?D:void 0,popupRender:ve,onPopupVisibleChange:ye})}),Cb=zv(Sb,`popupAlign`);Sb.SECRET_COMBOBOX_MODE_DO_NOT_USE=xb,Sb.Option=by,Sb.OptGroup=yy,Sb._InternalPanelDoNotUseOrYouWillBeFired=Cb;var wb=[`xxxl`,`xxl`,`xl`,`lg`,`md`,`sm`,`xs`],Tb=[].concat(wb).reverse(),Eb=e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`,xxxl:`(min-width: ${e.screenXXXL}px)`}),Db=e=>{let t=e,n=[].concat(wb).reverse();return n.forEach((e,r)=>{let i=e.toUpperCase(),a=`screen${i}Min`,o=`screen${i}`;if(!(t[a]<=t[o]))throw Error(`${a}<=${o} fails : !(${t[a]}<=${t[o]})`);if(r{if(t){for(let n of wb)if(e[n]&&t?.[n]!==void 0)return t[n]}},kb=()=>{let[,e]=qc(),t=Eb(Db(e));return C.useMemo(()=>{let e=new Map,n=-1,r={};return{responsiveMap:t,matchHandlers:{},dispatch(t){return r=t,e.forEach(e=>{e(r)}),e.size>=1},subscribe(t){return e.size||this.register(),n+=1,e.set(n,t),t(r),n},unsubscribe(t){e.delete(t),e.size||this.unregister()},register(){Object.entries(t).forEach(([e,t])=>{let n=({matches:t})=>{this.dispatch({...r,[e]:t})},i=window.matchMedia(t);typeof i?.addEventListener==`function`&&i.addEventListener(`change`,n),this.matchHandlers[t]={mql:i,listener:n},n(i)})},unregister(){Object.values(t).forEach(e=>{let t=this.matchHandlers[e];typeof t?.mql?.removeEventListener==`function`&&t.mql.removeEventListener(`change`,t?.listener)}),e.clear()}}},[t])};function Ab(e=!0,t={}){let n=(0,C.useRef)(t),[,r]=Dd(),i=kb();return Vn(()=>{let t=i.subscribe(t=>{n.current=t,e&&r()});return()=>i.unsubscribe(t)},[]),n.current}var jb=C.createContext({}),Mb=e=>{let{antCls:t,componentCls:n,iconCls:r,avatarBg:i,avatarColor:a,containerSize:o,containerSizeLG:s,containerSizeSM:c,textFontSize:l,textFontSizeLG:u,textFontSizeSM:d,iconFontSize:f,iconFontSizeLG:p,iconFontSizeSM:m,borderRadius:h,borderRadiusLG:g,borderRadiusSM:_,lineWidth:v,lineType:y}=e,b=(e,t,i,a)=>({width:e,height:e,borderRadius:`50%`,fontSize:t,[`&${n}-square`]:{borderRadius:a},[`&${n}-icon`]:{fontSize:i,[`> ${r}`]:{margin:0}}});return{[n]:{...Yc(e),position:`relative`,display:`inline-flex`,justifyContent:`center`,alignItems:`center`,overflow:`hidden`,color:a,whiteSpace:`nowrap`,textAlign:`center`,verticalAlign:`middle`,background:i,border:`${J(v)} ${y} transparent`,"&-image":{background:`transparent`},[`${t}-image-img`]:{display:`block`},...b(o,l,f,h),"&-lg":{...b(s,u,p,g)},"&-sm":{...b(c,d,m,_)},"> img":{display:`block`,width:`100%`,height:`100%`,objectFit:`cover`}}}},Nb=e=>{let{componentCls:t,groupBorderColor:n,groupOverlapping:r,groupSpace:i}=e;return{[`${t}-group`]:{display:`inline-flex`,[t]:{borderColor:n},"> *:not(:first-child)":{marginInlineStart:r}},[`${t}-group-popover`]:{[`${t} + ${t}`]:{marginInlineStart:i}}}},Pb=il(`Avatar`,e=>{let{colorTextLightSolid:t,colorTextPlaceholder:n}=e,r=_s(e,{avatarBg:n,avatarColor:t});return[Mb(r),Nb(r)]},e=>{let{controlHeight:t,controlHeightLG:n,controlHeightSM:r,fontSize:i,fontSizeLG:a,fontSizeXL:o,fontSizeHeading3:s,marginXS:c,marginXXS:l,colorBorderBg:u}=e;return{containerSize:t,containerSizeLG:n,containerSizeSM:r,textFontSize:i,textFontSizeLG:i,textFontSizeSM:i,iconFontSize:Math.round((a+o)/2),iconFontSizeLG:s,iconFontSizeSM:i,groupSpace:l,groupOverlapping:-c,groupBorderColor:u}}),Fb=C.forwardRef((e,t)=>{let{prefixCls:n,shape:r,size:i,src:a,srcSet:o,icon:s,className:c,rootClassName:l,style:u,alt:d,draggable:f,children:p,crossOrigin:m,gap:h=4,onError:g,..._}=e,[v,y]=C.useState(1),[b,x]=C.useState(!1),[S,w]=C.useState(!0),T=C.useRef(null),E=C.useRef(null),D=er(t,T),{getPrefixCls:O,className:k,style:A}=ui(`avatar`),j=C.useContext(jb),M=()=>{if(!E.current||!T.current)return;let e=E.current.offsetWidth,t=T.current.offsetWidth;e!==0&&t!==0&&h*2{x(!0)},[]),C.useEffect(()=>{w(!0),y(1)},[a]),C.useEffect(M,[h]);let N=()=>{g?.()!==!1&&w(!1)},P=Rm(e=>i??j?.size??e??`medium`),F=Ab(Object.keys(gd(P)&&P||{}).some(e=>wb.includes(e))),I=C.useMemo(()=>{if(!gd(P))return{};let e=P[wb.find(e=>F[e])];return e?{width:e,height:e,fontSize:e&&(s||p)?e/2:18}:{}},[F,P,s,p]),L=O(`avatar`,n),R=xf(L),[z,B]=Pb(L,R),V=q({[`${L}-lg`]:P===`large`,[`${L}-sm`]:P===`small`}),H=C.isValidElement(a),U=q(L,V,k,`${L}-${r||j?.shape||`circle`}`,{[`${L}-image`]:H||a&&S,[`${L}-icon`]:!!s},B,R,c,l,z),W=md(P)?{width:P,height:P,fontSize:s?P/2:18}:{},ee;if(typeof a==`string`&&S)ee=C.createElement(`img`,{src:a,draggable:f,srcSet:o,onError:N,alt:d,crossOrigin:m});else if(H)ee=a;else if(s)ee=s;else if(b||v!==1){let e=`scale(${v})`,t={msTransform:e,WebkitTransform:e,transform:e};ee=C.createElement(Gr,{onResize:M},C.createElement(`span`,{className:`${L}-string`,ref:E,style:t},p))}else ee=C.createElement(`span`,{className:`${L}-string`,style:{opacity:0},ref:E},p);return C.createElement(`span`,{..._,style:{...W,...I,...A,...u},className:U,ref:D},ee)}),Ib=e=>e?typeof e==`function`?e():e:null,Lb=e=>{let{children:t,prefixCls:n,id:r,classNames:i,styles:a,className:o,style:s}=e;return C.createElement(`div`,{id:r,className:q(`${n}-container`,i?.container,o),style:{...a?.container,...s},role:`tooltip`},typeof t==`function`?t():t)},Rb={shiftX:64,adjustY:1},zb={adjustX:1,shiftY:!0},Bb=[0,0],Vb={left:{points:[`cr`,`cl`],overflow:zb,offset:[-4,0],targetOffset:Bb},right:{points:[`cl`,`cr`],overflow:zb,offset:[4,0],targetOffset:Bb},top:{points:[`bc`,`tc`],overflow:Rb,offset:[0,-4],targetOffset:Bb},bottom:{points:[`tc`,`bc`],overflow:Rb,offset:[0,4],targetOffset:Bb},topLeft:{points:[`bl`,`tl`],overflow:Rb,offset:[0,-4],targetOffset:Bb},leftTop:{points:[`tr`,`tl`],overflow:zb,offset:[-4,0],targetOffset:Bb},topRight:{points:[`br`,`tr`],overflow:Rb,offset:[0,-4],targetOffset:Bb},rightTop:{points:[`tl`,`tr`],overflow:zb,offset:[4,0],targetOffset:Bb},bottomRight:{points:[`tr`,`br`],overflow:Rb,offset:[0,4],targetOffset:Bb},rightBottom:{points:[`bl`,`br`],overflow:zb,offset:[4,0],targetOffset:Bb},bottomLeft:{points:[`tl`,`bl`],overflow:Rb,offset:[0,4],targetOffset:Bb},leftBottom:{points:[`br`,`bl`],overflow:zb,offset:[-4,0],targetOffset:Bb}};function Hb(){return Hb=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{trigger:n=[`hover`],mouseEnterDelay:r=0,mouseLeaveDelay:i=.1,prefixCls:a=`rc-tooltip`,children:o,onVisibleChange:s,afterVisibleChange:c,motion:l,placement:u=`right`,align:d={},destroyOnHidden:f=!1,defaultVisible:p,getTooltipContainer:m,arrowContent:h,overlay:g,id:_,showArrow:v=!0,classNames:y,styles:b,...x}=e,S=Bf(_),w=(0,C.useRef)(null);(0,C.useImperativeHandle)(t,()=>w.current);let T={...x};`visible`in e&&(T.popupVisible=e.visible);let E=C.useMemo(()=>{if(!v)return!1;let e=v===!0?{}:v;return{...e,className:q(e.className,y?.arrow),style:{...e.style,...b?.arrow},content:e.content??h}},[v,y?.arrow,b?.arrow,h]);return C.createElement(Mp,Hb({popupClassName:y?.root,prefixCls:a,popup:C.createElement(Lb,{key:`content`,prefixCls:a,id:S,classNames:y,styles:b},g),action:n,builtinPlacements:Vb,popupPlacement:u,ref:w,popupAlign:d,getPopupContainer:m,onOpenChange:s,afterOpenChange:c,popupMotion:l,defaultPopupVisible:p,autoDestroy:f,mouseLeaveDelay:i,popupStyle:b?.root,mouseEnterDelay:r,arrow:E,uniqueContainerClassName:y?.uniqueContainer,uniqueContainerStyle:b?.uniqueContainer},T),({open:e})=>{let t=C.Children.only(o),n={"aria-describedby":g&&e?S:void 0};return C.cloneElement(t,n)})});function Wb(e){let{sizePopupArrow:t,borderRadiusXS:n,borderRadiusOuter:r}=e,i=t/2,a=i,o=r*1/Math.sqrt(2),s=i-r*(1-1/Math.sqrt(2)),c=i-1/Math.sqrt(2)*n,l=r*(Math.sqrt(2)-1)+1/Math.sqrt(2)*n,u=2*i-c,d=l,f=2*i-o,p=s,m=2*i-0,h=a,g=i*Math.sqrt(2)+r*(Math.sqrt(2)-2),_=r*(Math.sqrt(2)-1),v=`polygon(${_}px 100%, 50% ${_}px, ${2*i-_}px 100%, ${_}px 100%)`;return{arrowShadowWidth:g,arrowPath:`path('M 0 ${a} A ${r} ${r} 0 0 0 ${o} ${s} L ${c} ${l} A ${n} ${n} 0 0 1 ${u} ${d} L ${f} ${p} A ${r} ${r} 0 0 0 ${m} ${h} Z')`,arrowPolygon:v}}var Gb=(e,t,n)=>{let{sizePopupArrow:r,arrowPolygon:i,arrowPath:a,arrowShadowWidth:o,borderRadiusXS:s,calc:c}=e;return{pointerEvents:`none`,width:r,height:r,overflow:`hidden`,"&::before":{position:`absolute`,bottom:0,insetInlineStart:0,width:r,height:c(r).div(2).equal(),background:t,clipPath:{_multi_value_:!0,value:[i,a]},content:`""`},"&::after":{content:`""`,position:`absolute`,width:o,height:o,bottom:0,insetInline:0,margin:`auto`,borderRadius:{_skip_check_:!0,value:`0 0 ${J(s)} 0`},transform:`translateY(50%) rotate(-135deg)`,boxShadow:n,zIndex:0,background:`transparent`}}};function Kb(e){let{contentRadius:t,limitVerticalRadius:n}=e,r=t>12?t+2:12;return{arrowOffsetHorizontal:r,arrowOffsetVertical:n?8:r}}function qb(e,t){return e?t:{}}var Jb=(e,t,n)=>{let{componentCls:r,boxShadowPopoverArrow:i,arrowOffsetVertical:a,arrowOffsetHorizontal:o,antCls:s}=e,[c]=sl(s,`tooltip`),{arrowDistance:l=0,arrowPlacement:u={left:!0,right:!0,top:!0,bottom:!0}}=n||{};return{[r]:{[`${r}-arrow`]:[{position:`absolute`,zIndex:1,display:`block`,...Gb(e,t,i),"&:before":{background:t}}],...qb(!!u.top,{[[`&-placement-top > ${r}-arrow`,`&-placement-topLeft > ${r}-arrow`,`&-placement-topRight > ${r}-arrow`].join(`,`)]:{bottom:l,transform:`translateY(100%) rotate(180deg)`},[`&-placement-top > ${r}-arrow`]:{left:{_skip_check_:!0,value:`50%`},transform:`translateX(-50%) translateY(100%) rotate(180deg)`},"&-placement-topLeft":{[c(`arrow-offset-x`)]:o,[`> ${r}-arrow`]:{left:{_skip_check_:!0,value:o}}},"&-placement-topRight":{[c(`arrow-offset-x`)]:`calc(100% - ${J(o)})`,[`> ${r}-arrow`]:{right:{_skip_check_:!0,value:o}}}}),...qb(!!u.bottom,{[[`&-placement-bottom > ${r}-arrow`,`&-placement-bottomLeft > ${r}-arrow`,`&-placement-bottomRight > ${r}-arrow`].join(`,`)]:{top:l,transform:`translateY(-100%)`},[`&-placement-bottom > ${r}-arrow`]:{left:{_skip_check_:!0,value:`50%`},transform:`translateX(-50%) translateY(-100%)`},"&-placement-bottomLeft":{[c(`arrow-offset-x`)]:o,[`> ${r}-arrow`]:{left:{_skip_check_:!0,value:o}}},"&-placement-bottomRight":{[c(`arrow-offset-x`)]:`calc(100% - ${J(o)})`,[`> ${r}-arrow`]:{right:{_skip_check_:!0,value:o}}}}),...qb(!!u.left,{[[`&-placement-left > ${r}-arrow`,`&-placement-leftTop > ${r}-arrow`,`&-placement-leftBottom > ${r}-arrow`].join(`,`)]:{right:{_skip_check_:!0,value:l},transform:`translateX(100%) rotate(90deg)`},[`&-placement-left > ${r}-arrow`]:{top:{_skip_check_:!0,value:`50%`},transform:`translateY(-50%) translateX(100%) rotate(90deg)`},[`&-placement-leftTop > ${r}-arrow`]:{top:a},[`&-placement-leftBottom > ${r}-arrow`]:{bottom:a}}),...qb(!!u.right,{[[`&-placement-right > ${r}-arrow`,`&-placement-rightTop > ${r}-arrow`,`&-placement-rightBottom > ${r}-arrow`].join(`,`)]:{left:{_skip_check_:!0,value:l},transform:`translateX(-100%) rotate(-90deg)`},[`&-placement-right > ${r}-arrow`]:{top:{_skip_check_:!0,value:`50%`},transform:`translateY(-50%) translateX(-100%) rotate(-90deg)`},[`&-placement-rightTop > ${r}-arrow`]:{top:a},[`&-placement-rightBottom > ${r}-arrow`]:{bottom:a}})}}};function Yb(e,t,n,r){if(r===!1)return{adjustX:!1,adjustY:!1};let i=gd(r)?r:{},a={};switch(e){case`top`:case`bottom`:a.shiftX=t.arrowOffsetHorizontal*2+n,a.shiftY=!0,a.adjustY=!0;break;case`left`:case`right`:a.shiftY=t.arrowOffsetVertical*2+n,a.shiftX=!0,a.adjustX=!0;break}let o={...a,...i};return o.shiftX||(o.adjustX=!0),o.shiftY||(o.adjustY=!0),o}var Xb={left:{points:[`cr`,`cl`]},right:{points:[`cl`,`cr`]},top:{points:[`bc`,`tc`]},bottom:{points:[`tc`,`bc`]},topLeft:{points:[`bl`,`tl`]},leftTop:{points:[`tr`,`tl`]},topRight:{points:[`br`,`tr`]},rightTop:{points:[`tl`,`tr`]},bottomRight:{points:[`tr`,`br`]},rightBottom:{points:[`bl`,`br`]},bottomLeft:{points:[`tl`,`bl`]},leftBottom:{points:[`br`,`bl`]}},Zb={topLeft:{points:[`bl`,`tc`]},leftTop:{points:[`tr`,`cl`]},topRight:{points:[`br`,`tc`]},rightTop:{points:[`tl`,`cr`]},bottomRight:{points:[`tr`,`bc`]},rightBottom:{points:[`bl`,`cr`]},bottomLeft:{points:[`tl`,`bc`]},leftBottom:{points:[`br`,`cl`]}},Qb=new Set([`topLeft`,`topRight`,`bottomLeft`,`bottomRight`,`leftTop`,`leftBottom`,`rightTop`,`rightBottom`]);function $b(e){let{arrowWidth:t,autoAdjustOverflow:n,arrowPointAtCenter:r,offset:i,borderRadius:a,visibleFirst:o}=e,s=t/2,c={},l=Kb({contentRadius:a,limitVerticalRadius:!0});return Object.keys(Xb).forEach(e=>{let a={...r&&Zb[e]||Xb[e],offset:[0,0],dynamicInset:!0};switch(c[e]=a,Qb.has(e)&&(a.autoArrow=!1),e){case`top`:case`topLeft`:case`topRight`:a.offset[1]=-s-i;break;case`bottom`:case`bottomLeft`:case`bottomRight`:a.offset[1]=s+i;break;case`left`:case`leftTop`:case`leftBottom`:a.offset[0]=-s-i;break;case`right`:case`rightTop`:case`rightBottom`:a.offset[0]=s+i;break}if(r)switch(e){case`topLeft`:case`bottomLeft`:a.offset[0]=-l.arrowOffsetHorizontal-s;break;case`topRight`:case`bottomRight`:a.offset[0]=l.arrowOffsetHorizontal+s;break;case`leftTop`:case`rightTop`:a.offset[1]=-l.arrowOffsetHorizontal*2+s;break;case`leftBottom`:case`rightBottom`:a.offset[1]=l.arrowOffsetHorizontal*2-s;break}a.overflow=Yb(e,l,t,n),o&&(a.htmlRegion=`visibleFirst`)}),c}var ex=C.createContext(!1),tx=(e,t)=>{let n=e=>typeof e==`boolean`?{show:e}:e||{};return C.useMemo(()=>{let r=n(e),i=n(t);return{...i,...r,show:r.show??i.show??!0}},[e,t])},nx=`50%`,rx=e=>{let{calc:t,componentCls:n,tooltipMaxWidth:r,tooltipColor:i,tooltipBg:a,tooltipBorderRadius:o,zIndexPopup:s,controlHeight:c,boxShadowSecondary:l,paddingSM:u,paddingXS:d,arrowOffsetHorizontal:f,sizePopupArrow:p,antCls:m}=e,[h,g]=sl(m,`tooltip`),_=t(o).add(p).add(f).equal(),v={minWidth:t(o).mul(2).add(p).equal(),minHeight:c,padding:`${J(e.calc(u).div(2).equal())} ${J(d)}`,color:g(`overlay-color`,i),textAlign:`start`,textDecoration:`none`,wordWrap:`break-word`,backgroundColor:a,borderRadius:o,boxShadow:l,boxSizing:`border-box`},y={[h(`valid-offset-x`)]:g(`arrow-offset-x`,`var(--arrow-x)`),transformOrigin:[g(`valid-offset-x`,nx),`var(--arrow-y, ${nx})`].join(` `)};return[{[n]:{...Yc(e),position:`absolute`,zIndex:s,display:`block`,width:`max-content`,maxWidth:r,visibility:`visible`,...y,"&-hidden":{display:`none`},[h(`arrow-background-color`)]:a,[`${n}-container`]:[v,ah(e,!0)],[`&:has(~ ${n}-unique-container)`]:{[`${n}-container`]:{border:`none`,background:`transparent`,boxShadow:`none`}},[[`&-placement-topLeft`,`&-placement-topRight`,`&-placement-bottomLeft`,`&-placement-bottomRight`].join(`,`)]:{minWidth:_},[[`&-placement-left`,`&-placement-leftTop`,`&-placement-leftBottom`,`&-placement-right`,`&-placement-rightTop`,`&-placement-rightBottom`].join(`,`)]:{[`${n}-inner`]:{borderRadius:e.min(o,8)}},[`${n}-content`]:{position:`relative`},...cl(e,(e,{darkColor:t})=>({[`&${n}-${e}`]:{[`${n}-container`]:{backgroundColor:t},[`${n}-arrow`]:{[h(`arrow-background-color`)]:t}}})),"&-rtl":{direction:`rtl`}}},Jb(e,g(`arrow-background-color`)),{[`${n}-pure`]:{position:`relative`,maxWidth:`none`,margin:e.sizePopupArrow}},{[`${n}-unique-container`]:{...v,...y,position:`absolute`,zIndex:t(s).sub(1).equal(),"&-hidden":{display:`none`},"&-visible":{transition:`all ${e.motionDurationSlow}`}}}]},ix=e=>({zIndexPopup:e.zIndexPopupBase+70,maxWidth:250,...Kb({contentRadius:e.borderRadius,limitVerticalRadius:!0}),...Wb(_s(e,{borderRadiusOuter:Math.min(e.borderRadiusOuter,4)}))}),ax=(e,t,n=!0)=>il(`Tooltip`,e=>{let{borderRadius:t,colorTextLightSolid:n,colorBgSpotlight:r,maxWidth:i}=e;return[rx(_s(e,{tooltipMaxWidth:i,tooltipColor:n,tooltipBorderRadius:t,tooltipBg:r})),gh(e,`zoom-big-fast`)]},ix,{resetStyle:!1,injectStyle:n})(e,t),ox=Os.map(e=>`${e}-inverse`),sx=[`success`,`processing`,`error`,`default`,`warning`];function cx(e,t=!0){return t?[].concat(Qr(ox),Qr(Os)).includes(e):Os.includes(e)}function lx(e){return sx.includes(e)}var ux=(e,t,n)=>{let r=cx(n),[i]=sl(e,`tooltip`),a=q({[`${t}-${n}`]:n&&r}),o={},s={},c=Uh(n).toRgb(),l=(.299*c.r+.587*c.g+.114*c.b)/255<.5?`#FFF`:`#000`;return n&&!r&&(o.background=n,o[i(`overlay-color`)]=l,s[i(`arrow-background-color`)]=n),{className:a,overlayStyle:o,arrowStyle:s}},dx=e=>{let{prefixCls:t,className:n,placement:r=`top`,title:i,color:a,overlayInnerStyle:o,classNames:s,styles:c}=e,{getPrefixCls:l}=C.useContext(si),u=l(`tooltip`,t),d=l(),f=xf(u),[p,m]=ax(u,f),h=ux(d,u,a),g=h.arrowStyle,_=C.useMemo(()=>({container:{...o,...h.overlayStyle}}),[o,h.overlayStyle]),v={...e,placement:r},[y,b]=Id([s],[_,c],{props:v}),x=q(f,p,m,u,`${u}-pure`,`${u}-placement-${r}`,n,h.className);return C.createElement(`div`,{className:x,style:g},C.createElement(`div`,{className:`${u}-arrow`}),C.createElement(Lb,{...e,className:p,prefixCls:u,classNames:y,styles:b},i))},fx=C.forwardRef((e,t)=>{let{prefixCls:n,openClassName:r,getTooltipContainer:i,color:a,children:o,afterOpenChange:s,arrow:c,destroyTooltipOnHide:l,destroyOnHidden:u,title:d,overlay:f,trigger:p,builtinPlacements:m,autoAdjustOverflow:h=!0,motion:g,getPopupContainer:_,placement:v=`top`,mouseEnterDelay:y=.1,mouseLeaveDelay:b=.1,rootClassName:x,styles:S,classNames:w,onOpenChange:T,overlayInnerStyle:E,overlayStyle:D,overlayClassName:O,...k}=e,[,A]=qc(),j=e[`data-popover-inject`],{getPopupContainer:M,getPrefixCls:N,direction:P,...F}=ui(`tooltip`),{className:I,style:L,classNames:R,styles:z,arrow:B,trigger:V}=j?{}:F,H=tx(c,B),U=H.show,W=p||V||`hover`,ee=_||M,te=u??!!l,ne=C.useContext(ex);Or(`Tooltip`);let re=C.useRef(null),ie=()=>{re.current?.forceAlign()};C.useImperativeHandle(t,()=>({forceAlign:ie,nativeElement:re.current?.nativeElement,popupElement:re.current?.popupElement}));let[ae,G]=Wn(e.defaultOpen??!1,e.open),oe=!d&&!f&&d!==0,K=e=>{G(oe?!1:e),!oe&&T&&T(e)},se=C.useMemo(()=>m||$b({arrowPointAtCenter:H?.pointAtCenter??!1,autoAdjustOverflow:h,arrowWidth:U?A.sizePopupArrow:0,borderRadius:A.borderRadius,offset:A.marginXXS,visibleFirst:!0}),[H,m,A,U,h]),ce=C.useMemo(()=>d===0?d:f||d||``,[f,d]),le=C.createElement(U_,{space:!0,form:!0},typeof ce==`function`?ce():ce),ue={...e,trigger:W,builtinPlacements:se,getPopupContainer:ee,destroyOnHidden:te},[de,fe]=Id([R,w],[z,S],{props:ue}),pe=N(`tooltip`,n),me=N(),he=ae;(!(`open`in e)&&oe||ne)&&(he=!1);let ge=C.isValidElement(o)&&!Np(o)?o:C.createElement(`span`,null,o),_e=ge.props,ve=!_e.className||typeof _e.className==`string`?q(_e.className,r||`${pe}-open`):_e.className,ye=xf(pe),[be,xe]=ax(pe,ye,!j),Se=ux(me,pe,a),Ce=Se.arrowStyle,we=q(ye,be,xe),Te=q(O,{[`${pe}-rtl`]:P===`rtl`},Se.className,x,we,I,de.root),[Ee,De]=Xd(`Tooltip`,k.zIndex),Oe={...fe.container,...E,...Se.overlayStyle},ke=C.createElement(Ub,{unique:!0,...k,zIndex:Ee,showArrow:U,placement:v,mouseEnterDelay:y,mouseLeaveDelay:b,prefixCls:pe,classNames:{root:Te,container:de.container,arrow:de.arrow,uniqueContainer:q(we,de.container)},styles:{root:{...Ce,...fe.root,...L,...D},container:Oe,uniqueContainer:Oe,arrow:fe.arrow},ref:re,overlay:le,visible:he,onVisibleChange:K,afterVisibleChange:s,arrowContent:C.createElement(`span`,{className:`${pe}-arrow-content`}),motion:{motionName:Nm(me,`zoom-big-fast`,typeof g?.motionName==`string`?g?.motionName:void 0),motionDeadline:1e3},trigger:W,builtinPlacements:se,getTooltipContainer:ee,destroyOnHidden:te},he?Fp(ge,{className:ve}):ge);return C.createElement(Wd.Provider,{value:De},ke)});fx._InternalPanelDoNotUseOrYouWillBeFired=dx,fx.UniqueProvider=zp;var px=`50%`,mx=e=>{let{componentCls:t,popoverColor:n,titleMinWidth:r,fontWeightStrong:i,innerPadding:a,boxShadowSecondary:o,colorTextHeading:s,borderRadiusLG:c,zIndexPopup:l,titleMarginBottom:u,colorBgElevated:d,popoverBg:f,titleBorderBottom:p,innerContentPadding:m,titlePadding:h,antCls:g}=e,[_,v]=sl(g,`tooltip`);return[{[t]:{...Yc(e),position:`absolute`,top:0,left:{_skip_check_:!0,value:0},zIndex:l,fontWeight:`normal`,whiteSpace:`normal`,textAlign:`start`,cursor:`auto`,userSelect:`text`,[_(`valid-offset-x`)]:v(`arrow-offset-x`,`var(--arrow-x)`),transformOrigin:[v(`valid-offset-x`,px),`var(--arrow-y, ${px})`].join(` `),[_(`arrow-background-color`)]:d,width:`max-content`,maxWidth:`100vw`,"&-rtl":{direction:`rtl`},"&-hidden":{display:`none`},[`${t}-content`]:{position:`relative`},[`${t}-container`]:{backgroundColor:f,backgroundClip:`padding-box`,borderRadius:c,boxShadow:o,padding:a},[`${t}-title`]:{minWidth:r,marginBottom:u,color:s,fontWeight:i,borderBottom:p,padding:h},[`${t}-content`]:{color:n,padding:m}}},Jb(e,v(`arrow-background-color`)),{[`${t}-pure`]:{position:`relative`,maxWidth:`none`,margin:e.sizePopupArrow,display:`inline-block`}}]},hx=e=>{let{componentCls:t,antCls:n}=e,[r]=sl(n,`tooltip`);return{[t]:Os.map(n=>{let i=e[`${n}6`];return{[`&${t}-${n}`]:{[r(`arrow-background-color`)]:i,[`${t}-inner`]:{backgroundColor:i},[`${t}-arrow`]:{background:`transparent`}}}})}},gx=il(`Popover`,e=>{let{colorBgElevated:t,colorText:n}=e,r=_s(e,{popoverBg:t,popoverColor:n});return[mx(r),hx(r),gh(r,`zoom-big`)]},e=>{let{lineWidth:t,controlHeight:n,fontHeight:r,padding:i,wireframe:a,zIndexPopupBase:o,borderRadiusLG:s,marginXS:c,lineType:l,colorSplit:u,paddingSM:d}=e,f=n-r,p=f/2,m=f/2-t,h=i;return{titleMinWidth:177,zIndexPopup:o+30,...Wb(e),...Kb({contentRadius:s,limitVerticalRadius:!0}),innerPadding:a?0:12,titleMarginBottom:a?0:c,titlePadding:a?`${p}px ${h}px ${m}px`:0,titleBorderBottom:a?`${t}px ${l} ${u}`:`none`,innerContentPadding:a?`${d}px ${h}px`:0}},{resetStyle:!1,deprecatedTokens:[[`width`,`titleMinWidth`],[`minWidth`,`titleMinWidth`]]}),_x=e=>{let{title:t,content:n,prefixCls:r,classNames:i,styles:a}=e;return!t&&!n?null:C.createElement(C.Fragment,null,t&&C.createElement(`div`,{className:q(`${r}-title`,i?.title),style:a?.title},t),n&&C.createElement(`div`,{className:q(`${r}-content`,i?.content),style:a?.content},n))},cie=e=>{let{hashId:t,prefixCls:n,className:r,style:i,placement:a=`top`,title:o,content:s,children:c,classNames:l,styles:u}=e,d=Ib(o),f=Ib(s),p={...e,placement:a},[m,h]=Id([l],[u],{props:p}),g=q(t,n,`${n}-pure`,`${n}-placement-${a}`,r);return C.createElement(`div`,{className:g,style:i},C.createElement(`div`,{className:`${n}-arrow`}),C.createElement(Lb,{...e,className:t,prefixCls:n,classNames:m,styles:h},c||C.createElement(_x,{prefixCls:n,title:d,content:f,classNames:m,styles:h})))},vx=e=>{let{prefixCls:t,className:n,...r}=e,{getPrefixCls:i}=C.useContext(si),a=i(`popover`,t),[o,s]=gx(a);return C.createElement(cie,{...r,prefixCls:a,hashId:o,className:q(n,s)})},yx=C.forwardRef((e,t)=>{let{prefixCls:n,title:r,content:i,overlayClassName:a,placement:o=`top`,trigger:s,children:c,mouseEnterDelay:l=.1,mouseLeaveDelay:u=.1,onOpenChange:d,overlayStyle:f={},styles:p,classNames:m,motion:h,arrow:g,..._}=e,{getPrefixCls:v,className:y,style:b,classNames:x,styles:S,arrow:w,trigger:T}=ui(`popover`),E=v(`popover`,n),[D,O]=gx(E),k=v(),A=tx(g,w),j=s||T||`hover`,M={...e,placement:o,trigger:j,mouseEnterDelay:l,mouseLeaveDelay:u,overlayStyle:f,styles:p,classNames:m},[N,P]=Id([x,m],[S,p],{props:M}),F=q(a,D,O,y,N.root),[I,L]=Wn(e.defaultOpen??!1,e.open),R=e=>{L(e),d?.(e)},z=Ib(r),B=Ib(i);return C.createElement(fx,{unique:!1,arrow:A,placement:o,trigger:j,mouseEnterDelay:l,mouseLeaveDelay:u,..._,prefixCls:E,classNames:{root:F,container:N.container,arrow:N.arrow},styles:{root:{...P.root,...b,...f},container:P.container,arrow:P.arrow},ref:t,open:I,onOpenChange:R,overlay:z||B?C.createElement(_x,{prefixCls:E,title:z,content:B,classNames:N,styles:P}):null,motion:{motionName:Nm(k,`zoom-big`,typeof h?.motionName==`string`?h?.motionName:void 0)},"data-popover-inject":!0},c)});yx._InternalPanelDoNotUseOrYouWillBeFired=vx;var bx=e=>{let{size:t,shape:n}=C.useContext(jb),r=C.useMemo(()=>({size:e.size||t,shape:e.shape||n}),[e.size,e.shape,t,n]);return C.createElement(jb.Provider,{value:r},e.children)},lie=e=>{let{getPrefixCls:t,direction:n}=C.useContext(si),{prefixCls:r,className:i,rootClassName:a,style:o,maxCount:s,maxStyle:c,size:l,shape:u,maxPopoverPlacement:d,maxPopoverTrigger:f,children:p,max:m}=e,h=t(`avatar`,r),g=`${h}-group`,_=xf(h),[v,y]=Pb(h,_),b=q(g,{[`${g}-rtl`]:n===`rtl`},y,_,i,a,v),x=wr(p).map((e,t)=>Fp(e,{key:`avatar-key-${t}`})),S=m?.count||s,w=x.length;if(S&&SC.createElement(Y,Sx({},e,{ref:t,icon:uie}))),fie={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z`}}]},name:`left`,theme:`outlined`};function Cx(){return Cx=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,Cx({},e,{ref:t,icon:fie}))),{ESC:pie,TAB:mie}=em;function hie({visible:e,triggerRef:t,onVisibleChange:n,autoFocus:r,overlayRef:i}){let a=C.useRef(!1),o=()=>{e&&(t.current?.focus?.(),n?.(!1))},s=()=>i.current?.focus?(i.current.focus(),a.current=!0,!0):!1,c=e=>{switch(e.keyCode){case pie:o();break;case mie:{let t=!1;a.current||(t=s()),t?e.preventDefault():o();break}}};C.useEffect(()=>e?(window.addEventListener(`keydown`,c),r&&ii(s,3),()=>{window.removeEventListener(`keydown`,c),a.current=!1}):()=>{a.current=!1},[e])}var gie=(0,C.forwardRef)((e,t)=>{let{overlay:n,arrow:r,prefixCls:i}=e,a=(0,C.useMemo)(()=>{let e;return e=typeof n==`function`?n():n,e},[n]),o=er(t,ar(a));return C.createElement(C.Fragment,null,r&&C.createElement(`div`,{className:`${i}-arrow`}),C.cloneElement(a,{ref:nr(a)?o:void 0}))}),Tx={adjustX:1,adjustY:1},Ex=[0,0],_ie={topLeft:{points:[`bl`,`tl`],overflow:Tx,offset:[0,-4],targetOffset:Ex},top:{points:[`bc`,`tc`],overflow:Tx,offset:[0,-4],targetOffset:Ex},topRight:{points:[`br`,`tr`],overflow:Tx,offset:[0,-4],targetOffset:Ex},bottomLeft:{points:[`tl`,`bl`],overflow:Tx,offset:[0,4],targetOffset:Ex},bottom:{points:[`tc`,`bc`],overflow:Tx,offset:[0,4],targetOffset:Ex},bottomRight:{points:[`tr`,`br`],overflow:Tx,offset:[0,4],targetOffset:Ex}};function Dx(){return Dx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{arrow:n=!1,prefixCls:r=`rc-dropdown`,transitionName:i,animation:a,align:o,placement:s=`bottomLeft`,placements:c=_ie,getPopupContainer:l,showAction:u,hideAction:d,overlayClassName:f,overlayStyle:p,visible:m,trigger:h=[`hover`],autoFocus:g,overlay:_,children:v,onVisibleChange:y,...b}=e,[x,S]=C.useState(),w=`visible`in e?m:x,T=a?`${r}-${a}`:i,E=C.useRef(null),D=C.useRef(null),O=C.useRef(null);C.useImperativeHandle(t,()=>E.current);let k=e=>{S(e),y?.(e)};hie({visible:w,triggerRef:O,onVisibleChange:k,autoFocus:g,overlayRef:D});let A=t=>{let{onOverlayClick:n}=e;S(!1),n&&n(t)},j=()=>C.createElement(gie,{ref:D,overlay:_,prefixCls:r,arrow:n}),M=()=>typeof _==`function`?j:j(),N=()=>{let{minOverlayWidthMatchTrigger:t,alignPoint:n}=e;return`minOverlayWidthMatchTrigger`in e?t:!n},P=C.cloneElement(v,{className:q(v.props?.className,w&&(()=>{let{openClassName:t}=e;return t===void 0?`${r}-open`:t})()),ref:nr(v)?er(O,ar(v)):void 0}),F=d;return!F&&h.indexOf(`contextMenu`)!==-1&&(F=[`click`]),C.createElement(Mp,Dx({builtinPlacements:c},b,{prefixCls:r,ref:E,popupClassName:q(f,{[`${r}-show-arrow`]:n}),popupStyle:p,action:h,showAction:u,hideAction:F,popupPlacement:s,popupAlign:o,popupMotion:{motionName:T},popupVisible:w,stretch:N()?`minWidth`:``,popup:M(),onOpenChange:k,onPopupClick:A,getPopupContainer:l}),P)}),kx=C.createContext(null);function Ax(e,t){return`${e}-${t}`}function jx(e){return Ax(C.useContext(kx),e)}var Mx=C.createContext(null);function vie(e,t){let n={...e};return Object.keys(t).forEach(e=>{let r=t[e];r!==void 0&&(n[e]=r)}),n}function Nx({children:e,locked:t,...n}){let r=C.useContext(Mx),i=qn(()=>vie(r,n),[r,n],(e,n)=>!t&&(e[0]!==n[0]||!Ei(e[1],n[1],!0)));return C.createElement(Mx.Provider,{value:i},e)}var yie=[],Px=C.createContext(null);function Fx(){return C.useContext(Px)}var Ix=C.createContext(yie);function Lx(e){let t=C.useContext(Ix);return C.useMemo(()=>e===void 0?t:[...t,e],[t,e])}var Rx=C.createContext(null),zx=C.createContext({}),{LEFT:Bx,RIGHT:Vx,UP:Hx,DOWN:Ux,ENTER:Wx,ESC:Gx,HOME:Kx,END:qx}=em,Jx=[Hx,Ux,Bx,Vx];function bie(e,t,n,r){let i=`prev`,a=`next`,o=`children`,s=`parent`;if(e===`inline`&&r===Wx)return{inlineTrigger:!0};let c={[Hx]:i,[Ux]:a},l={[Bx]:n?a:i,[Vx]:n?i:a,[Ux]:o,[Wx]:o},u={[Hx]:i,[Ux]:a,[Wx]:o,[Gx]:s,[Bx]:n?o:s,[Vx]:n?s:o};switch({inline:c,horizontal:l,vertical:u,inlineSub:c,horizontalSub:u,verticalSub:u}[`${e}${t?``:`Sub`}`]?.[r]){case i:return{offset:-1,sibling:!0};case a:return{offset:1,sibling:!0};case s:return{offset:-1,sibling:!1};case o:return{offset:1,sibling:!1};default:return null}}function xie(e){let t=e;for(;t;){if(t.getAttribute(`data-menu-list`))return t;t=t.parentElement}return null}function Sie(e,t){let n=e||document.activeElement;for(;n;){if(t.has(n))return n;n=n.parentElement}return null}function Yx(e,t){return dg(e,!0).filter(e=>t.has(e))}function Xx(e,t,n,r=1){if(!e)return null;let i=Yx(e,t),a=i.length,o=i.findIndex(e=>n===e);return r<0?o===-1?o=a-1:--o:r>0&&(o+=1),o=(o+a)%a,i[o]}var Zx=(e,t)=>{let n=new Set,r=new Map,i=new Map;return e.forEach(e=>{let a=document.querySelector(`[data-menu-id='${Ax(t,e)}']`);a&&(n.add(a),i.set(a,e),r.set(e,a))}),{elements:n,key2element:r,element2key:i}};function Cie(e,t,n,r,i,a,o,s,c,l){let u=C.useRef(),d=C.useRef();d.current=t;let f=()=>{ii.cancel(u.current)};return C.useEffect(()=>()=>{f()},[]),p=>{let{which:m}=p;if([...Jx,Wx,Gx,Kx,qx].includes(m)){let l=a(),h=Zx(l,r),{elements:g,key2element:_,element2key:v}=h,y=Sie(_.get(t),g),b=v.get(y),x=bie(e,o(b,!0).length===1,n,m);if(!x&&m!==Kx&&m!==qx)return;(Jx.includes(m)||[Kx,qx].includes(m))&&p.preventDefault();let S=e=>{if(e){let t=e,n=e.querySelector(`a`);n?.getAttribute(`href`)&&(t=n);let r=v.get(e);s(r),f(),u.current=ii(()=>{d.current===r&&t.focus()})}};if([Kx,qx].includes(m)||x.sibling||!y){let t;t=!y||e===`inline`?i.current:xie(y);let n,r=Yx(t,g);n=m===Kx?r[0]:m===qx?r[r.length-1]:Xx(t,g,y,x.offset),S(n)}else if(x.inlineTrigger)c(b);else if(x.offset>0)c(b,!0),f(),u.current=ii(()=>{h=Zx(l,r);let e=y.getAttribute(`aria-controls`);S(Xx(document.getElementById(e),h.elements))},5);else if(x.offset<0){let e=o(b,!0),t=e[e.length-2],n=_.get(t);c(t,!1),S(n)}}l?.(p)}}function wie(e){Promise.resolve().then(e)}var Qx=`__RC_UTIL_PATH_SPLIT__`,$x=e=>e.join(Qx),Tie=e=>e.split(Qx),eS=`rc-menu-more`;function Eie(){let[,e]=C.useState({}),t=(0,C.useRef)(new Map),n=(0,C.useRef)(new Map),[r,i]=C.useState([]),a=(0,C.useRef)(0),o=(0,C.useRef)(!1),s=()=>{o.current||e({})},c=(0,C.useCallback)((e,r)=>{let i=$x(r);n.current.set(i,e),t.current.set(e,i),a.current+=1;let o=a.current;wie(()=>{o===a.current&&s()})},[]),l=(0,C.useCallback)((e,r)=>{let i=$x(r);n.current.delete(i),t.current.delete(e)},[]),u=(0,C.useCallback)(e=>{i(e)},[]),d=(0,C.useCallback)((e,n)=>{let i=Tie(t.current.get(e)||``);return n&&r.includes(i[0])&&i.unshift(eS),i},[r]),f=(0,C.useCallback)((e,t)=>e.filter(e=>e!==void 0).some(e=>d(e,!0).includes(t)),[d]),p=()=>{let e=[...t.current.keys()];return r.length&&e.push(eS),e},m=(0,C.useCallback)(e=>{let r=`${t.current.get(e)}${Qx}`,i=new Set;return[...n.current.keys()].forEach(e=>{e.startsWith(r)&&i.add(n.current.get(e))}),i},[]);return C.useEffect(()=>()=>{o.current=!0},[]),{registerPath:c,unregisterPath:l,refreshOverflowKeys:u,isSubPathKey:f,getKeyPath:d,getKeys:p,getSubPathKeys:m}}function tS(e){let t=C.useRef(e);t.current=e;let n=C.useCallback((...e)=>t.current?.(...e),[]);return e?n:void 0}function nS(e,t,n,r){let{activeKey:i,onActive:a,onInactive:o}=C.useContext(Mx),s={active:i===e};return t||(s.onMouseEnter=t=>{n?.({key:e,domEvent:t}),a(e)},s.onMouseLeave=t=>{r?.({key:e,domEvent:t}),o(e)}),s}function rS(e){let{mode:t,rtl:n,inlineIndent:r}=C.useContext(Mx);if(t!==`inline`)return null;let i=e;return n?{paddingRight:i*r}:{paddingLeft:i*r}}function iS({icon:e,props:t,children:n}){let r;return e===null||e===!1?null:(typeof e==`function`?r=C.createElement(e,{...t}):typeof e!=`boolean`&&(r=e),r||n||null)}function aS({item:e,...t}){return Object.defineProperty(t,`item`,{get:()=>(xr(!1,"`info.item` is deprecated since we will move to function component that not provides React Node instance in future."),e)}),t}function oS(){return oS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{style:n,className:r,eventKey:i,warnKey:a,disabled:o,itemIcon:s,children:c,role:l,onMouseEnter:u,onMouseLeave:d,onClick:f,onKeyDown:p,onFocus:m,...h}=e,g=jx(i),{prefixCls:_,onItemClick:v,disabled:y,overflowDisabled:b,itemIcon:x,selectedKeys:S,onActive:w}=C.useContext(Mx),{_internalRenderMenuItem:T}=C.useContext(zx),E=`${_}-item`,D=C.useRef(),O=C.useRef(),k=y||o,A=tr(t,O),j=Lx(i),M=e=>({key:i,keyPath:[...j].reverse(),item:D.current,domEvent:e}),N=s||x,{active:P,...F}=nS(i,k,u,d),I=S.includes(i),L=rS(j.length),R=e=>{if(k)return;let t=M(e);f?.(aS(t)),v(t)},z=e=>{if(p?.(e),e.which===em.ENTER){let t=M(e);f?.(aS(t)),v(t)}},B=e=>{w(i),m?.(e)},V={};e.role===`option`&&(V[`aria-selected`]=I);let H=C.createElement(Die,oS({ref:D,elementRef:A,role:l===null?`none`:l||`menuitem`,tabIndex:o?null:-1,"data-menu-id":b&&g?null:g},Cr(h,[`extra`]),F,V,{component:`li`,"aria-disabled":o,style:{...L,...n},className:q(E,{[`${E}-active`]:P,[`${E}-selected`]:I,[`${E}-disabled`]:k},r),onClick:R,onKeyDown:z,onFocus:B}),c,C.createElement(iS,{props:{...e,isSelected:I},icon:N}));return T&&(H=T(H,e,{selected:I})),H});function kie(e,t){let{eventKey:n}=e,r=Fx(),i=Lx(n);return C.useEffect(()=>{if(r)return r.registerPath(n,i),()=>{r.unregisterPath(n,i)}},[i]),r?null:C.createElement(Oie,oS({},e,{ref:t}))}var sS=C.forwardRef(kie);function cS(){return cS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:i,mode:a,rtl:o}=C.useContext(Mx);return C.createElement(`ul`,cS({className:q(i,o&&`${i}-rtl`,`${i}-sub`,`${i}-${a===`inline`?`inline`:`vertical`}`,e),role:`menu`},n,{"data-menu-list":!0,ref:r}),t)});function uS(e,t){return wr(e).map((e,n)=>{if(C.isValidElement(e)){let{key:r}=e,i=e.props?.eventKey??r;i??=`tmp_key-${[...t,n].join(`-`)}`;let a={key:i,eventKey:i};return C.cloneElement(e,a)}return e})}var dS={adjustX:1,adjustY:1},Aie={topLeft:{points:[`bl`,`tl`],overflow:dS},topRight:{points:[`br`,`tr`],overflow:dS},bottomLeft:{points:[`tl`,`bl`],overflow:dS},bottomRight:{points:[`tr`,`br`],overflow:dS},leftTop:{points:[`tr`,`tl`],overflow:dS},leftBottom:{points:[`br`,`bl`],overflow:dS},rightTop:{points:[`tl`,`tr`],overflow:dS},rightBottom:{points:[`bl`,`br`],overflow:dS}},jie={topLeft:{points:[`bl`,`tl`],overflow:dS},topRight:{points:[`br`,`tr`],overflow:dS},bottomLeft:{points:[`tl`,`bl`],overflow:dS},bottomRight:{points:[`tr`,`br`],overflow:dS},rightTop:{points:[`tr`,`tl`],overflow:dS},rightBottom:{points:[`br`,`bl`],overflow:dS},leftTop:{points:[`tl`,`tr`],overflow:dS},leftBottom:{points:[`bl`,`br`],overflow:dS}};function fS(e,t,n){if(t)return t;if(n)return n[e]||n.other}var Mie={horizontal:`bottomLeft`,vertical:`rightTop`,"vertical-left":`rightTop`,"vertical-right":`leftTop`};function Nie({prefixCls:e,visible:t,children:n,popup:r,popupStyle:i,popupClassName:a,popupOffset:o,disabled:s,mode:c,onVisibleChange:l}){let{getPopupContainer:u,rtl:d,subMenuOpenDelay:f,subMenuCloseDelay:p,builtinPlacements:m,triggerSubMenuAction:h,forceSubMenuRender:g,rootClassName:_,motion:v,defaultMotions:y}=C.useContext(Mx),[b,x]=C.useState(!1),S=d?{...jie,...m}:{...Aie,...m},w=Mie[c],T=fS(c,v,y),E=C.useRef(T);c!==`inline`&&(E.current=T);let D={...E.current,leavedClassName:`${e}-hidden`,removeOnLeave:!1,motionAppear:!0},O=C.useRef();return C.useEffect(()=>(O.current=ii(()=>{x(t)}),()=>{ii.cancel(O.current)}),[t]),C.createElement(Mp,{prefixCls:e,popupClassName:q(`${e}-popup`,{[`${e}-rtl`]:d},a,_),stretch:c===`horizontal`?`minWidth`:null,getPopupContainer:u,builtinPlacements:S,popupPlacement:w,popupVisible:b,popup:r,popupStyle:i,popupAlign:o&&{offset:o},action:s?[]:[h],mouseEnterDelay:f,mouseLeaveDelay:p,onPopupVisibleChange:l,forceRender:g,popupMotion:D,fresh:!0},n)}function pS(){return pS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{u.current&&f(!1)},[l]);let m={...fS(i,s,c)};n.length>1&&(m.motionAppear=!1);let h=m.onVisibleChanged;return m.onVisibleChanged=e=>(!u.current&&!e&&f(!0),h?.(e)),d?null:C.createElement(Nx,{mode:i,locked:!u.current},C.createElement(Lu,pS({visible:p},m,{forceRender:o,removeOnLeave:!1,leavedClassName:`${a}-hidden`}),({className:t,style:n})=>C.createElement(lS,{id:e,className:t,style:n},r)))}function mS(){return mS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{style:n,className:r,styles:i,classNames:a,title:o,eventKey:s,warnKey:c,disabled:l,internalPopupClose:u,children:d,itemIcon:f,expandIcon:p,popupClassName:m,popupOffset:h,popupStyle:g,onClick:_,onMouseEnter:v,onMouseLeave:y,onTitleClick:b,onTitleMouseEnter:x,onTitleMouseLeave:S,popupRender:w,...T}=e,E=jx(s),{prefixCls:D,mode:O,openKeys:k,disabled:A,overflowDisabled:j,activeKey:M,selectedKeys:N,itemIcon:P,expandIcon:F,onItemClick:I,onOpenChange:L,onActive:R,popupRender:z}=C.useContext(Mx),{_internalRenderSubMenuItem:B}=C.useContext(zx),{isSubPathKey:V}=C.useContext(Rx),H=Lx(),U=`${D}-submenu`,W=A||l,ee=C.useRef(),te=C.useRef(),ne=f??P,re=p??F,ie=k.includes(s),ae=!j&&ie,G=V(N,s),{active:oe,...K}=nS(s,W,x,S),[se,ce]=C.useState(!1),le=e=>{W||ce(e)},ue=e=>{le(!0),v?.({key:s,domEvent:e})},de=e=>{le(!1),y?.({key:s,domEvent:e})},fe=C.useMemo(()=>oe||(O===`inline`?!1:se||V([M],s)),[O,oe,M,se,s,V]),pe=rS(H.length),me=e=>{W||(b?.({key:s,domEvent:e}),O===`inline`&&L(s,!ie))},he=tS(e=>{_?.(aS(e)),I(e)}),ge=e=>{O!==`inline`&&L(s,e)},_e=()=>{R(s)},ve=E&&`${E}-popup`,ye=C.useMemo(()=>C.createElement(iS,{icon:O===`horizontal`?void 0:re,props:{...e,isOpen:ae,isSubMenu:!0}},C.createElement(`i`,{className:`${U}-arrow`})),[O,re,e,ae,U]),be=C.createElement(`div`,mS({role:`menuitem`,style:pe,className:`${U}-title`,tabIndex:W?null:-1,ref:ee,title:typeof o==`string`?o:null,"data-menu-id":j&&E?null:E,"aria-expanded":ae,"aria-haspopup":!0,"aria-controls":ve,"aria-disabled":W,onClick:me,onFocus:_e},K),o,ye),xe=C.useRef(O);O!==`inline`&&H.length>1?xe.current=`vertical`:xe.current=O;let Se=xe.current,Ce=C.useMemo(()=>{let t=C.createElement(Nx,{classNames:a,styles:i,mode:Se===`horizontal`?`vertical`:Se},C.createElement(lS,{id:ve,ref:te},d)),n=w||z;return n?n(t,{item:e,keys:H}):t},[w,z,H,ve,d,e,Se]);if(!j){let e=xe.current;be=C.createElement(Nie,{mode:e,prefixCls:U,visible:!u&&ae&&O!==`inline`,popupClassName:m,popupOffset:h,popupStyle:g,popup:Ce,disabled:W,onVisibleChange:ge},be)}let we=C.createElement(fy.Item,mS({ref:t,role:`none`},T,{component:`li`,style:n,className:q(U,`${U}-${O}`,r,{[`${U}-open`]:ae,[`${U}-active`]:fe,[`${U}-selected`]:G,[`${U}-disabled`]:W}),onMouseEnter:ue,onMouseLeave:de}),be,!j&&C.createElement(Pie,{id:ve,open:ae,keyPath:H},d));return B&&(we=B(we,e,{selected:G,active:fe,open:ae,disabled:W})),C.createElement(Nx,{classNames:a,styles:i,onItemClick:he,mode:O===`horizontal`?`vertical`:O,itemIcon:ne,expandIcon:re},we)}),hS=C.forwardRef((e,t)=>{let{eventKey:n,children:r}=e,i=Lx(n),a=uS(r,i),o=Fx();C.useEffect(()=>{if(o)return o.registerPath(n,i),()=>{o.unregisterPath(n,i)}},[i]);let s;return s=o?a:C.createElement(Fie,mS({ref:t},e),a),C.createElement(Ix.Provider,{value:i},s)});function gS({className:e,style:t}){let{prefixCls:n}=C.useContext(Mx);return Fx()?null:C.createElement(`li`,{role:`separator`,className:q(`${n}-item-divider`,e),style:t})}function _S(){return _S=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{className:n,title:r,eventKey:i,children:a,...o}=e,{prefixCls:s,classNames:c,styles:l}=C.useContext(Mx),u=`${s}-item-group`;return C.createElement(`li`,_S({ref:t,role:`presentation`},o,{onClick:e=>e.stopPropagation(),className:q(u,n)}),C.createElement(`div`,{role:`presentation`,className:q(`${u}-title`,c?.listTitle),style:l?.listTitle,title:typeof r==`string`?r:void 0},r),C.createElement(`ul`,{role:`group`,className:q(`${u}-list`,c?.list),style:l?.list},a))}),vS=C.forwardRef((e,t)=>{let{eventKey:n,children:r}=e,i=uS(r,Lx(n));return Fx()?i:C.createElement(Iie,_S({ref:t},Cr(e,[`warnKey`])),i)});function yS(){return yS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(e&&typeof e==`object`){let{label:c,children:l,key:u,type:d,extra:f,...p}=e,m=u??`tmp-${s}`;return l||d===`group`?d===`group`?C.createElement(i,yS({key:m},p,{title:c}),bS(l,t,n)):C.createElement(a,yS({key:m},p,{title:c}),bS(l,t,n)):d===`divider`?C.createElement(o,yS({key:m},p)):C.createElement(r,yS({key:m},p,{extra:f}),c,(!!f||f===0)&&C.createElement(`span`,{className:`${n}-item-extra`},f))}return null}).filter(e=>e)}function xS(e,t,n,r,i){let a=e,o={divider:gS,item:sS,group:vS,submenu:hS,...r};return t&&(a=bS(t,o,i)),uS(a,n)}function SS(){return SS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n=`rc-menu`,rootClassName:r,style:i,className:a,styles:o,classNames:s,tabIndex:c=0,items:l,children:u,direction:d,id:f,mode:p=`vertical`,inlineCollapsed:m,disabled:h,disabledOverflow:g,subMenuOpenDelay:_=.1,subMenuCloseDelay:v=.1,forceSubMenuRender:y,defaultOpenKeys:b,openKeys:x,activeKey:S,defaultActiveFirst:w,selectable:T=!0,multiple:E=!1,defaultSelectedKeys:D,selectedKeys:O,onSelect:k,onDeselect:A,inlineIndent:j=24,motion:M,defaultMotions:N,triggerSubMenuAction:P=`hover`,builtinPlacements:F,itemIcon:I,expandIcon:L,overflowedIndicator:R=`...`,overflowedIndicatorPopupClassName:z,getPopupContainer:B,onClick:V,onOpenChange:H,onKeyDown:U,openAnimation:W,openTransitionName:ee,_internalRenderMenuItem:te,_internalRenderSubMenuItem:ne,_internalComponents:re,popupRender:ie,...ae}=e,[G,oe]=C.useMemo(()=>[xS(u,l,CS,re,n),xS(u,l,CS,{},n)],[u,l,re]),[K,se]=C.useState(!1),ce=C.useRef(),le=Bf(f?`rc-menu-uuid-${f}`:`rc-menu-uuid`),ue=d===`rtl`,[de,fe]=Wn(b,x),pe=de||CS,me=(e,t=!1)=>{function n(){fe(e),H?.(e)}t?(0,Yf.flushSync)(n):n()},[he,ge]=C.useState(pe),_e=C.useRef(!1),[ve,ye]=C.useMemo(()=>(p===`inline`||p===`vertical`)&&m?[`vertical`,m]:[p,!1],[p,m]),be=ve===`inline`,[xe,Se]=C.useState(ve),[Ce,we]=C.useState(ye);C.useEffect(()=>{Se(ve),we(ye),_e.current&&(be?fe(he):me(CS))},[ve,ye]);let[Te,Ee]=C.useState(0),De=Te>=G.length-1||xe!==`horizontal`||g;C.useEffect(()=>{be&&ge(pe)},[pe]),C.useEffect(()=>(_e.current=!0,()=>{_e.current=!1}),[]);let{registerPath:Oe,unregisterPath:ke,refreshOverflowKeys:Ae,isSubPathKey:je,getKeyPath:Me,getKeys:Ne,getSubPathKeys:Pe}=Eie(),Fe=C.useMemo(()=>({registerPath:Oe,unregisterPath:ke}),[Oe,ke]),Ie=C.useMemo(()=>({isSubPathKey:je}),[je]);C.useEffect(()=>{Ae(De?CS:G.slice(Te+1).map(e=>e.key))},[Te,De]);let[Le,Re]=Wn(S||w&&G[0]?.key,S),ze=tS(e=>{Re(e)}),Be=tS(()=>{Re(void 0)});(0,C.useImperativeHandle)(t,()=>({list:ce.current,focus:e=>{let t=Ne(),{elements:n,key2element:r,element2key:i}=Zx(t,le),a=Yx(ce.current,n),o;o=Le&&t.includes(Le)?Le:a[0]?i.get(a[0]):G.find(e=>!e.props.disabled)?.key;let s=r.get(o);o&&s&&s?.focus?.(e)},findItem:({key:e})=>{let{key2element:t}=Zx(Ne(),le);return t.get(e)||null}}));let[Ve,He]=Wn(D||[],O),Ue=C.useMemo(()=>Array.isArray(Ve)?Ve:Ve==null?CS:[Ve],[Ve]),We=e=>{if(T){let{key:t}=e,n=Ue.includes(t),r;r=E?n?Ue.filter(e=>e!==t):[...Ue,t]:[t],He(r);let i={...e,selectedKeys:r};n?A?.(i):k?.(i)}!E&&pe.length&&xe!==`inline`&&me(CS)},Ge=tS(e=>{V?.(aS(e)),We(e)}),Ke=tS((e,t)=>{let n=pe.filter(t=>t!==e);if(t)n.push(e);else if(xe!==`inline`){let t=Pe(e);n=n.filter(e=>!t.has(e))}Ei(pe,n,!0)||me(n,!0)}),qe=Cie(xe,Le,ue,le,ce,Ne,Me,Re,(e,t)=>{Ke(e,t??!pe.includes(e))},U);C.useEffect(()=>{se(!0)},[]);let Je=C.useMemo(()=>({_internalRenderMenuItem:te,_internalRenderSubMenuItem:ne}),[te,ne]),Ye=xe!==`horizontal`||g?G:G.map((e,t)=>C.createElement(Nx,{key:e.key,overflowDisabled:t>Te,classNames:s,styles:o},e)),Xe=C.createElement(fy,SS({id:f,ref:ce,prefixCls:`${n}-overflow`,component:`ul`,itemComponent:sS,className:q(n,`${n}-root`,`${n}-${xe}`,a,{[`${n}-inline-collapsed`]:Ce,[`${n}-rtl`]:ue},r),dir:d,style:i,role:`menu`,tabIndex:c,data:Ye,renderRawItem:e=>e,renderRawRest:e=>{let t=e.length,n=t?G.slice(-t):null;return C.createElement(hS,{eventKey:eS,title:R,disabled:De,internalPopupClose:t===0,popupClassName:z},n)},maxCount:xe!==`horizontal`||g?fy.INVALIDATE:fy.RESPONSIVE,ssr:`full`,"data-menu-list":!0,onVisibleChange:e=>{Ee(e)},onKeyDown:qe},ae));return C.createElement(zx.Provider,{value:Je},C.createElement(kx.Provider,{value:le},C.createElement(Nx,{prefixCls:n,rootClassName:r,classNames:s,styles:o,mode:xe,openKeys:pe,rtl:ue,disabled:h,motion:K?M:null,defaultMotions:K?N:null,activeKey:Le,onActive:ze,onInactive:Be,selectedKeys:Ue,inlineIndent:j,subMenuOpenDelay:_,subMenuCloseDelay:v,forceSubMenuRender:y,builtinPlacements:F,triggerSubMenuAction:P,getPopupContainer:B,itemIcon:I,expandIcon:L,onItemClick:Ge,onOpenChange:Ke,popupRender:ie},C.createElement(Rx.Provider,{value:Ie},Xe),C.createElement(`div`,{style:{display:`none`},"aria-hidden":!0},C.createElement(Px.Provider,{value:Fe},oe)))))});wS.Item=sS,wS.SubMenu=hS,wS.ItemGroup=vS,wS.Divider=gS;var Lie={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`bars`,theme:`outlined`};function TS(){return TS=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,TS({},e,{ref:t,icon:Lie}))),DS=C.createContext({siderHook:{addSider:()=>null,removeSider:()=>null}}),Rie=e=>{let{antCls:t,componentCls:n,colorText:r,footerBg:i,headerHeight:a,headerPadding:o,headerColor:s,footerPadding:c,fontSize:l,bodyBg:u,headerBg:d}=e;return{[n]:{display:`flex`,flex:`auto`,flexDirection:`column`,minHeight:0,background:u,"&, *":{boxSizing:`border-box`},[`&${n}-has-sider`]:{flexDirection:`row`,[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:`0 0 auto`},"&-rtl":{direction:`rtl`}},[`${n}-header`]:{height:a,padding:o,color:s,lineHeight:J(a),background:d,[`${t}-menu`]:{lineHeight:`inherit`}},[`${n}-footer`]:{padding:c,color:r,fontSize:l,background:i},[`${n}-content`]:{flex:`auto`,color:r,minHeight:0}}},OS=e=>{let{colorBgLayout:t,controlHeight:n,controlHeightLG:r,colorText:i,controlHeightSM:a,marginXXS:o,colorTextLightSolid:s,colorBgContainer:c}=e,l=r*1.25;return{colorBgHeader:`#001529`,colorBgBody:t,colorBgTrigger:`#002140`,bodyBg:t,headerBg:`#001529`,headerHeight:n*2,headerPadding:`0 ${l}px`,headerColor:i,footerPadding:`${a}px ${l}px`,footerBg:t,siderBg:`#001529`,triggerHeight:r+o*2,triggerBg:`#002140`,triggerColor:s,zeroTriggerWidth:r,zeroTriggerHeight:r,lightSiderBg:c,lightTriggerBg:c,lightTriggerColor:i}},kS=[[`colorBgBody`,`bodyBg`],[`colorBgHeader`,`headerBg`],[`colorBgTrigger`,`triggerBg`]],AS=il(`Layout`,Rie,OS,{deprecatedTokens:kS}),zie=il([`Layout`,`Sider`],e=>{let{componentCls:t,siderBg:n,motionDurationMid:r,motionDurationSlow:i,antCls:a,triggerHeight:o,triggerColor:s,triggerBg:c,headerHeight:l,zeroTriggerWidth:u,zeroTriggerHeight:d,borderRadiusLG:f,lightSiderBg:p,lightTriggerColor:m,lightTriggerBg:h,bodyBg:g}=e;return{[t]:{position:`relative`,minWidth:0,background:n,transition:`all ${r}, background 0s`,"&-has-trigger":{paddingBottom:o},"&-right":{order:1},[`${t}-children`]:{height:`100%`,marginTop:-.1,paddingTop:.1,[`${a}-menu${a}-menu-inline-collapsed`]:{width:`auto`}},[`&-zero-width ${t}-children`]:{overflow:`hidden`},[`${t}-trigger`]:{position:`fixed`,bottom:0,zIndex:1,height:o,color:s,lineHeight:J(o),textAlign:`center`,background:c,cursor:`pointer`,transition:`all ${r}`},[`${t}-zero-width-trigger`]:{position:`absolute`,top:l,insetInlineEnd:e.calc(u).mul(-1).equal(),zIndex:1,width:u,height:d,color:s,fontSize:e.fontSizeXL,display:`flex`,alignItems:`center`,justifyContent:`center`,background:n,borderRadius:`0 ${J(f)} ${J(f)} 0`,cursor:`pointer`,transition:`background-color ${i} ease`,"&::after":{position:`absolute`,inset:0,background:`transparent`,transition:`all ${i}`,content:`""`},"&:hover::after":{background:`rgba(255, 255, 255, 0.2)`},"&-right":{insetInlineStart:e.calc(u).mul(-1).equal(),borderRadius:`${J(f)} 0 0 ${J(f)}`}},"&-light":{background:p,[`${t}-trigger`]:{color:m,background:h},[`${t}-zero-width-trigger`]:{color:m,background:h,border:`1px solid ${g}`,borderInlineStart:0}}}}},OS,{deprecatedTokens:kS}),jS={xs:`479.98px`,sm:`575.98px`,md:`767.98px`,lg:`991.98px`,xl:`1199.98px`,xxl:`1599.98px`,xxxl:`1839.98px`},Bie=e=>!Number.isNaN(Number.parseFloat(e))&&Number.isFinite(Number(e)),MS=C.createContext({}),Vie=(()=>{let e=0;return(t=``)=>(e+=1,`${t}${e}`)})(),NS=C.forwardRef((e,t)=>{let{prefixCls:n,className:r,trigger:i,children:a,defaultCollapsed:o=!1,theme:s=`dark`,style:c={},collapsible:l=!1,reverseArrow:u=!1,width:d=200,collapsedWidth:f=80,zeroWidthTriggerStyle:p,breakpoint:m,onCollapse:h,onBreakpoint:g,..._}=e,{siderHook:v}=(0,C.useContext)(DS),[y,b]=(0,C.useState)(`collapsed`in e?e.collapsed:o),[x,S]=(0,C.useState)(!1);(0,C.useEffect)(()=>{`collapsed`in e&&b(e.collapsed)},[e.collapsed]);let w=(t,n)=>{`collapsed`in e||b(t),h?.(t,n)},{getPrefixCls:T,direction:E}=(0,C.useContext)(si),D=T(`layout-sider`,n),[O,k]=zie(D),A=(0,C.useRef)(null);A.current=e=>{S(e.matches),g?.(e.matches),y!==e.matches&&w(e.matches,`responsive`)},(0,C.useEffect)(()=>{function e(e){return A.current?.(e)}let t;return window?.matchMedia!==void 0&&m&&m in jS&&(t=window.matchMedia(`screen and (max-width: ${jS[m]})`),typeof t?.addEventListener==`function`&&t.addEventListener(`change`,e),e(t)),()=>{typeof t?.removeEventListener==`function`&&t.removeEventListener(`change`,e)}},[m]),(0,C.useEffect)(()=>{let e=Vie(`ant-sider-`);return v.addSider(e),()=>v.removeSider(e)},[]);let j=()=>{w(!y,`clickTrigger`)},M=Cr(_,[`collapsed`]),N=y?f:d,P=Bie(N)?`${N}px`:String(N),F=Number.parseFloat(String(f||0))===0?C.createElement(`span`,{onClick:j,className:q(`${D}-zero-width-trigger`,`${D}-zero-width-trigger-${u?`right`:`left`}`),style:p},i||C.createElement(ES,null)):null,I=E===`rtl`==!u,L={expanded:I?C.createElement(Ch,null):C.createElement(wx,null),collapsed:I?C.createElement(wx,null):C.createElement(Ch,null)}[y?`collapsed`:`expanded`],R=i===null?null:F||C.createElement(`div`,{className:`${D}-trigger`,onClick:j,style:{width:P}},i||L),z={...c,flex:`0 0 ${P}`,maxWidth:P,minWidth:P,width:P},B=q(D,`${D}-${s}`,{[`${D}-collapsed`]:!!y,[`${D}-has-trigger`]:l&&i!==null&&!F,[`${D}-below`]:!!x,[`${D}-zero-width`]:Number.parseFloat(P)===0},r,O,k),V=C.useMemo(()=>({siderCollapsed:y}),[y]);return C.createElement(MS.Provider,{value:V},C.createElement(`aside`,{className:B,...M,style:z,ref:t},C.createElement(`div`,{className:`${D}-children`},a),l||x&&F?R:null))}),Hie={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`ellipsis`,theme:`outlined`};function PS(){return PS=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,PS({},e,{ref:t,icon:Hie}))),IS=(0,C.createContext)({prefixCls:``,firstLevel:!0,inlineCollapsed:!1,styles:null,classNames:null}),LS=e=>{let{prefixCls:t,className:n,dashed:r,...i}=e,{getPrefixCls:a}=C.useContext(si),o=q({[`${a(`menu`,t)}-item-divider-dashed`]:!!r},n);return C.createElement(gS,{className:o,...i})},RS=e=>{let{className:t,children:n,icon:r,title:i,danger:a,extra:o}=e,{prefixCls:s,firstLevel:c,direction:l,disableMenuItemTitleTooltip:u,tooltip:d,inlineCollapsed:f,styles:p,classNames:m}=C.useContext(IS),h=e=>{let t=n?.[0],i=C.createElement(`span`,{className:q(`${s}-title-content`,c?m?.itemContent:m?.subMenu?.itemContent,{[`${s}-title-content-with-extra`]:!!o||o===0}),style:c?p?.itemContent:p?.subMenu?.itemContent},n);return(!r||C.isValidElement(n)&&n.type===`span`)&&n&&e&&c&&typeof t==`string`?C.createElement(`div`,{className:`${s}-inline-collapsed-noicon`},t.charAt(0)):i},{siderCollapsed:g}=C.useContext(MS),_=i;i===void 0?_=c?n:``:i===!1&&(_=``);let v=d===!1?void 0:d,y=v&&v.title!==void 0?v.title:_,b={...v??null,title:y};!g&&!f&&(b.title=null,b.open=!1);let x=wr(n).length,S=C.createElement(sS,{...Cr(e,[`title`,`icon`,`danger`]),className:q(c?m?.item:m?.subMenu?.item,{[`${s}-item-danger`]:a,[`${s}-item-only-child`]:(r?x+1:x)===1},t),style:{...c?p?.item:p?.subMenu?.item,...e.style},title:typeof i==`string`?i:void 0},Fp(r,e=>({className:q(`${s}-item-icon`,c?m?.itemIcon:m?.subMenu?.itemIcon,e.className),style:{...c?p?.itemIcon:p?.subMenu?.itemIcon,...e.style}})),h(f));if(!u&&d!==!1){let e=v&&v.placement?v.placement:l===`rtl`?`left`:`right`,t=`${s}-inline-collapsed-tooltip`,n=e=>({...e,root:q(t,e?.root)}),r=v&&typeof v.classNames==`function`?e=>n(v.classNames(e)):n(v?.classNames);S=C.createElement(fx,{...b,placement:e,classNames:r},S)}return S},zS=C.createContext(null),BS=C.forwardRef((e,t)=>{let{children:n,...r}=e,i=C.useContext(zS),a=C.useMemo(()=>({...i,...r}),[i,r.prefixCls,r.mode,r.selectable,r.rootClassName]),o=ir(n),s=tr(t,o?ar(n):null);return C.createElement(zS.Provider,{value:a},C.createElement(U_,{space:!0},o?C.cloneElement(n,{ref:s}):n))}),Uie=e=>{let{componentCls:t,motionDurationSlow:n,horizontalLineHeight:r,colorSplit:i,lineWidth:a,lineType:o,itemPaddingInline:s}=e;return{[`${t}-horizontal`]:{lineHeight:r,border:0,borderBottom:`${J(a)} ${o} ${i}`,boxShadow:`none`,"&::after":{display:`block`,clear:`both`,height:0,content:`"\\20"`},[`${t}-item, ${t}-submenu`]:{position:`relative`,display:`inline-block`,verticalAlign:`bottom`,paddingInline:s},[`> ${t}-item:hover,
+ `]:{animationName:ch},"&-hidden":{display:`none`},[r]:{...$y(e),cursor:`pointer`,transition:`background-color ${e.motionDurationSlow} ease`,borderRadius:e.borderRadiusSM,"&-group":{color:e.colorTextDescription,fontSize:e.fontSizeSM,cursor:`default`},"&-option":{display:`flex`,"&-content":{flex:`auto`,...Jc},"&-state":{flex:`none`,display:`flex`,alignItems:`center`},[`&-active:not(${r}-option-disabled)`]:{backgroundColor:e.optionActiveBg},[`&-selected:not(${r}-option-disabled)`]:{color:e.optionSelectedColor,fontWeight:e.optionSelectedFontWeight,backgroundColor:e.optionSelectedBg,[`${r}-option-state`]:{color:e.colorPrimary}},"&-disabled":{[`&${r}-option-selected`]:{backgroundColor:e.colorBgContainerDisabled},color:e.colorTextDisabled,cursor:`not-allowed`},"&-grouped":{paddingInlineStart:e.calc(e.controlPaddingHorizontal).mul(2).equal()}},"&-empty":{...$y(e),color:e.colorTextDisabled}},[`${c}:has(+ ${c})`]:{borderEndStartRadius:0,borderEndEndRadius:0,[`& + ${c}`]:{borderStartStartRadius:0,borderStartEndRadius:0}},"&-rtl":{direction:`rtl`}}},lh(e,`slide-up`),lh(e,`slide-down`),ih(e,`move-up`),ih(e,`move-down`)]},sie=e=>{let{componentCls:t}=e;return{[`&${t}-customize`]:{border:0,padding:0,fontSize:`inherit`,lineHeight:`inherit`,[`${t}-placeholder`]:{display:`none`},[`${t}-content`]:{margin:0,padding:0,"&-value":{display:`none`}}}}},eb=4,cie=e=>{let{componentCls:t,calc:n,iconCls:r,paddingXS:i,paddingXXS:a,INTERNAL_FIXED_ITEM_MARGIN:o,lineWidth:s,colorIcon:c,colorIconHover:l,inputPaddingHorizontalBase:u,antCls:d}=e,[f,p]=sl(d,`select`);return{"&-multiple":{[f(`multi-item-background`)]:e.multipleItemBg,[f(`multi-item-border-color`)]:`transparent`,[f(`multi-item-border-radius`)]:e.borderRadiusSM,[f(`multi-item-height`)]:e.multipleItemHeight,[f(`multi-padding-base`)]:`calc((${p(`height`)} - ${p(`multi-item-height`)}) / 2)`,[f(`multi-padding-vertical`)]:`calc(${p(`multi-padding-base`)} - ${o} - ${s})`,[f(`multi-item-padding-horizontal`)]:`calc(${u} - ${p(`multi-padding-vertical`)} - ${s} * 2)`,paddingBlock:p(`multi-padding-vertical`),paddingInlineStart:`calc(${p(`multi-padding-base`)} - ${s})`,[`${t}-prefix`]:{marginInlineStart:p(`multi-item-padding-horizontal`)},[`${t}-prefix + ${t}-content`]:{[`${t}-placeholder`]:{insetInlineStart:0},[`${t}-content-item${t}-content-item-suffix`]:{marginInlineStart:0}},[`${t}-placeholder`]:{position:`absolute`,lineHeight:p(`line-height`),insetInlineStart:p(`multi-item-padding-horizontal`),width:`calc(100% - ${p(`multi-item-padding-horizontal`)})`,top:`50%`,transform:`translateY(-50%)`},[`${t}-content`]:{flexWrap:`wrap`,alignItems:`center`,lineHeight:1,"&-item-prefix":{height:p(`font-size`)},"&-item":{lineHeight:1,maxWidth:`calc(100% - ${eb}px)`},[`${t}-content-item-prefix + ${t}-content-item-suffix,
+ ${t}-content-item-suffix:first-child`]:{marginInlineStart:p(`multi-item-padding-horizontal`)},[`${t}-selection-item`]:{lineHeight:`calc(${p(`multi-item-height`)} - ${s} * 2)`,border:`${s} solid ${p(`multi-item-border-color`)}`,display:`flex`,marginBlock:o,marginInlineEnd:n(o).mul(2).equal(),background:p(`multi-item-background`),borderRadius:p(`multi-item-border-radius`),paddingInlineStart:i,paddingInlineEnd:a,transition:[`height`,`line-height`,`padding`].map(t=>`${t} ${e.motionDurationSlow}`).join(`,`),"&-content":{...Jc,marginInlineEnd:a},"&-remove":{...Xc(),display:`inline-flex`,alignItems:`center`,color:c,fontWeight:`bold`,fontSize:10,lineHeight:`inherit`,cursor:`pointer`,[`> ${r}`]:{verticalAlign:`-0.2em`},"&:hover":{color:l}}},[`${t}-input`]:{lineHeight:n(o).mul(2).add(p(`multi-item-height`)).equal(),width:`calc(var(--select-input-width, 0) * 1px)`,minWidth:eb,maxWidth:`100%`,transition:`line-height ${e.motionDurationSlow}`}},[`&${t}-sm`]:{[f(`multi-item-height`)]:e.multipleItemHeightSM,[f(`multi-item-border-radius`)]:e.borderRadiusXS},[`&${t}-lg`]:{[f(`multi-item-height`)]:e.multipleItemHeightLG,[f(`multi-item-border-radius`)]:e.borderRadius},[`&${t}-filled`]:{[f(`multi-item-border-color`)]:e.colorSplit,[f(`multi-item-background`)]:e.colorBgContainer,[`&${t}-disabled`]:{[f(`multi-item-border-color`)]:`transparent`}}}}},tb=(e,t)=>{let{componentCls:n,antCls:r}=e,[i]=sl(r,`select`),{border:a,borderHover:o,borderActive:s,borderOutline:c}=t,l=t.background||e.selectorBg||e.colorBgContainer;return{[i(`border-color`)]:a,[i(`background-color`)]:l,[i(`color`)]:t.color||e.colorText,[`&:not(${n}-disabled)`]:{"&:hover":{[i(`border-color`)]:o,[i(`background-color`)]:t.backgroundHover||l},[`&${n}-focused`]:{[i(`border-color`)]:s,[i(`background-color`)]:t.backgroundActive||l,boxShadow:`0 0 0 ${J(e.controlOutlineWidth)} ${c}`}},[`&${n}-disabled`]:{[i(`border-color`)]:t.borderDisabled||t.border,[i(`background-color`)]:t.backgroundDisabled||t.background}}},nb=(e,t,n,r={},i={},a)=>{let{componentCls:o}=e;return{[`&${o}-${t}`]:[tb(e,n),{[`&${o}-status-error`]:tb(e,{...n,color:r.color||e.colorError,...r}),[`&${o}-status-warning`]:tb(e,{...n,color:i.color||e.colorWarning,...i})},a]}},lie=e=>{let{componentCls:t,fontHeight:n,controlHeight:r,iconCls:i,antCls:a,calc:o}=e,[s,c]=sl(a,`select`);return{[t]:[{[s(`border-radius`)]:e.borderRadius,[s(`border-color`)]:`#000`,[s(`border-size`)]:e.lineWidth,[s(`background-color`)]:e.colorBgContainer,[s(`font-size`)]:e.fontSize,[s(`line-height`)]:e.lineHeight,[s(`font-height`)]:n,[s(`color`)]:e.colorText,[s(`height`)]:r,[s(`padding-horizontal`)]:o(e.paddingSM).sub(e.lineWidth).equal(),[s(`padding-vertical`)]:`calc((${c(`height`)} - ${c(`font-height`)}) / 2 - ${c(`border-size`)})`,...Yc(e,!0),display:`inline-flex`,flexWrap:`nowrap`,position:`relative`,transition:`all ${e.motionDurationSlow}`,alignItems:`flex-start`,outline:0,cursor:`pointer`,borderRadius:c(`border-radius`),borderWidth:c(`border-size`),borderStyle:e.lineType,borderColor:c(`border-color`),background:c(`background-color`),fontSize:c(`font-size`),lineHeight:c(`line-height`),color:c(`color`),paddingInline:c(`padding-horizontal`),paddingBlock:c(`padding-vertical`),[`${t}-prefix`]:{flex:`none`,lineHeight:1},[`${t}-placeholder`]:{...Jc,color:e.colorTextPlaceholder,pointerEvents:`none`,zIndex:1},[`${t}-content`]:{flex:`auto`,minWidth:0,position:`relative`,display:`flex`,marginInlineEnd:o(e.paddingXXS).mul(1.5).equal(),"&:before":{content:`"\\a0"`,width:0,overflow:`hidden`},"&-value":{visibility:`inherit`},"input[readonly]":{cursor:`inherit`,caretColor:`transparent`}},[`${t}-suffix`]:{flex:`none`,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,lineHeight:1,"> :not(:last-child)":{marginInlineEnd:e.marginXS}},[`${t}-prefix, ${t}-suffix`]:{alignSelf:`center`,[i]:{verticalAlign:`top`}},"&-disabled":{background:e.colorBgContainerDisabled,color:e.colorTextDisabled,cursor:`not-allowed`,input:{cursor:`not-allowed`}},"&-sm":{[s(`height`)]:e.controlHeightSM,[s(`padding-horizontal`)]:o(e.paddingXS).sub(e.lineWidth).equal(),[s(`border-radius`)]:e.borderRadiusSM,[`${t}-clear`]:{insetInlineEnd:c(`padding-horizontal`)}},"&-lg":{[s(`height`)]:e.controlHeightLG,[s(`font-size`)]:e.fontSizeLG,[s(`line-height`)]:e.lineHeightLG,[s(`font-height`)]:e.fontHeightLG,[s(`border-radius`)]:e.borderRadiusLG}},{[`&:not(${t}-customize)`]:{[`${t}-input`]:{outline:`none`,background:`transparent`,appearance:`none`,border:0,margin:0,padding:0,color:c(`color`),"&::-webkit-search-cancel-button":{display:`none`,appearance:`none`}}}},{[`&-single:not(${t}-customize)`]:{[`${t}-input`]:{position:`absolute`,inset:0,lineHeight:`calc(${c(`font-height`)} + ${c(`padding-vertical`)} * 2)`},[`${t}-content`]:{...Jc,alignSelf:`center`,"&-has-value":{display:`block`,"&:before":{display:`none`}},"&-has-search-value":{color:`transparent`},"&-value":{transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,zIndex:1}},[`&${t}-open ${t}-content`]:{color:e.colorTextPlaceholder,"&-has-search-value":{color:`transparent`}}}},{[`&-show-search:not(${t}-customize-input):not(${t}-disabled)`]:{cursor:`text`}},cie(e),nb(e,`outlined`,{border:e.colorBorder,borderHover:e.hoverBorderColor,borderActive:e.activeBorderColor,borderOutline:e.activeOutlineColor,borderDisabled:e.colorBorderDisabled},{border:e.colorError,borderHover:e.colorErrorHover,borderActive:e.colorError,borderOutline:e.colorErrorOutline},{border:e.colorWarning,borderHover:e.colorWarningHover,borderActive:e.colorWarning,borderOutline:e.colorWarningOutline}),nb(e,`filled`,{border:`transparent`,borderHover:`transparent`,borderActive:e.activeBorderColor,borderOutline:`transparent`,borderDisabled:e.colorBorderDisabled,background:e.colorFillTertiary,backgroundHover:e.colorFillSecondary,backgroundActive:e.colorBgContainer},{background:e.colorErrorBg,backgroundHover:e.colorErrorBgHover,borderActive:e.colorError},{background:e.colorWarningBg,backgroundHover:e.colorWarningBgHover,borderActive:e.colorWarning}),nb(e,`borderless`,{border:`transparent`,borderHover:`transparent`,borderActive:`transparent`,borderOutline:`transparent`,background:`transparent`}),nb(e,`underlined`,{border:e.colorBorder,borderHover:e.hoverBorderColor,borderActive:e.activeBorderColor,borderOutline:`transparent`},{border:e.colorError,borderHover:e.colorErrorHover,borderActive:e.colorError},{border:e.colorWarning,borderHover:e.colorWarningHover,borderActive:e.colorWarning},{borderRadius:0,borderTopColor:`transparent`,borderInlineColor:`transparent`}),sie(e)]}},uie=e=>{let{fontSize:t,lineHeight:n,lineWidth:r,controlHeight:i,controlHeightSM:a,controlHeightLG:o,paddingXXS:s,controlPaddingHorizontal:c,zIndexPopupBase:l,colorText:u,fontWeightStrong:d,controlItemBgActive:f,controlItemBgHover:p,colorBgContainer:m,colorFillSecondary:h,colorBgContainerDisabled:g,colorTextDisabled:_,colorPrimaryHover:v,colorPrimary:y,controlOutline:b}=e,x=s*2,S=r*2,C=Math.min(i-x,i-S),w=Math.min(a-x,a-S),T=Math.min(o-x,o-S);return{INTERNAL_FIXED_ITEM_MARGIN:Math.floor(s/2),zIndexPopup:l+50,optionSelectedColor:u,optionSelectedFontWeight:d,optionSelectedBg:f,optionActiveBg:p,optionPadding:`${(i-t*n)/2}px ${c}px`,optionFontSize:t,optionLineHeight:n,optionHeight:i,selectorBg:m,clearBg:m,singleItemHeightLG:o,multipleItemBg:h,multipleItemBorderColor:`transparent`,multipleItemHeight:C,multipleItemHeightSM:w,multipleItemHeightLG:T,multipleSelectorBgDisabled:g,multipleItemColorDisabled:_,multipleItemBorderColorDisabled:`transparent`,showArrowPaddingInlineEnd:Math.ceil(e.fontSize*1.25),hoverBorderColor:v,activeBorderColor:y,activeOutlineColor:b,selectAffixPadding:s}},die=e=>{let{antCls:t,componentCls:n,motionDurationMid:r,inputPaddingHorizontalBase:i}=e,a={[`${n}-clear`]:{opacity:1,background:e.colorBgBase,borderRadius:`50%`}};return{[n]:{...Yc(e),[`${n}-selection-item`]:{flex:1,fontWeight:`normal`,position:`relative`,userSelect:`none`,...Jc,[`> ${t}-typography`]:{display:`inline`}},[`${n}-prefix`]:{flex:`none`,marginInlineEnd:e.selectAffixPadding},[`${n}-clear`]:{position:`absolute`,top:`50%`,insetInlineStart:`auto`,insetInlineEnd:i,zIndex:1,display:`inline-block`,width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:e.calc(e.fontSizeIcon).mul(-1).div(2).equal(),color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:`normal`,lineHeight:1,textAlign:`center`,textTransform:`none`,cursor:`pointer`,opacity:0,transition:[`color`,`opacity`].map(e=>`${e} ${r} ease`).join(`, `),textRendering:`auto`,transform:`translateZ(0)`,"&:before":{display:`block`},"&:hover":{color:e.colorIcon}},"@media(hover:none)":a,"&:hover":a},[`${n}-status`]:{"&-error, &-warning, &-success, &-validating":{[`&${n}-has-feedback`]:{[`${n}-clear`]:{insetInlineEnd:e.calc(i).add(e.fontSize).add(e.paddingXS).equal()}}}}}},fie=e=>{let{componentCls:t}=e;return[{[t]:{[`&${t}-in-form-item`]:{width:`100%`}}},die(e),oie(e),{[`${t}-rtl`]:{direction:`rtl`}},Yh(e,{focusElCls:`${t}-focused`})]},pie=il(`Select`,(e,{rootPrefixCls:t})=>{let n=_s(e,{rootPrefixCls:t,inputPaddingHorizontalBase:e.calc(e.paddingSM).sub(e.lineWidth).equal(),multipleSelectItemHeight:e.multipleItemHeight,selectHeight:e.controlHeight});return[fie(n),lie(n)]},uie,{unitless:{optionLineHeight:!0,optionSelectedFontWeight:!0}}),mie={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z`}}]},name:`check`,theme:`outlined`};function rb(){return rb=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,rb({},e,{ref:t,icon:mie}))),hie={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z`}}]},name:`down`,theme:`outlined`};function ab(){return ab=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,ab({},e,{ref:t,icon:hie}))),gie={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z`}}]},name:`search`,theme:`outlined`};function sb(){return sb=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,sb({},e,{ref:t,icon:gie})));function lb({suffixIcon:e,clearIcon:t,menuItemSelectedIcon:n,removeIcon:r,loading:i,loadingIcon:a,multiple:o,hasFeedback:s,showSuffixIcon:c,feedbackIcon:l,showArrow:u,componentName:d}){let f=t??C.createElement(Il,null),p=t=>e===null&&!s&&!u?null:C.createElement(C.Fragment,null,c!==!1&&t,s&&l),m=null;m=e===void 0?i?p(a??C.createElement(fm,{spin:!0})):({open:e,showSearch:t})=>p(e&&t?C.createElement(cb,null):C.createElement(ob,null)):p(e);let h=null;h=n===void 0?o?C.createElement(ib,null):null:n;let g=null;return g=r===void 0?C.createElement(zl,null):r,{clearIcon:f,suffixIcon:m,itemIcon:h,removeIcon:g}}function ub(e){return C.useMemo(()=>{if(e)return(...t)=>C.createElement(F_,{space:!0},e.apply(void 0,t))},[e])}function db(e,t){return t===void 0?e!==null:t}var fb=`SECRET_COMBOBOX_MODE_DO_NOT_USE`,pb=C.forwardRef((e,t)=>{let{prefixCls:n,bordered:r,className:i,rootClassName:a,getPopupContainer:o,popupClassName:s,dropdownClassName:c,listHeight:l=256,placement:u,listItemHeight:d,size:f,disabled:p,notFoundContent:m,status:h,builtinPlacements:g,dropdownMatchSelectWidth:_,popupMatchSelectWidth:v,direction:y,style:b,allowClear:x,variant:S,popupStyle:w,dropdownStyle:T,transitionName:E,tagRender:D,maxCount:O,prefix:k,dropdownRender:A,popupRender:j,onDropdownVisibleChange:M,onOpenChange:N,styles:P,classNames:F,...I}=e,{getPopupContainer:L,getPrefixCls:R,renderEmpty:z,direction:B,virtual:V,popupMatchSelectWidth:H,popupOverflow:U}=C.useContext(si),{showSearch:W,style:ee,styles:te,className:ne,classNames:re}=ui(`select`),[,ie]=qc(),ae=d??ie?.controlHeight,G=R(`select`,n),oe=R(),K=y??B,{compactSize:se,compactItemClassnames:ce}=Im(G,K),[le,ue]=Qy(`select`,S,r),de=xf(G),[fe,pe]=pie(G,de),me=C.useMemo(()=>{let{mode:t}=e;if(t!==`combobox`)return t===fb?`combobox`:t},[e.mode]),he=me===`multiple`||me===`tags`,ge=db(e.suffixIcon,e.showArrow),_e=v??_??H,ve=ub(j||A),ye=N||M,{status:be,hasFeedback:xe,isFormItemInput:Se,feedbackIcon:Ce}=C.useContext(M_),we=qy(be,h),Te;Te=m===void 0?me===`combobox`?null:z?.(`Select`)||C.createElement(Zy,{componentName:`Select`}):m;let{suffixIcon:Ee,itemIcon:De,removeIcon:Oe,clearIcon:ke}=lb({...I,multiple:he,hasFeedback:xe,feedbackIcon:Ce,showSuffixIcon:ge,prefixCls:G,componentName:`Select`}),Ae=x===!0?{clearIcon:ke}:x,je=Cr(I,[`suffixIcon`,`itemIcon`]),Me=Pm(e=>f??se??e),Ne=C.useContext(Bp),Pe=p??Ne,Fe={...e,variant:le,status:we,disabled:Pe,size:Me},[Ie,Le]=Id([re,F],[te,P],{props:Fe},{popup:{_default:`root`}}),Re=q(Ie.popup?.root,s,c,{[`${G}-dropdown-${K}`]:K===`rtl`},a,pe,de,fe),ze={...Le.popup?.root,...w??T},Be=q({[`${G}-lg`]:Me===`large`,[`${G}-sm`]:Me===`small`,[`${G}-rtl`]:K===`rtl`,[`${G}-${le}`]:ue,[`${G}-in-form-item`]:Se},Ky(G,we,xe),ce,ne,i,Ie.root,a,pe,de,fe),Ve=C.useMemo(()=>u===void 0?K===`rtl`?`bottomRight`:`bottomLeft`:u,[u,K]),[He]=Xd(`SelectLike`,Le.popup?.root?.zIndex??ze?.zIndex);return C.createElement($re,{ref:t,virtual:V,classNames:Ie,styles:Le,showSearch:W,...je,style:{...Le.root,...ee,...b},popupMatchSelectWidth:_e,transitionName:km(oe,`slide-up`,E),builtinPlacements:aie(g,U),listHeight:l,listItemHeight:ae,mode:me,prefixCls:G,placement:Ve,direction:K,prefix:k,suffixIcon:Ee,menuItemSelectedIcon:De,removeIcon:Oe,allowClear:Ae,notFoundContent:Te,className:Be,getPopupContainer:o||L,popupClassName:Re,disabled:Pe,popupStyle:{...Le.popup?.root,...ze,zIndex:He},maxCount:he?O:void 0,tagRender:he?D:void 0,popupRender:ve,onPopupVisibleChange:ye})}),mb=Fv(pb,`popupAlign`);pb.SECRET_COMBOBOX_MODE_DO_NOT_USE=fb,pb.Option=Cy,pb.OptGroup=Sy,pb._InternalPanelDoNotUseOrYouWillBeFired=mb;var hb=[`xxxl`,`xxl`,`xl`,`lg`,`md`,`sm`,`xs`],gb=[].concat(hb).reverse(),_b=e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`,xxxl:`(min-width: ${e.screenXXXL}px)`}),vb=e=>{let t=e,n=[].concat(hb).reverse();return n.forEach((e,r)=>{let i=e.toUpperCase(),a=`screen${i}Min`,o=`screen${i}`;if(!(t[a]<=t[o]))throw Error(`${a}<=${o} fails : !(${t[a]}<=${t[o]})`);if(r{if(t){for(let n of hb)if(e[n]&&t?.[n]!==void 0)return t[n]}},bb=()=>{let[,e]=qc(),t=_b(vb(e));return C.useMemo(()=>{let e=new Map,n=-1,r={};return{responsiveMap:t,matchHandlers:{},dispatch(t){return r=t,e.forEach(e=>{e(r)}),e.size>=1},subscribe(t){return e.size||this.register(),n+=1,e.set(n,t),t(r),n},unsubscribe(t){e.delete(t),e.size||this.unregister()},register(){Object.entries(t).forEach(([e,t])=>{let n=({matches:t})=>{this.dispatch({...r,[e]:t})},i=window.matchMedia(t);typeof i?.addEventListener==`function`&&i.addEventListener(`change`,n),this.matchHandlers[t]={mql:i,listener:n},n(i)})},unregister(){Object.values(t).forEach(e=>{let t=this.matchHandlers[e];typeof t?.mql?.removeEventListener==`function`&&t.mql.removeEventListener(`change`,t?.listener)}),e.clear()}}},[t])};function xb(e=!0,t={}){let n=(0,C.useRef)(t),[,r]=Dd(),i=bb();return Vn(()=>{let t=i.subscribe(t=>{n.current=t,e&&r()});return()=>i.unsubscribe(t)},[]),n.current}var Sb=C.createContext({}),Cb=e=>{let{antCls:t,componentCls:n,iconCls:r,avatarBg:i,avatarColor:a,containerSize:o,containerSizeLG:s,containerSizeSM:c,textFontSize:l,textFontSizeLG:u,textFontSizeSM:d,iconFontSize:f,iconFontSizeLG:p,iconFontSizeSM:m,borderRadius:h,borderRadiusLG:g,borderRadiusSM:_,lineWidth:v,lineType:y}=e,b=(e,t,i,a)=>({width:e,height:e,borderRadius:`50%`,fontSize:t,[`&${n}-square`]:{borderRadius:a},[`&${n}-icon`]:{fontSize:i,[`> ${r}`]:{margin:0}}});return{[n]:{...Yc(e),position:`relative`,display:`inline-flex`,justifyContent:`center`,alignItems:`center`,overflow:`hidden`,color:a,whiteSpace:`nowrap`,textAlign:`center`,verticalAlign:`middle`,background:i,border:`${J(v)} ${y} transparent`,"&-image":{background:`transparent`},[`${t}-image-img`]:{display:`block`},...b(o,l,f,h),"&-lg":{...b(s,u,p,g)},"&-sm":{...b(c,d,m,_)},"> img":{display:`block`,width:`100%`,height:`100%`,objectFit:`cover`}}}},wb=e=>{let{componentCls:t,groupBorderColor:n,groupOverlapping:r,groupSpace:i}=e;return{[`${t}-group`]:{display:`inline-flex`,[t]:{borderColor:n},"> *:not(:first-child)":{marginInlineStart:r}},[`${t}-group-popover`]:{[`${t} + ${t}`]:{marginInlineStart:i}}}},Tb=il(`Avatar`,e=>{let{colorTextLightSolid:t,colorTextPlaceholder:n}=e,r=_s(e,{avatarBg:n,avatarColor:t});return[Cb(r),wb(r)]},e=>{let{controlHeight:t,controlHeightLG:n,controlHeightSM:r,fontSize:i,fontSizeLG:a,fontSizeXL:o,fontSizeHeading3:s,marginXS:c,marginXXS:l,colorBorderBg:u}=e;return{containerSize:t,containerSizeLG:n,containerSizeSM:r,textFontSize:i,textFontSizeLG:i,textFontSizeSM:i,iconFontSize:Math.round((a+o)/2),iconFontSizeLG:s,iconFontSizeSM:i,groupSpace:l,groupOverlapping:-c,groupBorderColor:u}}),Eb=C.forwardRef((e,t)=>{let{prefixCls:n,shape:r,size:i,src:a,srcSet:o,icon:s,className:c,rootClassName:l,style:u,alt:d,draggable:f,children:p,crossOrigin:m,gap:h=4,onError:g,..._}=e,[v,y]=C.useState(1),[b,x]=C.useState(!1),[S,w]=C.useState(!0),T=C.useRef(null),E=C.useRef(null),D=er(t,T),{getPrefixCls:O,className:k,style:A}=ui(`avatar`),j=C.useContext(Sb),M=()=>{if(!E.current||!T.current)return;let e=E.current.offsetWidth,t=T.current.offsetWidth;e!==0&&t!==0&&h*2{x(!0)},[]),C.useEffect(()=>{w(!0),y(1)},[a]),C.useEffect(M,[h]);let N=()=>{g?.()!==!1&&w(!1)},P=Pm(e=>i??j?.size??e??`medium`),F=xb(Object.keys(gd(P)&&P||{}).some(e=>hb.includes(e))),I=C.useMemo(()=>{if(!gd(P))return{};let e=P[hb.find(e=>F[e])];return e?{width:e,height:e,fontSize:e&&(s||p)?e/2:18}:{}},[F,P,s,p]),L=O(`avatar`,n),R=xf(L),[z,B]=Tb(L,R),V=q({[`${L}-lg`]:P===`large`,[`${L}-sm`]:P===`small`}),H=C.isValidElement(a),U=q(L,V,k,`${L}-${r||j?.shape||`circle`}`,{[`${L}-image`]:H||a&&S,[`${L}-icon`]:!!s},B,R,c,l,z),W=md(P)?{width:P,height:P,fontSize:s?P/2:18}:{},ee;if(typeof a==`string`&&S)ee=C.createElement(`img`,{src:a,draggable:f,srcSet:o,onError:N,alt:d,crossOrigin:m});else if(H)ee=a;else if(s)ee=s;else if(b||v!==1){let e=`scale(${v})`,t={msTransform:e,WebkitTransform:e,transform:e};ee=C.createElement(Gr,{onResize:M},C.createElement(`span`,{className:`${L}-string`,ref:E,style:t},p))}else ee=C.createElement(`span`,{className:`${L}-string`,style:{opacity:0},ref:E},p);return C.createElement(`span`,{..._,style:{...W,...I,...A,...u},className:U,ref:D},ee)}),Db=e=>e?typeof e==`function`?e():e:null,Ob=e=>{let{children:t,prefixCls:n,id:r,classNames:i,styles:a,className:o,style:s}=e;return C.createElement(`div`,{id:r,className:q(`${n}-container`,i?.container,o),style:{...a?.container,...s},role:`tooltip`},typeof t==`function`?t():t)},kb={shiftX:64,adjustY:1},Ab={adjustX:1,shiftY:!0},jb=[0,0],Mb={left:{points:[`cr`,`cl`],overflow:Ab,offset:[-4,0],targetOffset:jb},right:{points:[`cl`,`cr`],overflow:Ab,offset:[4,0],targetOffset:jb},top:{points:[`bc`,`tc`],overflow:kb,offset:[0,-4],targetOffset:jb},bottom:{points:[`tc`,`bc`],overflow:kb,offset:[0,4],targetOffset:jb},topLeft:{points:[`bl`,`tl`],overflow:kb,offset:[0,-4],targetOffset:jb},leftTop:{points:[`tr`,`tl`],overflow:Ab,offset:[-4,0],targetOffset:jb},topRight:{points:[`br`,`tr`],overflow:kb,offset:[0,-4],targetOffset:jb},rightTop:{points:[`tl`,`tr`],overflow:Ab,offset:[4,0],targetOffset:jb},bottomRight:{points:[`tr`,`br`],overflow:kb,offset:[0,4],targetOffset:jb},rightBottom:{points:[`bl`,`br`],overflow:Ab,offset:[4,0],targetOffset:jb},bottomLeft:{points:[`tl`,`bl`],overflow:kb,offset:[0,4],targetOffset:jb},leftBottom:{points:[`br`,`bl`],overflow:Ab,offset:[-4,0],targetOffset:jb}};function Nb(){return Nb=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{trigger:n=[`hover`],mouseEnterDelay:r=0,mouseLeaveDelay:i=.1,prefixCls:a=`rc-tooltip`,children:o,onVisibleChange:s,afterVisibleChange:c,motion:l,placement:u=`right`,align:d={},destroyOnHidden:f=!1,defaultVisible:p,getTooltipContainer:m,arrowContent:h,overlay:g,id:_,showArrow:v=!0,classNames:y,styles:b,...x}=e,S=Bf(_),w=(0,C.useRef)(null);(0,C.useImperativeHandle)(t,()=>w.current);let T={...x};`visible`in e&&(T.popupVisible=e.visible);let E=C.useMemo(()=>{if(!v)return!1;let e=v===!0?{}:v;return{...e,className:q(e.className,y?.arrow),style:{...e.style,...b?.arrow},content:e.content??h}},[v,y?.arrow,b?.arrow,h]);return C.createElement(Mp,Nb({popupClassName:y?.root,prefixCls:a,popup:C.createElement(Ob,{key:`content`,prefixCls:a,id:S,classNames:y,styles:b},g),action:n,builtinPlacements:Mb,popupPlacement:u,ref:w,popupAlign:d,getPopupContainer:m,onOpenChange:s,afterOpenChange:c,popupMotion:l,defaultPopupVisible:p,autoDestroy:f,mouseLeaveDelay:i,popupStyle:b?.root,mouseEnterDelay:r,arrow:E,uniqueContainerClassName:y?.uniqueContainer,uniqueContainerStyle:b?.uniqueContainer},T),({open:e})=>{let t=C.Children.only(o),n={"aria-describedby":g&&e?S:void 0};return C.cloneElement(t,n)})});function Pb(e){let{sizePopupArrow:t,borderRadiusXS:n,borderRadiusOuter:r}=e,i=t/2,a=i,o=r*1/Math.sqrt(2),s=i-r*(1-1/Math.sqrt(2)),c=i-1/Math.sqrt(2)*n,l=r*(Math.sqrt(2)-1)+1/Math.sqrt(2)*n,u=2*i-c,d=l,f=2*i-o,p=s,m=2*i-0,h=a,g=i*Math.sqrt(2)+r*(Math.sqrt(2)-2),_=r*(Math.sqrt(2)-1),v=`polygon(${_}px 100%, 50% ${_}px, ${2*i-_}px 100%, ${_}px 100%)`;return{arrowShadowWidth:g,arrowPath:`path('M 0 ${a} A ${r} ${r} 0 0 0 ${o} ${s} L ${c} ${l} A ${n} ${n} 0 0 1 ${u} ${d} L ${f} ${p} A ${r} ${r} 0 0 0 ${m} ${h} Z')`,arrowPolygon:v}}var Fb=(e,t,n)=>{let{sizePopupArrow:r,arrowPolygon:i,arrowPath:a,arrowShadowWidth:o,borderRadiusXS:s,calc:c}=e;return{pointerEvents:`none`,width:r,height:r,overflow:`hidden`,"&::before":{position:`absolute`,bottom:0,insetInlineStart:0,width:r,height:c(r).div(2).equal(),background:t,clipPath:{_multi_value_:!0,value:[i,a]},content:`""`},"&::after":{content:`""`,position:`absolute`,width:o,height:o,bottom:0,insetInline:0,margin:`auto`,borderRadius:{_skip_check_:!0,value:`0 0 ${J(s)} 0`},transform:`translateY(50%) rotate(-135deg)`,boxShadow:n,zIndex:0,background:`transparent`}}};function Ib(e){let{contentRadius:t,limitVerticalRadius:n}=e,r=t>12?t+2:12;return{arrowOffsetHorizontal:r,arrowOffsetVertical:n?8:r}}function Lb(e,t){return e?t:{}}var Rb=(e,t,n)=>{let{componentCls:r,boxShadowPopoverArrow:i,arrowOffsetVertical:a,arrowOffsetHorizontal:o,antCls:s}=e,[c]=sl(s,`tooltip`),{arrowDistance:l=0,arrowPlacement:u={left:!0,right:!0,top:!0,bottom:!0}}=n||{};return{[r]:{[`${r}-arrow`]:[{position:`absolute`,zIndex:1,display:`block`,...Fb(e,t,i),"&:before":{background:t}}],...Lb(!!u.top,{[[`&-placement-top > ${r}-arrow`,`&-placement-topLeft > ${r}-arrow`,`&-placement-topRight > ${r}-arrow`].join(`,`)]:{bottom:l,transform:`translateY(100%) rotate(180deg)`},[`&-placement-top > ${r}-arrow`]:{left:{_skip_check_:!0,value:`50%`},transform:`translateX(-50%) translateY(100%) rotate(180deg)`},"&-placement-topLeft":{[c(`arrow-offset-x`)]:o,[`> ${r}-arrow`]:{left:{_skip_check_:!0,value:o}}},"&-placement-topRight":{[c(`arrow-offset-x`)]:`calc(100% - ${J(o)})`,[`> ${r}-arrow`]:{right:{_skip_check_:!0,value:o}}}}),...Lb(!!u.bottom,{[[`&-placement-bottom > ${r}-arrow`,`&-placement-bottomLeft > ${r}-arrow`,`&-placement-bottomRight > ${r}-arrow`].join(`,`)]:{top:l,transform:`translateY(-100%)`},[`&-placement-bottom > ${r}-arrow`]:{left:{_skip_check_:!0,value:`50%`},transform:`translateX(-50%) translateY(-100%)`},"&-placement-bottomLeft":{[c(`arrow-offset-x`)]:o,[`> ${r}-arrow`]:{left:{_skip_check_:!0,value:o}}},"&-placement-bottomRight":{[c(`arrow-offset-x`)]:`calc(100% - ${J(o)})`,[`> ${r}-arrow`]:{right:{_skip_check_:!0,value:o}}}}),...Lb(!!u.left,{[[`&-placement-left > ${r}-arrow`,`&-placement-leftTop > ${r}-arrow`,`&-placement-leftBottom > ${r}-arrow`].join(`,`)]:{right:{_skip_check_:!0,value:l},transform:`translateX(100%) rotate(90deg)`},[`&-placement-left > ${r}-arrow`]:{top:{_skip_check_:!0,value:`50%`},transform:`translateY(-50%) translateX(100%) rotate(90deg)`},[`&-placement-leftTop > ${r}-arrow`]:{top:a},[`&-placement-leftBottom > ${r}-arrow`]:{bottom:a}}),...Lb(!!u.right,{[[`&-placement-right > ${r}-arrow`,`&-placement-rightTop > ${r}-arrow`,`&-placement-rightBottom > ${r}-arrow`].join(`,`)]:{left:{_skip_check_:!0,value:l},transform:`translateX(-100%) rotate(-90deg)`},[`&-placement-right > ${r}-arrow`]:{top:{_skip_check_:!0,value:`50%`},transform:`translateY(-50%) translateX(-100%) rotate(-90deg)`},[`&-placement-rightTop > ${r}-arrow`]:{top:a},[`&-placement-rightBottom > ${r}-arrow`]:{bottom:a}})}}};function vie(e,t,n,r){if(r===!1)return{adjustX:!1,adjustY:!1};let i=gd(r)?r:{},a={};switch(e){case`top`:case`bottom`:a.shiftX=t.arrowOffsetHorizontal*2+n,a.shiftY=!0,a.adjustY=!0;break;case`left`:case`right`:a.shiftY=t.arrowOffsetVertical*2+n,a.shiftX=!0,a.adjustX=!0;break}let o={...a,...i};return o.shiftX||(o.adjustX=!0),o.shiftY||(o.adjustY=!0),o}var zb={left:{points:[`cr`,`cl`]},right:{points:[`cl`,`cr`]},top:{points:[`bc`,`tc`]},bottom:{points:[`tc`,`bc`]},topLeft:{points:[`bl`,`tl`]},leftTop:{points:[`tr`,`tl`]},topRight:{points:[`br`,`tr`]},rightTop:{points:[`tl`,`tr`]},bottomRight:{points:[`tr`,`br`]},rightBottom:{points:[`bl`,`br`]},bottomLeft:{points:[`tl`,`bl`]},leftBottom:{points:[`br`,`bl`]}},yie={topLeft:{points:[`bl`,`tc`]},leftTop:{points:[`tr`,`cl`]},topRight:{points:[`br`,`tc`]},rightTop:{points:[`tl`,`cr`]},bottomRight:{points:[`tr`,`bc`]},rightBottom:{points:[`bl`,`cr`]},bottomLeft:{points:[`tl`,`bc`]},leftBottom:{points:[`br`,`cl`]}},bie=new Set([`topLeft`,`topRight`,`bottomLeft`,`bottomRight`,`leftTop`,`leftBottom`,`rightTop`,`rightBottom`]);function Bb(e){let{arrowWidth:t,autoAdjustOverflow:n,arrowPointAtCenter:r,offset:i,borderRadius:a,visibleFirst:o}=e,s=t/2,c={},l=Ib({contentRadius:a,limitVerticalRadius:!0});return Object.keys(zb).forEach(e=>{let a={...r&&yie[e]||zb[e],offset:[0,0],dynamicInset:!0};switch(c[e]=a,bie.has(e)&&(a.autoArrow=!1),e){case`top`:case`topLeft`:case`topRight`:a.offset[1]=-s-i;break;case`bottom`:case`bottomLeft`:case`bottomRight`:a.offset[1]=s+i;break;case`left`:case`leftTop`:case`leftBottom`:a.offset[0]=-s-i;break;case`right`:case`rightTop`:case`rightBottom`:a.offset[0]=s+i;break}if(r)switch(e){case`topLeft`:case`bottomLeft`:a.offset[0]=-l.arrowOffsetHorizontal-s;break;case`topRight`:case`bottomRight`:a.offset[0]=l.arrowOffsetHorizontal+s;break;case`leftTop`:case`rightTop`:a.offset[1]=-l.arrowOffsetHorizontal*2+s;break;case`leftBottom`:case`rightBottom`:a.offset[1]=l.arrowOffsetHorizontal*2-s;break}a.overflow=vie(e,l,t,n),o&&(a.htmlRegion=`visibleFirst`)}),c}var Vb=C.createContext(!1),Hb=(e,t)=>{let n=e=>typeof e==`boolean`?{show:e}:e||{};return C.useMemo(()=>{let r=n(e),i=n(t);return{...i,...r,show:r.show??i.show??!0}},[e,t])},Ub=`50%`,xie=e=>{let{calc:t,componentCls:n,tooltipMaxWidth:r,tooltipColor:i,tooltipBg:a,tooltipBorderRadius:o,zIndexPopup:s,controlHeight:c,boxShadowSecondary:l,paddingSM:u,paddingXS:d,arrowOffsetHorizontal:f,sizePopupArrow:p,antCls:m}=e,[h,g]=sl(m,`tooltip`),_=t(o).add(p).add(f).equal(),v={minWidth:t(o).mul(2).add(p).equal(),minHeight:c,padding:`${J(e.calc(u).div(2).equal())} ${J(d)}`,color:g(`overlay-color`,i),textAlign:`start`,textDecoration:`none`,wordWrap:`break-word`,backgroundColor:a,borderRadius:o,boxShadow:l,boxSizing:`border-box`},y={[h(`valid-offset-x`)]:g(`arrow-offset-x`,`var(--arrow-x)`),transformOrigin:[g(`valid-offset-x`,Ub),`var(--arrow-y, ${Ub})`].join(` `)};return[{[n]:{...Yc(e),position:`absolute`,zIndex:s,display:`block`,width:`max-content`,maxWidth:r,visibility:`visible`,...y,"&-hidden":{display:`none`},[h(`arrow-background-color`)]:a,[`${n}-container`]:[v,$m(e,!0)],[`&:has(~ ${n}-unique-container)`]:{[`${n}-container`]:{border:`none`,background:`transparent`,boxShadow:`none`}},[[`&-placement-topLeft`,`&-placement-topRight`,`&-placement-bottomLeft`,`&-placement-bottomRight`].join(`,`)]:{minWidth:_},[[`&-placement-left`,`&-placement-leftTop`,`&-placement-leftBottom`,`&-placement-right`,`&-placement-rightTop`,`&-placement-rightBottom`].join(`,`)]:{[`${n}-inner`]:{borderRadius:e.min(o,8)}},[`${n}-content`]:{position:`relative`},...cl(e,(e,{darkColor:t})=>({[`&${n}-${e}`]:{[`${n}-container`]:{backgroundColor:t},[`${n}-arrow`]:{[h(`arrow-background-color`)]:t}}})),"&-rtl":{direction:`rtl`}}},Rb(e,g(`arrow-background-color`)),{[`${n}-pure`]:{position:`relative`,maxWidth:`none`,margin:e.sizePopupArrow}},{[`${n}-unique-container`]:{...v,...y,position:`absolute`,zIndex:t(s).sub(1).equal(),"&-hidden":{display:`none`},"&-visible":{transition:`all ${e.motionDurationSlow}`}}}]},Sie=e=>({zIndexPopup:e.zIndexPopupBase+70,maxWidth:250,...Ib({contentRadius:e.borderRadius,limitVerticalRadius:!0}),...Pb(_s(e,{borderRadiusOuter:Math.min(e.borderRadiusOuter,4)}))}),Wb=(e,t,n=!0)=>il(`Tooltip`,e=>{let{borderRadius:t,colorTextLightSolid:n,colorBgSpotlight:r,maxWidth:i}=e;return[xie(_s(e,{tooltipMaxWidth:i,tooltipColor:n,tooltipBorderRadius:t,tooltipBg:r})),mh(e,`zoom-big-fast`)]},Sie,{resetStyle:!1,injectStyle:n})(e,t),Cie=Os.map(e=>`${e}-inverse`),wie=[`success`,`processing`,`error`,`default`,`warning`];function Gb(e,t=!0){return t?[].concat(Qr(Cie),Qr(Os)).includes(e):Os.includes(e)}function Tie(e){return wie.includes(e)}var Kb=(e,t,n)=>{let r=Gb(n),[i]=sl(e,`tooltip`),a=q({[`${t}-${n}`]:n&&r}),o={},s={},c=Ph(n).toRgb(),l=(.299*c.r+.587*c.g+.114*c.b)/255<.5?`#FFF`:`#000`;return n&&!r&&(o.background=n,o[i(`overlay-color`)]=l,s[i(`arrow-background-color`)]=n),{className:a,overlayStyle:o,arrowStyle:s}},Eie=e=>{let{prefixCls:t,className:n,placement:r=`top`,title:i,color:a,overlayInnerStyle:o,classNames:s,styles:c}=e,{getPrefixCls:l}=C.useContext(si),u=l(`tooltip`,t),d=l(),f=xf(u),[p,m]=Wb(u,f),h=Kb(d,u,a),g=h.arrowStyle,_=C.useMemo(()=>({container:{...o,...h.overlayStyle}}),[o,h.overlayStyle]),v={...e,placement:r},[y,b]=Id([s],[_,c],{props:v}),x=q(f,p,m,u,`${u}-pure`,`${u}-placement-${r}`,n,h.className);return C.createElement(`div`,{className:x,style:g},C.createElement(`div`,{className:`${u}-arrow`}),C.createElement(Ob,{...e,className:p,prefixCls:u,classNames:y,styles:b},i))},qb=C.forwardRef((e,t)=>{let{prefixCls:n,openClassName:r,getTooltipContainer:i,color:a,children:o,afterOpenChange:s,arrow:c,destroyTooltipOnHide:l,destroyOnHidden:u,title:d,overlay:f,trigger:p,builtinPlacements:m,autoAdjustOverflow:h=!0,motion:g,getPopupContainer:_,placement:v=`top`,mouseEnterDelay:y=.1,mouseLeaveDelay:b=.1,rootClassName:x,styles:S,classNames:w,onOpenChange:T,overlayInnerStyle:E,overlayStyle:D,overlayClassName:O,...k}=e,[,A]=qc(),j=e[`data-popover-inject`],{getPopupContainer:M,getPrefixCls:N,direction:P,...F}=ui(`tooltip`),{className:I,style:L,classNames:R,styles:z,arrow:B,trigger:V}=j?{}:F,H=Hb(c,B),U=H.show,W=p||V||`hover`,ee=_||M,te=u??!!l,ne=C.useContext(Vb);Or(`Tooltip`);let re=C.useRef(null),ie=()=>{re.current?.forceAlign()};C.useImperativeHandle(t,()=>({forceAlign:ie,nativeElement:re.current?.nativeElement,popupElement:re.current?.popupElement}));let[ae,G]=Wn(e.defaultOpen??!1,e.open),oe=!d&&!f&&d!==0,K=e=>{G(oe?!1:e),!oe&&T&&T(e)},se=C.useMemo(()=>m||Bb({arrowPointAtCenter:H?.pointAtCenter??!1,autoAdjustOverflow:h,arrowWidth:U?A.sizePopupArrow:0,borderRadius:A.borderRadius,offset:A.marginXXS,visibleFirst:!0}),[H,m,A,U,h]),ce=C.useMemo(()=>d===0?d:f||d||``,[f,d]),le=C.createElement(F_,{space:!0,form:!0},typeof ce==`function`?ce():ce),ue={...e,trigger:W,builtinPlacements:se,getPopupContainer:ee,destroyOnHidden:te},[de,fe]=Id([R,w],[z,S],{props:ue}),pe=N(`tooltip`,n),me=N(),he=ae;(!(`open`in e)&&oe||ne)&&(he=!1);let ge=C.isValidElement(o)&&!Np(o)?o:C.createElement(`span`,null,o),_e=ge.props,ve=!_e.className||typeof _e.className==`string`?q(_e.className,r||`${pe}-open`):_e.className,ye=xf(pe),[be,xe]=Wb(pe,ye,!j),Se=Kb(me,pe,a),Ce=Se.arrowStyle,we=q(ye,be,xe),Te=q(O,{[`${pe}-rtl`]:P===`rtl`},Se.className,x,we,I,de.root),[Ee,De]=Xd(`Tooltip`,k.zIndex),Oe={...fe.container,...E,...Se.overlayStyle},ke=C.createElement(_ie,{unique:!0,...k,zIndex:Ee,showArrow:U,placement:v,mouseEnterDelay:y,mouseLeaveDelay:b,prefixCls:pe,classNames:{root:Te,container:de.container,arrow:de.arrow,uniqueContainer:q(we,de.container)},styles:{root:{...Ce,...fe.root,...L,...D},container:Oe,uniqueContainer:Oe,arrow:fe.arrow},ref:re,overlay:le,visible:he,onVisibleChange:K,afterVisibleChange:s,arrowContent:C.createElement(`span`,{className:`${pe}-arrow-content`}),motion:{motionName:km(me,`zoom-big-fast`,typeof g?.motionName==`string`?g?.motionName:void 0),motionDeadline:1e3},trigger:W,builtinPlacements:se,getTooltipContainer:ee,destroyOnHidden:te},he?Fp(ge,{className:ve}):ge);return C.createElement(Wd.Provider,{value:De},ke)});qb._InternalPanelDoNotUseOrYouWillBeFired=Eie,qb.UniqueProvider=zp;var Jb=`50%`,Die=e=>{let{componentCls:t,popoverColor:n,titleMinWidth:r,fontWeightStrong:i,innerPadding:a,boxShadowSecondary:o,colorTextHeading:s,borderRadiusLG:c,zIndexPopup:l,titleMarginBottom:u,colorBgElevated:d,popoverBg:f,titleBorderBottom:p,innerContentPadding:m,titlePadding:h,antCls:g}=e,[_,v]=sl(g,`tooltip`);return[{[t]:{...Yc(e),position:`absolute`,top:0,left:{_skip_check_:!0,value:0},zIndex:l,fontWeight:`normal`,whiteSpace:`normal`,textAlign:`start`,cursor:`auto`,userSelect:`text`,[_(`valid-offset-x`)]:v(`arrow-offset-x`,`var(--arrow-x)`),transformOrigin:[v(`valid-offset-x`,Jb),`var(--arrow-y, ${Jb})`].join(` `),[_(`arrow-background-color`)]:d,width:`max-content`,maxWidth:`100vw`,"&-rtl":{direction:`rtl`},"&-hidden":{display:`none`},[`${t}-content`]:{position:`relative`},[`${t}-container`]:{backgroundColor:f,backgroundClip:`padding-box`,borderRadius:c,boxShadow:o,padding:a},[`${t}-title`]:{minWidth:r,marginBottom:u,color:s,fontWeight:i,borderBottom:p,padding:h},[`${t}-content`]:{color:n,padding:m}}},Rb(e,v(`arrow-background-color`)),{[`${t}-pure`]:{position:`relative`,maxWidth:`none`,margin:e.sizePopupArrow,display:`inline-block`}}]},Oie=e=>{let{componentCls:t,antCls:n}=e,[r]=sl(n,`tooltip`);return{[t]:Os.map(n=>{let i=e[`${n}6`];return{[`&${t}-${n}`]:{[r(`arrow-background-color`)]:i,[`${t}-inner`]:{backgroundColor:i},[`${t}-arrow`]:{background:`transparent`}}}})}},Yb=il(`Popover`,e=>{let{colorBgElevated:t,colorText:n}=e,r=_s(e,{popoverBg:t,popoverColor:n});return[Die(r),Oie(r),mh(r,`zoom-big`)]},e=>{let{lineWidth:t,controlHeight:n,fontHeight:r,padding:i,wireframe:a,zIndexPopupBase:o,borderRadiusLG:s,marginXS:c,lineType:l,colorSplit:u,paddingSM:d}=e,f=n-r,p=f/2,m=f/2-t,h=i;return{titleMinWidth:177,zIndexPopup:o+30,...Pb(e),...Ib({contentRadius:s,limitVerticalRadius:!0}),innerPadding:a?0:12,titleMarginBottom:a?0:c,titlePadding:a?`${p}px ${h}px ${m}px`:0,titleBorderBottom:a?`${t}px ${l} ${u}`:`none`,innerContentPadding:a?`${d}px ${h}px`:0}},{resetStyle:!1,deprecatedTokens:[[`width`,`titleMinWidth`],[`minWidth`,`titleMinWidth`]]}),Xb=e=>{let{title:t,content:n,prefixCls:r,classNames:i,styles:a}=e;return!t&&!n?null:C.createElement(C.Fragment,null,t&&C.createElement(`div`,{className:q(`${r}-title`,i?.title),style:a?.title},t),n&&C.createElement(`div`,{className:q(`${r}-content`,i?.content),style:a?.content},n))},kie=e=>{let{hashId:t,prefixCls:n,className:r,style:i,placement:a=`top`,title:o,content:s,children:c,classNames:l,styles:u}=e,d=Db(o),f=Db(s),p={...e,placement:a},[m,h]=Id([l],[u],{props:p}),g=q(t,n,`${n}-pure`,`${n}-placement-${a}`,r);return C.createElement(`div`,{className:g,style:i},C.createElement(`div`,{className:`${n}-arrow`}),C.createElement(Ob,{...e,className:t,prefixCls:n,classNames:m,styles:h},c||C.createElement(Xb,{prefixCls:n,title:d,content:f,classNames:m,styles:h})))},Zb=e=>{let{prefixCls:t,className:n,...r}=e,{getPrefixCls:i}=C.useContext(si),a=i(`popover`,t),[o,s]=Yb(a);return C.createElement(kie,{...r,prefixCls:a,hashId:o,className:q(n,s)})},Qb=C.forwardRef((e,t)=>{let{prefixCls:n,title:r,content:i,overlayClassName:a,placement:o=`top`,trigger:s,children:c,mouseEnterDelay:l=.1,mouseLeaveDelay:u=.1,onOpenChange:d,overlayStyle:f={},styles:p,classNames:m,motion:h,arrow:g,..._}=e,{getPrefixCls:v,className:y,style:b,classNames:x,styles:S,arrow:w,trigger:T}=ui(`popover`),E=v(`popover`,n),[D,O]=Yb(E),k=v(),A=Hb(g,w),j=s||T||`hover`,M={...e,placement:o,trigger:j,mouseEnterDelay:l,mouseLeaveDelay:u,overlayStyle:f,styles:p,classNames:m},[N,P]=Id([x,m],[S,p],{props:M}),F=q(a,D,O,y,N.root),[I,L]=Wn(e.defaultOpen??!1,e.open),R=e=>{L(e),d?.(e)},z=Db(r),B=Db(i);return C.createElement(qb,{unique:!1,arrow:A,placement:o,trigger:j,mouseEnterDelay:l,mouseLeaveDelay:u,..._,prefixCls:E,classNames:{root:F,container:N.container,arrow:N.arrow},styles:{root:{...P.root,...b,...f},container:P.container,arrow:P.arrow},ref:t,open:I,onOpenChange:R,overlay:z||B?C.createElement(Xb,{prefixCls:E,title:z,content:B,classNames:N,styles:P}):null,motion:{motionName:km(k,`zoom-big`,typeof h?.motionName==`string`?h?.motionName:void 0)},"data-popover-inject":!0},c)});Qb._InternalPanelDoNotUseOrYouWillBeFired=Zb;var $b=e=>{let{size:t,shape:n}=C.useContext(Sb),r=C.useMemo(()=>({size:e.size||t,shape:e.shape||n}),[e.size,e.shape,t,n]);return C.createElement(Sb.Provider,{value:r},e.children)},Aie=e=>{let{getPrefixCls:t,direction:n}=C.useContext(si),{prefixCls:r,className:i,rootClassName:a,style:o,maxCount:s,maxStyle:c,size:l,shape:u,maxPopoverPlacement:d,maxPopoverTrigger:f,children:p,max:m}=e,h=t(`avatar`,r),g=`${h}-group`,_=xf(h),[v,y]=Tb(h,_),b=q(g,{[`${g}-rtl`]:n===`rtl`},y,_,i,a,v),x=wr(p).map((e,t)=>Fp(e,{key:`avatar-key-${t}`})),S=m?.count||s,w=x.length;if(S&&SC.createElement(Y,tx({},e,{ref:t,icon:jie}))),Nie={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z`}}]},name:`left`,theme:`outlined`};function nx(){return nx=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,nx({},e,{ref:t,icon:Nie}))),{ESC:Pie,TAB:Fie}=Qp;function Iie({visible:e,triggerRef:t,onVisibleChange:n,autoFocus:r,overlayRef:i}){let a=C.useRef(!1),o=()=>{e&&(t.current?.focus?.(),n?.(!1))},s=()=>i.current?.focus?(i.current.focus(),a.current=!0,!0):!1,c=e=>{switch(e.keyCode){case Pie:o();break;case Fie:{let t=!1;a.current||(t=s()),t?e.preventDefault():o();break}}};C.useEffect(()=>e?(window.addEventListener(`keydown`,c),r&&ii(s,3),()=>{window.removeEventListener(`keydown`,c),a.current=!1}):()=>{a.current=!1},[e])}var Lie=(0,C.forwardRef)((e,t)=>{let{overlay:n,arrow:r,prefixCls:i}=e,a=(0,C.useMemo)(()=>{let e;return e=typeof n==`function`?n():n,e},[n]),o=er(t,ar(a));return C.createElement(C.Fragment,null,r&&C.createElement(`div`,{className:`${i}-arrow`}),C.cloneElement(a,{ref:nr(a)?o:void 0}))}),ix={adjustX:1,adjustY:1},ax=[0,0],Rie={topLeft:{points:[`bl`,`tl`],overflow:ix,offset:[0,-4],targetOffset:ax},top:{points:[`bc`,`tc`],overflow:ix,offset:[0,-4],targetOffset:ax},topRight:{points:[`br`,`tr`],overflow:ix,offset:[0,-4],targetOffset:ax},bottomLeft:{points:[`tl`,`bl`],overflow:ix,offset:[0,4],targetOffset:ax},bottom:{points:[`tc`,`bc`],overflow:ix,offset:[0,4],targetOffset:ax},bottomRight:{points:[`tr`,`br`],overflow:ix,offset:[0,4],targetOffset:ax}};function ox(){return ox=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{arrow:n=!1,prefixCls:r=`rc-dropdown`,transitionName:i,animation:a,align:o,placement:s=`bottomLeft`,placements:c=Rie,getPopupContainer:l,showAction:u,hideAction:d,overlayClassName:f,overlayStyle:p,visible:m,trigger:h=[`hover`],autoFocus:g,overlay:_,children:v,onVisibleChange:y,...b}=e,[x,S]=C.useState(),w=`visible`in e?m:x,T=a?`${r}-${a}`:i,E=C.useRef(null),D=C.useRef(null),O=C.useRef(null);C.useImperativeHandle(t,()=>E.current);let k=e=>{S(e),y?.(e)};Iie({visible:w,triggerRef:O,onVisibleChange:k,autoFocus:g,overlayRef:D});let A=t=>{let{onOverlayClick:n}=e;S(!1),n&&n(t)},j=()=>C.createElement(Lie,{ref:D,overlay:_,prefixCls:r,arrow:n}),M=()=>typeof _==`function`?j:j(),N=()=>{let{minOverlayWidthMatchTrigger:t,alignPoint:n}=e;return`minOverlayWidthMatchTrigger`in e?t:!n},P=C.cloneElement(v,{className:q(v.props?.className,w&&(()=>{let{openClassName:t}=e;return t===void 0?`${r}-open`:t})()),ref:nr(v)?er(O,ar(v)):void 0}),F=d;return!F&&h.indexOf(`contextMenu`)!==-1&&(F=[`click`]),C.createElement(Mp,ox({builtinPlacements:c},b,{prefixCls:r,ref:E,popupClassName:q(f,{[`${r}-show-arrow`]:n}),popupStyle:p,action:h,showAction:u,hideAction:F,popupPlacement:s,popupAlign:o,popupMotion:{motionName:T},popupVisible:w,stretch:N()?`minWidth`:``,popup:M(),onOpenChange:k,onPopupClick:A,getPopupContainer:l}),P)}),cx=C.createContext(null);function lx(e,t){return`${e}-${t}`}function ux(e){return lx(C.useContext(cx),e)}var dx=C.createContext(null);function zie(e,t){let n={...e};return Object.keys(t).forEach(e=>{let r=t[e];r!==void 0&&(n[e]=r)}),n}function fx({children:e,locked:t,...n}){let r=C.useContext(dx),i=qn(()=>zie(r,n),[r,n],(e,n)=>!t&&(e[0]!==n[0]||!Ei(e[1],n[1],!0)));return C.createElement(dx.Provider,{value:i},e)}var Bie=[],px=C.createContext(null);function mx(){return C.useContext(px)}var hx=C.createContext(Bie);function gx(e){let t=C.useContext(hx);return C.useMemo(()=>e===void 0?t:[...t,e],[t,e])}var _x=C.createContext(null),vx=C.createContext({}),{LEFT:yx,RIGHT:bx,UP:xx,DOWN:Sx,ENTER:Cx,ESC:wx,HOME:Tx,END:Ex}=Qp,Dx=[xx,Sx,yx,bx];function Vie(e,t,n,r){let i=`prev`,a=`next`,o=`children`,s=`parent`;if(e===`inline`&&r===Cx)return{inlineTrigger:!0};let c={[xx]:i,[Sx]:a},l={[yx]:n?a:i,[bx]:n?i:a,[Sx]:o,[Cx]:o},u={[xx]:i,[Sx]:a,[Cx]:o,[wx]:s,[yx]:n?o:s,[bx]:n?s:o};switch({inline:c,horizontal:l,vertical:u,inlineSub:c,horizontalSub:u,verticalSub:u}[`${e}${t?``:`Sub`}`]?.[r]){case i:return{offset:-1,sibling:!0};case a:return{offset:1,sibling:!0};case s:return{offset:-1,sibling:!1};case o:return{offset:1,sibling:!1};default:return null}}function Hie(e){let t=e;for(;t;){if(t.getAttribute(`data-menu-list`))return t;t=t.parentElement}return null}function Uie(e,t){let n=e||document.activeElement;for(;n;){if(t.has(n))return n;n=n.parentElement}return null}function Ox(e,t){return pg(e,!0).filter(e=>t.has(e))}function kx(e,t,n,r=1){if(!e)return null;let i=Ox(e,t),a=i.length,o=i.findIndex(e=>n===e);return r<0?o===-1?o=a-1:--o:r>0&&(o+=1),o=(o+a)%a,i[o]}var Ax=(e,t)=>{let n=new Set,r=new Map,i=new Map;return e.forEach(e=>{let a=document.querySelector(`[data-menu-id='${lx(t,e)}']`);a&&(n.add(a),i.set(a,e),r.set(e,a))}),{elements:n,key2element:r,element2key:i}};function Wie(e,t,n,r,i,a,o,s,c,l){let u=C.useRef(),d=C.useRef();d.current=t;let f=()=>{ii.cancel(u.current)};return C.useEffect(()=>()=>{f()},[]),p=>{let{which:m}=p;if([...Dx,Cx,wx,Tx,Ex].includes(m)){let l=a(),h=Ax(l,r),{elements:g,key2element:_,element2key:v}=h,y=Uie(_.get(t),g),b=v.get(y),x=Vie(e,o(b,!0).length===1,n,m);if(!x&&m!==Tx&&m!==Ex)return;(Dx.includes(m)||[Tx,Ex].includes(m))&&p.preventDefault();let S=e=>{if(e){let t=e,n=e.querySelector(`a`);n?.getAttribute(`href`)&&(t=n);let r=v.get(e);s(r),f(),u.current=ii(()=>{d.current===r&&t.focus()})}};if([Tx,Ex].includes(m)||x.sibling||!y){let t;t=!y||e===`inline`?i.current:Hie(y);let n,r=Ox(t,g);n=m===Tx?r[0]:m===Ex?r[r.length-1]:kx(t,g,y,x.offset),S(n)}else if(x.inlineTrigger)c(b);else if(x.offset>0)c(b,!0),f(),u.current=ii(()=>{h=Ax(l,r);let e=y.getAttribute(`aria-controls`);S(kx(document.getElementById(e),h.elements))},5);else if(x.offset<0){let e=o(b,!0),t=e[e.length-2],n=_.get(t);c(t,!1),S(n)}}l?.(p)}}function Gie(e){Promise.resolve().then(e)}var jx=`__RC_UTIL_PATH_SPLIT__`,Mx=e=>e.join(jx),Kie=e=>e.split(jx),Nx=`rc-menu-more`;function qie(){let[,e]=C.useState({}),t=(0,C.useRef)(new Map),n=(0,C.useRef)(new Map),[r,i]=C.useState([]),a=(0,C.useRef)(0),o=(0,C.useRef)(!1),s=()=>{o.current||e({})},c=(0,C.useCallback)((e,r)=>{let i=Mx(r);n.current.set(i,e),t.current.set(e,i),a.current+=1;let o=a.current;Gie(()=>{o===a.current&&s()})},[]),l=(0,C.useCallback)((e,r)=>{let i=Mx(r);n.current.delete(i),t.current.delete(e)},[]),u=(0,C.useCallback)(e=>{i(e)},[]),d=(0,C.useCallback)((e,n)=>{let i=Kie(t.current.get(e)||``);return n&&r.includes(i[0])&&i.unshift(Nx),i},[r]),f=(0,C.useCallback)((e,t)=>e.filter(e=>e!==void 0).some(e=>d(e,!0).includes(t)),[d]),p=()=>{let e=[...t.current.keys()];return r.length&&e.push(Nx),e},m=(0,C.useCallback)(e=>{let r=`${t.current.get(e)}${jx}`,i=new Set;return[...n.current.keys()].forEach(e=>{e.startsWith(r)&&i.add(n.current.get(e))}),i},[]);return C.useEffect(()=>()=>{o.current=!0},[]),{registerPath:c,unregisterPath:l,refreshOverflowKeys:u,isSubPathKey:f,getKeyPath:d,getKeys:p,getSubPathKeys:m}}function Px(e){let t=C.useRef(e);t.current=e;let n=C.useCallback((...e)=>t.current?.(...e),[]);return e?n:void 0}function Fx(e,t,n,r){let{activeKey:i,onActive:a,onInactive:o}=C.useContext(dx),s={active:i===e};return t||(s.onMouseEnter=t=>{n?.({key:e,domEvent:t}),a(e)},s.onMouseLeave=t=>{r?.({key:e,domEvent:t}),o(e)}),s}function Ix(e){let{mode:t,rtl:n,inlineIndent:r}=C.useContext(dx);if(t!==`inline`)return null;let i=e;return n?{paddingRight:i*r}:{paddingLeft:i*r}}function Lx({icon:e,props:t,children:n}){let r;return e===null||e===!1?null:(typeof e==`function`?r=C.createElement(e,{...t}):typeof e!=`boolean`&&(r=e),r||n||null)}function Rx({item:e,...t}){return Object.defineProperty(t,`item`,{get:()=>(xr(!1,"`info.item` is deprecated since we will move to function component that not provides React Node instance in future."),e)}),t}function zx(){return zx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{style:n,className:r,eventKey:i,warnKey:a,disabled:o,itemIcon:s,children:c,role:l,onMouseEnter:u,onMouseLeave:d,onClick:f,onKeyDown:p,onFocus:m,...h}=e,g=ux(i),{prefixCls:_,onItemClick:v,disabled:y,overflowDisabled:b,itemIcon:x,selectedKeys:S,onActive:w}=C.useContext(dx),{_internalRenderMenuItem:T}=C.useContext(vx),E=`${_}-item`,D=C.useRef(),O=C.useRef(),k=y||o,A=tr(t,O),j=gx(i),M=e=>({key:i,keyPath:[...j].reverse(),item:D.current,domEvent:e}),N=s||x,{active:P,...F}=Fx(i,k,u,d),I=S.includes(i),L=Ix(j.length),R=e=>{if(k)return;let t=M(e);f?.(Rx(t)),v(t)},z=e=>{if(p?.(e),e.which===Qp.ENTER){let t=M(e);f?.(Rx(t)),v(t)}},B=e=>{w(i),m?.(e)},V={};e.role===`option`&&(V[`aria-selected`]=I);let H=C.createElement(Jie,zx({ref:D,elementRef:A,role:l===null?`none`:l||`menuitem`,tabIndex:o?null:-1,"data-menu-id":b&&g?null:g},Cr(h,[`extra`]),F,V,{component:`li`,"aria-disabled":o,style:{...L,...n},className:q(E,{[`${E}-active`]:P,[`${E}-selected`]:I,[`${E}-disabled`]:k},r),onClick:R,onKeyDown:z,onFocus:B}),c,C.createElement(Lx,{props:{...e,isSelected:I},icon:N}));return T&&(H=T(H,e,{selected:I})),H});function Xie(e,t){let{eventKey:n}=e,r=mx(),i=gx(n);return C.useEffect(()=>{if(r)return r.registerPath(n,i),()=>{r.unregisterPath(n,i)}},[i]),r?null:C.createElement(Yie,zx({},e,{ref:t}))}var Bx=C.forwardRef(Xie);function Vx(){return Vx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:i,mode:a,rtl:o}=C.useContext(dx);return C.createElement(`ul`,Vx({className:q(i,o&&`${i}-rtl`,`${i}-sub`,`${i}-${a===`inline`?`inline`:`vertical`}`,e),role:`menu`},n,{"data-menu-list":!0,ref:r}),t)});function Ux(e,t){return wr(e).map((e,n)=>{if(C.isValidElement(e)){let{key:r}=e,i=e.props?.eventKey??r;i??=`tmp_key-${[...t,n].join(`-`)}`;let a={key:i,eventKey:i};return C.cloneElement(e,a)}return e})}var Wx={adjustX:1,adjustY:1},Zie={topLeft:{points:[`bl`,`tl`],overflow:Wx},topRight:{points:[`br`,`tr`],overflow:Wx},bottomLeft:{points:[`tl`,`bl`],overflow:Wx},bottomRight:{points:[`tr`,`br`],overflow:Wx},leftTop:{points:[`tr`,`tl`],overflow:Wx},leftBottom:{points:[`br`,`bl`],overflow:Wx},rightTop:{points:[`tl`,`tr`],overflow:Wx},rightBottom:{points:[`bl`,`br`],overflow:Wx}},Qie={topLeft:{points:[`bl`,`tl`],overflow:Wx},topRight:{points:[`br`,`tr`],overflow:Wx},bottomLeft:{points:[`tl`,`bl`],overflow:Wx},bottomRight:{points:[`tr`,`br`],overflow:Wx},rightTop:{points:[`tr`,`tl`],overflow:Wx},rightBottom:{points:[`br`,`bl`],overflow:Wx},leftTop:{points:[`tl`,`tr`],overflow:Wx},leftBottom:{points:[`bl`,`br`],overflow:Wx}};function Gx(e,t,n){if(t)return t;if(n)return n[e]||n.other}var $ie={horizontal:`bottomLeft`,vertical:`rightTop`,"vertical-left":`rightTop`,"vertical-right":`leftTop`};function eae({prefixCls:e,visible:t,children:n,popup:r,popupStyle:i,popupClassName:a,popupOffset:o,disabled:s,mode:c,onVisibleChange:l}){let{getPopupContainer:u,rtl:d,subMenuOpenDelay:f,subMenuCloseDelay:p,builtinPlacements:m,triggerSubMenuAction:h,forceSubMenuRender:g,rootClassName:_,motion:v,defaultMotions:y}=C.useContext(dx),[b,x]=C.useState(!1),S=d?{...Qie,...m}:{...Zie,...m},w=$ie[c],T=Gx(c,v,y),E=C.useRef(T);c!==`inline`&&(E.current=T);let D={...E.current,leavedClassName:`${e}-hidden`,removeOnLeave:!1,motionAppear:!0},O=C.useRef();return C.useEffect(()=>(O.current=ii(()=>{x(t)}),()=>{ii.cancel(O.current)}),[t]),C.createElement(Mp,{prefixCls:e,popupClassName:q(`${e}-popup`,{[`${e}-rtl`]:d},a,_),stretch:c===`horizontal`?`minWidth`:null,getPopupContainer:u,builtinPlacements:S,popupPlacement:w,popupVisible:b,popup:r,popupStyle:i,popupAlign:o&&{offset:o},action:s?[]:[h],mouseEnterDelay:f,mouseLeaveDelay:p,onPopupVisibleChange:l,forceRender:g,popupMotion:D,fresh:!0},n)}function Kx(){return Kx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{u.current&&f(!1)},[l]);let m={...Gx(i,s,c)};n.length>1&&(m.motionAppear=!1);let h=m.onVisibleChanged;return m.onVisibleChanged=e=>(!u.current&&!e&&f(!0),h?.(e)),d?null:C.createElement(fx,{mode:i,locked:!u.current},C.createElement(Lu,Kx({visible:p},m,{forceRender:o,removeOnLeave:!1,leavedClassName:`${a}-hidden`}),({className:t,style:n})=>C.createElement(Hx,{id:e,className:t,style:n},r)))}function qx(){return qx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{style:n,className:r,styles:i,classNames:a,title:o,eventKey:s,warnKey:c,disabled:l,internalPopupClose:u,children:d,itemIcon:f,expandIcon:p,popupClassName:m,popupOffset:h,popupStyle:g,onClick:_,onMouseEnter:v,onMouseLeave:y,onTitleClick:b,onTitleMouseEnter:x,onTitleMouseLeave:S,popupRender:w,...T}=e,E=ux(s),{prefixCls:D,mode:O,openKeys:k,disabled:A,overflowDisabled:j,activeKey:M,selectedKeys:N,itemIcon:P,expandIcon:F,onItemClick:I,onOpenChange:L,onActive:R,popupRender:z}=C.useContext(dx),{_internalRenderSubMenuItem:B}=C.useContext(vx),{isSubPathKey:V}=C.useContext(_x),H=gx(),U=`${D}-submenu`,W=A||l,ee=C.useRef(),te=C.useRef(),ne=f??P,re=p??F,ie=k.includes(s),ae=!j&&ie,G=V(N,s),{active:oe,...K}=Fx(s,W,x,S),[se,ce]=C.useState(!1),le=e=>{W||ce(e)},ue=e=>{le(!0),v?.({key:s,domEvent:e})},de=e=>{le(!1),y?.({key:s,domEvent:e})},fe=C.useMemo(()=>oe||(O===`inline`?!1:se||V([M],s)),[O,oe,M,se,s,V]),pe=Ix(H.length),me=e=>{W||(b?.({key:s,domEvent:e}),O===`inline`&&L(s,!ie))},he=Px(e=>{_?.(Rx(e)),I(e)}),ge=e=>{O!==`inline`&&L(s,e)},_e=()=>{R(s)},ve=E&&`${E}-popup`,ye=C.useMemo(()=>C.createElement(Lx,{icon:O===`horizontal`?void 0:re,props:{...e,isOpen:ae,isSubMenu:!0}},C.createElement(`i`,{className:`${U}-arrow`})),[O,re,e,ae,U]),be=C.createElement(`div`,qx({role:`menuitem`,style:pe,className:`${U}-title`,tabIndex:W?null:-1,ref:ee,title:typeof o==`string`?o:null,"data-menu-id":j&&E?null:E,"aria-expanded":ae,"aria-haspopup":!0,"aria-controls":ve,"aria-disabled":W,onClick:me,onFocus:_e},K),o,ye),xe=C.useRef(O);O!==`inline`&&H.length>1?xe.current=`vertical`:xe.current=O;let Se=xe.current,Ce=C.useMemo(()=>{let t=C.createElement(fx,{classNames:a,styles:i,mode:Se===`horizontal`?`vertical`:Se},C.createElement(Hx,{id:ve,ref:te},d)),n=w||z;return n?n(t,{item:e,keys:H}):t},[w,z,H,ve,d,e,Se]);if(!j){let e=xe.current;be=C.createElement(eae,{mode:e,prefixCls:U,visible:!u&&ae&&O!==`inline`,popupClassName:m,popupOffset:h,popupStyle:g,popup:Ce,disabled:W,onVisibleChange:ge},be)}let we=C.createElement(fy.Item,qx({ref:t,role:`none`},T,{component:`li`,style:n,className:q(U,`${U}-${O}`,r,{[`${U}-open`]:ae,[`${U}-active`]:fe,[`${U}-selected`]:G,[`${U}-disabled`]:W}),onMouseEnter:ue,onMouseLeave:de}),be,!j&&C.createElement(tae,{id:ve,open:ae,keyPath:H},d));return B&&(we=B(we,e,{selected:G,active:fe,open:ae,disabled:W})),C.createElement(fx,{classNames:a,styles:i,onItemClick:he,mode:O===`horizontal`?`vertical`:O,itemIcon:ne,expandIcon:re},we)}),Jx=C.forwardRef((e,t)=>{let{eventKey:n,children:r}=e,i=gx(n),a=Ux(r,i),o=mx();C.useEffect(()=>{if(o)return o.registerPath(n,i),()=>{o.unregisterPath(n,i)}},[i]);let s;return s=o?a:C.createElement(nae,qx({ref:t},e),a),C.createElement(hx.Provider,{value:i},s)});function Yx({className:e,style:t}){let{prefixCls:n}=C.useContext(dx);return mx()?null:C.createElement(`li`,{role:`separator`,className:q(`${n}-item-divider`,e),style:t})}function Xx(){return Xx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{className:n,title:r,eventKey:i,children:a,...o}=e,{prefixCls:s,classNames:c,styles:l}=C.useContext(dx),u=`${s}-item-group`;return C.createElement(`li`,Xx({ref:t,role:`presentation`},o,{onClick:e=>e.stopPropagation(),className:q(u,n)}),C.createElement(`div`,{role:`presentation`,className:q(`${u}-title`,c?.listTitle),style:l?.listTitle,title:typeof r==`string`?r:void 0},r),C.createElement(`ul`,{role:`group`,className:q(`${u}-list`,c?.list),style:l?.list},a))}),Zx=C.forwardRef((e,t)=>{let{eventKey:n,children:r}=e,i=Ux(r,gx(n));return mx()?i:C.createElement(rae,Xx({ref:t},Cr(e,[`warnKey`])),i)});function Qx(){return Qx=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(e&&typeof e==`object`){let{label:c,children:l,key:u,type:d,extra:f,...p}=e,m=u??`tmp-${s}`;return l||d===`group`?d===`group`?C.createElement(i,Qx({key:m},p,{title:c}),$x(l,t,n)):C.createElement(a,Qx({key:m},p,{title:c}),$x(l,t,n)):d===`divider`?C.createElement(o,Qx({key:m},p)):C.createElement(r,Qx({key:m},p,{extra:f}),c,(!!f||f===0)&&C.createElement(`span`,{className:`${n}-item-extra`},f))}return null}).filter(e=>e)}function eS(e,t,n,r,i){let a=e,o={divider:Yx,item:Bx,group:Zx,submenu:Jx,...r};return t&&(a=$x(t,o,i)),Ux(a,n)}function tS(){return tS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{prefixCls:n=`rc-menu`,rootClassName:r,style:i,className:a,styles:o,classNames:s,tabIndex:c=0,items:l,children:u,direction:d,id:f,mode:p=`vertical`,inlineCollapsed:m,disabled:h,disabledOverflow:g,subMenuOpenDelay:_=.1,subMenuCloseDelay:v=.1,forceSubMenuRender:y,defaultOpenKeys:b,openKeys:x,activeKey:S,defaultActiveFirst:w,selectable:T=!0,multiple:E=!1,defaultSelectedKeys:D,selectedKeys:O,onSelect:k,onDeselect:A,inlineIndent:j=24,motion:M,defaultMotions:N,triggerSubMenuAction:P=`hover`,builtinPlacements:F,itemIcon:I,expandIcon:L,overflowedIndicator:R=`...`,overflowedIndicatorPopupClassName:z,getPopupContainer:B,onClick:V,onOpenChange:H,onKeyDown:U,openAnimation:W,openTransitionName:ee,_internalRenderMenuItem:te,_internalRenderSubMenuItem:ne,_internalComponents:re,popupRender:ie,...ae}=e,[G,oe]=C.useMemo(()=>[eS(u,l,nS,re,n),eS(u,l,nS,{},n)],[u,l,re]),[K,se]=C.useState(!1),ce=C.useRef(),le=Bf(f?`rc-menu-uuid-${f}`:`rc-menu-uuid`),ue=d===`rtl`,[de,fe]=Wn(b,x),pe=de||nS,me=(e,t=!1)=>{function n(){fe(e),H?.(e)}t?(0,Yf.flushSync)(n):n()},[he,ge]=C.useState(pe),_e=C.useRef(!1),[ve,ye]=C.useMemo(()=>(p===`inline`||p===`vertical`)&&m?[`vertical`,m]:[p,!1],[p,m]),be=ve===`inline`,[xe,Se]=C.useState(ve),[Ce,we]=C.useState(ye);C.useEffect(()=>{Se(ve),we(ye),_e.current&&(be?fe(he):me(nS))},[ve,ye]);let[Te,Ee]=C.useState(0),De=Te>=G.length-1||xe!==`horizontal`||g;C.useEffect(()=>{be&&ge(pe)},[pe]),C.useEffect(()=>(_e.current=!0,()=>{_e.current=!1}),[]);let{registerPath:Oe,unregisterPath:ke,refreshOverflowKeys:Ae,isSubPathKey:je,getKeyPath:Me,getKeys:Ne,getSubPathKeys:Pe}=qie(),Fe=C.useMemo(()=>({registerPath:Oe,unregisterPath:ke}),[Oe,ke]),Ie=C.useMemo(()=>({isSubPathKey:je}),[je]);C.useEffect(()=>{Ae(De?nS:G.slice(Te+1).map(e=>e.key))},[Te,De]);let[Le,Re]=Wn(S||w&&G[0]?.key,S),ze=Px(e=>{Re(e)}),Be=Px(()=>{Re(void 0)});(0,C.useImperativeHandle)(t,()=>({list:ce.current,focus:e=>{let t=Ne(),{elements:n,key2element:r,element2key:i}=Ax(t,le),a=Ox(ce.current,n),o;o=Le&&t.includes(Le)?Le:a[0]?i.get(a[0]):G.find(e=>!e.props.disabled)?.key;let s=r.get(o);o&&s&&s?.focus?.(e)},findItem:({key:e})=>{let{key2element:t}=Ax(Ne(),le);return t.get(e)||null}}));let[Ve,He]=Wn(D||[],O),Ue=C.useMemo(()=>Array.isArray(Ve)?Ve:Ve==null?nS:[Ve],[Ve]),We=e=>{if(T){let{key:t}=e,n=Ue.includes(t),r;r=E?n?Ue.filter(e=>e!==t):[...Ue,t]:[t],He(r);let i={...e,selectedKeys:r};n?A?.(i):k?.(i)}!E&&pe.length&&xe!==`inline`&&me(nS)},Ge=Px(e=>{V?.(Rx(e)),We(e)}),Ke=Px((e,t)=>{let n=pe.filter(t=>t!==e);if(t)n.push(e);else if(xe!==`inline`){let t=Pe(e);n=n.filter(e=>!t.has(e))}Ei(pe,n,!0)||me(n,!0)}),qe=Wie(xe,Le,ue,le,ce,Ne,Me,Re,(e,t)=>{Ke(e,t??!pe.includes(e))},U);C.useEffect(()=>{se(!0)},[]);let Je=C.useMemo(()=>({_internalRenderMenuItem:te,_internalRenderSubMenuItem:ne}),[te,ne]),Ye=xe!==`horizontal`||g?G:G.map((e,t)=>C.createElement(fx,{key:e.key,overflowDisabled:t>Te,classNames:s,styles:o},e)),Xe=C.createElement(fy,tS({id:f,ref:ce,prefixCls:`${n}-overflow`,component:`ul`,itemComponent:Bx,className:q(n,`${n}-root`,`${n}-${xe}`,a,{[`${n}-inline-collapsed`]:Ce,[`${n}-rtl`]:ue},r),dir:d,style:i,role:`menu`,tabIndex:c,data:Ye,renderRawItem:e=>e,renderRawRest:e=>{let t=e.length,n=t?G.slice(-t):null;return C.createElement(Jx,{eventKey:Nx,title:R,disabled:De,internalPopupClose:t===0,popupClassName:z},n)},maxCount:xe!==`horizontal`||g?fy.INVALIDATE:fy.RESPONSIVE,ssr:`full`,"data-menu-list":!0,onVisibleChange:e=>{Ee(e)},onKeyDown:qe},ae));return C.createElement(vx.Provider,{value:Je},C.createElement(cx.Provider,{value:le},C.createElement(fx,{prefixCls:n,rootClassName:r,classNames:s,styles:o,mode:xe,openKeys:pe,rtl:ue,disabled:h,motion:K?M:null,defaultMotions:K?N:null,activeKey:Le,onActive:ze,onInactive:Be,selectedKeys:Ue,inlineIndent:j,subMenuOpenDelay:_,subMenuCloseDelay:v,forceSubMenuRender:y,builtinPlacements:F,triggerSubMenuAction:P,getPopupContainer:B,itemIcon:I,expandIcon:L,onItemClick:Ge,onOpenChange:Ke,popupRender:ie},C.createElement(_x.Provider,{value:Ie},Xe),C.createElement(`div`,{style:{display:`none`},"aria-hidden":!0},C.createElement(px.Provider,{value:Fe},oe)))))});rS.Item=Bx,rS.SubMenu=Jx,rS.ItemGroup=Zx,rS.Divider=Yx;var iae={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`bars`,theme:`outlined`};function iS(){return iS=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,iS({},e,{ref:t,icon:iae}))),oS=C.createContext({siderHook:{addSider:()=>null,removeSider:()=>null}}),sS=e=>{let{antCls:t,componentCls:n,colorText:r,footerBg:i,headerHeight:a,headerPadding:o,headerColor:s,footerPadding:c,fontSize:l,bodyBg:u,headerBg:d}=e;return{[n]:{display:`flex`,flex:`auto`,flexDirection:`column`,minHeight:0,background:u,"&, *":{boxSizing:`border-box`},[`&${n}-has-sider`]:{flexDirection:`row`,[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:`0 0 auto`},"&-rtl":{direction:`rtl`}},[`${n}-header`]:{height:a,padding:o,color:s,lineHeight:J(a),background:d,[`${t}-menu`]:{lineHeight:`inherit`}},[`${n}-footer`]:{padding:c,color:r,fontSize:l,background:i},[`${n}-content`]:{flex:`auto`,color:r,minHeight:0}}},cS=e=>{let{colorBgLayout:t,controlHeight:n,controlHeightLG:r,colorText:i,controlHeightSM:a,marginXXS:o,colorTextLightSolid:s,colorBgContainer:c}=e,l=r*1.25;return{colorBgHeader:`#001529`,colorBgBody:t,colorBgTrigger:`#002140`,bodyBg:t,headerBg:`#001529`,headerHeight:n*2,headerPadding:`0 ${l}px`,headerColor:i,footerPadding:`${a}px ${l}px`,footerBg:t,siderBg:`#001529`,triggerHeight:r+o*2,triggerBg:`#002140`,triggerColor:s,zeroTriggerWidth:r,zeroTriggerHeight:r,lightSiderBg:c,lightTriggerBg:c,lightTriggerColor:i}},lS=[[`colorBgBody`,`bodyBg`],[`colorBgHeader`,`headerBg`],[`colorBgTrigger`,`triggerBg`]],uS=il(`Layout`,sS,cS,{deprecatedTokens:lS}),dS=il([`Layout`,`Sider`],e=>{let{componentCls:t,siderBg:n,motionDurationMid:r,motionDurationSlow:i,antCls:a,triggerHeight:o,triggerColor:s,triggerBg:c,headerHeight:l,zeroTriggerWidth:u,zeroTriggerHeight:d,borderRadiusLG:f,lightSiderBg:p,lightTriggerColor:m,lightTriggerBg:h,bodyBg:g}=e;return{[t]:{position:`relative`,minWidth:0,background:n,transition:`all ${r}, background 0s`,"&-has-trigger":{paddingBottom:o},"&-right":{order:1},[`${t}-children`]:{height:`100%`,marginTop:-.1,paddingTop:.1,[`${a}-menu${a}-menu-inline-collapsed`]:{width:`auto`}},[`&-zero-width ${t}-children`]:{overflow:`hidden`},[`${t}-trigger`]:{position:`fixed`,bottom:0,zIndex:1,height:o,color:s,lineHeight:J(o),textAlign:`center`,background:c,cursor:`pointer`,transition:`all ${r}`},[`${t}-zero-width-trigger`]:{position:`absolute`,top:l,insetInlineEnd:e.calc(u).mul(-1).equal(),zIndex:1,width:u,height:d,color:s,fontSize:e.fontSizeXL,display:`flex`,alignItems:`center`,justifyContent:`center`,background:n,borderRadius:`0 ${J(f)} ${J(f)} 0`,cursor:`pointer`,transition:`background-color ${i} ease`,"&::after":{position:`absolute`,inset:0,background:`transparent`,transition:`all ${i}`,content:`""`},"&:hover::after":{background:`rgba(255, 255, 255, 0.2)`},"&-right":{insetInlineStart:e.calc(u).mul(-1).equal(),borderRadius:`${J(f)} 0 0 ${J(f)}`}},"&-light":{background:p,[`${t}-trigger`]:{color:m,background:h},[`${t}-zero-width-trigger`]:{color:m,background:h,border:`1px solid ${g}`,borderInlineStart:0}}}}},cS,{deprecatedTokens:lS}),fS={xs:`479.98px`,sm:`575.98px`,md:`767.98px`,lg:`991.98px`,xl:`1199.98px`,xxl:`1599.98px`,xxxl:`1839.98px`},pS=e=>!Number.isNaN(Number.parseFloat(e))&&Number.isFinite(Number(e)),mS=C.createContext({}),hS=(()=>{let e=0;return(t=``)=>(e+=1,`${t}${e}`)})(),gS=C.forwardRef((e,t)=>{let{prefixCls:n,className:r,trigger:i,children:a,defaultCollapsed:o=!1,theme:s=`dark`,style:c={},collapsible:l=!1,reverseArrow:u=!1,width:d=200,collapsedWidth:f=80,zeroWidthTriggerStyle:p,breakpoint:m,onCollapse:h,onBreakpoint:g,..._}=e,{siderHook:v}=(0,C.useContext)(oS),[y,b]=(0,C.useState)(`collapsed`in e?e.collapsed:o),[x,S]=(0,C.useState)(!1);(0,C.useEffect)(()=>{`collapsed`in e&&b(e.collapsed)},[e.collapsed]);let w=(t,n)=>{`collapsed`in e||b(t),h?.(t,n)},{getPrefixCls:T,direction:E}=(0,C.useContext)(si),D=T(`layout-sider`,n),[O,k]=dS(D),A=(0,C.useRef)(null);A.current=e=>{S(e.matches),g?.(e.matches),y!==e.matches&&w(e.matches,`responsive`)},(0,C.useEffect)(()=>{function e(e){return A.current?.(e)}let t;return window?.matchMedia!==void 0&&m&&m in fS&&(t=window.matchMedia(`screen and (max-width: ${fS[m]})`),typeof t?.addEventListener==`function`&&t.addEventListener(`change`,e),e(t)),()=>{typeof t?.removeEventListener==`function`&&t.removeEventListener(`change`,e)}},[m]),(0,C.useEffect)(()=>{let e=hS(`ant-sider-`);return v.addSider(e),()=>v.removeSider(e)},[]);let j=()=>{w(!y,`clickTrigger`)},M=Cr(_,[`collapsed`]),N=y?f:d,P=pS(N)?`${N}px`:String(N),F=Number.parseFloat(String(f||0))===0?C.createElement(`span`,{onClick:j,className:q(`${D}-zero-width-trigger`,`${D}-zero-width-trigger-${u?`right`:`left`}`),style:p},i||C.createElement(aS,null)):null,I=E===`rtl`==!u,L={expanded:I?C.createElement(bh,null):C.createElement(rx,null),collapsed:I?C.createElement(rx,null):C.createElement(bh,null)}[y?`collapsed`:`expanded`],R=i===null?null:F||C.createElement(`div`,{className:`${D}-trigger`,onClick:j,style:{width:P}},i||L),z={...c,flex:`0 0 ${P}`,maxWidth:P,minWidth:P,width:P},B=q(D,`${D}-${s}`,{[`${D}-collapsed`]:!!y,[`${D}-has-trigger`]:l&&i!==null&&!F,[`${D}-below`]:!!x,[`${D}-zero-width`]:Number.parseFloat(P)===0},r,O,k),V=C.useMemo(()=>({siderCollapsed:y}),[y]);return C.createElement(mS.Provider,{value:V},C.createElement(`aside`,{className:B,...M,style:z,ref:t},C.createElement(`div`,{className:`${D}-children`},a),l||x&&F?R:null))}),_S={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`ellipsis`,theme:`outlined`};function vS(){return vS=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement(Y,vS({},e,{ref:t,icon:_S}))),bS=(0,C.createContext)({prefixCls:``,firstLevel:!0,inlineCollapsed:!1,styles:null,classNames:null}),xS=e=>{let{prefixCls:t,className:n,dashed:r,...i}=e,{getPrefixCls:a}=C.useContext(si),o=q({[`${a(`menu`,t)}-item-divider-dashed`]:!!r},n);return C.createElement(Yx,{className:o,...i})},SS=e=>{let{className:t,children:n,icon:r,title:i,danger:a,extra:o}=e,{prefixCls:s,firstLevel:c,direction:l,disableMenuItemTitleTooltip:u,tooltip:d,inlineCollapsed:f,styles:p,classNames:m}=C.useContext(bS),h=e=>{let t=n?.[0],i=C.createElement(`span`,{className:q(`${s}-title-content`,c?m?.itemContent:m?.subMenu?.itemContent,{[`${s}-title-content-with-extra`]:!!o||o===0}),style:c?p?.itemContent:p?.subMenu?.itemContent},n);return(!r||C.isValidElement(n)&&n.type===`span`)&&n&&e&&c&&typeof t==`string`?C.createElement(`div`,{className:`${s}-inline-collapsed-noicon`},t.charAt(0)):i},{siderCollapsed:g}=C.useContext(mS),_=i;i===void 0?_=c?n:``:i===!1&&(_=``);let v=d===!1?void 0:d,y=v&&v.title!==void 0?v.title:_,b={...v??null,title:y};!g&&!f&&(b.title=null,b.open=!1);let x=wr(n).length,S=C.createElement(Bx,{...Cr(e,[`title`,`icon`,`danger`]),className:q(c?m?.item:m?.subMenu?.item,{[`${s}-item-danger`]:a,[`${s}-item-only-child`]:(r?x+1:x)===1},t),style:{...c?p?.item:p?.subMenu?.item,...e.style},title:typeof i==`string`?i:void 0},Fp(r,e=>({className:q(`${s}-item-icon`,c?m?.itemIcon:m?.subMenu?.itemIcon,e.className),style:{...c?p?.itemIcon:p?.subMenu?.itemIcon,...e.style}})),h(f));if(!u&&d!==!1){let e=v&&v.placement?v.placement:l===`rtl`?`left`:`right`,t=`${s}-inline-collapsed-tooltip`,n=e=>({...e,root:q(t,e?.root)}),r=v&&typeof v.classNames==`function`?e=>n(v.classNames(e)):n(v?.classNames);S=C.createElement(qb,{...b,placement:e,classNames:r},S)}return S},CS=C.createContext(null),wS=C.forwardRef((e,t)=>{let{children:n,...r}=e,i=C.useContext(CS),a=C.useMemo(()=>({...i,...r}),[i,r.prefixCls,r.mode,r.selectable,r.rootClassName]),o=ir(n),s=tr(t,o?ar(n):null);return C.createElement(CS.Provider,{value:a},C.createElement(F_,{space:!0},o?C.cloneElement(n,{ref:s}):n))}),TS=e=>{let{componentCls:t,motionDurationSlow:n,horizontalLineHeight:r,colorSplit:i,lineWidth:a,lineType:o,itemPaddingInline:s}=e;return{[`${t}-horizontal`]:{lineHeight:r,border:0,borderBottom:`${J(a)} ${o} ${i}`,boxShadow:`none`,"&::after":{display:`block`,clear:`both`,height:0,content:`"\\20"`},[`${t}-item, ${t}-submenu`]:{position:`relative`,display:`inline-block`,verticalAlign:`bottom`,paddingInline:s},[`> ${t}-item:hover,
> ${t}-item-active,
- > ${t}-submenu ${t}-submenu-title:hover`]:{backgroundColor:`transparent`},[`${t}-item, ${t}-submenu-title`]:{transition:[`border-color`,`background-color`].map(e=>`${e} ${n}`).join(`,`)},[`${t}-submenu-arrow`]:{display:`none`}}}},Wie=({componentCls:e,menuArrowOffset:t,calc:n})=>({[`${e}-rtl`]:{direction:`rtl`},[`${e}-submenu-rtl`]:{transformOrigin:`100% 0`},[`${e}-rtl${e}-vertical,
- ${e}-submenu-rtl ${e}-vertical`]:{[`${e}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateY(${J(n(t).mul(-1).equal())})`},"&::after":{transform:`rotate(45deg) translateY(${J(t)})`}}}}),VS=e=>Qc(e),HS=(e,t)=>{let{componentCls:n,itemColor:r,itemSelectedColor:i,subMenuItemSelectedColor:a,groupTitleColor:o,itemBg:s,subMenuItemBg:c,itemSelectedBg:l,activeBarHeight:u,activeBarWidth:d,activeBarBorderWidth:f,motionDurationSlow:p,motionEaseInOut:m,motionEaseOut:h,itemPaddingInline:g,motionDurationMid:_,itemHoverColor:v,lineType:y,colorSplit:b,itemDisabledColor:x,dangerItemColor:S,dangerItemHoverColor:C,dangerItemSelectedColor:w,dangerItemActiveBg:T,dangerItemSelectedBg:E,popupBg:D,itemHoverBg:O,itemActiveBg:k,menuSubMenuBg:A,horizontalItemSelectedColor:j,horizontalItemSelectedBg:M,horizontalItemBorderRadius:N,horizontalItemHoverBg:P}=e;return{[`${n}-${t}, ${n}-${t} > ${n}`]:{color:r,background:s,[`&${n}-root:focus-visible`]:{...VS(e)},[`${n}-item`]:{"&-group-title, &-extra":{color:o}},[`${n}-submenu-selected > ${n}-submenu-title`]:{color:a},[`${n}-item, ${n}-submenu-title`]:{color:r,[`&:not(${n}-item-disabled):focus-visible`]:{...VS(e)}},[`${n}-item-disabled, ${n}-submenu-disabled`]:{color:`${x} !important`},[`${n}-item:not(${n}-item-selected):not(${n}-submenu-selected)`]:{[`&:hover, > ${n}-submenu-title:hover`]:{color:v}},[`${n}-submenu:not(${n}-submenu-selected)`]:{[`> ${n}-submenu-title:hover`]:{color:v}},[`&:not(${n}-horizontal)`]:{[`${n}-item:not(${n}-item-selected)`]:{"&:hover":{backgroundColor:O},"&:active":{backgroundColor:k}},[`${n}-submenu-title`]:{"&:hover":{backgroundColor:O},"&:active":{backgroundColor:k}}},[`${n}-item-danger`]:{color:S,[`&${n}-item:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:C}},[`&${n}-item:active`]:{background:T}},[`${n}-item a`]:{"&, &:hover":{color:`inherit`}},[`${n}-item-selected`]:{color:i,[`&${n}-item-danger`]:{color:w},"a, a:hover":{color:`inherit`}},[`& ${n}-item-selected`]:{backgroundColor:l,[`&${n}-item-danger`]:{backgroundColor:E}},[`&${n}-submenu > ${n}`]:{backgroundColor:A},[`&${n}-popup > ${n}`]:{backgroundColor:D},[`&${n}-submenu-popup > ${n}`]:{backgroundColor:D},[`&${n}-horizontal`]:{...t===`dark`?{borderBottom:0}:{},[`> ${n}-item, > ${n}-submenu`]:{top:f,marginTop:e.calc(f).mul(-1).equal(),marginBottom:0,borderRadius:N,"&::after":{position:`absolute`,insetInline:g,bottom:0,borderBottom:`${J(u)} solid transparent`,transition:`border-color ${p} ${m}`,content:`""`},"&:hover, &-active, &-open":{background:P,"&::after":{borderBottomWidth:u,borderBottomColor:j}},"&-selected":{color:j,backgroundColor:M,"&:hover":{backgroundColor:M},"&::after":{borderBottomWidth:u,borderBottomColor:j}}}},[`&${n}-root`]:{[`&${n}-inline, &${n}-vertical`]:{borderInlineEnd:`${J(f)} ${y} ${b}`}},[`&${n}-inline`]:{[`${n}-sub${n}-inline`]:{background:c},[`${n}-item`]:{position:`relative`,"&::after":{position:`absolute`,insetBlock:0,insetInlineEnd:0,borderInlineEnd:`${J(d)} solid ${i}`,transform:`scaleY(0.0001)`,opacity:0,transition:[`transform`,`opacity`].map(e=>`${e} ${_} ${h}`).join(`,`),content:`""`},[`&${n}-item-danger`]:{"&::after":{borderInlineEndColor:w}}},[`${n}-selected, ${n}-item-selected`]:{"&::after":{transform:`scaleY(1)`,opacity:1,transition:[`transform`,`opacity`].map(e=>`${e} ${_} ${m}`).join(`,`)}}}}}},US=e=>{let{componentCls:t,itemHeight:n,itemMarginInline:r,padding:i,menuArrowSize:a,marginXS:o,itemMarginBlock:s,itemWidth:c,itemPaddingInline:l}=e,u=e.calc(a).add(i).add(o).equal();return{[`${t}-item`]:{position:`relative`,overflow:`hidden`},[`${t}-item, ${t}-submenu-title`]:{height:n,lineHeight:J(n),paddingInline:l,overflow:`hidden`,textOverflow:`ellipsis`,marginInline:r,marginBlock:s,width:c},[`> ${t}-item,
+ > ${t}-submenu ${t}-submenu-title:hover`]:{backgroundColor:`transparent`},[`${t}-item, ${t}-submenu-title`]:{transition:[`border-color`,`background-color`].map(e=>`${e} ${n}`).join(`,`)},[`${t}-submenu-arrow`]:{display:`none`}}}},ES=({componentCls:e,menuArrowOffset:t,calc:n})=>({[`${e}-rtl`]:{direction:`rtl`},[`${e}-submenu-rtl`]:{transformOrigin:`100% 0`},[`${e}-rtl${e}-vertical,
+ ${e}-submenu-rtl ${e}-vertical`]:{[`${e}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateY(${J(n(t).mul(-1).equal())})`},"&::after":{transform:`rotate(45deg) translateY(${J(t)})`}}}}),DS=e=>Qc(e),OS=(e,t)=>{let{componentCls:n,itemColor:r,itemSelectedColor:i,subMenuItemSelectedColor:a,groupTitleColor:o,itemBg:s,subMenuItemBg:c,itemSelectedBg:l,activeBarHeight:u,activeBarWidth:d,activeBarBorderWidth:f,motionDurationSlow:p,motionEaseInOut:m,motionEaseOut:h,itemPaddingInline:g,motionDurationMid:_,itemHoverColor:v,lineType:y,colorSplit:b,itemDisabledColor:x,dangerItemColor:S,dangerItemHoverColor:C,dangerItemSelectedColor:w,dangerItemActiveBg:T,dangerItemSelectedBg:E,popupBg:D,itemHoverBg:O,itemActiveBg:k,menuSubMenuBg:A,horizontalItemSelectedColor:j,horizontalItemSelectedBg:M,horizontalItemBorderRadius:N,horizontalItemHoverBg:P}=e;return{[`${n}-${t}, ${n}-${t} > ${n}`]:{color:r,background:s,[`&${n}-root:focus-visible`]:{...DS(e)},[`${n}-item`]:{"&-group-title, &-extra":{color:o}},[`${n}-submenu-selected > ${n}-submenu-title`]:{color:a},[`${n}-item, ${n}-submenu-title`]:{color:r,[`&:not(${n}-item-disabled):focus-visible`]:{...DS(e)}},[`${n}-item-disabled, ${n}-submenu-disabled`]:{color:`${x} !important`},[`${n}-item:not(${n}-item-selected):not(${n}-submenu-selected)`]:{[`&:hover, > ${n}-submenu-title:hover`]:{color:v}},[`${n}-submenu:not(${n}-submenu-selected)`]:{[`> ${n}-submenu-title:hover`]:{color:v}},[`&:not(${n}-horizontal)`]:{[`${n}-item:not(${n}-item-selected)`]:{"&:hover":{backgroundColor:O},"&:active":{backgroundColor:k}},[`${n}-submenu-title`]:{"&:hover":{backgroundColor:O},"&:active":{backgroundColor:k}}},[`${n}-item-danger`]:{color:S,[`&${n}-item:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:C}},[`&${n}-item:active`]:{background:T}},[`${n}-item a`]:{"&, &:hover":{color:`inherit`}},[`${n}-item-selected`]:{color:i,[`&${n}-item-danger`]:{color:w},"a, a:hover":{color:`inherit`}},[`& ${n}-item-selected`]:{backgroundColor:l,[`&${n}-item-danger`]:{backgroundColor:E}},[`&${n}-submenu > ${n}`]:{backgroundColor:A},[`&${n}-popup > ${n}`]:{backgroundColor:D},[`&${n}-submenu-popup > ${n}`]:{backgroundColor:D},[`&${n}-horizontal`]:{...t===`dark`?{borderBottom:0}:{},[`> ${n}-item, > ${n}-submenu`]:{top:f,marginTop:e.calc(f).mul(-1).equal(),marginBottom:0,borderRadius:N,"&::after":{position:`absolute`,insetInline:g,bottom:0,borderBottom:`${J(u)} solid transparent`,transition:`border-color ${p} ${m}`,content:`""`},"&:hover, &-active, &-open":{background:P,"&::after":{borderBottomWidth:u,borderBottomColor:j}},"&-selected":{color:j,backgroundColor:M,"&:hover":{backgroundColor:M},"&::after":{borderBottomWidth:u,borderBottomColor:j}}}},[`&${n}-root`]:{[`&${n}-inline, &${n}-vertical`]:{borderInlineEnd:`${J(f)} ${y} ${b}`}},[`&${n}-inline`]:{[`${n}-sub${n}-inline`]:{background:c},[`${n}-item`]:{position:`relative`,"&::after":{position:`absolute`,insetBlock:0,insetInlineEnd:0,borderInlineEnd:`${J(d)} solid ${i}`,transform:`scaleY(0.0001)`,opacity:0,transition:[`transform`,`opacity`].map(e=>`${e} ${_} ${h}`).join(`,`),content:`""`},[`&${n}-item-danger`]:{"&::after":{borderInlineEndColor:w}}},[`${n}-selected, ${n}-item-selected`]:{"&::after":{transform:`scaleY(1)`,opacity:1,transition:[`transform`,`opacity`].map(e=>`${e} ${_} ${m}`).join(`,`)}}}}}},kS=e=>{let{componentCls:t,itemHeight:n,itemMarginInline:r,padding:i,menuArrowSize:a,marginXS:o,itemMarginBlock:s,itemWidth:c,itemPaddingInline:l}=e,u=e.calc(a).add(i).add(o).equal();return{[`${t}-item`]:{position:`relative`,overflow:`hidden`},[`${t}-item, ${t}-submenu-title`]:{height:n,lineHeight:J(n),paddingInline:l,overflow:`hidden`,textOverflow:`ellipsis`,marginInline:r,marginBlock:s,width:c},[`> ${t}-item,
> ${t}-submenu > ${t}-submenu-title`]:{height:n,lineHeight:J(n)},[`${t}-item-group-list ${t}-submenu-title,
- ${t}-submenu-title`]:{paddingInlineEnd:u}}},Gie=e=>{let{componentCls:t,iconCls:n,itemHeight:r,colorTextLightSolid:i,dropdownWidth:a,controlHeightLG:o,motionEaseOut:s,paddingXL:c,itemMarginInline:l,fontSizeLG:u,motionDurationFast:d,motionDurationSlow:f,paddingXS:p,boxShadowSecondary:m,collapsedWidth:h,collapsedIconSize:g}=e,_={height:r,lineHeight:J(r),listStylePosition:`inside`,listStyleType:`disc`};return[{[t]:{"&-inline, &-vertical":{[`&${t}-root`]:{boxShadow:`none`},...US(e)}},[`${t}-submenu-popup`]:{[`${t}-vertical`]:{...US(e),boxShadow:m}}},{[`${t}-submenu-popup ${t}-vertical${t}-sub`]:{minWidth:a,maxHeight:`calc(100vh - ${J(e.calc(o).mul(2.5).equal())})`,padding:`0`,overflow:`hidden`,borderInlineEnd:0,"&:not([class*='-active'])":{overflowX:`hidden`,overflowY:`auto`}}},{[`${t}-inline`]:{width:`100%`,[`&${t}-root`]:{[`${t}-item, ${t}-submenu-title`]:{display:`flex`,alignItems:`center`,transition:[`border-color ${f}`,`background-color ${f}`,`padding ${d} ${s}`].join(`,`),[`> ${t}-title-content`]:{flex:`auto`,minWidth:0,overflow:`hidden`,textOverflow:`ellipsis`},"> *":{flex:`none`}}},[`${t}-sub${t}-inline`]:{padding:0,border:0,borderRadius:0,boxShadow:`none`,[`& > ${t}-submenu > ${t}-submenu-title`]:_,[`& ${t}-item-group-title`]:{paddingInlineStart:c}},[`${t}-item`]:_}},{[`${t}-inline-collapsed`]:{width:h,[`&${t}-root`]:{[`${t}-item, ${t}-submenu ${t}-submenu-title`]:{[`> ${t}-inline-collapsed-noicon`]:{fontSize:u,textAlign:`center`}}},[`> ${t}-item,
+ ${t}-submenu-title`]:{paddingInlineEnd:u}}},AS=e=>{let{componentCls:t,iconCls:n,itemHeight:r,colorTextLightSolid:i,dropdownWidth:a,controlHeightLG:o,motionEaseOut:s,paddingXL:c,itemMarginInline:l,fontSizeLG:u,motionDurationFast:d,motionDurationSlow:f,paddingXS:p,boxShadowSecondary:m,collapsedWidth:h,collapsedIconSize:g}=e,_={height:r,lineHeight:J(r),listStylePosition:`inside`,listStyleType:`disc`};return[{[t]:{"&-inline, &-vertical":{[`&${t}-root`]:{boxShadow:`none`},...kS(e)}},[`${t}-submenu-popup`]:{[`${t}-vertical`]:{...kS(e),boxShadow:m}}},{[`${t}-submenu-popup ${t}-vertical${t}-sub`]:{minWidth:a,maxHeight:`calc(100vh - ${J(e.calc(o).mul(2.5).equal())})`,padding:`0`,overflow:`hidden`,borderInlineEnd:0,"&:not([class*='-active'])":{overflowX:`hidden`,overflowY:`auto`}}},{[`${t}-inline`]:{width:`100%`,[`&${t}-root`]:{[`${t}-item, ${t}-submenu-title`]:{display:`flex`,alignItems:`center`,transition:[`border-color ${f}`,`background-color ${f}`,`padding ${d} ${s}`].join(`,`),[`> ${t}-title-content`]:{flex:`auto`,minWidth:0,overflow:`hidden`,textOverflow:`ellipsis`},"> *":{flex:`none`}}},[`${t}-sub${t}-inline`]:{padding:0,border:0,borderRadius:0,boxShadow:`none`,[`& > ${t}-submenu > ${t}-submenu-title`]:_,[`& ${t}-item-group-title`]:{paddingInlineStart:c}},[`${t}-item`]:_}},{[`${t}-inline-collapsed`]:{width:h,[`&${t}-root`]:{[`${t}-item, ${t}-submenu ${t}-submenu-title`]:{[`> ${t}-inline-collapsed-noicon`]:{fontSize:u,textAlign:`center`}}},[`> ${t}-item,
> ${t}-item-group > ${t}-item-group-list > ${t}-item,
> ${t}-item-group > ${t}-item-group-list > ${t}-submenu > ${t}-submenu-title,
> ${t}-submenu > ${t}-submenu-title`]:{display:`flex`,alignItems:`center`,justifyContent:`center`,insetInlineStart:0,paddingInline:`calc(50% - ${J(e.calc(g).div(2).equal())} - ${J(l)})`,textOverflow:`clip`,[`
${t}-submenu-arrow,
${t}-submenu-expand-icon
- `]:{opacity:0},[`> ${t}-title-content`]:{width:0,opacity:0,overflow:`hidden`},[`${t}-item-icon, ${n}`]:{margin:0,fontSize:g,lineHeight:J(r),"+ span":{display:`inline-block`,width:0,opacity:0,overflow:`hidden`,marginInlineStart:0}}},[`${t}-item-icon, ${n}`]:{display:`inline-block`},"&-tooltip":{pointerEvents:`none`,[`${t}-item-icon, ${n}`]:{display:`none`},"a, a:hover":{color:i}},[`${t}-item-group-title`]:{...Jc,paddingInline:p}}}]},WS=e=>{let{componentCls:t,motionDurationSlow:n,motionDurationMid:r,motionEaseInOut:i,motionEaseOut:a,iconCls:o,iconSize:s,iconMarginInlineEnd:c}=e;return{[`${t}-item, ${t}-submenu-title`]:{position:`relative`,display:`block`,margin:0,whiteSpace:`nowrap`,cursor:`pointer`,transition:[`border-color ${n}`,`background-color ${n}`,`padding calc(${n} + 0.1s) ${i}`].join(`,`),[`${t}-item-icon, ${o}`]:{minWidth:s,fontSize:s,transition:[`font-size ${r} ${a}`,`margin ${n} ${i}`,`color ${n}`].join(`,`),"+ span":{marginInlineStart:c,opacity:1,transition:[`opacity ${n} ${i}`,`margin ${n}`,`color ${n}`].join(`,`)}},[`${t}-item-icon`]:{...Xc()},[`&${t}-item-only-child`]:{[`> ${o}, > ${t}-item-icon`]:{marginInlineEnd:0}}},[`${t}-item-disabled, ${t}-submenu-disabled`]:{background:`none !important`,cursor:`not-allowed`,"&::after":{borderColor:`transparent !important`},a:{color:`inherit !important`,cursor:`not-allowed`,pointerEvents:`none`},[`> ${t}-submenu-title`]:{color:`inherit !important`,cursor:`not-allowed`}}}},GS=e=>{let{componentCls:t,motionDurationSlow:n,motionEaseInOut:r,borderRadius:i,menuArrowSize:a,menuArrowOffset:o}=e;return{[`${t}-submenu`]:{"&-expand-icon, &-arrow":{position:`absolute`,top:`50%`,insetInlineEnd:e.margin,width:a,color:`currentcolor`,transform:`translateY(-50%)`,transition:[`transform`,`opacity`].map(e=>`${e} ${n}`).join(`,`)},"&-arrow":{"&::before, &::after":{position:`absolute`,width:e.calc(a).mul(.6).equal(),height:e.calc(a).mul(.15).equal(),backgroundColor:`currentcolor`,borderRadius:i,transition:[`background-color`,`transform`,`top`,`color`].map(e=>`${e} ${n} ${r}`).join(`,`),content:`""`},"&::before":{transform:`rotate(45deg) translateY(${J(e.calc(o).mul(-1).equal())})`},"&::after":{transform:`rotate(-45deg) translateY(${J(o)})`}}}}},Kie=e=>{let{antCls:t,componentCls:n,fontSize:r,motionDurationSlow:i,motionDurationMid:a,motionEaseInOut:o,paddingXS:s,padding:c,colorSplit:l,lineWidth:u,zIndexPopup:d,borderRadiusLG:f,subMenuItemBorderRadius:p,menuArrowSize:m,menuArrowOffset:h,lineType:g,groupTitleLineHeight:_,groupTitleFontSize:v}=e;return[{"":{[n]:{...Zc(),"&-hidden":{display:`none`}}},[`${n}-submenu-hidden`]:{display:`none`}},{[n]:{...Yc(e),...Zc(),marginBottom:0,paddingInlineStart:0,fontSize:r,lineHeight:0,listStyle:`none`,outline:`none`,transition:`width ${i} cubic-bezier(0.2, 0, 0, 1) 0s`,"ul, ol":{margin:0,padding:0,listStyle:`none`},"&-overflow":{display:`flex`,[`${n}-item`]:{flex:`none`}},[`${n}-item, ${n}-submenu, ${n}-submenu-title`]:{borderRadius:e.itemBorderRadius},[`${n}-item-group-title`]:{padding:`${J(s)} ${J(c)}`,fontSize:v,lineHeight:_,transition:`all ${i}`},[`&-horizontal ${n}-submenu`]:{transition:[`border-color`,`background-color`].map(e=>`${e} ${i} ${o}`).join(`,`)},[`${n}-submenu, ${n}-submenu-inline`]:{transition:[`border-color ${i}`,`background-color ${i}`,`padding ${a}`].map(e=>`${e} ${o}`).join(`,`)},[`${n}-submenu ${n}-sub`]:{cursor:`initial`,transition:[`background-color`,`padding`].map(e=>`${e} ${i} ${o}`).join(`,`)},[`${n}-title-content`]:{transition:`color ${i}`,"&-with-extra":{display:`inline-flex`,alignItems:`center`,width:`100%`},[`> ${t}-typography-ellipsis-single-line`]:{display:`inline`,verticalAlign:`unset`},[`${n}-item-extra`]:{marginInlineStart:`auto`,paddingInlineStart:e.padding}},[`${n}-item a`]:{"&::before":{position:`absolute`,inset:0,backgroundColor:`transparent`,content:`""`}},[`${n}-item-divider`]:{overflow:`hidden`,lineHeight:0,borderColor:l,borderStyle:g,borderWidth:0,borderTopWidth:u,marginBlock:u,padding:0,"&-dashed":{borderStyle:`dashed`}},...WS(e),[`${n}-item-group`]:{[`${n}-item-group-list`]:{margin:0,padding:0,[`${n}-item, ${n}-submenu-title`]:{paddingInline:`${J(e.calc(r).mul(2).equal())} ${J(c)}`}}},"&-submenu":{"&-popup":{position:`absolute`,zIndex:d,borderRadius:f,boxShadow:`none`,transformOrigin:`0 0`,[`&${n}-submenu`]:{background:`transparent`},"&::before":{position:`absolute`,inset:0,zIndex:-1,width:`100%`,height:`100%`,opacity:0,content:`""`},[`> ${n}`]:{borderRadius:f,...WS(e),...GS(e),[`${n}-item, ${n}-submenu > ${n}-submenu-title`]:{borderRadius:p},[`${n}-submenu-title::after`]:{transition:`transform ${i} ${o}`}}},"&-placement-leftTop, &-placement-bottomRight":{transformOrigin:`100% 0`},"&-placement-leftBottom, &-placement-topRight":{transformOrigin:`100% 100%`},"&-placement-rightBottom, &-placement-topLeft":{transformOrigin:`0 100%`},"&-placement-bottomLeft, &-placement-rightTop":{transformOrigin:`0 0`},"&-placement-leftTop, &-placement-leftBottom":{paddingInlineEnd:e.paddingXS},"&-placement-rightTop, &-placement-rightBottom":{paddingInlineStart:e.paddingXS},"&-placement-topRight, &-placement-topLeft":{paddingBottom:e.paddingXS},"&-placement-bottomRight, &-placement-bottomLeft":{paddingTop:e.paddingXS}},...GS(e),[`&-inline-collapsed ${n}-submenu-arrow,
- &-inline ${n}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateX(${J(h)})`},"&::after":{transform:`rotate(45deg) translateX(${J(e.calc(h).mul(-1).equal())})`}},[`${n}-submenu-open${n}-submenu-inline > ${n}-submenu-title > ${n}-submenu-arrow`]:{transform:`translateY(${J(e.calc(m).mul(.2).mul(-1).equal())})`,"&::after":{transform:`rotate(-45deg) translateX(${J(e.calc(h).mul(-1).equal())})`},"&::before":{transform:`rotate(45deg) translateX(${J(h)})`}}}},{[`${t}-layout-header`]:{[n]:{lineHeight:`inherit`}}}]},qie=e=>{let{colorPrimary:t,colorError:n,colorTextDisabled:r,colorErrorBg:i,colorText:a,colorTextDescription:o,colorBgContainer:s,colorFillAlter:c,colorFillContent:l,lineWidth:u,lineWidthBold:d,controlItemBgActive:f,colorBgTextHover:p,controlHeightLG:m,lineHeight:h,colorBgElevated:g,marginXXS:_,padding:v,fontSize:y,controlHeightSM:b,fontSizeLG:x,colorTextLightSolid:S,colorErrorHover:C}=e,w=e.activeBarWidth??0,T=e.activeBarBorderWidth??u,E=e.itemMarginInline??e.marginXXS,D=new zs(S).setA(.65).toRgbString();return{dropdownWidth:160,zIndexPopup:e.zIndexPopupBase+50,radiusItem:e.borderRadiusLG,itemBorderRadius:e.borderRadiusLG,radiusSubMenuItem:e.borderRadiusSM,subMenuItemBorderRadius:e.borderRadiusSM,colorItemText:a,itemColor:a,colorItemTextHover:a,itemHoverColor:a,colorItemTextHoverHorizontal:t,horizontalItemHoverColor:t,colorGroupTitle:o,groupTitleColor:o,colorItemTextSelected:t,itemSelectedColor:t,subMenuItemSelectedColor:t,colorItemTextSelectedHorizontal:t,horizontalItemSelectedColor:t,colorItemBg:s,itemBg:s,colorItemBgHover:p,itemHoverBg:p,colorItemBgActive:l,itemActiveBg:f,colorSubItemBg:c,subMenuItemBg:c,colorItemBgSelected:f,itemSelectedBg:f,colorItemBgSelectedHorizontal:`transparent`,horizontalItemSelectedBg:`transparent`,colorActiveBarWidth:0,activeBarWidth:w,colorActiveBarHeight:d,activeBarHeight:d,colorActiveBarBorderSize:u,activeBarBorderWidth:T,colorItemTextDisabled:r,itemDisabledColor:r,colorDangerItemText:n,dangerItemColor:n,colorDangerItemTextHover:n,dangerItemHoverColor:n,colorDangerItemTextSelected:n,dangerItemSelectedColor:n,colorDangerItemBgActive:i,dangerItemActiveBg:i,colorDangerItemBgSelected:i,dangerItemSelectedBg:i,itemMarginInline:E,horizontalItemBorderRadius:0,horizontalItemHoverBg:`transparent`,itemHeight:m,groupTitleLineHeight:h,collapsedWidth:m*2,popupBg:g,itemMarginBlock:_,itemPaddingInline:v,horizontalLineHeight:`${m*1.15}px`,iconSize:y,iconMarginInlineEnd:b-y,collapsedIconSize:x,groupTitleFontSize:y,darkItemDisabledColor:new zs(S).setA(.25).toRgbString(),darkItemColor:D,darkDangerItemColor:n,darkItemBg:`#001529`,darkPopupBg:`#001529`,darkSubMenuItemBg:`#000c17`,darkItemSelectedColor:S,darkItemSelectedBg:t,darkDangerItemSelectedBg:n,darkItemHoverBg:`transparent`,darkGroupTitleColor:D,darkItemHoverColor:S,darkDangerItemHoverColor:C,darkDangerItemSelectedColor:S,darkDangerItemActiveBg:n,itemWidth:w?`calc(100% + ${T}px)`:`calc(100% - ${E*2}px)`}},Jie=(e,t=e,n=!0)=>il(`Menu`,e=>{let{colorBgElevated:t,controlHeightLG:n,fontSize:r,darkItemColor:i,darkDangerItemColor:a,darkItemBg:o,darkSubMenuItemBg:s,darkItemSelectedColor:c,darkItemSelectedBg:l,darkDangerItemSelectedBg:u,darkItemHoverBg:d,darkGroupTitleColor:f,darkItemHoverColor:p,darkItemDisabledColor:m,darkDangerItemHoverColor:h,darkDangerItemSelectedColor:g,darkDangerItemActiveBg:_,popupBg:v,darkPopupBg:y}=e,b=e.calc(r).div(7).mul(5).equal(),x=_s(e,{menuArrowSize:b,menuHorizontalHeight:e.calc(n).mul(1.15).equal(),menuArrowOffset:e.calc(b).mul(.25).equal(),menuSubMenuBg:t,calc:e.calc,popupBg:v}),S=_s(x,{itemColor:i,itemHoverColor:p,groupTitleColor:f,itemSelectedColor:c,subMenuItemSelectedColor:c,itemBg:o,popupBg:y,subMenuItemBg:s,itemActiveBg:`transparent`,itemSelectedBg:l,activeBarHeight:0,activeBarBorderWidth:0,itemHoverBg:d,itemDisabledColor:m,dangerItemColor:a,dangerItemHoverColor:h,dangerItemSelectedColor:g,dangerItemActiveBg:_,dangerItemSelectedBg:u,menuSubMenuBg:s,horizontalItemSelectedColor:c,horizontalItemSelectedBg:l});return[Kie(x),Uie(x),Gie(x),HS(x,`light`),HS(S,`dark`),Wie(x),nh(x),dh(x,`slide-up`),dh(x,`slide-down`),gh(x,`zoom-big`)]},qie,{deprecatedTokens:[[`colorGroupTitle`,`groupTitleColor`],[`radiusItem`,`itemBorderRadius`],[`radiusSubMenuItem`,`subMenuItemBorderRadius`],[`colorItemText`,`itemColor`],[`colorItemTextHover`,`itemHoverColor`],[`colorItemTextHoverHorizontal`,`horizontalItemHoverColor`],[`colorItemTextSelected`,`itemSelectedColor`],[`colorItemTextSelectedHorizontal`,`horizontalItemSelectedColor`],[`colorItemTextDisabled`,`itemDisabledColor`],[`colorDangerItemText`,`dangerItemColor`],[`colorDangerItemTextHover`,`dangerItemHoverColor`],[`colorDangerItemTextSelected`,`dangerItemSelectedColor`],[`colorDangerItemBgActive`,`dangerItemActiveBg`],[`colorDangerItemBgSelected`,`dangerItemSelectedBg`],[`colorItemBg`,`itemBg`],[`colorItemBgHover`,`itemHoverBg`],[`colorSubItemBg`,`subMenuItemBg`],[`colorItemBgActive`,`itemActiveBg`],[`colorItemBgSelectedHorizontal`,`horizontalItemSelectedBg`],[`colorActiveBarWidth`,`activeBarWidth`],[`colorActiveBarHeight`,`activeBarHeight`],[`colorActiveBarBorderSize`,`activeBarBorderWidth`],[`colorItemBgSelected`,`itemSelectedBg`]],injectStyle:n,unitless:{groupTitleLineHeight:!0}})(e,t),KS=e=>{let{popupClassName:t,icon:n,title:r,theme:i}=e,a=C.useContext(IS),{prefixCls:o,inlineCollapsed:s,theme:c,classNames:l,styles:u}=a,d=Lx(),f;if(!n)f=s&&!d.length&&r&&typeof r==`string`?C.createElement(`div`,{className:`${o}-inline-collapsed-noicon`},r.charAt(0)):C.createElement(`span`,{className:`${o}-title-content`},r);else{let e=C.isValidElement(r)&&r.type===`span`;f=C.createElement(C.Fragment,null,Fp(n,e=>({className:q(e.className,`${o}-item-icon`,l?.itemIcon),style:{...e.style,...u?.itemIcon}})),e?r:C.createElement(`span`,{className:`${o}-title-content`},r))}let p=C.useMemo(()=>({...a,firstLevel:!1}),[a]),[m]=Xd(`Menu`);return C.createElement(IS.Provider,{value:p},C.createElement(hS,{...Cr(e,[`icon`]),title:f,classNames:{list:l?.subMenu?.list,listTitle:l?.subMenu?.itemTitle},styles:{list:u?.subMenu?.list,listTitle:u?.subMenu?.itemTitle},popupClassName:q(o,t,l?.popup?.root,`${o}-${i||c}`),popupStyle:{zIndex:m,...e.popupStyle,...u?.popup?.root}}))};function qS(e){return e===null||e===!1}var Yie={item:RS,submenu:KS,divider:LS},Xie=(0,C.forwardRef)((e,t)=>{let n=C.useContext(zS),r=n||{},{prefixCls:i,className:a,style:o,theme:s=`light`,expandIcon:c,_internalDisableMenuItemTitleTooltip:l,tooltip:u,inlineCollapsed:d,siderCollapsed:f,rootClassName:p,mode:m,selectable:h,onClick:g,overflowedIndicatorPopupClassName:_,classNames:v,styles:y,...b}=e,{menu:x}=C.useContext(si),{getPrefixCls:S,getPopupContainer:w,direction:T,className:E,style:D,classNames:O,styles:k}=ui(`menu`),A=S(),j=Cr(b,[`collapsedWidth`]);r.validator?.({mode:m});let M=Rn((...e)=>{g?.(...e),r.onClick?.()}),N=r.mode||m,P=h??r.selectable,F=d??f,I={...e,mode:N,inlineCollapsed:F,selectable:P,theme:s},[L,R]=Id([O,v],[k,y],{props:I},{popup:{_default:`root`},subMenu:{_default:`item`}}),z={horizontal:{motionName:`${A}-slide-up`},inline:Mm(A),other:{motionName:`${A}-zoom-big`}},B=S(`menu`,i||r.prefixCls),V=xf(B),[H,U]=Jie(B,V,!n),W=q(`${B}-${s}`,E,a),ee=C.useMemo(()=>{if(typeof c==`function`||qS(c))return c||null;if(typeof r.expandIcon==`function`||qS(r.expandIcon))return r.expandIcon||null;if(typeof x?.expandIcon==`function`||qS(x?.expandIcon))return x?.expandIcon||null;let e=c??r?.expandIcon??x?.expandIcon;return Fp(e,{className:q(`${B}-submenu-expand-icon`,C.isValidElement(e)?e.props?.className:void 0)})},[c,r?.expandIcon,x?.expandIcon,B]),te=C.useMemo(()=>({prefixCls:B,inlineCollapsed:F||!1,direction:T,firstLevel:!0,theme:s,mode:N,disableMenuItemTitleTooltip:l,tooltip:u,classNames:L,styles:R}),[B,F,T,l,s,N,L,R,u]);return C.createElement(zS.Provider,{value:null},C.createElement(IS.Provider,{value:te},C.createElement(wS,{getPopupContainer:w,overflowedIndicator:C.createElement(FS,null),overflowedIndicatorPopupClassName:q(B,`${B}-${s}`,_),classNames:{list:L.list,listTitle:L.itemTitle},styles:{list:R.list,listTitle:R.itemTitle},mode:N,selectable:P,onClick:M,...j,inlineCollapsed:F,style:{...R.root,...D,...o},className:W,prefixCls:B,direction:T,defaultMotions:z,expandIcon:ee,ref:t,rootClassName:q(p,H,r.rootClassName,U,V,L.root),_internalComponents:Yie})))}),JS=(0,C.forwardRef)((e,t)=>{let n=(0,C.useRef)(null),r=C.useContext(MS);return(0,C.useImperativeHandle)(t,()=>({menu:n.current,focus:e=>{n.current?.focus(e)}})),C.createElement(Xie,{ref:n,...e,...r})});JS.Item=RS,JS.SubMenu=KS,JS.Divider=LS,JS.ItemGroup=vS;var Zie=e=>{let{componentCls:t,menuCls:n,colorError:r,colorTextLightSolid:i}=e,a=`${n}-item`;return{[`${t}, ${t}-menu-submenu`]:{[`${n} ${a}`]:{[`&${a}-danger:not(${a}-disabled)`]:{color:r,"&:hover":{color:i,backgroundColor:r}}}}}},Qie=e=>{let{componentCls:t,menuCls:n,zIndexPopup:r,dropdownArrowDistance:i,sizePopupArrow:a,antCls:o,iconCls:s,motionDurationMid:c,paddingBlock:l,fontSize:u,dropdownEdgeChildPadding:d,colorTextDisabled:f,fontSizeIcon:p,controlPaddingHorizontal:m,colorBgElevated:h}=e;return[{[t]:{position:`absolute`,top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:r,display:`block`,"&::before":{position:`absolute`,insetBlock:e.calc(a).div(2).sub(i).equal(),zIndex:-9999,opacity:1e-4,content:`""`},"&-menu-vertical":{maxHeight:`100vh`,overflowY:`auto`},[`&-trigger${o}-btn`]:{[`& > ${s}-down, & > ${o}-btn-icon > ${s}-down`]:{fontSize:p}},[`${t}-wrap`]:{position:`relative`,[`${o}-btn > ${s}-down`]:{fontSize:p},[`${s}-down::before`]:{transition:`transform ${c}`}},[`${t}-wrap-open`]:{[`${s}-down::before`]:{transform:`rotate(180deg)`}},"&-hidden, &-menu-hidden, &-menu-submenu-hidden":{display:`none`},[`&${o}-slide-down-enter${o}-slide-down-enter-active${t}-placement-bottomLeft,
+ `]:{opacity:0},[`> ${t}-title-content`]:{width:0,opacity:0,overflow:`hidden`},[`${t}-item-icon, ${n}`]:{margin:0,fontSize:g,lineHeight:J(r),"+ span":{display:`inline-block`,width:0,opacity:0,overflow:`hidden`,marginInlineStart:0}}},[`${t}-item-icon, ${n}`]:{display:`inline-block`},"&-tooltip":{pointerEvents:`none`,[`${t}-item-icon, ${n}`]:{display:`none`},"a, a:hover":{color:i}},[`${t}-item-group-title`]:{...Jc,paddingInline:p}}}]},jS=e=>{let{componentCls:t,motionDurationSlow:n,motionDurationMid:r,motionEaseInOut:i,motionEaseOut:a,iconCls:o,iconSize:s,iconMarginInlineEnd:c}=e;return{[`${t}-item, ${t}-submenu-title`]:{position:`relative`,display:`block`,margin:0,whiteSpace:`nowrap`,cursor:`pointer`,transition:[`border-color ${n}`,`background-color ${n}`,`padding calc(${n} + 0.1s) ${i}`].join(`,`),[`${t}-item-icon, ${o}`]:{minWidth:s,fontSize:s,transition:[`font-size ${r} ${a}`,`margin ${n} ${i}`,`color ${n}`].join(`,`),"+ span":{marginInlineStart:c,opacity:1,transition:[`opacity ${n} ${i}`,`margin ${n}`,`color ${n}`].join(`,`)}},[`${t}-item-icon`]:{...Xc()},[`&${t}-item-only-child`]:{[`> ${o}, > ${t}-item-icon`]:{marginInlineEnd:0}}},[`${t}-item-disabled, ${t}-submenu-disabled`]:{background:`none !important`,cursor:`not-allowed`,"&::after":{borderColor:`transparent !important`},a:{color:`inherit !important`,cursor:`not-allowed`,pointerEvents:`none`},[`> ${t}-submenu-title`]:{color:`inherit !important`,cursor:`not-allowed`}}}},MS=e=>{let{componentCls:t,motionDurationSlow:n,motionEaseInOut:r,borderRadius:i,menuArrowSize:a,menuArrowOffset:o}=e;return{[`${t}-submenu`]:{"&-expand-icon, &-arrow":{position:`absolute`,top:`50%`,insetInlineEnd:e.margin,width:a,color:`currentcolor`,transform:`translateY(-50%)`,transition:[`transform`,`opacity`].map(e=>`${e} ${n}`).join(`,`)},"&-arrow":{"&::before, &::after":{position:`absolute`,width:e.calc(a).mul(.6).equal(),height:e.calc(a).mul(.15).equal(),backgroundColor:`currentcolor`,borderRadius:i,transition:[`background-color`,`transform`,`top`,`color`].map(e=>`${e} ${n} ${r}`).join(`,`),content:`""`},"&::before":{transform:`rotate(45deg) translateY(${J(e.calc(o).mul(-1).equal())})`},"&::after":{transform:`rotate(-45deg) translateY(${J(o)})`}}}}},NS=e=>{let{antCls:t,componentCls:n,fontSize:r,motionDurationSlow:i,motionDurationMid:a,motionEaseInOut:o,paddingXS:s,padding:c,colorSplit:l,lineWidth:u,zIndexPopup:d,borderRadiusLG:f,subMenuItemBorderRadius:p,menuArrowSize:m,menuArrowOffset:h,lineType:g,groupTitleLineHeight:_,groupTitleFontSize:v}=e;return[{"":{[n]:{...Zc(),"&-hidden":{display:`none`}}},[`${n}-submenu-hidden`]:{display:`none`}},{[n]:{...Yc(e),...Zc(),marginBottom:0,paddingInlineStart:0,fontSize:r,lineHeight:0,listStyle:`none`,outline:`none`,transition:`width ${i} cubic-bezier(0.2, 0, 0, 1) 0s`,"ul, ol":{margin:0,padding:0,listStyle:`none`},"&-overflow":{display:`flex`,[`${n}-item`]:{flex:`none`}},[`${n}-item, ${n}-submenu, ${n}-submenu-title`]:{borderRadius:e.itemBorderRadius},[`${n}-item-group-title`]:{padding:`${J(s)} ${J(c)}`,fontSize:v,lineHeight:_,transition:`all ${i}`},[`&-horizontal ${n}-submenu`]:{transition:[`border-color`,`background-color`].map(e=>`${e} ${i} ${o}`).join(`,`)},[`${n}-submenu, ${n}-submenu-inline`]:{transition:[`border-color ${i}`,`background-color ${i}`,`padding ${a}`].map(e=>`${e} ${o}`).join(`,`)},[`${n}-submenu ${n}-sub`]:{cursor:`initial`,transition:[`background-color`,`padding`].map(e=>`${e} ${i} ${o}`).join(`,`)},[`${n}-title-content`]:{transition:`color ${i}`,"&-with-extra":{display:`inline-flex`,alignItems:`center`,width:`100%`},[`> ${t}-typography-ellipsis-single-line`]:{display:`inline`,verticalAlign:`unset`},[`${n}-item-extra`]:{marginInlineStart:`auto`,paddingInlineStart:e.padding}},[`${n}-item a`]:{"&::before":{position:`absolute`,inset:0,backgroundColor:`transparent`,content:`""`}},[`${n}-item-divider`]:{overflow:`hidden`,lineHeight:0,borderColor:l,borderStyle:g,borderWidth:0,borderTopWidth:u,marginBlock:u,padding:0,"&-dashed":{borderStyle:`dashed`}},...jS(e),[`${n}-item-group`]:{[`${n}-item-group-list`]:{margin:0,padding:0,[`${n}-item, ${n}-submenu-title`]:{paddingInline:`${J(e.calc(r).mul(2).equal())} ${J(c)}`}}},"&-submenu":{"&-popup":{position:`absolute`,zIndex:d,borderRadius:f,boxShadow:`none`,transformOrigin:`0 0`,[`&${n}-submenu`]:{background:`transparent`},"&::before":{position:`absolute`,inset:0,zIndex:-1,width:`100%`,height:`100%`,opacity:0,content:`""`},[`> ${n}`]:{borderRadius:f,...jS(e),...MS(e),[`${n}-item, ${n}-submenu > ${n}-submenu-title`]:{borderRadius:p},[`${n}-submenu-title::after`]:{transition:`transform ${i} ${o}`}}},"&-placement-leftTop, &-placement-bottomRight":{transformOrigin:`100% 0`},"&-placement-leftBottom, &-placement-topRight":{transformOrigin:`100% 100%`},"&-placement-rightBottom, &-placement-topLeft":{transformOrigin:`0 100%`},"&-placement-bottomLeft, &-placement-rightTop":{transformOrigin:`0 0`},"&-placement-leftTop, &-placement-leftBottom":{paddingInlineEnd:e.paddingXS},"&-placement-rightTop, &-placement-rightBottom":{paddingInlineStart:e.paddingXS},"&-placement-topRight, &-placement-topLeft":{paddingBottom:e.paddingXS},"&-placement-bottomRight, &-placement-bottomLeft":{paddingTop:e.paddingXS}},...MS(e),[`&-inline-collapsed ${n}-submenu-arrow,
+ &-inline ${n}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateX(${J(h)})`},"&::after":{transform:`rotate(45deg) translateX(${J(e.calc(h).mul(-1).equal())})`}},[`${n}-submenu-open${n}-submenu-inline > ${n}-submenu-title > ${n}-submenu-arrow`]:{transform:`translateY(${J(e.calc(m).mul(.2).mul(-1).equal())})`,"&::after":{transform:`rotate(-45deg) translateX(${J(e.calc(h).mul(-1).equal())})`},"&::before":{transform:`rotate(45deg) translateX(${J(h)})`}}}},{[`${t}-layout-header`]:{[n]:{lineHeight:`inherit`}}}]},PS=e=>{let{colorPrimary:t,colorError:n,colorTextDisabled:r,colorErrorBg:i,colorText:a,colorTextDescription:o,colorBgContainer:s,colorFillAlter:c,colorFillContent:l,lineWidth:u,lineWidthBold:d,controlItemBgActive:f,colorBgTextHover:p,controlHeightLG:m,lineHeight:h,colorBgElevated:g,marginXXS:_,padding:v,fontSize:y,controlHeightSM:b,fontSizeLG:x,colorTextLightSolid:S,colorErrorHover:C}=e,w=e.activeBarWidth??0,T=e.activeBarBorderWidth??u,E=e.itemMarginInline??e.marginXXS,D=new zs(S).setA(.65).toRgbString();return{dropdownWidth:160,zIndexPopup:e.zIndexPopupBase+50,radiusItem:e.borderRadiusLG,itemBorderRadius:e.borderRadiusLG,radiusSubMenuItem:e.borderRadiusSM,subMenuItemBorderRadius:e.borderRadiusSM,colorItemText:a,itemColor:a,colorItemTextHover:a,itemHoverColor:a,colorItemTextHoverHorizontal:t,horizontalItemHoverColor:t,colorGroupTitle:o,groupTitleColor:o,colorItemTextSelected:t,itemSelectedColor:t,subMenuItemSelectedColor:t,colorItemTextSelectedHorizontal:t,horizontalItemSelectedColor:t,colorItemBg:s,itemBg:s,colorItemBgHover:p,itemHoverBg:p,colorItemBgActive:l,itemActiveBg:f,colorSubItemBg:c,subMenuItemBg:c,colorItemBgSelected:f,itemSelectedBg:f,colorItemBgSelectedHorizontal:`transparent`,horizontalItemSelectedBg:`transparent`,colorActiveBarWidth:0,activeBarWidth:w,colorActiveBarHeight:d,activeBarHeight:d,colorActiveBarBorderSize:u,activeBarBorderWidth:T,colorItemTextDisabled:r,itemDisabledColor:r,colorDangerItemText:n,dangerItemColor:n,colorDangerItemTextHover:n,dangerItemHoverColor:n,colorDangerItemTextSelected:n,dangerItemSelectedColor:n,colorDangerItemBgActive:i,dangerItemActiveBg:i,colorDangerItemBgSelected:i,dangerItemSelectedBg:i,itemMarginInline:E,horizontalItemBorderRadius:0,horizontalItemHoverBg:`transparent`,itemHeight:m,groupTitleLineHeight:h,collapsedWidth:m*2,popupBg:g,itemMarginBlock:_,itemPaddingInline:v,horizontalLineHeight:`${m*1.15}px`,iconSize:y,iconMarginInlineEnd:b-y,collapsedIconSize:x,groupTitleFontSize:y,darkItemDisabledColor:new zs(S).setA(.25).toRgbString(),darkItemColor:D,darkDangerItemColor:n,darkItemBg:`#001529`,darkPopupBg:`#001529`,darkSubMenuItemBg:`#000c17`,darkItemSelectedColor:S,darkItemSelectedBg:t,darkDangerItemSelectedBg:n,darkItemHoverBg:`transparent`,darkGroupTitleColor:D,darkItemHoverColor:S,darkDangerItemHoverColor:C,darkDangerItemSelectedColor:S,darkDangerItemActiveBg:n,itemWidth:w?`calc(100% + ${T}px)`:`calc(100% - ${E*2}px)`}},FS=(e,t=e,n=!0)=>il(`Menu`,e=>{let{colorBgElevated:t,controlHeightLG:n,fontSize:r,darkItemColor:i,darkDangerItemColor:a,darkItemBg:o,darkSubMenuItemBg:s,darkItemSelectedColor:c,darkItemSelectedBg:l,darkDangerItemSelectedBg:u,darkItemHoverBg:d,darkGroupTitleColor:f,darkItemHoverColor:p,darkItemDisabledColor:m,darkDangerItemHoverColor:h,darkDangerItemSelectedColor:g,darkDangerItemActiveBg:_,popupBg:v,darkPopupBg:y}=e,b=e.calc(r).div(7).mul(5).equal(),x=_s(e,{menuArrowSize:b,menuHorizontalHeight:e.calc(n).mul(1.15).equal(),menuArrowOffset:e.calc(b).mul(.25).equal(),menuSubMenuBg:t,calc:e.calc,popupBg:v}),S=_s(x,{itemColor:i,itemHoverColor:p,groupTitleColor:f,itemSelectedColor:c,subMenuItemSelectedColor:c,itemBg:o,popupBg:y,subMenuItemBg:s,itemActiveBg:`transparent`,itemSelectedBg:l,activeBarHeight:0,activeBarBorderWidth:0,itemHoverBg:d,itemDisabledColor:m,dangerItemColor:a,dangerItemHoverColor:h,dangerItemSelectedColor:g,dangerItemActiveBg:_,dangerItemSelectedBg:u,menuSubMenuBg:s,horizontalItemSelectedColor:c,horizontalItemSelectedBg:l});return[NS(x),TS(x),AS(x),OS(x,`light`),OS(S,`dark`),ES(x),Jm(x),lh(x,`slide-up`),lh(x,`slide-down`),mh(x,`zoom-big`)]},PS,{deprecatedTokens:[[`colorGroupTitle`,`groupTitleColor`],[`radiusItem`,`itemBorderRadius`],[`radiusSubMenuItem`,`subMenuItemBorderRadius`],[`colorItemText`,`itemColor`],[`colorItemTextHover`,`itemHoverColor`],[`colorItemTextHoverHorizontal`,`horizontalItemHoverColor`],[`colorItemTextSelected`,`itemSelectedColor`],[`colorItemTextSelectedHorizontal`,`horizontalItemSelectedColor`],[`colorItemTextDisabled`,`itemDisabledColor`],[`colorDangerItemText`,`dangerItemColor`],[`colorDangerItemTextHover`,`dangerItemHoverColor`],[`colorDangerItemTextSelected`,`dangerItemSelectedColor`],[`colorDangerItemBgActive`,`dangerItemActiveBg`],[`colorDangerItemBgSelected`,`dangerItemSelectedBg`],[`colorItemBg`,`itemBg`],[`colorItemBgHover`,`itemHoverBg`],[`colorSubItemBg`,`subMenuItemBg`],[`colorItemBgActive`,`itemActiveBg`],[`colorItemBgSelectedHorizontal`,`horizontalItemSelectedBg`],[`colorActiveBarWidth`,`activeBarWidth`],[`colorActiveBarHeight`,`activeBarHeight`],[`colorActiveBarBorderSize`,`activeBarBorderWidth`],[`colorItemBgSelected`,`itemSelectedBg`]],injectStyle:n,unitless:{groupTitleLineHeight:!0}})(e,t),IS=e=>{let{popupClassName:t,icon:n,title:r,theme:i}=e,a=C.useContext(bS),{prefixCls:o,inlineCollapsed:s,theme:c,classNames:l,styles:u}=a,d=gx(),f;if(!n)f=s&&!d.length&&r&&typeof r==`string`?C.createElement(`div`,{className:`${o}-inline-collapsed-noicon`},r.charAt(0)):C.createElement(`span`,{className:`${o}-title-content`},r);else{let e=C.isValidElement(r)&&r.type===`span`;f=C.createElement(C.Fragment,null,Fp(n,e=>({className:q(e.className,`${o}-item-icon`,l?.itemIcon),style:{...e.style,...u?.itemIcon}})),e?r:C.createElement(`span`,{className:`${o}-title-content`},r))}let p=C.useMemo(()=>({...a,firstLevel:!1}),[a]),[m]=Xd(`Menu`);return C.createElement(bS.Provider,{value:p},C.createElement(Jx,{...Cr(e,[`icon`]),title:f,classNames:{list:l?.subMenu?.list,listTitle:l?.subMenu?.itemTitle},styles:{list:u?.subMenu?.list,listTitle:u?.subMenu?.itemTitle},popupClassName:q(o,t,l?.popup?.root,`${o}-${i||c}`),popupStyle:{zIndex:m,...e.popupStyle,...u?.popup?.root}}))};function LS(e){return e===null||e===!1}var RS={item:SS,submenu:IS,divider:xS},zS=(0,C.forwardRef)((e,t)=>{let n=C.useContext(CS),r=n||{},{prefixCls:i,className:a,style:o,theme:s=`light`,expandIcon:c,_internalDisableMenuItemTitleTooltip:l,tooltip:u,inlineCollapsed:d,siderCollapsed:f,rootClassName:p,mode:m,selectable:h,onClick:g,overflowedIndicatorPopupClassName:_,classNames:v,styles:y,...b}=e,{menu:x}=C.useContext(si),{getPrefixCls:S,getPopupContainer:w,direction:T,className:E,style:D,classNames:O,styles:k}=ui(`menu`),A=S(),j=Cr(b,[`collapsedWidth`]);r.validator?.({mode:m});let M=Rn((...e)=>{g?.(...e),r.onClick?.()}),N=r.mode||m,P=h??r.selectable,F=d??f,I={...e,mode:N,inlineCollapsed:F,selectable:P,theme:s},[L,R]=Id([O,v],[k,y],{props:I},{popup:{_default:`root`},subMenu:{_default:`item`}}),z={horizontal:{motionName:`${A}-slide-up`},inline:Om(A),other:{motionName:`${A}-zoom-big`}},B=S(`menu`,i||r.prefixCls),V=xf(B),[H,U]=FS(B,V,!n),W=q(`${B}-${s}`,E,a),ee=C.useMemo(()=>{if(typeof c==`function`||LS(c))return c||null;if(typeof r.expandIcon==`function`||LS(r.expandIcon))return r.expandIcon||null;if(typeof x?.expandIcon==`function`||LS(x?.expandIcon))return x?.expandIcon||null;let e=c??r?.expandIcon??x?.expandIcon;return Fp(e,{className:q(`${B}-submenu-expand-icon`,C.isValidElement(e)?e.props?.className:void 0)})},[c,r?.expandIcon,x?.expandIcon,B]),te=C.useMemo(()=>({prefixCls:B,inlineCollapsed:F||!1,direction:T,firstLevel:!0,theme:s,mode:N,disableMenuItemTitleTooltip:l,tooltip:u,classNames:L,styles:R}),[B,F,T,l,s,N,L,R,u]);return C.createElement(CS.Provider,{value:null},C.createElement(bS.Provider,{value:te},C.createElement(rS,{getPopupContainer:w,overflowedIndicator:C.createElement(yS,null),overflowedIndicatorPopupClassName:q(B,`${B}-${s}`,_),classNames:{list:L.list,listTitle:L.itemTitle},styles:{list:R.list,listTitle:R.itemTitle},mode:N,selectable:P,onClick:M,...j,inlineCollapsed:F,style:{...R.root,...D,...o},className:W,prefixCls:B,direction:T,defaultMotions:z,expandIcon:ee,ref:t,rootClassName:q(p,H,r.rootClassName,U,V,L.root),_internalComponents:RS})))}),BS=(0,C.forwardRef)((e,t)=>{let n=(0,C.useRef)(null),r=C.useContext(mS);return(0,C.useImperativeHandle)(t,()=>({menu:n.current,focus:e=>{n.current?.focus(e)}})),C.createElement(zS,{ref:n,...e,...r})});BS.Item=SS,BS.SubMenu=IS,BS.Divider=xS,BS.ItemGroup=Zx;var VS=e=>{let{componentCls:t,menuCls:n,colorError:r,colorTextLightSolid:i}=e,a=`${n}-item`;return{[`${t}, ${t}-menu-submenu`]:{[`${n} ${a}`]:{[`&${a}-danger:not(${a}-disabled)`]:{color:r,"&:hover":{color:i,backgroundColor:r}}}}}},HS=e=>{let{componentCls:t,menuCls:n,zIndexPopup:r,dropdownArrowDistance:i,sizePopupArrow:a,antCls:o,iconCls:s,motionDurationMid:c,paddingBlock:l,fontSize:u,dropdownEdgeChildPadding:d,colorTextDisabled:f,fontSizeIcon:p,controlPaddingHorizontal:m,colorBgElevated:h}=e;return[{[t]:{position:`absolute`,top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:r,display:`block`,"&::before":{position:`absolute`,insetBlock:e.calc(a).div(2).sub(i).equal(),zIndex:-9999,opacity:1e-4,content:`""`},"&-menu-vertical":{maxHeight:`100vh`,overflowY:`auto`},[`&-trigger${o}-btn`]:{[`& > ${s}-down, & > ${o}-btn-icon > ${s}-down`]:{fontSize:p}},[`${t}-wrap`]:{position:`relative`,[`${o}-btn > ${s}-down`]:{fontSize:p},[`${s}-down::before`]:{transition:`transform ${c}`}},[`${t}-wrap-open`]:{[`${s}-down::before`]:{transform:`rotate(180deg)`}},"&-hidden, &-menu-hidden, &-menu-submenu-hidden":{display:`none`},[`&${o}-slide-down-enter${o}-slide-down-enter-active${t}-placement-bottomLeft,
&${o}-slide-down-appear${o}-slide-down-appear-active${t}-placement-bottomLeft,
&${o}-slide-down-enter${o}-slide-down-enter-active${t}-placement-bottom,
&${o}-slide-down-appear${o}-slide-down-appear-active${t}-placement-bottom,
&${o}-slide-down-enter${o}-slide-down-enter-active${t}-placement-bottomRight,
- &${o}-slide-down-appear${o}-slide-down-appear-active${t}-placement-bottomRight`]:{animationName:sh},[`&${o}-slide-up-enter${o}-slide-up-enter-active${t}-placement-topLeft,
+ &${o}-slide-down-appear${o}-slide-down-appear-active${t}-placement-bottomRight`]:{animationName:ah},[`&${o}-slide-up-enter${o}-slide-up-enter-active${t}-placement-topLeft,
&${o}-slide-up-appear${o}-slide-up-appear-active${t}-placement-topLeft,
&${o}-slide-up-enter${o}-slide-up-enter-active${t}-placement-top,
&${o}-slide-up-appear${o}-slide-up-appear-active${t}-placement-top,
&${o}-slide-up-enter${o}-slide-up-enter-active${t}-placement-topRight,
- &${o}-slide-up-appear${o}-slide-up-appear-active${t}-placement-topRight`]:{animationName:lh},[`&${o}-slide-down-leave${o}-slide-down-leave-active${t}-placement-bottomLeft,
+ &${o}-slide-up-appear${o}-slide-up-appear-active${t}-placement-topRight`]:{animationName:sh},[`&${o}-slide-down-leave${o}-slide-down-leave-active${t}-placement-bottomLeft,
&${o}-slide-down-leave${o}-slide-down-leave-active${t}-placement-bottom,
- &${o}-slide-down-leave${o}-slide-down-leave-active${t}-placement-bottomRight`]:{animationName:ch},[`&${o}-slide-up-leave${o}-slide-up-leave-active${t}-placement-topLeft,
+ &${o}-slide-down-leave${o}-slide-down-leave-active${t}-placement-bottomRight`]:{animationName:oh},[`&${o}-slide-up-leave${o}-slide-up-leave-active${t}-placement-topLeft,
&${o}-slide-up-leave${o}-slide-up-leave-active${t}-placement-top,
- &${o}-slide-up-leave${o}-slide-up-leave-active${t}-placement-topRight`]:{animationName:uh}}},Jb(e,h,{arrowPlacement:{top:!0,bottom:!0}}),{[`${t} ${n}`]:{position:`relative`,margin:0},[`${n}-submenu-popup`]:{position:`absolute`,zIndex:r,background:`transparent`,boxShadow:`none`,transformOrigin:`0 0`,"ul, li":{listStyle:`none`,margin:0}},[`${t}, ${t}-menu-submenu`]:{...Yc(e),[n]:{padding:d,listStyleType:`none`,backgroundColor:h,backgroundClip:`padding-box`,borderRadius:e.borderRadiusLG,outline:`none`,boxShadow:e.boxShadowSecondary,...$c(e),"&:empty":{padding:0,boxShadow:`none`},[`${n}-item-group-title`]:{padding:`${J(l)} ${J(m)}`,color:e.colorTextDescription,transition:`all ${c}`},[`${n}-item`]:{position:`relative`,display:`flex`,alignItems:`center`},[`${n}-item-icon`]:{minWidth:u,marginInlineEnd:e.marginXS,fontSize:e.fontSizeSM},[`${n}-title-content`]:{flex:`auto`,"&-with-extra":{display:`inline-flex`,alignItems:`center`,width:`100%`},"> a":{color:`inherit`,transition:`all ${c}`,"&:hover":{color:`inherit`},"&::after":{position:`absolute`,inset:0,content:`""`}},[`${n}-item-extra`]:{paddingInlineStart:e.padding,marginInlineStart:`auto`,fontSize:e.fontSizeSM,color:e.colorTextDescription}},[`${n}-item, ${n}-submenu-title`]:{display:`flex`,margin:0,padding:`${J(l)} ${J(m)}`,color:e.colorText,fontWeight:`normal`,fontSize:u,lineHeight:e.lineHeight,cursor:`pointer`,transition:`all ${c}`,borderRadius:e.borderRadiusSM,"&:hover, &-active":{backgroundColor:e.controlItemBgHover},...$c(e),"&-selected":{color:e.colorPrimary,backgroundColor:e.controlItemBgActive,"&:hover, &-active":{backgroundColor:e.controlItemBgActiveHover}},"&-disabled":{color:f,cursor:`not-allowed`,"&:hover":{color:f,backgroundColor:h,cursor:`not-allowed`},a:{pointerEvents:`none`}},"&-divider":{height:1,margin:`${J(e.marginXXS)} 0`,overflow:`hidden`,lineHeight:0,backgroundColor:e.colorSplit},[`${t}-menu-submenu-expand-icon`]:{position:`absolute`,insetInlineEnd:e.paddingXS,[`${t}-menu-submenu-arrow-icon`]:{marginInlineEnd:`0 !important`,color:e.colorIcon,fontSize:p,fontStyle:`normal`}}},[`${n}-item-group-list`]:{margin:`0 ${J(e.marginXS)}`,padding:0,listStyle:`none`},[`${n}-submenu-title`]:{paddingInlineEnd:e.calc(m).add(e.fontSizeSM).equal()},[`${n}-submenu-vertical`]:{position:`relative`},[`${n}-submenu${n}-submenu-disabled ${t}-menu-submenu-title`]:{[`&, ${t}-menu-submenu-arrow-icon`]:{color:f,backgroundColor:h,cursor:`not-allowed`}},[`${n}-submenu-selected ${t}-menu-submenu-title`]:{color:e.colorPrimary}}}},[dh(e,`slide-up`),dh(e,`slide-down`),oh(e,`move-up`),oh(e,`move-down`),gh(e,`zoom-big`)]]},$ie=il(`Dropdown`,e=>{let{marginXXS:t,sizePopupArrow:n,paddingXXS:r,componentCls:i}=e,a=_s(e,{menuCls:`${i}-menu`,dropdownArrowDistance:e.calc(n).div(2).add(t).equal(),dropdownEdgeChildPadding:r});return[Qie(a),Zie(a)]},e=>({zIndexPopup:e.zIndexPopupBase+50,paddingBlock:(e.controlHeight-e.fontSize*e.lineHeight)/2,...Kb({contentRadius:e.borderRadiusLG,limitVerticalRadius:!0}),...Wb(e)}),{resetStyle:!1}),YS=e=>{let{menu:t,arrow:n,prefixCls:r,children:i,trigger:a,disabled:o,dropdownRender:s,popupRender:c,getPopupContainer:l,overlayClassName:u,rootClassName:d,overlayStyle:f,open:p,onOpenChange:m,mouseEnterDelay:h=.15,mouseLeaveDelay:g=.1,autoAdjustOverflow:_=!0,placement:v=``,transitionName:y,classNames:b,styles:x,destroyPopupOnHide:S,destroyOnHidden:w}=e,{getPrefixCls:T,direction:E,getPopupContainer:D,className:O,style:k,classNames:A,styles:j}=ui(`dropdown`),M={...e,mouseEnterDelay:h,mouseLeaveDelay:g,autoAdjustOverflow:_},[N,P]=Id([A,b],[j,x],{props:M}),F={...k,...f,...P.root},I=c||s;Or(`Dropdown`);let L=C.useMemo(()=>{let e=T();return y===void 0?v.includes(`top`)?`${e}-slide-down`:`${e}-slide-up`:y},[T,v,y]),R=C.useMemo(()=>v?v.includes(`Center`)?v.slice(0,v.indexOf(`Center`)):v:E===`rtl`?`bottomRight`:`bottomLeft`,[v,E]),z=T(`dropdown`,r),B=xf(z),[V,H]=$ie(z,B),[,U]=qc(),W=C.Children.only(yd(i)?C.createElement(`span`,null,i):i),ee=Fp(W,{className:q(`${z}-trigger`,{[`${z}-rtl`]:E===`rtl`},W.props.className),disabled:W.props.disabled??o}),te=o?[]:a,ne=!!te?.includes(`contextMenu`),[re,ie]=Wn(!1,p),ae=Rn(e=>{m?.(e,{source:`trigger`}),ie(e)}),G=q(u,d,V,H,B,O,N.root,{[`${z}-rtl`]:E===`rtl`}),oe=$b({arrowPointAtCenter:gd(n)&&n.pointAtCenter,autoAdjustOverflow:_,offset:U.marginXXS,arrowWidth:n?U.sizePopupArrow:0,borderRadius:U.borderRadius}),K=Rn(()=>{t?.selectable&&t?.multiple||(m?.(!1,{source:`menu`}),ie(!1))}),se=()=>{let e=Cr(N,[`root`]),n=Cr(P,[`root`]),r;return t?.items&&(r=C.createElement(JS,{...t,classNames:{...e,subMenu:{...e}},styles:{...n,subMenu:{...n}}})),I&&(r=I(r)),r=C.Children.only(typeof r==`string`?C.createElement(`span`,null,r):r),C.createElement(BS,{prefixCls:`${z}-menu`,rootClassName:q(H,B),expandIcon:C.createElement(`span`,{className:`${z}-menu-submenu-arrow`},E===`rtl`?C.createElement(wx,{className:`${z}-menu-submenu-arrow-icon`}):C.createElement(Ch,{className:`${z}-menu-submenu-arrow-icon`})),mode:`vertical`,selectable:!1,onClick:K,validator:({mode:e})=>{}},r)},[ce,le]=Xd(`Dropdown`,F.zIndex),ue=C.createElement(Ox,{alignPoint:ne,...Cr(e,[`rootClassName`,`onOpenChange`]),mouseEnterDelay:h,mouseLeaveDelay:g,visible:re,builtinPlacements:oe,arrow:!!n,overlayClassName:G,prefixCls:z,getPopupContainer:l||D,transitionName:L,trigger:te,overlay:se,placement:R,onVisibleChange:ae,overlayStyle:{...F,zIndex:ce},autoDestroy:w??S},ee);return ce&&(ue=C.createElement(Wd.Provider,{value:le},ue)),ue},eae=zv(YS,`align`,void 0,`dropdown`,e=>e);YS._InternalPanelDoNotUseOrYouWillBeFired=e=>C.createElement(eae,{...e},C.createElement(`span`,null));var XS=tg,ZS=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|YYYY|YY|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,g={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(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e){(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_weekday=r()})(e,(function(){return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,n=this.$W,r=(n{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_localeData=r()})(e,(function(){return function(e,t,n){var r=t.prototype,i=function(e){return e&&(e.indexOf?e:e.s)},a=function(e,t,n,r,a){var o=e.name?e:e.$locale(),s=i(o[t]),c=i(o[n]),l=s||c.map((function(e){return e.slice(0,r)}));if(!a)return l;var u=o.weekStart;return l.map((function(e,t){return l[(t+(u||0))%7]}))},o=function(){return n.Ls[n.locale()]},s=function(e,t){return e.formats[t]||function(e){return e.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}(e.formats[t.toUpperCase()])},c=function(){var e=this;return{months:function(t){return t?t.format(`MMMM`):a(e,`months`)},monthsShort:function(t){return t?t.format(`MMM`):a(e,`monthsShort`,`months`,3)},firstDayOfWeek:function(){return e.$locale().weekStart||0},weekdays:function(t){return t?t.format(`dddd`):a(e,`weekdays`)},weekdaysMin:function(t){return t?t.format(`dd`):a(e,`weekdaysMin`,`weekdays`,2)},weekdaysShort:function(t){return t?t.format(`ddd`):a(e,`weekdaysShort`,`weekdays`,3)},longDateFormat:function(t){return s(e.$locale(),t)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return c.bind(this)()},n.localeData=function(){var e=o();return{firstDayOfWeek:function(){return e.weekStart||0},weekdays:function(){return n.weekdays()},weekdaysShort:function(){return n.weekdaysShort()},weekdaysMin:function(){return n.weekdaysMin()},months:function(){return n.months()},monthsShort:function(){return n.monthsShort()},longDateFormat:function(t){return s(e,t)},meridiem:e.meridiem,ordinal:e.ordinal}},n.months=function(){return a(o(),`months`)},n.monthsShort=function(){return a(o(),`monthsShort`,`months`,3)},n.weekdays=function(e){return a(o(),`weekdays`,null,null,e)},n.weekdaysShort=function(e){return a(o(),`weekdaysShort`,`weekdays`,3,e)},n.weekdaysMin=function(e){return a(o(),`weekdaysMin`,`weekdays`,2,e)}}}))})),rae=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_weekOfYear=r()})(e,(function(){var e=`week`,t=`year`;return function(n,r,i){var a=r.prototype;a.week=function(n){if(n===void 0&&(n=null),n!==null)return this.add(7*(n-this.week()),`day`);var r=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var a=i(this).startOf(t).add(1,t).date(r),o=i(this).endOf(e);if(a.isBefore(o))return 1}var s=i(this).startOf(t).date(r).startOf(e).subtract(1,`millisecond`),c=this.diff(s,e,!0);return c<0?i(this).startOf(`week`).week():Math.ceil(c)},a.weeks=function(e){return e===void 0&&(e=null),this.week(e)}}}))})),iae=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_weekYear=r()})(e,(function(){return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return t===1&&e===11?n+1:e===0&&t>=52?n-1:n}}}))})),aae=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_advancedFormat=r()})(e,(function(){return function(e,t){var n=t.prototype,r=n.format;n.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return r.bind(this)(e);var i=this.$utils(),a=(e||`YYYY-MM-DDTHH:mm:ssZ`).replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case`Q`:return Math.ceil((t.$M+1)/3);case`Do`:return n.ordinal(t.$D);case`gggg`:return t.weekYear();case`GGGG`:return t.isoWeekYear();case`wo`:return n.ordinal(t.week(),`W`);case`w`:case`ww`:return i.s(t.week(),e===`w`?1:2,`0`);case`W`:case`WW`:return i.s(t.isoWeek(),e===`W`?1:2,`0`);case`k`:case`kk`:return i.s(String(t.$H===0?24:t.$H),e===`k`?1:2,`0`);case`X`:return Math.floor(t.$d.getTime()/1e3);case`x`:return t.$d.getTime();case`z`:return`[`+t.offsetName()+`]`;case`zzz`:return`[`+t.offsetName(`long`)+`]`;default:return e}}));return r.bind(this)(a)}}}))})),oae=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_customParseFormat=r()})(e,(function(){var e={LTS:`h:mm:ss A`,LT:`h:mm A`,L:`MM/DD/YYYY`,LL:`MMMM D, YYYY`,LLL:`MMMM D, YYYY h:mm A`,LLLL:`dddd, MMMM D, YYYY h:mm A`},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)},c=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||={}).offset=function(e){if(!e||e===`Z`)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return n===0?0:t[0]===`+`?-n:n}(e)}],u=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?`pm`:`PM`);return n},f={A:[a,function(e){this.afternoon=d(e,!1)}],a:[a,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*e}],SS:[r,function(e){this.milliseconds=10*e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,c(`seconds`)],ss:[i,c(`seconds`)],m:[i,c(`minutes`)],mm:[i,c(`minutes`)],H:[i,c(`hours`)],h:[i,c(`hours`)],HH:[i,c(`hours`)],hh:[i,c(`hours`)],D:[i,c(`day`)],DD:[r,c(`day`)],Do:[a,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,``)===e&&(this.day=r)}],w:[i,c(`week`)],ww:[r,c(`week`)],M:[i,c(`month`)],MM:[r,c(`month`)],MMM:[a,function(e){var t=u(`months`),n=(u(`monthsShort`)||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw Error();this.month=n%12||n}],MMMM:[a,function(e){var t=u(`months`).indexOf(e)+1;if(t<1)throw Error();this.month=t%12||t}],Y:[/[+-]?\d+/,c(`year`)],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,c(`year`)],Z:l,ZZ:l};function p(n){for(var r=n,i=o&&o.formats,a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,c=0;c-1)return new Date((t===`X`?1e3:1)*e);var i=p(t)(e),a=i.year,o=i.month,s=i.day,c=i.hours,l=i.minutes,u=i.seconds,d=i.milliseconds,f=i.zone,m=i.week,h=new Date,g=s||(a||o?1:h.getDate()),_=a||h.getFullYear(),v=0;a&&!o||(v=o>0?o-1:h.getMonth());var y,b=c||0,x=l||0,S=u||0,C=d||0;return f?new Date(Date.UTC(_,v,g,b,x,S,C+60*f.offset*1e3)):n?new Date(Date.UTC(_,v,g,b,x,S,C)):(y=new Date(_,v,g,b,x,S,C),m&&(y=r(y).week(m).toDate()),y)}catch{return new Date(``)}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date(``)),o={}}else if(s instanceof Array)for(var f=s.length,m=1;m<=f;m+=1){a[1]=s[m-1];var h=n.apply(this,a);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}m===f&&(this.$d=new Date(``))}else i.call(this,e)}}}))})),QS=l(ZS()),sae=l(tae()),cae=l(nae()),lae=l(rae()),uae=l(iae()),dae=l(aae()),fae=l(oae());QS.default.extend(fae.default),QS.default.extend(dae.default),QS.default.extend(sae.default),QS.default.extend(cae.default),QS.default.extend(lae.default),QS.default.extend(uae.default),QS.default.extend(function(e,t){var n=t.prototype,r=n.format;n.format=function(e){var t=(e||``).replace(`Wo`,`wo`);return r.bind(this)(t)}});var pae={bn_BD:`bn-bd`,by_BY:`be`,en_GB:`en-gb`,en_US:`en`,fr_BE:`fr`,fr_CA:`fr-ca`,hy_AM:`hy-am`,kmr_IQ:`ku`,nl_BE:`nl-be`,pt_BR:`pt-br`,zh_CN:`zh-cn`,zh_HK:`zh-hk`,zh_TW:`zh-tw`},$S=function(e){return pae[e]||e.split(`_`)[0]},eC=function(e){return!QS.default.isDayjs(e)||e instanceof QS.default?e:(0,QS.default)(e.valueOf())},mae={getNow:function(){var e=(0,QS.default)();return typeof e.tz==`function`?e.tz():e},getFixedDate:function(e){return(0,QS.default)(e,[`YYYY-M-DD`,`YYYY-MM-DD`])},getEndDate:function(e){return eC(e).endOf(`month`)},getWeekDay:function(e){var t=eC(e).locale(`en`);return t.weekday()+t.localeData().firstDayOfWeek()},getYear:function(e){return eC(e).year()},getMonth:function(e){return eC(e).month()},getDate:function(e){return eC(e).date()},getHour:function(e){return eC(e).hour()},getMinute:function(e){return eC(e).minute()},getSecond:function(e){return eC(e).second()},getMillisecond:function(e){return eC(e).millisecond()},addYear:function(e,t){return eC(e).add(t,`year`)},addMonth:function(e,t){return eC(e).add(t,`month`)},addDate:function(e,t){return eC(e).add(t,`day`)},setYear:function(e,t){return eC(e).year(t)},setMonth:function(e,t){return eC(e).month(t)},setDate:function(e,t){return eC(e).date(t)},setHour:function(e,t){return eC(e).hour(t)},setMinute:function(e,t){return eC(e).minute(t)},setSecond:function(e,t){return eC(e).second(t)},setMillisecond:function(e,t){return eC(e).millisecond(t)},isAfter:function(e,t){return eC(e).isAfter(eC(t))},isValidate:function(e){return eC(e).isValid()},locale:{getWeekFirstDay:function(e){return(0,QS.default)().locale($S(e)).localeData().firstDayOfWeek()},getWeekFirstDate:function(e,t){return eC(t).locale($S(e)).weekday(0)},getWeek:function(e,t){return eC(t).locale($S(e)).week()},getShortWeekDays:function(e){return(0,QS.default)().locale($S(e)).localeData().weekdaysMin()},getShortMonths:function(e){return(0,QS.default)().locale($S(e)).localeData().monthsShort()},format:function(e,t,n){return eC(t).locale($S(e)).format(n)},parse:function(e,t,n){for(var r=$S(e),i=0;ie.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:`0`,r=String(e);r.lengthe.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:[],r=Dae(C.useState([!1,!1]),2),i=r[0],a=r[1];return[C.useMemo(function(){return i.map(function(r,i){if(r)return!0;var a=e[i];return a?!!(!n[i]&&!a||a&&t(a,{activeIndex:i})):!1})},[e,i,t,n]),function(e,t){a(function(n){return cC(n,t,e)})}]}function yC(e){"@babel/helpers - typeof";return yC=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},yC(e)}function bC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function xC(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&(o=t.addDate(o,-7)),o}function qC(e,t){var n=t.generateConfig,r=t.locale,i=t.format;return e?typeof i==`function`?i(e):n.locale.format(r.locale,e,i):``}function JC(e,t,n){var r=t,i=[`getHour`,`getMinute`,`getSecond`,`getMillisecond`];return[`setHour`,`setMinute`,`setSecond`,`setMillisecond`].forEach(function(t,a){r=n?e[t](r,e[i[a]](n)):e[t](r,0)}),r}function Yae(e,t,n,r,i){return Rn(function(a,o){return!!(n&&n(a,o)||r&&e.isAfter(r,a)&&!WC(e,t,r,a,o.type)||i&&e.isAfter(a,i)&&!WC(e,t,i,a,o.type))})}function YC(e){"@babel/helpers - typeof";return YC=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},YC(e)}function Xae(e,t,n){return C.useMemo(function(){var r=sC(uC(e,t,n)),i=r[0],a=YC(i)===`object`&&i.type===`mask`?i.format:null;return[r.map(function(e){return typeof e==`string`||typeof e==`function`?e:e.format}),a]},[e,t,n])}function Zae(e,t,n){return typeof e[0]==`function`||n?!0:t}function XC(e){"@babel/helpers - typeof";return XC=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},XC(e)}function ZC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Qae(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&arguments[1]!==void 0?arguments[1]:!1;return C.useMemo(function(){var n=e&&sC(e);return t&&n&&(n[1]=n[1]||n[0]),n},[e,t])}function iw(e,t){var n=e.generateConfig,r=e.locale,i=e.picker,a=i===void 0?`date`:i,o=e.prefixCls,s=o===void 0?`rc-picker`:o,c=e.previewValue,l=c===void 0?`hover`:c,u=e.styles,d=u===void 0?{}:u,f=e.classNames,p=f===void 0?{}:f,m=e.order,h=m===void 0?!0:m,g=e.components,_=g===void 0?{}:g,v=e.inputRender,y=e.allowClear,b=e.clearIcon,x=e.needConfirm,S=e.multiple,w=e.format,T=e.inputReadOnly,E=e.disabledDate,D=e.minDate,O=e.maxDate,k=e.showTime,A=e.value,j=e.defaultValue,M=e.pickerValue,N=e.defaultPickerValue,P=rw(A),F=rw(j),I=rw(M),L=rw(N),R=a===`date`&&k?`datetime`:a,z=R===`time`||R===`datetime`,B=z||S,V=x??z,H=tw(MC(e),4),U=H[0],W=H[1],ee=H[2],te=H[3],ne=CC(r,W),re=C.useMemo(function(){return NC(R,ee,te,U,ne)},[R,ee,te,U,ne]),ie=C.useMemo(function(){return ew(ew({},e),{},{previewValue:l,prefixCls:s,locale:ne,picker:a,styles:d,classNames:p,order:h,components:ew({input:v},_),clearIcon:Kae(s,y,b),showTime:re,value:P,defaultValue:F,pickerValue:I,defaultPickerValue:L},t?.())},[e]),ae=tw(Xae(R,ne,w),2),G=ae[0],oe=ae[1],K=Zae(G,T,S),se=Yae(n,r,E,D,O),ce=noe(n,a,se,re);return[C.useMemo(function(){return ew(ew({},ie),{},{needConfirm:V,inputReadOnly:K,disabledDate:se})},[ie,V,K,se]),R,B,G,oe,ce]}function aw(e,t){return poe(e)||foe(e,t)||doe(e,t)||uoe()}function uoe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function doe(e,t){if(e){if(typeof e==`string`)return ow(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ow(e,t)}}function ow(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:[],r=arguments.length>3?arguments[3]:void 0,i=hoe(moe(n.every(function(e){return e})?!1:e,t||!1,r),2),a=i[0],o=i[1];function s(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};(!t.inherit||a)&&o(e,t.force)}return[a,s]}function lw(e){var t=C.useRef();return C.useImperativeHandle(e,function(){return{nativeElement:t.current?.nativeElement,focus:function(e){var n;(n=t.current)==null||n.focus(e)},blur:function(){var e;(e=t.current)==null||e.blur()}}}),t}function boe(e,t){return woe(e)||Coe(e,t)||Soe(e,t)||xoe()}function xoe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Soe(e,t){if(e){if(typeof e==`string`)return uw(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return uw(e,t)}}function uw(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:1,r=C.useRef(t);r.current=t,Hn(function(){if(e)r.current(e);else{var t=ii(function(){r.current(e)},n);return function(){ii.cancel(t)}}},[e])}function pw(e,t){return Ooe(e)||Doe(e,t)||Eoe(e,t)||Toe()}function Toe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Eoe(e,t){if(e){if(typeof e==`string`)return mw(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return mw(e,t)}}function mw(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&arguments[1]!==void 0?arguments[1]:[],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=pw(C.useState(0),2),i=r[0],a=r[1],o=pw(C.useState(!1),2),s=o[0],c=o[1],l=C.useRef([]),u=C.useRef(null),d=C.useRef(null),f=function(e){u.current=e};return fw(s||n,function(){s||(l.current=[],f(null))}),C.useEffect(function(){s&&l.current.push(i)},[s,i]),[s,function(e){c(e)},function(e){return e&&(d.current=e),d.current},i,a,function(n){var r=l.current,i=new Set(r.filter(function(e){return n[e]||t[e]})),a=+(r[r.length-1]===0);return i.size>=2||e[a]?null:a},l.current,f,function(e){return u.current===e}]}function gw(e){"@babel/helpers - typeof";return gw=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},gw(e)}function _w(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function vw(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n8&&arguments[8]!==void 0?arguments[8]:Cw,l=arguments.length>9&&arguments[9]!==void 0?arguments[9]:Cw,u=arguments.length>10&&arguments[10]!==void 0?arguments[10]:Cw,d=arguments.length>11?arguments[11]:void 0,f=arguments.length>12?arguments[12]:void 0,p=arguments.length>13?arguments[13]:void 0,m=o===`time`,h=a||0,g=function(t){var r=e.getNow();return m&&(r=JC(e,r)),c[t]||n[t]||r},_=bw(l,2),v=_[0],y=_[1],b=bw(Wn(function(){return g(0)},v),2),x=b[0],S=b[1],w=bw(Wn(function(){return g(1)},y),2),T=w[0],E=w[1],D=C.useMemo(function(){var t=[x,T][h];return m?t:JC(e,t,u[h])},[m,x,T,h,e,u]),O=function(n){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`panel`,a=[S,E][h];a(n);var s=[x,T];s[h]=n,d&&(!WC(e,t,x,s[0],o)||!WC(e,t,T,s[1],o))&&d(s,{source:i,range:h===1?`end`:`start`,mode:r})},k=function(n,r){if(s){var i={date:`month`,week:`month`,month:`year`,quarter:`year`}[o];if(i&&!WC(e,t,n,r,i)||o===`year`&&n&&Math.floor(e.getYear(n)/10)!==Math.floor(e.getYear(r)/10))return Sw(e,o,r,-1)}return r},A=C.useRef(null);return Vn(function(){if(i&&!c[h]){var t=m?null:e.getNow();if(A.current!==null&&A.current!==h?t=[x,T][h^1]:n[h]?t=h===0?n[0]:k(n[0],n[1]):n[h^1]&&(t=n[h^1]),t){f&&e.isAfter(f,t)&&(t=f);var r=s?Sw(e,o,t,1):t;p&&e.isAfter(r,p)&&(t=s?Sw(e,o,p,-1):p),O(t,`reset`)}}},[i,h,n[h]]),C.useEffect(function(){i?A.current=h:A.current=null},[i,h]),Vn(function(){i&&c&&c[h]&&O(c[h],`reset`)},[i,h]),[D,O]}function Hoe(e,t){return Koe(e)||Goe(e,t)||Woe(e,t)||Uoe()}function Uoe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Woe(e,t){if(e){if(typeof e==`string`)return Tw(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tw(e,t)}}function Tw(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:1,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:[],a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:2,o=[],s=n>=1?n|0:1,c=e;c<=t;c+=s){var l=i.includes(c);(!l||!r)&&o.push({label:oC(c,a),value:c,disabled:l})}return o}function Ww(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,r=t||{},i=r.use12Hours,a=r.hourStep,o=a===void 0?1:a,s=r.minuteStep,c=s===void 0?1:s,l=r.secondStep,u=l===void 0?1:l,d=r.millisecondStep,f=d===void 0?100:d,p=r.hideDisabledOptions,m=r.disabledTime,h=r.disabledHours,g=r.disabledMinutes,_=r.disabledSeconds,v=C.useMemo(function(){return n||e.getNow()},[n,e]),y=C.useCallback(function(e){var t=m?.(e)||{};return[t.disabledHours||h||Hw,t.disabledMinutes||g||Hw,t.disabledSeconds||_||Hw,t.disabledMilliseconds||Hw]},[m,h,g,_]),b=Bw(C.useMemo(function(){return y(v)},[v,y]),4),x=b[0],S=b[1],w=b[2],T=b[3],E=C.useCallback(function(e,t,n,r){var a=Uw(0,23,o,p,e());return[i?a.map(function(e){return zw(zw({},e),{},{label:oC(e.value%12||12,2)})}):a,function(e){return Uw(0,59,c,p,t(e))},function(e,t){return Uw(0,59,u,p,n(e,t))},function(e,t,n){return Uw(0,999,f,p,r(e,t,n),3)}]},[p,o,i,f,c,u]),D=Bw(C.useMemo(function(){return E(x,S,w,T)},[E,x,S,w,T]),4),O=D[0],k=D[1],A=D[2],j=D[3];return[function(t,n){var r=function(){return O},i=k,a=A,o=j;if(n){var s=Bw(y(n),4),c=s[0],l=s[1],u=s[2],d=s[3],f=Bw(E(c,l,u,d),4),p=f[0],m=f[1],h=f[2],g=f[3];r=function(){return p},i=m,a=h,o=g}return ose(t,r,i,a,o,e)},O,k,A,j]}function mse(e,t){return vse(e)||_se(e,t)||gse(e,t)||hse()}function hse(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gse(e,t){if(e){if(typeof e==`string`)return Gw(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Gw(e,t)}}function Gw(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&arguments[1]!==void 0?arguments[1]:!1;pe(e),_?.(e),t&&me(e)},ge=function(e,t){ie(e),t&&he(t),me(t,e)},_e=function(e){if(ue(e),he(e),re!==x){var t=[`decade`,`year`],n=[].concat(t,[`month`]),r={quarter:[].concat(t,[`quarter`]),week:[].concat(zE(n),[`week`]),date:[].concat(zE(n),[`date`])}[x]||n,i=r[r.indexOf(re)+1];i&&ge(i,e)}},ve=C.useMemo(function(){var e,t;if(Array.isArray(T)){var n=UE(T,2);e=n[0],t=n[1]}else e=T;return!e&&!t?null:(e||=t,t||=e,a.isAfter(e,t)?[t,e]:[e,t])},[T,a]),ye=gC(E,D,O),be=A[ae]||YE[ae]||dT,xe=C.useMemo(function(){return{classNames:P?.popup??n??{},styles:F?.popup??r??{}}},[P,n,F,r]),Se=C.useContext($w),Ce=C.useMemo(function(){return FE(FE({},Se),{},{hideHeader:j})},[Se,j]),we=`${I}-panel`,Te=lC(e,[`showWeek`,`prevIcon`,`nextIcon`,`superPrevIcon`,`superNextIcon`,`disabledDate`,`minDate`,`maxDate`,`onHover`]);return C.createElement(Yw.Provider,{value:xe},C.createElement($w.Provider,{value:Ce},C.createElement(`div`,{ref:L,tabIndex:l,className:q(we,IE({},`${we}-rtl`,o===`rtl`))},C.createElement(be,NE({},Te,{showTime:ee,prefixCls:I,locale:U,generateConfig:a,onModeChange:ge,pickerValue:fe,onPickerValueChange:function(e){he(e,!0)},value:ce[0],onSelect:_e,values:ce,cellRender:ye,hoverRangeValue:ve,hoverValue:w})))))}var ZE=C.memo(C.forwardRef(XE));function QE(e){"@babel/helpers - typeof";return QE=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},QE(e)}function $E(){return $E=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function FD(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a=0)&&(n[i]=e[i]);return n}function ID(e){var t=e.icon,n=e.type,r=PD(e,jD),i=C.useContext(tC),a=i.prefixCls,o=i.classNames,s=i.styles;return t?C.createElement(`span`,ND({className:q(`${a}-${n}`,o.suffix),style:s.suffix},r),t):null}function LD(e){var t=e.onClear,n=PD(e,MD);return C.createElement(ID,ND({},n,{type:`clear`,role:`button`,onMouseDown:function(e){e.preventDefault()},onClick:function(e){e.stopPropagation(),t()}}))}function RD(e){"@babel/helpers - typeof";return RD=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},RD(e)}function zD(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function BD(e,t){for(var n=0;n=a&&e<=o)return r;var s=Math.min(Math.abs(e-a),Math.abs(e-o));se.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function cO(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a=0)&&(n[i]=e[i]);return n}var lO=C.forwardRef(function(e,t){var n=e.className,r=e.active,i=e.showActiveCls,a=i===void 0?!0:i,o=e.suffixIcon,s=e.format,c=e.validateFormat,l=e.onChange;e.onInput;var u=e.helped,d=e.onHelp,f=e.onSubmit,p=e.onKeyDown,m=e.preserveInvalidOnBlur,h=m===void 0?!1:m,g=e.invalid,_=e.clearIcon,v=sO(e,XD),y=e.value,b=e.onFocus,x=e.onBlur,S=e.onMouseUp,w=C.useContext(tC),T=w.prefixCls,E=w.input,D=E===void 0?`input`:E,O=w.classNames,k=w.styles,A=`${T}-input`,j=tO(C.useState(!1),2),M=j[0],N=j[1],P=tO(C.useState(y),2),F=P[0],I=P[1],L=tO(C.useState(``),2),R=L[0],z=L[1],B=tO(C.useState(null),2),V=B[0],H=B[1],U=tO(C.useState(null),2),W=U[0],ee=U[1],te=F||``;C.useEffect(function(){I(y)},[y]);var ne=C.useRef(null),re=C.useRef(null),ie=C.useRef(!1);C.useImperativeHandle(t,function(){return{nativeElement:ne.current,inputElement:re.current,focus:function(e){re.current.focus(e)},blur:function(){re.current.blur()}}});var ae=C.useMemo(function(){return new qD(s||``)},[s]),G=tO(C.useMemo(function(){return u?[0,0]:ae.getSelection(V)},[ae,V,u]),2),oe=G[0],K=G[1],se=function(e){e&&e!==s&&e!==y&&d()},ce=Rn(function(e){c(e)&&l(e),I(e),se(e)}),le=function(e){if(!s){var t=e.target.value;se(t),I(t),l(t)}},ue=function(e){if(ie.current){e.preventDefault();return}var t=e.clipboardData.getData(`text`);c(t)&&ce(t)},de=function(){ie.current=!0},fe=function(e){var t=e.target.selectionStart;H(ae.getMaskCellIndex(t)),ee({}),S?.(e),ie.current=!1},pe=function(e){N(!0),H(0),z(``),b(e)},me=function(e){x(e)},he=function(e){N(!1),me(e)};fw(r,function(){!r&&!h&&I(y)});var ge=function(e){e.key===`Enter`&&c(te)&&f(),p?.(e)},_e=function(e){if(ie.current){e.preventDefault();return}ge(e);var t=e.key,n=null,r=null,i=K-oe,a=s.slice(oe,K),o=function(e){H(function(t){var n=t+e;return n=Math.max(n,0),n=Math.min(n,ae.size()-1),n})},c=function(e){var t=tO(JD(a),3),n=t[0],r=t[1],i=t[2],o=te.slice(oe,K),s=Number(o);if(isNaN(s))return String(i||(e>0?n:r));var c=s+e,l=r-n+1;return String(n+(l+c-n)%l)};switch(t){case`Backspace`:case`Delete`:n=``,r=a;break;case`ArrowLeft`:n=``,o(-1);break;case`ArrowRight`:n=``,o(1);break;case`ArrowUp`:n=``,r=c(1);break;case`ArrowDown`:n=``,r=c(-1);break;default:isNaN(Number(t))||(n=R+t,r=n);break}n!==null&&(z(n),n.length>=i&&(o(1),z(``))),r!==null&&ce((te.slice(0,oe)+oC(r,i)+te.slice(K)).slice(0,s.length)),ee({})},ve=C.useRef();Vn(function(){if(!(!M||!s||ie.current)){if(!ae.match(te)){ce(s);return}return re.current.setSelectionRange(oe,K),ve.current=ii(function(){re.current.setSelectionRange(oe,K)}),function(){ii.cancel(ve.current)}}},[ae,s,M,te,V,oe,K,W,ce]);var ye=s?{onFocus:pe,onBlur:he,onKeyDown:_e,onMouseDown:de,onMouseUp:fe,onPaste:ue}:{};return C.createElement(`div`,{ref:ne,className:q(A,QD(QD({},`${A}-active`,r&&a),`${A}-placeholder`,u),n)},C.createElement(D,ZD({ref:re,"aria-invalid":g,autoComplete:`off`},v,{onKeyDown:ge,onBlur:me},ye,{value:te,onChange:le,className:O.input,style:k.input})),C.createElement(ID,{type:`suffix`,icon:o}),_)}),uO=`id.prefix.clearIcon.suffixIcon.separator.activeIndex.activeHelp.allHelp.focused.onFocus.onBlur.onKeyDown.locale.generateConfig.placeholder.className.style.onClick.onClear.value.onChange.onSubmit.onInputChange.format.maskFormat.preserveInvalidOnBlur.onInvalid.disabled.invalid.inputReadOnly.direction.onOpenChange.onActiveInfo.placement.onMouseDown.required.aria-required.autoFocus.tabIndex`.split(`.`),dO=[`index`];function fO(){return fO=Object.assign?Object.assign.bind():function(e){for(var t=1;t