From 767abc2b90c320ff3eff6681d102f475e5ecae35 Mon Sep 17 00:00:00 2001 From: williamhliu <137068196+williamhliu@users.noreply.github.com> Date: Fri, 13 Oct 2023 18:31:00 +0800 Subject: [PATCH] (feature)(webapp) add filter modify and similar questions (#213) --- webapp/packages/chat-sdk/package.json | 2 +- .../src/Chat/MessageContainer/index.tsx | 19 - .../packages/chat-sdk/src/Chat/constants.ts | 2 +- webapp/packages/chat-sdk/src/Chat/index.tsx | 12 +- webapp/packages/chat-sdk/src/Chat/type.ts | 4 +- webapp/packages/chat-sdk/src/common/type.ts | 4 +- .../src/components/ChatItem/ExecuteItem.tsx | 33 +- .../src/components/ChatItem/FilterItem.tsx | 130 +++- .../src/components/ChatItem/ParseTip.tsx | 220 +++--- .../ChatItem/SimilarQuestionItem.tsx | 32 +- .../src/components/ChatItem/SqlItem.tsx | 16 +- .../src/components/ChatItem/index.tsx | 160 ++-- .../src/components/ChatItem/style.less | 116 ++- .../src/components/ChatMsg/Message/index.tsx | 2 +- .../src/components/ChatMsg/Table/index.tsx | 1 + .../src/components/ChatMsg/Table/style.less | 1 - .../src/components/ChatMsg/WebPage/index.tsx | 3 - .../chat-sdk/src/components/ChatMsg/index.tsx | 3 +- .../components/DrillDownDimensions/index.tsx | 43 +- .../chat-sdk/src/components/Tools/index.tsx | 11 +- webapp/packages/chat-sdk/src/demo/Chat.tsx | 2 +- .../chat-sdk/src/demo/style.module.less | 8 +- webapp/packages/chat-sdk/src/index.tsx | 4 +- webapp/packages/chat-sdk/src/service/index.ts | 29 +- .../packages/chat-sdk/src/styles/global.less | 2 + webapp/packages/chat-sdk/tsconfig.build.json | 2 +- webapp/pnpm-lock.yaml | 733 +++++++----------- 27 files changed, 799 insertions(+), 795 deletions(-) diff --git a/webapp/packages/chat-sdk/package.json b/webapp/packages/chat-sdk/package.json index e1bd15bff..9b26b74e7 100644 --- a/webapp/packages/chat-sdk/package.json +++ b/webapp/packages/chat-sdk/package.json @@ -9,7 +9,7 @@ "@ant-design/icons": "^4.7.0", "@uiw/react-watermark": "^0.0.5", "ahooks": "^3.7.8", - "antd": "^5.5.2", + "antd": "^4.23.5", "axios": "^0.21.1", "classnames": "^2.3.2", "echarts": "^5.4.2", diff --git a/webapp/packages/chat-sdk/src/Chat/MessageContainer/index.tsx b/webapp/packages/chat-sdk/src/Chat/MessageContainer/index.tsx index 3a74944a2..89ec31c61 100644 --- a/webapp/packages/chat-sdk/src/Chat/MessageContainer/index.tsx +++ b/webapp/packages/chat-sdk/src/Chat/MessageContainer/index.tsx @@ -75,7 +75,6 @@ const MessageContainer: React.FC = ({ identityMsg, msgData, score, - parseOptions, filters, } = msgItem; @@ -108,24 +107,6 @@ const MessageContainer: React.FC = ({ /> )} - {type === MessageTypeEnum.PARSE_OPTIONS && ( - { - onMsgDataLoaded(data, msgId, msgValue || msg || '', valid); - }} - onUpdateMessageScroll={updateMessageContainerScroll} - onSendMsg={onSendMsg} - /> - )} ); })} diff --git a/webapp/packages/chat-sdk/src/Chat/constants.ts b/webapp/packages/chat-sdk/src/Chat/constants.ts index 1c30a9317..f91f1550f 100644 --- a/webapp/packages/chat-sdk/src/Chat/constants.ts +++ b/webapp/packages/chat-sdk/src/Chat/constants.ts @@ -21,7 +21,7 @@ export enum SemanticTypeEnum { } export const SEMANTIC_TYPE_MAP = { - [SemanticTypeEnum.MODEL]: '数据来源', + [SemanticTypeEnum.MODEL]: '数据模型', [SemanticTypeEnum.DIMENSION]: '维度', [SemanticTypeEnum.METRIC]: '指标', [SemanticTypeEnum.VALUE]: '维度值', diff --git a/webapp/packages/chat-sdk/src/Chat/index.tsx b/webapp/packages/chat-sdk/src/Chat/index.tsx index 60ed5b7aa..a2bb7b155 100644 --- a/webapp/packages/chat-sdk/src/Chat/index.tsx +++ b/webapp/packages/chat-sdk/src/Chat/index.tsx @@ -309,21 +309,11 @@ const Chat: ForwardRefRenderFunction = ( if (!data) { return; } - let parseOptionsItem: any; - if (data.parseOptions && data.parseOptions.length > 0) { - parseOptionsItem = { - id: uuid(), - msg: messageList[messageList.length - 1]?.msg, - type: MessageTypeEnum.PARSE_OPTIONS, - parseOptions: data.parseOptions, - }; - } const msgs = cloneDeep(messageList); const msg = msgs.find(item => item.id === questionId); if (msg) { msg.msgData = data; - const msgList = [...msgs, ...(parseOptionsItem ? [parseOptionsItem] : [])]; - setMessageList(msgList); + setMessageList(msgs); } updateMessageContainerScroll(`${questionId}`); }; diff --git a/webapp/packages/chat-sdk/src/Chat/type.ts b/webapp/packages/chat-sdk/src/Chat/type.ts index 1208e70ca..ede58f23c 100644 --- a/webapp/packages/chat-sdk/src/Chat/type.ts +++ b/webapp/packages/chat-sdk/src/Chat/type.ts @@ -1,4 +1,4 @@ -import { ChatContextType, MsgDataType, SendMsgParamsType } from "../common/type"; +import { MsgDataType, SendMsgParamsType } from "../common/type"; export enum MessageTypeEnum { TEXT = 'text', // 指标文本 @@ -10,7 +10,6 @@ export enum MessageTypeEnum { PLUGIN = 'PLUGIN', // 插件 WEB_PAGE = 'WEB_PAGE', // 插件 RECOMMEND_QUESTIONS = 'recommend_questions', // 推荐问题 - PARSE_OPTIONS = 'parse_options', // 解析选项 AGENT_LIST = 'agent_list', // 专家列表 } @@ -27,7 +26,6 @@ export type MessageItem = { quote?: string; score?: number; feedback?: string; - parseOptions?: ChatContextType[]; filters?: any; }; diff --git a/webapp/packages/chat-sdk/src/common/type.ts b/webapp/packages/chat-sdk/src/common/type.ts index bcf40d4fb..3dc6dafcf 100644 --- a/webapp/packages/chat-sdk/src/common/type.ts +++ b/webapp/packages/chat-sdk/src/common/type.ts @@ -9,6 +9,7 @@ export type SearchRecommendItem = { export type FieldType = { bizName: string; + itemId: number; id: number; name: string; status: number; @@ -86,7 +87,7 @@ export type ChatContextType = { dimensions: FieldType[]; metrics: FieldType[]; entity: { alias: string[], id: number }; - entityInfo: { dimensions: EntityDimensionType[] }; + entityInfo: EntityInfoType; elementMatches: any[]; nativeQuery: boolean; queryMode: string; @@ -133,6 +134,7 @@ export type MsgDataType = { queryId: number; queryMode: string; queryState: string; + queryText: string; response: PluginResonseType; parseOptions?: ChatContextType[]; }; diff --git a/webapp/packages/chat-sdk/src/components/ChatItem/ExecuteItem.tsx b/webapp/packages/chat-sdk/src/components/ChatItem/ExecuteItem.tsx index aa4e783da..f3c5fb088 100644 --- a/webapp/packages/chat-sdk/src/components/ChatItem/ExecuteItem.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatItem/ExecuteItem.tsx @@ -1,10 +1,11 @@ -import { Spin } from 'antd'; -import { CheckCircleFilled } from '@ant-design/icons'; +import { Button, Spin } from 'antd'; +import { CheckCircleFilled, ReloadOutlined } from '@ant-design/icons'; import { PREFIX_CLS } from '../../common/constants'; import { MsgDataType } from '../../common/type'; import ChatMsg from '../ChatMsg'; import WebPage from '../ChatMsg/WebPage'; import Loading from './Loading'; +import React, { ReactNode } from 'react'; type Props = { queryId?: number; @@ -12,8 +13,11 @@ type Props = { entitySwitchLoading: boolean; chartIndex: number; executeTip?: string; + executeItemNode?: ReactNode; + renderCustomExecuteNode?: boolean; data?: MsgDataType; triggerResize?: boolean; + onRefresh: () => void; }; const ExecuteItem: React.FC = ({ @@ -22,12 +26,15 @@ const ExecuteItem: React.FC = ({ entitySwitchLoading, chartIndex, executeTip, + executeItemNode, + renderCustomExecuteNode, data, triggerResize, + onRefresh, }) => { const prefixCls = `${PREFIX_CLS}-item`; - const getNodeTip = (title: string, tip?: string) => { + const getNodeTip = (title: ReactNode, tip?: string) => { return ( <>
@@ -42,12 +49,19 @@ const ExecuteItem: React.FC = ({ ); }; + const reloadNode = ( + + ); + if (executeLoading) { return getNodeTip('数据查询中'); } if (executeTip) { - return getNodeTip('数据查询失败', executeTip); + return getNodeTip(<>数据查询失败:{reloadNode}, executeTip); } if (!data) { @@ -58,14 +72,19 @@ const ExecuteItem: React.FC = ({ <>
-
数据查询
+
+ 数据查询: + {reloadNode} +
-
+
{data.queryAuthorization?.message && (
提示:{data.queryAuthorization.message}
)} - {data?.queryMode === 'WEB_PAGE' ? ( + {renderCustomExecuteNode && executeItemNode ? ( + executeItemNode + ) : data?.queryMode === 'WEB_PAGE' ? ( ) : ( void; + onSwitchEntity: (entityId: string) => void; }; -const FilterItem: React.FC = ({ modelId, filters, filter, onFiltersChange }) => { - const [options, setOptions] = useState<{ label: string; value: string }[]>([]); +const FilterItem: React.FC = ({ + modelId, + filters, + filter, + chatContext, + agentId, + entityAlias, + onFiltersChange, + onSwitchEntity, +}) => { + const [options, setOptions] = useState<{ label: string; value: string | null }[]>([]); const [loading, setLoading] = useState(false); const fetchRef = useRef(0); const prefixCls = `${PREFIX_CLS}-filter-item`; const initData = async () => { - const { data } = await queryDimensionValues(modelId, filter.bizName, ''); + const { data } = await queryDimensionValues( + modelId, + filter.bizName, + agentId!, + filter.elementID, + '' + ); setOptions( data?.resultList.map((item: any) => ({ label: item[filter.bizName], @@ -42,31 +61,56 @@ const FilterItem: React.FC = ({ modelId, filters, filter, onFiltersChange const fetchId = fetchRef.current; setOptions([]); setLoading(true); - - queryDimensionValues(modelId, filter.bizName, value).then(newOptions => { - if (fetchId !== fetchRef.current) { - return; + queryDimensionValues(modelId, filter.bizName, agentId!, filter.elementID, value).then( + newOptions => { + if (fetchId !== fetchRef.current) { + return; + } + setOptions( + newOptions.data?.resultList.map((item: any) => ({ + label: item[filter.bizName], + value: item[filter.bizName], + })) || [] + ); + setLoading(false); } - setOptions( - newOptions.data?.resultList.map((item: any) => ({ - label: item[filter.bizName], - value: item[filter.bizName], - })) || [] - ); - setLoading(false); - }); + ); }; - return debounce(loadOptions, 800); + return debounce(loadOptions, 500); }, [queryDimensionValues]); - const onChange = (value: string | string[]) => { - if (isArray(value) && value.length === 0) { - return; - } + const onOperatorChange = (value: string) => { const newFilters = filters.map(item => { if (item.bizName === filter.bizName) { - item.value = isArray(value) ? value : `${value}`; + item.operator = value; + } + return item; + }); + onFiltersChange(newFilters); + }; + + const onChange = (value: string | string[] | number | null) => { + const newFilters = filters.map(item => { + if (item.bizName === filter.bizName) { + item.value = + typeof filter.value === 'number' || filter.value === null + ? value + : isArray(value) + ? value + : `${value}`; + if (isArray(value)) { + if (value.length === 1) { + item.operator = '='; + item.value = value[0]; + } else { + item.operator = 'IN'; + item.value = value; + } + } else { + item.value = + typeof filter.value === 'number' || filter.value === null ? value : `${value}`; + } } return item; }); @@ -75,18 +119,46 @@ const FilterItem: React.FC = ({ modelId, filters, filter, onFiltersChange return ( - {(typeof filter.value === 'string' || isArray(filter.value)) && - (filter.operator === '=' || filter.operator === 'IN') ? ( + {filter.name}: + {(typeof filter.value === 'number' || filter.value === null) && + !filter.bizName?.includes('_id') ? ( + <> + option.value !== '' && option.value !== null)} className={`${prefixCls}-select-control`} onSearch={debounceFetcher} notFoundContent={loading ? : null} onChange={onChange} mode={isArray(filter.value) ? 'multiple' : undefined} showSearch + // allowClear + /> + ) : entityAlias && + ['歌曲', '艺人'].includes(entityAlias) && + filter.bizName?.includes('_id') ? ( + ) : ( {filter.value} diff --git a/webapp/packages/chat-sdk/src/components/ChatItem/ParseTip.tsx b/webapp/packages/chat-sdk/src/components/ChatItem/ParseTip.tsx index 7c5192561..c9a2bb2c1 100644 --- a/webapp/packages/chat-sdk/src/components/ChatItem/ParseTip.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatItem/ParseTip.tsx @@ -1,20 +1,27 @@ import React, { ReactNode } from 'react'; import { AGG_TYPE_MAP, PREFIX_CLS } from '../../common/constants'; -import { ChatContextType, FilterItemType } from '../../common/type'; +import { ChatContextType, DateInfoType, EntityInfoType, FilterItemType } from '../../common/type'; +import { DatePicker } from 'antd'; import { CheckCircleFilled } from '@ant-design/icons'; -import classNames from 'classnames'; -import SwicthEntity from './SwitchEntity'; import Loading from './Loading'; import FilterItem from './FilterItem'; +import moment from 'moment'; + +const { RangePicker } = DatePicker; type Props = { parseLoading: boolean; parseInfoOptions: ChatContextType[]; parseTip: string; currentParseInfo?: ChatContextType; + agentId?: number; + dimensionFilters: FilterItemType[]; + dateInfo: DateInfoType; + entityInfo: EntityInfoType; onSelectParseInfo: (parseInfo: ChatContextType) => void; onSwitchEntity: (entityId: string) => void; onFiltersChange: (filters: FilterItemType[]) => void; + onDateInfoChange: (dateRange: any) => void; }; const MAX_OPTION_VALUES_COUNT = 2; @@ -24,16 +31,18 @@ const ParseTip: React.FC = ({ parseInfoOptions, parseTip, currentParseInfo, + agentId, + dimensionFilters, + dateInfo, + entityInfo, onSelectParseInfo, onSwitchEntity, onFiltersChange, + onDateInfoChange, }) => { const prefixCls = `${PREFIX_CLS}-item`; const getNode = (tipTitle: ReactNode, tipNode?: ReactNode, parseSucceed?: boolean) => { - const contentContainerClass = classNames(`${prefixCls}-content-container`, { - [`${prefixCls}-content-container-succeed`]: parseSucceed, - }); return (
@@ -43,7 +52,7 @@ const ParseTip: React.FC = ({ {!tipNode && }
- {tipNode &&
{tipNode}
} + {tipNode &&
{tipNode}
}
); }; @@ -60,22 +69,38 @@ const ParseTip: React.FC = ({ return null; } - const getTipNode = (parseInfo: ChatContextType, isOptions?: boolean, index?: number) => { - const { - modelName, - dateInfo, - dimensionFilters, - dimensions, - metrics, - aggType, - queryMode, - properties, - entity, - elementMatches, - nativeQuery, - } = parseInfo || {}; + const { + modelId, + modelName, + dimensions, + metrics, + aggType, + queryMode, + properties, + entity, + // entityInfo, + elementMatches, + nativeQuery, + } = currentParseInfo || {}; - const { startDate, endDate } = dateInfo || {}; + const { type } = properties || {}; + const entityAlias = entity?.alias?.[0]?.split('.')?.[0]; + const entityName = elementMatches?.find(item => item.element?.type === 'ID')?.element.name; + + const entityDimensions = entityInfo?.dimensions?.filter( + item => + !['zyqk_song_id', 'song_name', 'singer_id', 'zyqk_cmpny_id'].includes(item.bizName) && + !( + entityInfo?.dimensions?.some(dimension => dimension.bizName === 'singer_id') && + item.bizName === 'singer_name' + ) && + !( + entityInfo?.dimensions?.some(dimension => dimension.bizName === 'zyqk_cmpny_id') && + item.bizName === 'cmpny_name' + ) + ); + + const getTipNode = () => { const dimensionItems = dimensions?.filter(item => item.type === 'DIMENSION'); const metric = metrics?.[0]; @@ -90,15 +115,7 @@ const ParseTip: React.FC = ({ queryMode === 'ENTITY_DETAIL' ? dimensionItems?.concat(metrics || []) : dimensionItems; return ( -
{ - if (isOptions && currentParseInfo === undefined) { - onSelectParseInfo(parseInfo); - } - }} - > - {index !== undefined &&
{index + 1}.
} +
{!!agentType && queryMode !== 'DSL' ? (
将由{agentType === 'plugin' ? '插件' : '内置'}工具 @@ -112,37 +129,23 @@ const ParseTip: React.FC = ({ !!entityName ? (
{entityAlias}:
- {!isOptions && (entityAlias === '歌曲' || entityAlias === '艺人') ? ( - - ) : ( -
{entityName}
- )} +
{entityName}
) : (
-
数据来源:
+
数据模型:
{modelName}
)} - {!queryMode?.includes('ENTITY') && metric && ( -
-
指标:
-
{metric.name}
-
- )} - {!isOptions && ( -
-
数据时间:
-
- {startDate === endDate ? startDate : `${startDate} ~ ${endDate}`} + {!queryMode?.includes('ENTITY') && + metric && + !dimensions?.some(item => item.bizName?.includes('_id')) && ( +
+
指标:
+
{metric.name}
-
- )} - {['METRIC_GROUPBY', 'METRIC_ORDERBY', 'ENTITY_DETAIL', 'DSL'].includes(queryMode) && + )} + {['METRIC_GROUPBY', 'METRIC_ORDERBY', 'ENTITY_DETAIL', 'DSL'].includes(queryMode!) && fields && fields.length > 0 && (
@@ -166,7 +169,10 @@ const ParseTip: React.FC = ({
)} {queryMode !== 'ENTITY_ID' && + entityDimensions && entityDimensions?.length > 0 && + !dimensions?.some(item => item.bizName?.includes('_id')) && + entityDimensions.some(dimension => dimension.value != null) && entityDimensions.map(dimension => (
{dimension.name}:
@@ -185,49 +191,38 @@ const ParseTip: React.FC = ({ ); }; - const parseInfo = parseInfoOptions[0] || {}; - const { modelId, properties, entity, entityInfo, elementMatches, queryMode, dimensionFilters } = - parseInfo || {}; - - const { type } = properties || {}; - const entityAlias = entity?.alias?.[0]?.split('.')?.[0]; - const entityName = elementMatches?.find(item => item.element?.type === 'ID')?.element.name; - - const entityDimensions = entityInfo?.dimensions?.filter( - item => - !['zyqk_song_id', 'song_name', 'singer_id', 'zyqk_cmpny_id'].includes(item.bizName) && - !( - entityInfo?.dimensions?.some(dimension => dimension.bizName === 'singer_id') && - item.bizName === 'singer_name' - ) && - !( - entityInfo?.dimensions?.some(dimension => dimension.bizName === 'zyqk_cmpny_id') && - item.bizName === 'cmpny_name' - ) - ); - const getFilterContent = (filters: any) => { const itemValueClass = `${prefixCls}-tip-item-value`; + const { startDate, endDate } = dateInfo || {}; return (
- {filters.map((filter: any) => ( -
- - {filter.name} - {filter.operator !== '=' && filter.operator !== 'IN' ? ` ${filter.operator} ` : ':'} +
+ 数据时间: + {dimensions?.some(item => item.bizName?.includes('_id')) ? ( + + {startDate === endDate ? startDate : `${startDate} ~ ${endDate}`} - {/* {queryMode !== 'DSL' && !filter.bizName?.includes('_id') ? ( */} - {!filter.bizName?.includes('_id') ? ( - - ) : ( - {filter.value} - )} -
+ ) : ( + + )} +
+ {filters?.map((filter: any) => ( + ))}
); @@ -244,27 +239,34 @@ const ParseTip: React.FC = ({ const tipNode = (
- {getTipNode(parseInfo)} - {[ - 'METRIC_FILTER', - 'METRIC_ENTITY', - 'ENTITY_DETAIL', - 'ENTITY_LIST_FILTER', - 'ENTITY_ID', - 'DSL', - ].includes(queryMode) && - dimensionFilters && - dimensionFilters?.length > 0 && - getFiltersNode()} + {getTipNode()} + {getFiltersNode()} + {(!type || queryMode === 'DSL') && entityAlias && entityAlias !== '厂牌' && entityName && ( +
+ (如未匹配到相关{entityAlias},可点击{entityAlias === '艺人' ? '歌手' : entityAlias}ID切换) +
+ )}
); return getNode(
- 意图解析 - {(!type || queryMode === 'DSL') && entityAlias && entityAlias !== '厂牌' && entityName && ( -
- (如果未匹配到您查询的{entityAlias},可点击{entityAlias}名切换) +
意图解析{parseInfoOptions?.length > 1 ? ':' : ''}
+ {parseInfoOptions?.length > 1 && ( +
+ {parseInfoOptions.map((parseInfo, index) => ( +
{ + onSelectParseInfo(parseInfo); + }} + key={parseInfo.id} + > + 解析{index + 1} +
+ ))}
)}
, diff --git a/webapp/packages/chat-sdk/src/components/ChatItem/SimilarQuestionItem.tsx b/webapp/packages/chat-sdk/src/components/ChatItem/SimilarQuestionItem.tsx index cecd7de56..5cadab492 100644 --- a/webapp/packages/chat-sdk/src/components/ChatItem/SimilarQuestionItem.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatItem/SimilarQuestionItem.tsx @@ -1,24 +1,44 @@ -import { CheckCircleFilled, DownOutlined, UpOutlined } from '@ant-design/icons'; +import { CheckCircleFilled, DownOutlined, LoadingOutlined, UpOutlined } from '@ant-design/icons'; import { PREFIX_CLS } from '../../common/constants'; import { SimilarQuestionType } from '../../common/type'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; +import { querySimilarQuestions } from '../../service'; type Props = { - similarQuestions: SimilarQuestionType[]; + // similarQuestions: SimilarQuestionType[]; + queryText: string; + agentId?: number; defaultExpanded?: boolean; onSelectQuestion: (question: SimilarQuestionType) => void; }; const SimilarQuestions: React.FC = ({ - similarQuestions, + // similarQuestions, + queryText, + agentId, defaultExpanded, onSelectQuestion, }) => { + const [similarQuestions, setSimilarQuestions] = useState([]); const [expanded, setExpanded] = useState(defaultExpanded || false); + const [loading, setLoading] = useState(false); const tipPrefixCls = `${PREFIX_CLS}-item`; const prefixCls = `${PREFIX_CLS}-similar-questions`; + const initData = async () => { + setLoading(true); + const res = await querySimilarQuestions(queryText, agentId); + setLoading(false); + setSimilarQuestions(res.data || []); + }; + + useEffect(() => { + if (expanded && similarQuestions?.length === 0) { + initData(); + } + }, [expanded]); + const onToggleExpanded = () => { setExpanded(!expanded); }; @@ -30,14 +50,14 @@ const SimilarQuestions: React.FC = ({
推荐相似问题 - {expanded ? : } + {loading ? : expanded ? : }
{expanded && (
- {similarQuestions.slice(0, 5).map((question, index) => { + {similarQuestions?.slice(0, 5).map((question, index) => { return (
= ({ integrateSystem, sqlInfo }) => {
- SQL生成 + SQL生成: {sqlType && ( )}
-
+
{sqlInfo.llmParseSql && (
{ setSqlType(sqlType === 'llmParseSql' ? '' : 'llmParseSql'); @@ -58,8 +58,8 @@ const SqlItem: React.FC = ({ integrateSystem, sqlInfo }) => { )} {sqlInfo.logicSql && (
{ setSqlType(sqlType === 'logicSql' ? '' : 'logicSql'); @@ -70,8 +70,8 @@ const SqlItem: React.FC = ({ integrateSystem, sqlInfo }) => { )} {sqlInfo.querySql && (
{ setSqlType(sqlType === 'querySql' ? '' : 'querySql'); diff --git a/webapp/packages/chat-sdk/src/components/ChatItem/index.tsx b/webapp/packages/chat-sdk/src/components/ChatItem/index.tsx index b8a7c59ec..29dc85ed1 100644 --- a/webapp/packages/chat-sdk/src/components/ChatItem/index.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatItem/index.tsx @@ -1,12 +1,14 @@ import { ChatContextType, + DateInfoType, + EntityInfoType, FilterItemType, MsgDataType, ParseStateEnum, SimilarQuestionType, } from '../../common/type'; import { useEffect, useState } from 'react'; -import { chatExecute, chatParse, queryData, switchEntity } from '../../service'; +import { chatExecute, chatParse, queryData, queryEntityInfo, switchEntity } from '../../service'; import { PARSE_ERROR_TIP, PREFIX_CLS, SEARCH_EXCEPTION_TIP } from '../../common/constants'; import IconFont from '../IconFont'; import ParseTip from './ParseTip'; @@ -16,6 +18,7 @@ import classNames from 'classnames'; import Tools from '../Tools'; import SqlItem from './SqlItem'; import SimilarQuestionItem from './SimilarQuestionItem'; +import moment from 'moment'; type Props = { msg: string; @@ -26,9 +29,10 @@ type Props = { isLastMessage?: boolean; msgData?: MsgDataType; triggerResize?: boolean; - parseOptions?: ChatContextType[]; isDeveloper?: boolean; integrateSystem?: string; + executeItemNode?: React.ReactNode; + renderCustomExecuteNode?: boolean; onMsgDataLoaded?: (data: MsgDataType, valid: boolean) => void; onUpdateMessageScroll?: () => void; onSendMsg?: (msg: string) => void; @@ -43,9 +47,10 @@ const ChatItem: React.FC = ({ isLastMessage, triggerResize, msgData, - parseOptions, isDeveloper, integrateSystem, + executeItemNode, + renderCustomExecuteNode, onMsgDataLoaded, onUpdateMessageScroll, onSendMsg, @@ -53,13 +58,15 @@ const ChatItem: React.FC = ({ const [data, setData] = useState(); const [parseLoading, setParseLoading] = useState(false); const [parseInfo, setParseInfo] = useState(); - const [parseInfoOptions, setParseInfoOptions] = useState(parseOptions || []); + const [parseInfoOptions, setParseInfoOptions] = useState([]); const [parseTip, setParseTip] = useState(''); const [executeLoading, setExecuteLoading] = useState(false); const [executeTip, setExecuteTip] = useState(''); const [executeMode, setExecuteMode] = useState(false); const [entitySwitchLoading, setEntitySwitchLoading] = useState(false); - const [similarQuestions, setSimilarQuestions] = useState([]); + const [dimensionFilters, setDimensionFilters] = useState([]); + const [dateInfo, setDateInfo] = useState({} as DateInfoType); + const [entityInfo, setEntityInfo] = useState({} as EntityInfoType); const [chartIndex, setChartIndex] = useState(0); @@ -95,15 +102,13 @@ const ChatItem: React.FC = ({ const res: any = await chatExecute(msg, conversationId!, parseInfoValue); setExecuteLoading(false); const valid = updateData(res); - if (onMsgDataLoaded) { - onMsgDataLoaded( - { - ...res.data, - chatContext: parseInfoValue, - }, - valid - ); - } + onMsgDataLoaded?.( + { + ...res.data, + chatContext: parseInfoValue, + }, + valid + ); } catch (e) { setExecuteLoading(false); setExecuteTip(SEARCH_EXCEPTION_TIP); @@ -115,8 +120,7 @@ const ChatItem: React.FC = ({ const parseData: any = await chatParse(msg, conversationId, modelId, agentId, filter); setParseLoading(false); const { code, data } = parseData || {}; - const { state, selectedParses, queryId, similarSolvedQuery } = data || {}; - setSimilarQuestions(similarSolvedQuery || []); + const { state, selectedParses, candidateParses, queryId } = data || {}; if ( code !== 200 || state === ParseStateEnum.FAILED || @@ -126,27 +130,33 @@ const ChatItem: React.FC = ({ setParseTip(PARSE_ERROR_TIP); return; } - if (onUpdateMessageScroll) { - onUpdateMessageScroll(); - } - const parseInfos = selectedParses.map((item: any) => ({ - ...item, - queryId, - })); + onUpdateMessageScroll?.(); + const parseInfos = selectedParses + .concat(candidateParses || []) + .slice(0, 5) + .map((item: any) => ({ + ...item, + queryId, + })); setParseInfoOptions(parseInfos || []); const parseInfoValue = parseInfos[0]; setParseInfo(parseInfoValue); + setEntityInfo(parseInfoValue.entityInfo || {}); + setDimensionFilters(parseInfoValue?.dimensionFilters || []); + setDateInfo(parseInfoValue?.dateInfo); onExecute(parseInfoValue); }; useEffect(() => { - if (data !== undefined || parseOptions !== undefined || executeTip !== '' || parseLoading) { + if (data !== undefined || executeTip !== '' || parseLoading) { return; } if (msgData) { const parseInfoValue = { ...msgData.chatContext, queryId: msgData.queryId }; setParseInfoOptions([parseInfoValue]); setParseInfo(parseInfoValue); + setDimensionFilters(msgData.chatContext?.dimensionFilters || []); + setDateInfo(msgData.chatContext?.dateInfo); setExecuteMode(true); updateData({ code: 200, data: msgData, msg: 'success' }); } else if (msg) { @@ -159,14 +169,31 @@ const ChatItem: React.FC = ({ const res = await switchEntity(entityId, data?.chatContext?.modelId, conversationId || 0); setEntitySwitchLoading(false); setData(res.data); - const { chatContext } = res.data; - setParseInfo(chatContext); - setParseInfoOptions([chatContext]); + const { chatContext, entityInfo } = res.data; + const chatContextValue = { ...(chatContext || {}), queryId: parseInfo?.queryId }; + setParseInfo(chatContextValue); + setEntityInfo(entityInfo); + setDimensionFilters(chatContextValue?.dimensionFilters || []); + setDateInfo(chatContextValue?.dateInfo); }; - const onFiltersChange = async (dimensionFilters: FilterItemType[]) => { + const onFiltersChange = (dimensionFilters: FilterItemType[]) => { + setDimensionFilters(dimensionFilters); + }; + + const onDateInfoChange = (dateRange: any) => { + setDateInfo({ + ...(dateInfo || {}), + startDate: moment(dateRange[0]).format('YYYY-MM-DD'), + endDate: moment(dateRange[1]).format('YYYY-MM-DD'), + dateMode: 'BETWEEN', + unit: 0, + }); + }; + + const onRefresh = async () => { setEntitySwitchLoading(true); - const { dimensions, metrics, dateInfo, id, queryId } = parseInfoOptions[0] || {}; + const { dimensions, metrics, id, queryId } = parseInfo || {}; const chatContextValue = { dimensions, metrics, @@ -177,18 +204,33 @@ const ChatItem: React.FC = ({ }; const res: any = await queryData(chatContextValue); setEntitySwitchLoading(false); - const resChatContext = res.data?.chatContext; - setData({ ...(res.data || {}), chatContext: resChatContext || chatContextValue }); - setParseInfo(resChatContext || chatContextValue); - setParseInfoOptions([resChatContext || chatContextValue]); + if (res.code === 200) { + const resChatContext = res.data?.chatContext; + const contextValue = { ...(resChatContext || chatContextValue), queryId }; + const dataValue = { ...res.data, chatContext: contextValue }; + if (onMsgDataLoaded) { + onMsgDataLoaded(dataValue, true); + } + setData(dataValue); + setParseInfo(contextValue); + } + }; + + const getEntityInfo = async (parseInfoValue: ChatContextType) => { + const res = await queryEntityInfo(parseInfoValue.queryId, parseInfoValue.id); + setEntityInfo(res.data); }; const onSelectParseInfo = async (parseInfoValue: ChatContextType) => { setParseInfo(parseInfoValue); - onExecute(parseInfoValue); - if (onUpdateMessageScroll) { - onUpdateMessageScroll(); + setDimensionFilters(parseInfoValue.dimensionFilters || []); + setDateInfo(parseInfoValue.dateInfo); + if (parseInfoValue.entityInfo) { + setEntityInfo(parseInfoValue.entityInfo); + } else { + getEntityInfo(parseInfoValue); } + onUpdateMessageScroll?.(); }; const onSelectQuestion = (question: SimilarQuestionType) => { @@ -205,36 +247,29 @@ const ChatItem: React.FC = ({ return (
- {!isMobile && } + {!isMobile && integrateSystem !== 'wiki' && ( + + )}
- {parseTip && similarQuestions.length > 0 && ( - - )} {executeMode && ( <> - {parseInfoOptions?.[0]?.sqlInfo && isDeveloper && integrateSystem !== 'c2' && ( - - )} - {similarQuestions.length > 0 && ( - + {parseInfo?.sqlInfo && isDeveloper && integrateSystem !== 'c2' && ( + )} = ({ chartIndex={chartIndex} data={data} triggerResize={triggerResize} + executeItemNode={executeItemNode} + renderCustomExecuteNode={renderCustomExecuteNode} + onRefresh={onRefresh} /> )} + {(parseTip !== '' || (executeMode && !executeLoading)) && integrateSystem !== 'c2' && ( + + )}
{!isMetricCard && data && ( - + )}
diff --git a/webapp/packages/chat-sdk/src/components/ChatItem/style.less b/webapp/packages/chat-sdk/src/components/ChatItem/style.less index 375cd5157..a2992ec88 100644 --- a/webapp/packages/chat-sdk/src/components/ChatItem/style.less +++ b/webapp/packages/chat-sdk/src/components/ChatItem/style.less @@ -52,6 +52,30 @@ } } + &-content-options { + display: flex; + align-items: center; + column-gap: 13px; + margin-left: -10px; + } + + &-content-option { + border-radius: 4px; + padding: 0 4px; + font-weight: normal; + color: var(--text-color-third); + cursor: pointer; + + &:hover { + color: var(--chat-blue); + } + } + + &-content-option-active { + color: #fff !important; + background-color: var(--chat-blue); + } + &-avatar { display: flex; align-items: center; @@ -93,12 +117,34 @@ margin-top: 12px; } + .ant-picker { + background-color: #f5f8fb !important; + border-color: #ececec !important; + } + + .ant-picker-input > input { + color: var(--chat-blue); + font-weight: 500; + } + &-title-bar { display: flex; align-items: center; column-gap: 10px; } + &-step-title { + font-weight: 500; + color: var(--text-color); + } + + &-reload { + margin-left: 2px; + font-weight: normal; + color: var(--text-color-secondary); + font-size: 13px !important; + } + &-step-icon { color: var(--green); font-size: 16px; @@ -106,10 +152,7 @@ &-content-container { margin: 2px 0 2px 7px; - padding: 6px 0 4px 18px; - } - - &-content-container-succeed { + padding: 10px 0 4px 18px; border-left: 1px solid var(--green); padding-bottom: 10px; } @@ -127,6 +170,7 @@ column-gap: 6px; color: var(--text-color-fourth); font-size: 13px; + font-weight: normal; } &-switch-entity { @@ -213,6 +257,8 @@ &-tip-item { display: flex; align-items: center; + flex-wrap: wrap; + row-gap: 4px; } &-tip-item-content { @@ -225,10 +271,12 @@ align-items: center; flex-wrap: wrap; column-gap: 12px; + row-gap: 6px; } &-tip-item-filter-name { color: var(--text-color-secondary); + font-weight: 500; } &-mode-name { @@ -241,10 +289,6 @@ font-weight: 500; } - &-tip-item-option { - font-weight: 500; - } - &-entity-info { display: flex; align-items: center; @@ -305,13 +349,35 @@ } .@{filter-item-prefix-cls} { + display: flex; + align-items: center; + font-weight: 500; + + &-filter-name { + color: var(--text-color-secondary); + } + &-select-control { min-width: 120px; - background-color: #f5f8fb; border-radius: 6px; } - .ant-select-selection-item { + &-operator-control { + min-width: 80px; + border-radius: 6px; + margin-right: 8px; + } + + &-input-number-control { + min-width: 100px; + } + + .ant-select-selector, .ant-input-number-input { + background-color: #f5f8fb !important; + border-color: #ececec !important; + } + + .ant-select-selection-item, .ant-input-number-input { color: var(--chat-blue); font-weight: 500; } @@ -334,34 +400,11 @@ overflow: auto; &-toggle-expand-btn { - margin-left: 4px; color: var(--text-color-fourth); font-size: 12px; + margin-right: 10px; cursor: pointer; } - - &-sql-options { - margin-left: 4px; - display: flex; - align-items: center; - column-gap: 13px; - color: var(--text-color-third); - } - - &-sql-option { - border-radius: 4px; - padding: 1px 4px; - cursor: pointer; - - &:hover { - color: var(--chat-blue); - } - } - - &-sql-option-active { - color: #fff !important; - background-color: var(--chat-blue); - } &-code { margin-top: 10px !important; @@ -373,7 +416,7 @@ &-copy-btn { position: absolute; - top: 30px; + top: 24px; right: 20px; background: transparent !important; border: 0 !important; @@ -390,7 +433,6 @@ position: relative; margin: 2px 0 2px 7px; padding: 2px 0 8px 18px; - border-left: 1px solid var(--green); overflow: auto; &-toggle-expand-btn { @@ -403,7 +445,7 @@ &-content { display: flex; flex-direction: column; - row-gap: 12px; + row-gap: 8px; margin-top: 6px; margin-bottom: 2px; } diff --git a/webapp/packages/chat-sdk/src/components/ChatMsg/Message/index.tsx b/webapp/packages/chat-sdk/src/components/ChatMsg/Message/index.tsx index 67a04c9bd..bfaeb7116 100644 --- a/webapp/packages/chat-sdk/src/components/ChatMsg/Message/index.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatMsg/Message/index.tsx @@ -68,7 +68,7 @@ const Message: React.FC = ({
-
数据来源:
+
数据模型:
{modelName}
diff --git a/webapp/packages/chat-sdk/src/components/ChatMsg/Table/index.tsx b/webapp/packages/chat-sdk/src/components/ChatMsg/Table/index.tsx index 1fddac097..198f9b882 100644 --- a/webapp/packages/chat-sdk/src/components/ChatMsg/Table/index.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatMsg/Table/index.tsx @@ -4,6 +4,7 @@ import { MsgDataType } from '../../../common/type'; import { CLS_PREFIX } from '../../../common/constants'; import ApplyAuth from '../ApplyAuth'; import { SizeType } from 'antd/es/config-provider/SizeContext'; +import moment from 'moment'; type Props = { data: MsgDataType; diff --git a/webapp/packages/chat-sdk/src/components/ChatMsg/Table/style.less b/webapp/packages/chat-sdk/src/components/ChatMsg/Table/style.less index 5c1056f66..969b50625 100644 --- a/webapp/packages/chat-sdk/src/components/ChatMsg/Table/style.less +++ b/webapp/packages/chat-sdk/src/components/ChatMsg/Table/style.less @@ -86,7 +86,6 @@ .@{table-prefix-cls}-formatted-value { font-weight: 500; - font-size: 16px; } .ant-table-thead .ant-table-cell { diff --git a/webapp/packages/chat-sdk/src/components/ChatMsg/WebPage/index.tsx b/webapp/packages/chat-sdk/src/components/ChatMsg/WebPage/index.tsx index d8c69feb7..637e97c54 100644 --- a/webapp/packages/chat-sdk/src/components/ChatMsg/WebPage/index.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatMsg/WebPage/index.tsx @@ -1,5 +1,4 @@ import { useCallback, useEffect, useState } from 'react'; -import { CLS_PREFIX } from '../../../common/constants'; import { MsgDataType } from '../../../common/type'; import { getToken, isProd } from '../../../utils/utils'; @@ -14,8 +13,6 @@ const WebPage: React.FC = ({ id, data }) => { const [pluginUrl, setPluginUrl] = useState(''); const [height, setHeight] = useState(DEFAULT_HEIGHT); - const prefixCls = `${CLS_PREFIX}-web-page`; - const { name, webPage: { url, params }, diff --git a/webapp/packages/chat-sdk/src/components/ChatMsg/index.tsx b/webapp/packages/chat-sdk/src/components/ChatMsg/index.tsx index db08ec0e1..1f0d2e914 100644 --- a/webapp/packages/chat-sdk/src/components/ChatMsg/index.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatMsg/index.tsx @@ -129,7 +129,6 @@ const ChatMsg: React.FC = ({ queryId, data, chartIndex, triggerResize }) const onLoadData = async (value: any) => { setLoading(true); const res: any = await queryData({ - // ...chatContext, queryId, parseId: chatContext.id, ...value, @@ -200,7 +199,7 @@ const ChatMsg: React.FC = ({ queryId, data, chartIndex, triggerResize }) const existDrillDownDimension = queryMode.includes('METRIC') && !isText && !isEntityMode; - const isMultipleMetric = existDrillDownDimension && chatContext?.metrics?.length > 1; + const isMultipleMetric = queryMode.includes('METRIC') && chatContext?.metrics?.length > 1; return (
diff --git a/webapp/packages/chat-sdk/src/components/DrillDownDimensions/index.tsx b/webapp/packages/chat-sdk/src/components/DrillDownDimensions/index.tsx index 5441f4130..629ecb074 100644 --- a/webapp/packages/chat-sdk/src/components/DrillDownDimensions/index.tsx +++ b/webapp/packages/chat-sdk/src/components/DrillDownDimensions/index.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'; import { CLS_PREFIX } from '../../common/constants'; import { DrillDownDimensionType, FilterItemType } from '../../common/type'; import { queryDrillDownDimensions } from '../../service'; -import { Dropdown } from 'antd'; +import { Dropdown, Menu } from 'antd'; import { DownOutlined } from '@ant-design/icons'; import classNames from 'classnames'; @@ -87,26 +87,27 @@ const DrillDownDimensions: React.FC = ({
{ - const itemNameClass = classNames({ - [`${prefixCls}-menu-item-active`]: drillDownDimension?.id === dimension.id, - }); - return { - label: ( - { - onSelectDimension(dimension); - }} - > - {dimension.name} - - ), - key: dimension.id, - }; - }), - }} + overlay={ + + {dimensions.slice(DEFAULT_DIMENSION_COUNT).map(dimension => { + const itemNameClass = classNames({ + [`${prefixCls}-menu-item-active`]: drillDownDimension?.id === dimension.id, + }); + return ( + + { + onSelectDimension(dimension); + }} + > + {dimension.name} + + + ); + })} + + } > 更多 diff --git a/webapp/packages/chat-sdk/src/components/Tools/index.tsx b/webapp/packages/chat-sdk/src/components/Tools/index.tsx index 48f8a503d..b8d86ec0e 100644 --- a/webapp/packages/chat-sdk/src/components/Tools/index.tsx +++ b/webapp/packages/chat-sdk/src/components/Tools/index.tsx @@ -1,28 +1,21 @@ import { isMobile } from '../../utils/utils'; import { DislikeOutlined, LikeOutlined } from '@ant-design/icons'; import { CLS_PREFIX } from '../../common/constants'; -import { MsgDataType } from '../../common/type'; import { useState } from 'react'; import classNames from 'classnames'; import { updateQAFeedback } from '../../service'; type Props = { - data: MsgDataType; + queryId: number; scoreValue?: number; isLastMessage?: boolean; }; -const Tools: React.FC = ({ data, scoreValue, isLastMessage }) => { - const { queryResults, queryId, chatContext, queryMode } = data || {}; +const Tools: React.FC = ({ queryId, scoreValue, isLastMessage }) => { const [score, setScore] = useState(scoreValue || 0); const prefixCls = `${CLS_PREFIX}-tools`; - const singleData = queryResults?.length === 1; - const isMetricCard = - queryMode.includes('METRIC') && - (singleData || chatContext?.dateInfo?.startDate === chatContext?.dateInfo?.endDate); - const like = () => { setScore(5); updateQAFeedback(queryId, 5); diff --git a/webapp/packages/chat-sdk/src/demo/Chat.tsx b/webapp/packages/chat-sdk/src/demo/Chat.tsx index 854b88068..21f095d94 100644 --- a/webapp/packages/chat-sdk/src/demo/Chat.tsx +++ b/webapp/packages/chat-sdk/src/demo/Chat.tsx @@ -2,7 +2,7 @@ import { Input } from 'antd'; import styles from './style.module.less'; import { useEffect, useState } from 'react'; import ChatItem from '../components/ChatItem'; -import { queryContext, searchRecommend } from '../service'; +import { searchRecommend } from '../service'; const { Search } = Input; diff --git a/webapp/packages/chat-sdk/src/demo/style.module.less b/webapp/packages/chat-sdk/src/demo/style.module.less index f818325c6..f190850d1 100644 --- a/webapp/packages/chat-sdk/src/demo/style.module.less +++ b/webapp/packages/chat-sdk/src/demo/style.module.less @@ -10,6 +10,10 @@ box-sizing: border-box; } -.chatDemo { - height: 100%; +.copilotDemo { + padding: 20px; } + +.chatDemo { + height: 100vh; +} \ No newline at end of file diff --git a/webapp/packages/chat-sdk/src/index.tsx b/webapp/packages/chat-sdk/src/index.tsx index 36ea0194d..c638624b5 100644 --- a/webapp/packages/chat-sdk/src/index.tsx +++ b/webapp/packages/chat-sdk/src/index.tsx @@ -35,6 +35,8 @@ export type { SendMsgParamsType, } from './common/type'; -export { getHistoryMsg, searchRecommend, queryContext } from './service'; +export { searchRecommend } from './service'; + +export { saveConversation, getAllConversations } from './Chat/service'; export { setToken } from './utils/utils'; diff --git a/webapp/packages/chat-sdk/src/service/index.ts b/webapp/packages/chat-sdk/src/service/index.ts index d418ac962..7dcffb26a 100644 --- a/webapp/packages/chat-sdk/src/service/index.ts +++ b/webapp/packages/chat-sdk/src/service/index.ts @@ -1,5 +1,5 @@ import axios from './axiosInstance'; -import { ChatContextType, DrillDownDimensionType, HistoryType, MsgDataType, ParseDataType, SearchRecommendItem } from '../common/type'; +import { ChatContextType, DrillDownDimensionType, EntityInfoType, HistoryType, MsgDataType, ParseDataType, SearchRecommendItem } from '../common/type'; const DEFAULT_CHAT_ID = 0; @@ -58,13 +58,6 @@ export function queryData(chatContext: Partial) { return axios.post(`${prefix}/chat/query/queryData`, chatContext); } -export function queryContext(queryText: string, chatId?: number) { - return axios.post(`${prefix}/chat/query/queryContext`, { - queryText, - chatId: chatId || DEFAULT_CHAT_ID, - }); -} - export function getHistoryMsg(current: number, chatId: number = DEFAULT_CHAT_ID, pageSize: number = 10) { return axios.post(`${prefix}/chat/manage/pageQueryInfo?chatId=${chatId}`, { current, @@ -72,14 +65,6 @@ export function getHistoryMsg(current: number, chatId: number = DEFAULT_CHAT_ID, }); } -export function saveConversation(chatName: string) { - return axios.post(`${prefix}/chat/manage/save?chatName=${chatName}`); -} - -export function getAllConversations() { - return axios.get(`${prefix}/chat/manage/getAll`); -} - export function queryEntities(entityId: string | number, modelId: number) { return axios.post(`${prefix}/chat/query/choice`, { entityId, @@ -95,6 +80,14 @@ export function queryDrillDownDimensions(modelId: number) { return axios.get<{ dimensions: DrillDownDimensionType[] }>(`${prefix}/chat/recommend/metric/${modelId}`); } -export function queryDimensionValues(modelId: number, bizName: string, value: string) { - return axios.post(`${prefix}/chat/query/queryDimensionValue`, { modelId, bizName, value}); +export function queryDimensionValues(modelId: number, bizName: string, agentId: number, elementID: number, value: string) { + return axios.post(`${prefix}/chat/query/queryDimensionValue`, { modelId, bizName, agentId, elementID, value}); +} + +export function querySimilarQuestions(queryText: string, agentId?: number) { + return axios.get(`${prefix}/chat/manage/getSolvedQuery?queryText=${queryText}&agentId=${agentId}`); +} + +export function queryEntityInfo(queryId: number, parseId: number) { + return axios.get(`${prefix}/chat/query/getEntityInfo?queryId=${queryId}&parseId=${parseId}`) } diff --git a/webapp/packages/chat-sdk/src/styles/global.less b/webapp/packages/chat-sdk/src/styles/global.less index b04b56788..f5c8f94ad 100644 --- a/webapp/packages/chat-sdk/src/styles/global.less +++ b/webapp/packages/chat-sdk/src/styles/global.less @@ -1,3 +1,5 @@ +@import '~antd/dist/antd.css'; + @import './index.less'; @prefix-cls: ~'@{supersonic-chat-prefix}'; diff --git a/webapp/packages/chat-sdk/tsconfig.build.json b/webapp/packages/chat-sdk/tsconfig.build.json index fb586b5a4..c82e4891f 100644 --- a/webapp/packages/chat-sdk/tsconfig.build.json +++ b/webapp/packages/chat-sdk/tsconfig.build.json @@ -7,7 +7,7 @@ "jsx": "react-jsx", "moduleResolution":"Node", "allowSyntheticDefaultImports": true, - "importHelpers": true + "importHelpers": true, }, "include": [ "src" diff --git a/webapp/pnpm-lock.yaml b/webapp/pnpm-lock.yaml index d9d9c38b6..cf012ae93 100644 --- a/webapp/pnpm-lock.yaml +++ b/webapp/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^3.7.8 version: 3.7.8(react@18.2.0) antd: - specifier: ^5.5.2 - version: 5.9.0(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.23.5 + version: 4.23.5(react-dom@18.2.0)(react@18.2.0) axios: specifier: ^0.21.1 version: 0.21.4 @@ -637,23 +637,6 @@ packages: stylis: 4.3.0 dev: false - /@ant-design/cssinjs@1.17.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-MgGCZ6sfD3yQB0XW0hN4jgixMxApTlDYyct+pc7fRZNO4CaqWWm/9iXkkljNR27lyWLZmm+XiDfcIOo1bnrnMA==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@babel/runtime': 7.22.15 - '@emotion/hash': 0.8.0 - '@emotion/unitless': 0.7.5 - classnames: 2.3.2 - csstype: 3.1.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - stylis: 4.3.0 - dev: false - /@ant-design/flowchart@1.2.2(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13): resolution: {integrity: sha512-bzHZ81qqHjWIrXcCMInDB6eMTzbswaVCOAdUTCQJ+B45aybkVsU9LMCKquyOwRM7U7PWNfPC9S/lAlx2i2BvBQ==} peerDependencies: @@ -748,22 +731,6 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: false - /@ant-design/icons@5.2.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==} - engines: {node: '>=8'} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@ant-design/colors': 7.0.0 - '@ant-design/icons-svg': 4.3.1 - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@ant-design/maps@1.0.7(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-mGi5vODWsXuYz2HstsG+faql/nAJ7v4V1sUfJjgD0mo2kNEPpEfcw0vbkQyNpyn/DZrR5Ue40Twv0N5IoCmxaA==} peerDependencies: @@ -1284,6 +1251,19 @@ packages: swr: 2.2.2(react@17.0.2) dev: false + /@ant-design/react-slick@0.29.2(react@18.2.0): + resolution: {integrity: sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + json2mq: 0.2.0 + lodash: 4.17.21 + react: 18.2.0 + resize-observer-polyfill: 1.5.1 + dev: false + /@ant-design/react-slick@1.0.2(react@17.0.2): resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==} peerDependencies: @@ -1296,19 +1276,6 @@ packages: resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.0 - /@ant-design/react-slick@1.0.2(react@18.2.0): - resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==} - peerDependencies: - react: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - json2mq: 0.2.0 - react: 18.2.0 - resize-observer-polyfill: 1.5.1 - throttle-debounce: 5.0.0 - dev: false - /@antv/adjust@0.2.5: resolution: {integrity: sha512-MfWZOkD9CqXRES6MBGRNe27Q577a72EIwyMnE29wIlPliFvJfWwsrONddpGU7lilMpVKecS3WAzOoip3RfPTRQ==} dependencies: @@ -4878,53 +4845,6 @@ packages: /@qixian.cs/path-to-regexp@6.1.0: resolution: {integrity: sha512-2jIiLiVZB1jnY7IIRQKtoV8Gnr7XIhk4mC88ONGunZE3hYt5IHUG4BE/6+JiTBjjEWQLBeWnZB8hGpppkufiVw==} - /@rc-component/color-picker@1.4.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - '@ctrl/tinycolor': 3.6.1 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/context@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/mini-decimal@1.1.0: - resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} - engines: {node: '>=8.x'} - dependencies: - '@babel/runtime': 7.22.15 - dev: false - - /@rc-component/mutate-observer@1.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@rc-component/portal@1.1.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} engines: {node: '>=8.x'} @@ -4938,54 +4858,6 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /@rc-component/portal@1.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/tour@1.10.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/trigger@1.15.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Tl19KaGsShf4yzqxumsXVT4c7j0l20Dxe5hgP5S0HmxyhCg3oKen28ntGavRCIPW7cl7wgsGotntqcIokgDHzg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.3.2 - rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@rollup/plugin-babel@5.3.1(@babel/core@7.22.17)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} @@ -5683,14 +5555,6 @@ packages: resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} dev: false - /@types/jsdom@21.1.2: - resolution: {integrity: sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==} - dependencies: - '@types/node': 16.18.50 - '@types/tough-cookie': 4.0.3 - parse5: 7.1.2 - dev: false - /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} @@ -5973,10 +5837,6 @@ packages: '@types/jest': 27.5.2 dev: true - /@types/tough-cookie@4.0.3: - resolution: {integrity: sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==} - dev: false - /@types/trusted-types@2.0.4: resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==} dev: true @@ -7554,6 +7414,60 @@ packages: - react-dom dev: true + /antd@4.23.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AMea5NYoMeGvRxZ/rslGvRqaiuzBgQMpOdlQfNjOfMd+0ZGi+E4AiwXilR99muFOttPcr3ebeIsKiUS5p/cnig==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons': 4.8.1(react-dom@18.2.0)(react@18.2.0) + '@ant-design/react-slick': 0.29.2(react@18.2.0) + '@babel/runtime': 7.22.15 + '@ctrl/tinycolor': 3.6.1 + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + lodash: 4.17.21 + memoize-one: 6.0.0 + moment: 2.29.4 + rc-cascader: 3.7.3(react-dom@18.2.0)(react@18.2.0) + rc-checkbox: 2.3.2(react-dom@18.2.0)(react@18.2.0) + rc-collapse: 3.3.1(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 8.9.0(react-dom@18.2.0)(react@18.2.0) + rc-drawer: 5.1.0(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.0.1(react-dom@18.2.0)(react@18.2.0) + rc-field-form: 1.27.4(react-dom@18.2.0)(react@18.2.0) + rc-image: 5.7.1(react-dom@18.2.0)(react@18.2.0) + rc-input: 0.1.4(react-dom@18.2.0)(react@18.2.0) + rc-input-number: 7.3.11(react-dom@18.2.0)(react@18.2.0) + rc-mentions: 1.10.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.6.4(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-notification: 4.6.1(react-dom@18.2.0)(react@18.2.0) + rc-pagination: 3.1.17(react-dom@18.2.0)(react@18.2.0) + rc-picker: 2.6.11(react-dom@18.2.0)(react@18.2.0) + rc-progress: 3.3.3(react-dom@18.2.0)(react@18.2.0) + rc-rate: 2.9.3(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-segmented: 2.1.2(react-dom@18.2.0)(react@18.2.0) + rc-select: 14.1.18(react-dom@18.2.0)(react@18.2.0) + rc-slider: 10.0.1(react-dom@18.2.0)(react@18.2.0) + rc-steps: 4.1.4(react-dom@18.2.0)(react@18.2.0) + rc-switch: 3.2.2(react-dom@18.2.0)(react@18.2.0) + rc-table: 7.26.0(react-dom@18.2.0)(react@18.2.0) + rc-tabs: 12.1.0-alpha.1(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 0.4.7(react-dom@18.2.0)(react@18.2.0) + rc-tooltip: 5.2.2(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) + rc-tree-select: 5.5.5(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scroll-into-view-if-needed: 2.2.31 + dev: false + /antd@4.24.14(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-hY/MPm7XI0G+9MvjhTlbDkA2sf8oHVbhtrT0XRstlm9+fXYGNXz8oEh3d5qiA3/tY5NL2Kh2tF7Guh01hwWJdg==} peerDependencies: @@ -7606,69 +7520,6 @@ packages: react-dom: 17.0.2(react@17.0.2) scroll-into-view-if-needed: 2.2.31 - /antd@5.9.0(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YgLGtz+GbzrQws+R7siXolUN89ERH2Kbcu8Bz98VY4fwwMSDKKhbCGkIjw9mnIhcrXpHT+FXwrqjAV3j9eakSA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@ant-design/colors': 7.0.0 - '@ant-design/cssinjs': 1.17.0(react-dom@18.2.0)(react@18.2.0) - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/react-slick': 1.0.2(react@18.2.0) - '@babel/runtime': 7.22.15 - '@ctrl/tinycolor': 3.6.1 - '@rc-component/color-picker': 1.4.1(react-dom@18.2.0)(react@18.2.0) - '@rc-component/mutate-observer': 1.1.0(react-dom@18.2.0)(react@18.2.0) - '@rc-component/tour': 1.10.0(react-dom@18.2.0)(react@18.2.0) - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) - '@types/jsdom': 21.1.2 - classnames: 2.3.2 - copy-to-clipboard: 3.3.3 - dayjs: 1.11.9 - qrcode.react: 3.1.0(react@18.2.0) - rc-cascader: 3.16.0(react-dom@18.2.0)(react@18.2.0) - rc-checkbox: 3.1.0(react-dom@18.2.0)(react@18.2.0) - rc-collapse: 3.7.1(react-dom@18.2.0)(react@18.2.0) - rc-dialog: 9.2.0(react-dom@18.2.0)(react@18.2.0) - rc-drawer: 6.4.1(react-dom@18.2.0)(react@18.2.0) - rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-field-form: 1.38.0(react-dom@18.2.0)(react@18.2.0) - rc-image: 7.2.0(react-dom@18.2.0)(react@18.2.0) - rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) - rc-input-number: 8.0.4(react-dom@18.2.0)(react@18.2.0) - rc-mentions: 2.7.0(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-notification: 5.1.1(react-dom@18.2.0)(react@18.2.0) - rc-pagination: 3.6.1(react-dom@18.2.0)(react@18.2.0) - rc-picker: 3.13.2(dayjs@1.11.9)(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) - rc-progress: 3.5.1(react-dom@18.2.0)(react@18.2.0) - rc-rate: 2.12.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) - rc-segmented: 2.2.2(react-dom@18.2.0)(react@18.2.0) - rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) - rc-slider: 10.2.1(react-dom@18.2.0)(react@18.2.0) - rc-steps: 6.0.1(react-dom@18.2.0)(react@18.2.0) - rc-switch: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-table: 7.33.4(react-dom@18.2.0)(react@18.2.0) - rc-tabs: 12.12.1(react-dom@18.2.0)(react@18.2.0) - rc-textarea: 1.3.4(react-dom@18.2.0)(react@18.2.0) - rc-tooltip: 6.0.1(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) - rc-tree-select: 5.12.1(react-dom@18.2.0)(react@18.2.0) - rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - scroll-into-view-if-needed: 3.0.10 - throttle-debounce: 5.0.0 - transitivePeerDependencies: - - date-fns - - luxon - - moment - dev: false - /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true @@ -9275,10 +9126,6 @@ packages: /compute-scroll-into-view@1.0.20: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} - /compute-scroll-into-view@3.0.3: - resolution: {integrity: sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==} - dev: false - /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -10895,6 +10742,7 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + dev: true /err-code@1.1.2: resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==} @@ -16511,6 +16359,10 @@ packages: /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false + /memory-fs@0.5.0: resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} @@ -17744,6 +17596,7 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: true /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -19799,14 +19652,6 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qrcode.react@3.1.0(react@18.2.0): - resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -19970,22 +19815,6 @@ packages: react-lifecycles-compat: 3.0.4 dev: true - /rc-cascader@3.16.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-c62glOhm66T0/Y8vOfIgZwHHTbqCyC7FvBTcNDuwbXZc8Dfbz6fB1yIuCB55z5rPA7nsUfMyNNuS8shReZWM+A==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - array-tree-filter: 2.1.0 - classnames: 2.3.2 - rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-cascader@3.7.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-KBpT+kzhxDW+hxPiNk4zaKa99+Lie2/8nnI11XF+FIOPl4Bj9VlFZi61GrnWzhLGA7VEN+dTxAkNOjkySDa0dA==} peerDependencies: @@ -20001,6 +19830,22 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) + /rc-cascader@3.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KBpT+kzhxDW+hxPiNk4zaKa99+Lie2/8nnI11XF+FIOPl4Bj9VlFZi61GrnWzhLGA7VEN+dTxAkNOjkySDa0dA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.1.18(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-checkbox@2.0.3: resolution: {integrity: sha512-sSDV5AcxK5CxBTyUNj9pb0zfhdgLLsWKHwJG18ikeGoIwklcxXvIF6cI/KGVbPLFDa8mPS5WLOlLRqbq/1/ouw==} dependencies: @@ -20010,6 +19855,18 @@ packages: rc-util: 4.21.1 dev: true + /rc-checkbox@2.3.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-checkbox@3.0.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-k7nxDWxYF+jDI0ZcCvuvj71xONmWRVe5+1MKcERRR9MRyP3tZ69b+yUCSXXh+sik4/Hc9P5wHr2nnUoGS2zBjA==} peerDependencies: @@ -20022,19 +19879,6 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-checkbox@3.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-collapse@1.9.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-8cG+FzudmgFCC9zRGKXJZA36zoI9Dmyjp6UDi8N80sXUch0JOpsZDxgcFzw4HPpPpK/dARtTilEe9zyuspnW0w==} dependencies: @@ -20047,6 +19891,21 @@ packages: - react-dom dev: true + /rc-collapse@3.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cOJfcSe3R8vocrF8T+PgaHDrgeA1tX+lwfhwSj60NX9QVRidsILIbRNDLD6nAzmcvVC5PWiIRiR4S1OobxdhCg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: false + /rc-collapse@3.4.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==} peerDependencies: @@ -20061,8 +19920,8 @@ packages: react-dom: 17.0.2(react@17.0.2) shallowequal: 1.1.0 - /rc-collapse@3.7.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==} + /rc-dialog@8.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Cp0tbJnrvPchJfnwIvOMWmJ4yjX3HWFatO6oBFD1jx8QkgsQCR0p8nUWAKdd3seLJhEC39/v56kZaEjwp9muoQ==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -20089,14 +19948,13 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-dialog@9.2.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-dL2tklMou/QfK77+0CTH3FTnKCvIiYv9Df7PfFfg8YVXhYAGmuIkV4ooQYHAIR4juL3Ywcm5oQflF2vDDuGlUg==} + /rc-drawer@5.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pU3Tsn99pxGdYowXehzZbdDVE+4lDXSGb7p8vA9mSmr569oc2Izh4Zw5vLKSe/Xxn2p5MSNbLVqD4tz+pK6SOw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) @@ -20118,21 +19976,6 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-drawer@6.4.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QIbNMjiZy322o9uEpJHsSZ5rS/zuxqam3lYVPDzjztoqsoDzTNNxWN77QVpOfQ0UC9/87+qu25zocJ+O9bK2Tg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.3.2 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-dropdown@3.6.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Wsw7GkVbUXADEs8FPL0v8gd+3mWQiydPFXBlr2imMScQaf8hh79pG9KrBc1DwK+nqHmYOpQfK2gn6jG2AQw9Pw==} peerDependencies: @@ -20160,15 +20003,29 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-dropdown@4.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==} + /rc-dropdown@4.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==} peerDependencies: react: '>=16.11.0' react-dom: '>=16.11.0' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-field-form@1.27.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PQColQnZimGKArnOh8V2907+VzDCXcqtFvHgevDLtqWc/P7YASb/FqntSmdS8q3VND5SHX3Y1vgMIzY22/f/0Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + async-validator: 4.2.5 rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -20201,20 +20058,6 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: false - /rc-field-form@1.38.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-erYxHL6s382MShbAlP5kquQETqulZII0uJmhjtIwkIGqPowJDrQeoey43notZFhVjeJDtznoJlBzVjiVN99w8g==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - async-validator: 4.2.5 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-gesture@0.0.22: resolution: {integrity: sha512-6G6qrCE0MUTXyjh/powj91XkjRjoFL4HiJLPU5lALXHvGX+/efcUjGYUrHrrw0mwQdmrmg4POqnY/bibns+G3g==} dependencies: @@ -20236,17 +20079,15 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-image@7.2.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5Ug2hCVl6VcT0osR5XaZQ4zclTMEWPnbn3b4/TS/MR1QjRpEACLNFUzBGwr5mbAVhzvLWX5YZf4vO10xUA5IUA==} + /rc-image@5.7.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QyMfdhoUfb5W14plqXSisaYwpdstcLYnB0MjX5ccIK2rydQM9sDPuekQWu500DDGR2dBaIF5vx9XbWkNFK17Fg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 - rc-dialog: 9.2.0(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 8.9.0(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -20264,16 +20105,14 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-input-number@8.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TP+G5b7mZtbwXJ/YEZXF/OgbEZ6iqD4+RSuxZJ8VGKGXDcdt0FKIvpFoNQr/knspdFC4OxA0OfsWfFWfN4XSyA==} + /rc-input-number@7.3.11(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/mini-decimal': 1.1.0 classnames: 2.3.2 - rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -20291,8 +20130,8 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-input@1.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-NTR1Z4em681L8/ewb2KR80RykSmN8I2mzqzJDCoUmTrV1BB9Hk5d7ha4TnfgdEPPL148N+603sW2LExSXk1IbA==} + /rc-input@0.1.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' @@ -20304,6 +20143,22 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /rc-mentions@1.10.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oMlYWnwXSxP2NQVlgxOTzuG/u9BUc3ySY78K3/t7MNhJWpZzXTao+/Bic6tyZLuNCO89//hVQJBdaR2rnFQl6Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-menu: 9.6.4(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 0.4.7(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-mentions@1.13.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw==} peerDependencies: @@ -20319,39 +20174,6 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-mentions@2.7.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tn0x79cpnVYP+MA+jyBqalmEni9Ct7xHuA9QHIf5vwd25FU+hngGZ8n6Dfua7XCr4LhkZYjfD/rZTGrvY2C1Xg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) - classnames: 2.3.2 - rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) - rc-textarea: 1.3.4(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-menu@9.12.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Apr/fRf5EcqWJ4nphHV6dTGZcLPaPzwY44q9hAtLJysY4rkC9Eg+ekj3uFx6opPWVruV2sJNWq/Po+HHtO48CA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) - classnames: 2.3.2 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-menu@9.6.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==} peerDependencies: @@ -20369,6 +20191,23 @@ packages: shallowequal: 1.1.0 dev: true + /rc-menu@9.6.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: false + /rc-menu@9.8.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-lmw2j8I2fhdIzHmC9ajfImfckt0WDb2KVJJBBRIsxPEw2kGkEfjLMUoB1NgiNT/Q5cC8PdjGOGQjHJIJMwyNMw==} peerDependencies: @@ -20423,8 +20262,8 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-notification@5.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BPnded/WmWFE57ubqhVCgRSuedfQQNeSOYqdwppyr2B/Wt909gYFKyWAkFJVXuppAjsOGop05a93UaxjmUFdkg==} + /rc-notification@4.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -20465,6 +20304,18 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /rc-pagination@3.1.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-pagination@3.2.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==} peerDependencies: @@ -20476,17 +20327,23 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-pagination@3.6.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-R/sUnKKXx1Nm4kZfUKS3YKa7yEPF1ZkVB/AynQaHt+nMER7h9wPTfliDJFdYo+RM/nk2JD4Yc5QpUq8fIQHeug==} + /rc-picker@2.6.11(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-INJ7ULu+Kj4UgqbcqE8Q+QpMw55xFf9kkyLBHJFk0ihjJpAV4glialRfqHE7k4KX2BWYPQfpILwhwR14x2EiRQ==} + engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 classnames: 2.3.2 + date-fns: 2.30.0 + dayjs: 1.11.9 + moment: 2.29.4 + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 dev: false /rc-picker@2.7.6(react-dom@17.0.2)(react@17.0.2): @@ -20507,31 +20364,14 @@ packages: react-dom: 17.0.2(react@17.0.2) shallowequal: 1.1.0 - /rc-picker@3.13.2(dayjs@1.11.9)(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jvmmwo9d2/rUJXx8dydmcReAGF7f2wzbR7GDUgZXymbw0cqxNqXen5GGQIsX0x92JJROKyKb+J/E7bn967Ok9A==} - engines: {node: '>=8.x'} + /rc-progress@3.3.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw==} peerDependencies: - date-fns: '>= 2.x' - dayjs: '>= 1.x' - luxon: '>= 3.x' - moment: '>= 2.x' react: '>=16.9.0' react-dom: '>=16.9.0' - peerDependenciesMeta: - date-fns: - optional: true - dayjs: - optional: true - luxon: - optional: true - moment: - optional: true dependencies: '@babel/runtime': 7.22.15 - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 - dayjs: 1.11.9 - moment: 2.29.4 rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -20549,33 +20389,6 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-progress@3.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-rate@2.12.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-rate@2.9.3(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-2THssUSnRhtqIouQIIXqsZGzRczvp4WsH4WvGuhiwm+LG2fVpDUJliP9O1zeDOZvYfBE/Bup4SgHun/eCkbjgQ==} engines: {node: '>=8.x'} @@ -20589,6 +20402,20 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) + /rc-rate@2.9.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2THssUSnRhtqIouQIIXqsZGzRczvp4WsH4WvGuhiwm+LG2fVpDUJliP9O1zeDOZvYfBE/Bup4SgHun/eCkbjgQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-resize-observer@0.2.6(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==} peerDependencies: @@ -20643,8 +20470,8 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-segmented@2.2.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==} + /rc-segmented@2.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' @@ -20674,18 +20501,18 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-select@14.8.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+MDaHteiKRL4iID9Osm8zAZTe+g7/t5CjIfJJ4QhPAvwGUaNCa2kvkMqiXfOfGevscVa+agha1Ov938MeAotfQ==} + /rc-select@14.1.18(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4JgY3oG2Yz68ECMUSCON7mtxuJvCSj+LJpHEg/AONaaVBxIIrmI/ZTuMJkyojall/X50YdBe5oMKqHHPNiPzEg==} engines: {node: '>=8.x'} peerDependencies: react: '*' react-dom: '*' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) rc-virtual-list: 3.10.7(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 @@ -20706,8 +20533,8 @@ packages: react-dom: 17.0.2(react@17.0.2) shallowequal: 1.1.0 - /rc-slider@10.2.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-l355C/65iV4UFp7mXq5xBTNX2/tF2g74VWiTVlTpNp+6vjE/xaHHNiQq5Af+Uu28uUiqCuH/QXs5HfADL9KJ/A==} + /rc-slider@10.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -20718,6 +20545,7 @@ packages: rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 dev: false /rc-slider@8.2.0(react-dom@17.0.2)(react@17.0.2): @@ -20735,6 +20563,20 @@ packages: - react-dom dev: true + /rc-steps@4.1.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-steps@5.0.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw==} engines: {node: '>=8.x'} @@ -20748,20 +20590,6 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-steps@6.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /rc-swipeout@2.0.11: resolution: {integrity: sha512-d37Lgn4RX4OOQyuA2BFo0rGlUwrmZk5q83srH3ixJ1Y1jidr2GKjgJDbNeGUVZPNfYBL91Elu6+xfVGftWf4Lg==} dependencies: @@ -20783,8 +20611,8 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-switch@4.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + /rc-switch@3.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -20811,21 +20639,20 @@ packages: react-dom: 17.0.2(react@17.0.2) shallowequal: 1.1.0 - /rc-table@7.33.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zgWcNPcI4vCBjvdInjF7PCt3loqDDLIZwVyw7R+Et1nwIGW26UNbdSw/C+pkTOppQd9kRiu9JD/z9xAjhTLE2w==} + /rc-table@7.26.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/context': 1.4.0(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) - rc-virtual-list: 3.10.7(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 dev: false /rc-tabs@11.16.1(react-dom@17.0.2)(react@17.0.2): @@ -20845,8 +20672,8 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: true - /rc-tabs@12.12.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-e10VBjEkECdPl4XZSs9to81SE+mgclBTM7J8/LMsFqmJoi05Tci91bRnmeeDtrcOCx2PuZdJv57XUlC4d8PEIw==} + /rc-tabs@12.1.0-alpha.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-M+B88WEnGSuE+mR54fpgPbZLAakzxa/H6FmEetLBl5WG4I3AcwSk9amuIPC/tu0KXBl+H6Bg5ZwrrEUOBUvgzg==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -20854,8 +20681,8 @@ packages: dependencies: '@babel/runtime': 7.22.15 classnames: 2.3.2 - rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.0.1(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.6.4(react-dom@18.2.0)(react@18.2.0) rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) @@ -20894,19 +20721,19 @@ packages: react-dom: 17.0.2(react@17.0.2) shallowequal: 1.1.0 - /rc-textarea@1.3.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wn0YjTpvcVolcfXa0HtzL+jgV2QcwtfB29RwNAKj8hMgZOju1V24M3TfEDjABeQEAQbUGbjMbISREOX/YSVKhg==} + /rc-textarea@0.4.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 classnames: 2.3.2 - rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 dev: false /rc-tooltip@3.7.3(react-dom@17.0.2)(react@17.0.2): @@ -20932,30 +20759,15 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - /rc-tooltip@6.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==} + /rc-tooltip@5.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.22.15 - '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) classnames: 2.3.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-tree-select@5.12.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/IC6gRgRoUBCOwZASOiF3onp1484fb+Gke5zuxgsi3ViP+O2UTUByS1jTZzjNooidRgdwiQJksq1zVaVYw2TPg==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.22.15 - classnames: 2.3.2 - rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -20974,6 +20786,21 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) + /rc-tree-select@5.5.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-select: 14.1.18(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-tree@5.7.10(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-n4UkMQY3bzvJUNnbw6e3YI7sy2kE9c9vAYbSt94qAhcPKtMOThONNr1LIaFB/M5XeFYYrWVbvRVoT8k38eFuSQ==} engines: {node: '>=10.x'} @@ -21035,6 +20862,22 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) + /rc-trigger@5.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /rc-upload@4.3.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} peerDependencies: @@ -22888,12 +22731,6 @@ packages: dependencies: compute-scroll-into-view: 1.0.20 - /scroll-into-view-if-needed@3.0.10: - resolution: {integrity: sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==} - dependencies: - compute-scroll-into-view: 3.0.3 - dev: false - /seamless-immutable@7.1.4: resolution: {integrity: sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A==} dev: true