@yoka-ui/ui 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@Docs-yoka/exports.generated.md +93 -0
- package/@Docs-yoka/llms.txt +23 -0
- package/README.md +113 -0
- package/dist/es/Themes/InputTheme/index.d.ts +6 -0
- package/dist/es/Themes/InputTheme/index.js +22 -0
- package/dist/es/Themes/InputTheme/index.js.map +7 -0
- package/dist/es/Themes/TableTheme/index.d.ts +7 -0
- package/dist/es/Themes/TableTheme/index.js +31 -0
- package/dist/es/Themes/TableTheme/index.js.map +7 -0
- package/dist/es/Themes/TableTheme/index.less +46 -0
- package/dist/es/assets/image/YKUI-logo.png +0 -0
- package/dist/es/assets/less/ant-reset.less +402 -0
- package/dist/es/assets/less/index.less +1 -0
- package/dist/es/assets/less/variables.less +16 -0
- package/dist/es/business/AiChat/MarkdownRender.d.ts +9 -0
- package/dist/es/business/AiChat/MarkdownRender.js +72 -0
- package/dist/es/business/AiChat/MarkdownRender.js.map +7 -0
- package/dist/es/business/AiChat/index.d.ts +16 -0
- package/dist/es/business/AiChat/index.js +733 -0
- package/dist/es/business/AiChat/index.js.map +7 -0
- package/dist/es/business/AiChat/intentRecognizer.d.ts +33 -0
- package/dist/es/business/AiChat/intentRecognizer.js +166 -0
- package/dist/es/business/AiChat/intentRecognizer.js.map +7 -0
- package/dist/es/business/AiChat/navigationManager.d.ts +94 -0
- package/dist/es/business/AiChat/navigationManager.js +208 -0
- package/dist/es/business/AiChat/navigationManager.js.map +7 -0
- package/dist/es/business/AiChat/sse.d.ts +16 -0
- package/dist/es/business/AiChat/sse.js +171 -0
- package/dist/es/business/AiChat/sse.js.map +7 -0
- package/dist/es/business/AiChat/type.d.ts +156 -0
- package/dist/es/business/AiChat/type.js +1 -0
- package/dist/es/business/AiChat/type.js.map +7 -0
- package/dist/es/business/AiChat/useAiChat.d.ts +2 -0
- package/dist/es/business/AiChat/useAiChat.js +268 -0
- package/dist/es/business/AiChat/useAiChat.js.map +7 -0
- package/dist/es/business/AiChat/useTaskWorkflow.d.ts +25 -0
- package/dist/es/business/AiChat/useTaskWorkflow.js +196 -0
- package/dist/es/business/AiChat/useTaskWorkflow.js.map +7 -0
- package/dist/es/business/DrawerPageInfo/index.d.ts +35 -0
- package/dist/es/business/DrawerPageInfo/index.js +133 -0
- package/dist/es/business/DrawerPageInfo/index.js.map +7 -0
- package/dist/es/business/DrawerPageInfo/index.module.less +87 -0
- package/dist/es/business/DrawerPageInfo/test.png +0 -0
- package/dist/es/business/Editor/index.d.ts +11 -0
- package/dist/es/business/Editor/index.js +86 -0
- package/dist/es/business/Editor/index.js.map +7 -0
- package/dist/es/business/Editor/index.less +31 -0
- package/dist/es/business/Empty/empty.png +0 -0
- package/dist/es/business/Empty/index.d.ts +19 -0
- package/dist/es/business/Empty/index.js +51 -0
- package/dist/es/business/Empty/index.js.map +7 -0
- package/dist/es/business/ModCommonFilter/assets/images/empty.png +0 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.d.ts +13 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.js +51 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.d.ts +13 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.js +51 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/index.d.ts +25 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/index.js +30 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/index.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/FilterButton/index.module.less +97 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.d.ts +18 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js +74 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.d.ts +37 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js +216 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.d.ts +26 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js +102 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/index.d.ts +51 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/index.js +71 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/index.js.map +7 -0
- package/dist/es/business/ModCommonFilter/components/PopoverContent/index.module.less +260 -0
- package/dist/es/business/ModCommonFilter/index.d.ts +53 -0
- package/dist/es/business/ModCommonFilter/index.js +129 -0
- package/dist/es/business/ModCommonFilter/index.js.map +7 -0
- package/dist/es/business/ModCommonFilter/index.module.less +7 -0
- package/dist/es/business/ModCommonFilter/typing.d.ts +20 -0
- package/dist/es/business/ModCommonFilter/typing.js +1 -0
- package/dist/es/business/ModCommonFilter/typing.js.map +7 -0
- package/dist/es/business/YkPorjectSelect/icon-product.png +0 -0
- package/dist/es/business/YkPorjectSelect/index.d.ts +51 -0
- package/dist/es/business/YkPorjectSelect/index.js +260 -0
- package/dist/es/business/YkPorjectSelect/index.js.map +7 -0
- package/dist/es/business/YkPorjectSelect/index.module.less +334 -0
- package/dist/es/business/YkPorjectSelect/product-close.png +0 -0
- package/dist/es/components/Clock/index.d.ts +19 -0
- package/dist/es/components/Clock/index.js +55 -0
- package/dist/es/components/Clock/index.js.map +7 -0
- package/dist/es/components/DebounceInput/index.d.ts +16 -0
- package/dist/es/components/DebounceInput/index.js +77 -0
- package/dist/es/components/DebounceInput/index.js.map +7 -0
- package/dist/es/components/DebounceInput/index.module.less +23 -0
- package/dist/es/components/MultipleSelect/index.d.ts +23 -0
- package/dist/es/components/MultipleSelect/index.js +249 -0
- package/dist/es/components/MultipleSelect/index.js.map +7 -0
- package/dist/es/components/MultipleSelect/index.module.less +174 -0
- package/dist/es/components/NumericInput/index.d.ts +19 -0
- package/dist/es/components/NumericInput/index.js +56 -0
- package/dist/es/components/NumericInput/index.js.map +7 -0
- package/dist/es/components/RefreshButton/index.d.ts +8 -0
- package/dist/es/components/RefreshButton/index.js +21 -0
- package/dist/es/components/RefreshButton/index.js.map +7 -0
- package/dist/es/components/SearchWithHistory/index.d.ts +21 -0
- package/dist/es/components/SearchWithHistory/index.js +115 -0
- package/dist/es/components/SearchWithHistory/index.js.map +7 -0
- package/dist/es/components/SearchWithHistory/index.module.less +64 -0
- package/dist/es/components/TextWithInput/index.d.ts +15 -0
- package/dist/es/components/TextWithInput/index.js +35 -0
- package/dist/es/components/TextWithInput/index.js.map +7 -0
- package/dist/es/components/TextWithToolTip/index.d.ts +17 -0
- package/dist/es/components/TextWithToolTip/index.js +118 -0
- package/dist/es/components/TextWithToolTip/index.js.map +7 -0
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +28 -0
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js +161 -0
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js.map +7 -0
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.less +151 -0
- package/dist/es/components/TreeTransfer/index.d.ts +28 -0
- package/dist/es/components/TreeTransfer/index.js +210 -0
- package/dist/es/components/TreeTransfer/index.js.map +7 -0
- package/dist/es/components/TreeTransfer/index.less +69 -0
- package/dist/es/components/TreeTransfer/types.d.ts +122 -0
- package/dist/es/components/TreeTransfer/types.js +6 -0
- package/dist/es/components/TreeTransfer/types.js.map +7 -0
- package/dist/es/components/TreeTransfer/utils/index.d.ts +120 -0
- package/dist/es/components/TreeTransfer/utils/index.js +195 -0
- package/dist/es/components/TreeTransfer/utils/index.js.map +7 -0
- package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +180 -0
- package/dist/es/components/YkDateRangePicker/index.d.ts +61 -0
- package/dist/es/components/YkDateRangePicker/index.js +317 -0
- package/dist/es/components/YkDateRangePicker/index.js.map +7 -0
- package/dist/es/components/YkDateRangePicker/index.module.less +304 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +16 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +193 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +7 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +31 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +576 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +7 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +16 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js +55 -0
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +7 -0
- package/dist/es/components/YkRangeDateWithVS/index.d.ts +62 -0
- package/dist/es/components/YkRangeDateWithVS/index.js +130 -0
- package/dist/es/components/YkRangeDateWithVS/index.js.map +7 -0
- package/dist/es/components/YkRangeDateWithVS/index.module.less +566 -0
- package/dist/es/components/YkRangeDateWithVS/styles.d.ts +2 -0
- package/dist/es/components/YkRangeDateWithVS/styles.js +18 -0
- package/dist/es/components/YkRangeDateWithVS/styles.js.map +7 -0
- package/dist/es/components/YkRangeDateWithVS/typing.d.ts +15 -0
- package/dist/es/components/YkRangeTimeWithRecent/constants.d.ts +48 -0
- package/dist/es/components/YkRangeTimeWithRecent/constants.js +288 -0
- package/dist/es/components/YkRangeTimeWithRecent/constants.js.map +7 -0
- package/dist/es/components/YkRangeTimeWithRecent/index.d.ts +26 -0
- package/dist/es/components/YkRangeTimeWithRecent/index.js +647 -0
- package/dist/es/components/YkRangeTimeWithRecent/index.js.map +7 -0
- package/dist/es/components/YkRangeTimeWithRecent/index.module.less +263 -0
- package/dist/es/creative/ButtonRadioWithInfo/index.d.ts +17 -0
- package/dist/es/creative/ButtonRadioWithInfo/index.js +103 -0
- package/dist/es/creative/ButtonRadioWithInfo/index.js.map +7 -0
- package/dist/es/creative/ButtonRadioWithInfo/index.less +106 -0
- package/dist/es/creative/ButtonWithProgress/index.d.ts +11 -0
- package/dist/es/creative/ButtonWithProgress/index.js +79 -0
- package/dist/es/creative/ButtonWithProgress/index.js.map +7 -0
- package/dist/es/creative/ButtonWithProgress/index.less +66 -0
- package/dist/es/global.less +12 -0
- package/dist/es/index.d.ts +43 -0
- package/dist/es/index.js +87 -0
- package/dist/es/index.js.map +7 -0
- package/dist/es/index.less +35 -0
- package/dist/es/layout/FlexGrid/index.d.ts +25 -0
- package/dist/es/layout/FlexGrid/index.js +63 -0
- package/dist/es/layout/FlexGrid/index.js.map +7 -0
- package/dist/es/layout/YkContainer/index.d.ts +27 -0
- package/dist/es/layout/YkContainer/index.js +79 -0
- package/dist/es/layout/YkContainer/index.js.map +7 -0
- package/dist/es/layout/YkDrawer/index.d.ts +22 -0
- package/dist/es/layout/YkDrawer/index.js +160 -0
- package/dist/es/layout/YkDrawer/index.js.map +7 -0
- package/dist/es/layout/YkDrawer/index.module.less +45 -0
- package/dist/es/ui/LabelSelect/demo.d.ts +3 -0
- package/dist/es/ui/LabelSelect/demo.js +83 -0
- package/dist/es/ui/LabelSelect/demo.js.map +7 -0
- package/dist/es/ui/LabelSelect/index.d.ts +41 -0
- package/dist/es/ui/LabelSelect/index.js +136 -0
- package/dist/es/ui/LabelSelect/index.js.map +7 -0
- package/dist/es/ui/LogicOperator/index.d.ts +10 -0
- package/dist/es/ui/LogicOperator/index.js +12 -0
- package/dist/es/ui/LogicOperator/index.js.map +7 -0
- package/dist/es/ui/LogicOperator/index.module.less +97 -0
- package/dist/es/ui/YkButton/index.d.ts +9 -0
- package/dist/es/ui/YkButton/index.js +59 -0
- package/dist/es/ui/YkButton/index.js.map +7 -0
- package/dist/es/ui/YkCard/index.d.ts +4 -0
- package/dist/es/ui/YkCard/index.js +79 -0
- package/dist/es/ui/YkCard/index.js.map +7 -0
- package/dist/es/ui/YkCard/index.module.less +30 -0
- package/dist/es/ui/YkCheckbox/index.d.ts +4 -0
- package/dist/es/ui/YkCheckbox/index.js +45 -0
- package/dist/es/ui/YkCheckbox/index.js.map +7 -0
- package/dist/es/ui/YkCheckbox/index.module.less +22 -0
- package/dist/es/ui/YkDescriptions/index.d.ts +4 -0
- package/dist/es/ui/YkDescriptions/index.js +41 -0
- package/dist/es/ui/YkDescriptions/index.js.map +7 -0
- package/dist/es/ui/YkPagination/index.d.ts +4 -0
- package/dist/es/ui/YkPagination/index.js +63 -0
- package/dist/es/ui/YkPagination/index.js.map +7 -0
- package/dist/es/ui/YkPagination/index.module.less +22 -0
- package/dist/es/ui/YkRadio/index.d.ts +4 -0
- package/dist/es/ui/YkRadio/index.js +51 -0
- package/dist/es/ui/YkRadio/index.js.map +7 -0
- package/dist/es/ui/YkRadio/index.module.less +22 -0
- package/dist/es/ui/YkRadioBtnSpecial/index.d.ts +15 -0
- package/dist/es/ui/YkRadioBtnSpecial/index.js +23 -0
- package/dist/es/ui/YkRadioBtnSpecial/index.js.map +7 -0
- package/dist/es/ui/YkRadioBtnSpecial/index.module.less +112 -0
- package/dist/es/ui/YkSegmented/index.d.ts +4 -0
- package/dist/es/ui/YkSegmented/index.js +41 -0
- package/dist/es/ui/YkSegmented/index.js.map +7 -0
- package/dist/es/ui/YkSelect/index.d.ts +7 -0
- package/dist/es/ui/YkSelect/index.js +54 -0
- package/dist/es/ui/YkSelect/index.js.map +7 -0
- package/dist/es/ui/YkSpin/index.d.ts +4 -0
- package/dist/es/ui/YkSpin/index.js +41 -0
- package/dist/es/ui/YkSpin/index.js.map +7 -0
- package/dist/es/ui/YkStatistic/index.d.ts +4 -0
- package/dist/es/ui/YkStatistic/index.js +41 -0
- package/dist/es/ui/YkStatistic/index.js.map +7 -0
- package/dist/es/ui/YkSwitch/index.d.ts +4 -0
- package/dist/es/ui/YkSwitch/index.js +51 -0
- package/dist/es/ui/YkSwitch/index.js.map +7 -0
- package/dist/es/ui/YkTabs/index.d.ts +12 -0
- package/dist/es/ui/YkTabs/index.js +75 -0
- package/dist/es/ui/YkTabs/index.js.map +7 -0
- package/dist/es/ui/YkTabs/index.module.less +11 -0
- package/dist/es/ui/YkTooltip/index.d.ts +4 -0
- package/dist/es/ui/YkTooltip/index.js +50 -0
- package/dist/es/ui/YkTooltip/index.js.map +7 -0
- package/dist/es/utils/styleUtils.d.ts +18 -0
- package/dist/es/utils/styleUtils.js +57 -0
- package/dist/es/utils/styleUtils.js.map +7 -0
- package/dist/es/utils/ykStorybookDoc.d.ts +17 -0
- package/dist/es/utils/ykStorybookDoc.js +18 -0
- package/dist/es/utils/ykStorybookDoc.js.map +7 -0
- package/dist/lib/Themes/InputTheme/index.d.ts +6 -0
- package/dist/lib/Themes/InputTheme/index.js +52 -0
- package/dist/lib/Themes/InputTheme/index.js.map +7 -0
- package/dist/lib/Themes/TableTheme/index.d.ts +7 -0
- package/dist/lib/Themes/TableTheme/index.js +61 -0
- package/dist/lib/Themes/TableTheme/index.js.map +7 -0
- package/dist/lib/Themes/TableTheme/index.less +46 -0
- package/dist/lib/assets/image/YKUI-logo.png +0 -0
- package/dist/lib/assets/less/ant-reset.less +402 -0
- package/dist/lib/assets/less/index.less +1 -0
- package/dist/lib/assets/less/variables.less +16 -0
- package/dist/lib/business/AiChat/MarkdownRender.d.ts +9 -0
- package/dist/lib/business/AiChat/MarkdownRender.js +102 -0
- package/dist/lib/business/AiChat/MarkdownRender.js.map +7 -0
- package/dist/lib/business/AiChat/index.d.ts +16 -0
- package/dist/lib/business/AiChat/index.js +723 -0
- package/dist/lib/business/AiChat/index.js.map +7 -0
- package/dist/lib/business/AiChat/intentRecognizer.d.ts +33 -0
- package/dist/lib/business/AiChat/intentRecognizer.js +193 -0
- package/dist/lib/business/AiChat/intentRecognizer.js.map +7 -0
- package/dist/lib/business/AiChat/navigationManager.d.ts +94 -0
- package/dist/lib/business/AiChat/navigationManager.js +214 -0
- package/dist/lib/business/AiChat/navigationManager.js.map +7 -0
- package/dist/lib/business/AiChat/sse.d.ts +16 -0
- package/dist/lib/business/AiChat/sse.js +171 -0
- package/dist/lib/business/AiChat/sse.js.map +7 -0
- package/dist/lib/business/AiChat/type.d.ts +156 -0
- package/dist/lib/business/AiChat/type.js +18 -0
- package/dist/lib/business/AiChat/type.js.map +7 -0
- package/dist/lib/business/AiChat/useAiChat.d.ts +2 -0
- package/dist/lib/business/AiChat/useAiChat.js +252 -0
- package/dist/lib/business/AiChat/useAiChat.js.map +7 -0
- package/dist/lib/business/AiChat/useTaskWorkflow.d.ts +25 -0
- package/dist/lib/business/AiChat/useTaskWorkflow.js +182 -0
- package/dist/lib/business/AiChat/useTaskWorkflow.js.map +7 -0
- package/dist/lib/business/DrawerPageInfo/index.d.ts +35 -0
- package/dist/lib/business/DrawerPageInfo/index.js +163 -0
- package/dist/lib/business/DrawerPageInfo/index.js.map +7 -0
- package/dist/lib/business/DrawerPageInfo/index.module.less +87 -0
- package/dist/lib/business/DrawerPageInfo/test.png +0 -0
- package/dist/lib/business/Editor/index.d.ts +11 -0
- package/dist/lib/business/Editor/index.js +99 -0
- package/dist/lib/business/Editor/index.js.map +7 -0
- package/dist/lib/business/Editor/index.less +31 -0
- package/dist/lib/business/Empty/empty.png +0 -0
- package/dist/lib/business/Empty/index.d.ts +19 -0
- package/dist/lib/business/Empty/index.js +65 -0
- package/dist/lib/business/Empty/index.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/assets/images/empty.png +0 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.d.ts +13 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.js +50 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.d.ts +13 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.js +50 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/index.d.ts +25 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/index.js +60 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/index.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/FilterButton/index.module.less +97 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.d.ts +18 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js +69 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.d.ts +37 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js +211 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.d.ts +26 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js +97 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.d.ts +51 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.js +101 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.module.less +260 -0
- package/dist/lib/business/ModCommonFilter/index.d.ts +53 -0
- package/dist/lib/business/ModCommonFilter/index.js +143 -0
- package/dist/lib/business/ModCommonFilter/index.js.map +7 -0
- package/dist/lib/business/ModCommonFilter/index.module.less +7 -0
- package/dist/lib/business/ModCommonFilter/typing.d.ts +20 -0
- package/dist/lib/business/ModCommonFilter/typing.js +18 -0
- package/dist/lib/business/ModCommonFilter/typing.js.map +7 -0
- package/dist/lib/business/YkPorjectSelect/icon-product.png +0 -0
- package/dist/lib/business/YkPorjectSelect/index.d.ts +51 -0
- package/dist/lib/business/YkPorjectSelect/index.js +235 -0
- package/dist/lib/business/YkPorjectSelect/index.js.map +7 -0
- package/dist/lib/business/YkPorjectSelect/index.module.less +334 -0
- package/dist/lib/business/YkPorjectSelect/product-close.png +0 -0
- package/dist/lib/components/Clock/index.d.ts +19 -0
- package/dist/lib/components/Clock/index.js +85 -0
- package/dist/lib/components/Clock/index.js.map +7 -0
- package/dist/lib/components/DebounceInput/index.d.ts +16 -0
- package/dist/lib/components/DebounceInput/index.js +107 -0
- package/dist/lib/components/DebounceInput/index.js.map +7 -0
- package/dist/lib/components/DebounceInput/index.module.less +23 -0
- package/dist/lib/components/MultipleSelect/index.d.ts +23 -0
- package/dist/lib/components/MultipleSelect/index.js +279 -0
- package/dist/lib/components/MultipleSelect/index.js.map +7 -0
- package/dist/lib/components/MultipleSelect/index.module.less +174 -0
- package/dist/lib/components/NumericInput/index.d.ts +19 -0
- package/dist/lib/components/NumericInput/index.js +67 -0
- package/dist/lib/components/NumericInput/index.js.map +7 -0
- package/dist/lib/components/RefreshButton/index.d.ts +8 -0
- package/dist/lib/components/RefreshButton/index.js +51 -0
- package/dist/lib/components/RefreshButton/index.js.map +7 -0
- package/dist/lib/components/SearchWithHistory/index.d.ts +21 -0
- package/dist/lib/components/SearchWithHistory/index.js +145 -0
- package/dist/lib/components/SearchWithHistory/index.js.map +7 -0
- package/dist/lib/components/SearchWithHistory/index.module.less +64 -0
- package/dist/lib/components/TextWithInput/index.d.ts +15 -0
- package/dist/lib/components/TextWithInput/index.js +65 -0
- package/dist/lib/components/TextWithInput/index.js.map +7 -0
- package/dist/lib/components/TextWithToolTip/index.d.ts +17 -0
- package/dist/lib/components/TextWithToolTip/index.js +134 -0
- package/dist/lib/components/TextWithToolTip/index.js.map +7 -0
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +28 -0
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js +191 -0
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js.map +7 -0
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.less +151 -0
- package/dist/lib/components/TreeTransfer/index.d.ts +28 -0
- package/dist/lib/components/TreeTransfer/index.js +214 -0
- package/dist/lib/components/TreeTransfer/index.js.map +7 -0
- package/dist/lib/components/TreeTransfer/index.less +69 -0
- package/dist/lib/components/TreeTransfer/types.d.ts +122 -0
- package/dist/lib/components/TreeTransfer/types.js +30 -0
- package/dist/lib/components/TreeTransfer/types.js.map +7 -0
- package/dist/lib/components/TreeTransfer/utils/index.d.ts +120 -0
- package/dist/lib/components/TreeTransfer/utils/index.js +208 -0
- package/dist/lib/components/TreeTransfer/utils/index.js.map +7 -0
- package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +180 -0
- package/dist/lib/components/YkDateRangePicker/index.d.ts +61 -0
- package/dist/lib/components/YkDateRangePicker/index.js +338 -0
- package/dist/lib/components/YkDateRangePicker/index.js.map +7 -0
- package/dist/lib/components/YkDateRangePicker/index.module.less +304 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +16 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +223 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +7 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +31 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +587 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +7 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +16 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js +85 -0
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +7 -0
- package/dist/lib/components/YkRangeDateWithVS/index.d.ts +62 -0
- package/dist/lib/components/YkRangeDateWithVS/index.js +140 -0
- package/dist/lib/components/YkRangeDateWithVS/index.js.map +7 -0
- package/dist/lib/components/YkRangeDateWithVS/index.module.less +566 -0
- package/dist/lib/components/YkRangeDateWithVS/styles.d.ts +2 -0
- package/dist/lib/components/YkRangeDateWithVS/styles.js +48 -0
- package/dist/lib/components/YkRangeDateWithVS/styles.js.map +7 -0
- package/dist/lib/components/YkRangeDateWithVS/typing.d.ts +15 -0
- package/dist/lib/components/YkRangeTimeWithRecent/constants.d.ts +48 -0
- package/dist/lib/components/YkRangeTimeWithRecent/constants.js +333 -0
- package/dist/lib/components/YkRangeTimeWithRecent/constants.js.map +7 -0
- package/dist/lib/components/YkRangeTimeWithRecent/index.d.ts +26 -0
- package/dist/lib/components/YkRangeTimeWithRecent/index.js +647 -0
- package/dist/lib/components/YkRangeTimeWithRecent/index.js.map +7 -0
- package/dist/lib/components/YkRangeTimeWithRecent/index.module.less +263 -0
- package/dist/lib/creative/ButtonRadioWithInfo/index.d.ts +17 -0
- package/dist/lib/creative/ButtonRadioWithInfo/index.js +102 -0
- package/dist/lib/creative/ButtonRadioWithInfo/index.js.map +7 -0
- package/dist/lib/creative/ButtonRadioWithInfo/index.less +106 -0
- package/dist/lib/creative/ButtonWithProgress/index.d.ts +11 -0
- package/dist/lib/creative/ButtonWithProgress/index.js +70 -0
- package/dist/lib/creative/ButtonWithProgress/index.js.map +7 -0
- package/dist/lib/creative/ButtonWithProgress/index.less +66 -0
- package/dist/lib/global.less +12 -0
- package/dist/lib/index.d.ts +43 -0
- package/dist/lib/index.js +161 -0
- package/dist/lib/index.js.map +7 -0
- package/dist/lib/index.less +35 -0
- package/dist/lib/layout/FlexGrid/index.d.ts +25 -0
- package/dist/lib/layout/FlexGrid/index.js +77 -0
- package/dist/lib/layout/FlexGrid/index.js.map +7 -0
- package/dist/lib/layout/YkContainer/index.d.ts +27 -0
- package/dist/lib/layout/YkContainer/index.js +79 -0
- package/dist/lib/layout/YkContainer/index.js.map +7 -0
- package/dist/lib/layout/YkDrawer/index.d.ts +22 -0
- package/dist/lib/layout/YkDrawer/index.js +152 -0
- package/dist/lib/layout/YkDrawer/index.js.map +7 -0
- package/dist/lib/layout/YkDrawer/index.module.less +45 -0
- package/dist/lib/ui/LabelSelect/demo.d.ts +3 -0
- package/dist/lib/ui/LabelSelect/demo.js +113 -0
- package/dist/lib/ui/LabelSelect/demo.js.map +7 -0
- package/dist/lib/ui/LabelSelect/index.d.ts +41 -0
- package/dist/lib/ui/LabelSelect/index.js +124 -0
- package/dist/lib/ui/LabelSelect/index.js.map +7 -0
- package/dist/lib/ui/LogicOperator/index.d.ts +10 -0
- package/dist/lib/ui/LogicOperator/index.js +42 -0
- package/dist/lib/ui/LogicOperator/index.js.map +7 -0
- package/dist/lib/ui/LogicOperator/index.module.less +97 -0
- package/dist/lib/ui/YkButton/index.d.ts +9 -0
- package/dist/lib/ui/YkButton/index.js +55 -0
- package/dist/lib/ui/YkButton/index.js.map +7 -0
- package/dist/lib/ui/YkCard/index.d.ts +4 -0
- package/dist/lib/ui/YkCard/index.js +76 -0
- package/dist/lib/ui/YkCard/index.js.map +7 -0
- package/dist/lib/ui/YkCard/index.module.less +30 -0
- package/dist/lib/ui/YkCheckbox/index.d.ts +4 -0
- package/dist/lib/ui/YkCheckbox/index.js +42 -0
- package/dist/lib/ui/YkCheckbox/index.js.map +7 -0
- package/dist/lib/ui/YkCheckbox/index.module.less +22 -0
- package/dist/lib/ui/YkDescriptions/index.d.ts +4 -0
- package/dist/lib/ui/YkDescriptions/index.js +41 -0
- package/dist/lib/ui/YkDescriptions/index.js.map +7 -0
- package/dist/lib/ui/YkPagination/index.d.ts +4 -0
- package/dist/lib/ui/YkPagination/index.js +60 -0
- package/dist/lib/ui/YkPagination/index.js.map +7 -0
- package/dist/lib/ui/YkPagination/index.module.less +22 -0
- package/dist/lib/ui/YkRadio/index.d.ts +4 -0
- package/dist/lib/ui/YkRadio/index.js +51 -0
- package/dist/lib/ui/YkRadio/index.js.map +7 -0
- package/dist/lib/ui/YkRadio/index.module.less +22 -0
- package/dist/lib/ui/YkRadioBtnSpecial/index.d.ts +15 -0
- package/dist/lib/ui/YkRadioBtnSpecial/index.js +53 -0
- package/dist/lib/ui/YkRadioBtnSpecial/index.js.map +7 -0
- package/dist/lib/ui/YkRadioBtnSpecial/index.module.less +112 -0
- package/dist/lib/ui/YkSegmented/index.d.ts +4 -0
- package/dist/lib/ui/YkSegmented/index.js +41 -0
- package/dist/lib/ui/YkSegmented/index.js.map +7 -0
- package/dist/lib/ui/YkSelect/index.d.ts +7 -0
- package/dist/lib/ui/YkSelect/index.js +54 -0
- package/dist/lib/ui/YkSelect/index.js.map +7 -0
- package/dist/lib/ui/YkSpin/index.d.ts +4 -0
- package/dist/lib/ui/YkSpin/index.js +41 -0
- package/dist/lib/ui/YkSpin/index.js.map +7 -0
- package/dist/lib/ui/YkStatistic/index.d.ts +4 -0
- package/dist/lib/ui/YkStatistic/index.js +41 -0
- package/dist/lib/ui/YkStatistic/index.js.map +7 -0
- package/dist/lib/ui/YkSwitch/index.d.ts +4 -0
- package/dist/lib/ui/YkSwitch/index.js +51 -0
- package/dist/lib/ui/YkSwitch/index.js.map +7 -0
- package/dist/lib/ui/YkTabs/index.d.ts +12 -0
- package/dist/lib/ui/YkTabs/index.js +70 -0
- package/dist/lib/ui/YkTabs/index.js.map +7 -0
- package/dist/lib/ui/YkTabs/index.module.less +11 -0
- package/dist/lib/ui/YkTooltip/index.d.ts +4 -0
- package/dist/lib/ui/YkTooltip/index.js +45 -0
- package/dist/lib/ui/YkTooltip/index.js.map +7 -0
- package/dist/lib/utils/styleUtils.d.ts +18 -0
- package/dist/lib/utils/styleUtils.js +84 -0
- package/dist/lib/utils/styleUtils.js.map +7 -0
- package/dist/lib/utils/ykStorybookDoc.d.ts +17 -0
- package/dist/lib/utils/ykStorybookDoc.js +41 -0
- package/dist/lib/utils/ykStorybookDoc.js.map +7 -0
- package/package.json +148 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE 流式响应处理
|
|
3
|
+
* 支持大文件传输和流式数据处理
|
|
4
|
+
*/
|
|
5
|
+
export interface SSEOptions {
|
|
6
|
+
onMessage: (data: string) => void;
|
|
7
|
+
onEnd?: () => void;
|
|
8
|
+
onError?: (err: Error) => void;
|
|
9
|
+
onProgress?: (loaded: number, total?: number) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function createSSE(url: string, body: any, onMessage: (data: string) => void, onEnd?: () => void, onError?: (err: any) => void): Promise<() => void>;
|
|
12
|
+
/**
|
|
13
|
+
* 创建增强型SSE连接
|
|
14
|
+
* 支持进度追踪、断点续传等高级功能
|
|
15
|
+
*/
|
|
16
|
+
export declare function createEnhancedSSE(url: string, body: any, options: SSEOptions): Promise<() => void>;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
var __async = (__this, __arguments, generator) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
var fulfilled = (value) => {
|
|
4
|
+
try {
|
|
5
|
+
step(generator.next(value));
|
|
6
|
+
} catch (e) {
|
|
7
|
+
reject(e);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var rejected = (value) => {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.throw(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// src/business/AiChat/sse.ts
|
|
23
|
+
function createSSE(url, body, onMessage, onEnd, onError) {
|
|
24
|
+
return __async(this, null, function* () {
|
|
25
|
+
const controller = new AbortController();
|
|
26
|
+
const signal = controller.signal;
|
|
27
|
+
try {
|
|
28
|
+
const res = yield fetch(url, {
|
|
29
|
+
method: "POST",
|
|
30
|
+
headers: { "Content-Type": "application/json" },
|
|
31
|
+
body: JSON.stringify(body),
|
|
32
|
+
signal
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const errorText = yield res.text().catch(() => "");
|
|
36
|
+
throw new Error(`HTTP ${res.status}: ${errorText || res.statusText}`);
|
|
37
|
+
}
|
|
38
|
+
if (!res.body)
|
|
39
|
+
throw new Error("Response body is null, streaming not supported");
|
|
40
|
+
const reader = res.body.getReader();
|
|
41
|
+
const decoder = new TextDecoder("utf-8");
|
|
42
|
+
let buffer = "";
|
|
43
|
+
const contentLength = res.headers.get("Content-Length");
|
|
44
|
+
const total = contentLength ? parseInt(contentLength, 10) : void 0;
|
|
45
|
+
let loaded = 0;
|
|
46
|
+
while (true) {
|
|
47
|
+
const { done, value } = yield reader.read();
|
|
48
|
+
if (done) {
|
|
49
|
+
if (buffer.trim()) {
|
|
50
|
+
onMessage(buffer);
|
|
51
|
+
}
|
|
52
|
+
onEnd == null ? void 0 : onEnd();
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
loaded += value.byteLength;
|
|
56
|
+
const chunk = decoder.decode(value, { stream: true });
|
|
57
|
+
buffer += chunk;
|
|
58
|
+
const lines = buffer.split("\n");
|
|
59
|
+
buffer = lines.pop() || "";
|
|
60
|
+
for (const line of lines) {
|
|
61
|
+
const trimmed = line.trim();
|
|
62
|
+
if (!trimmed)
|
|
63
|
+
continue;
|
|
64
|
+
if (trimmed.startsWith("data:")) {
|
|
65
|
+
const data = trimmed.slice(5).trim();
|
|
66
|
+
if (data === "[DONE]") {
|
|
67
|
+
onEnd == null ? void 0 : onEnd();
|
|
68
|
+
return () => controller.abort();
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const parsed = JSON.parse(data);
|
|
72
|
+
if (parsed.content) {
|
|
73
|
+
onMessage(parsed.content);
|
|
74
|
+
} else {
|
|
75
|
+
onMessage(data);
|
|
76
|
+
}
|
|
77
|
+
} catch (e) {
|
|
78
|
+
onMessage(data);
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
onMessage(trimmed);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return () => controller.abort();
|
|
86
|
+
} catch (err) {
|
|
87
|
+
if (err.name !== "AbortError") {
|
|
88
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
89
|
+
onError == null ? void 0 : onError(error);
|
|
90
|
+
}
|
|
91
|
+
return () => controller.abort();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function createEnhancedSSE(url, body, options) {
|
|
96
|
+
return __async(this, null, function* () {
|
|
97
|
+
var _a, _b, _c, _d;
|
|
98
|
+
const controller = new AbortController();
|
|
99
|
+
const signal = controller.signal;
|
|
100
|
+
try {
|
|
101
|
+
const res = yield fetch(url, {
|
|
102
|
+
method: "POST",
|
|
103
|
+
headers: {
|
|
104
|
+
"Content-Type": "application/json",
|
|
105
|
+
Accept: "text/event-stream"
|
|
106
|
+
},
|
|
107
|
+
body: JSON.stringify(body),
|
|
108
|
+
signal
|
|
109
|
+
});
|
|
110
|
+
if (!res.ok) {
|
|
111
|
+
const errorText = yield res.text().catch(() => "");
|
|
112
|
+
throw new Error(`HTTP ${res.status}: ${errorText || res.statusText}`);
|
|
113
|
+
}
|
|
114
|
+
if (!res.body) {
|
|
115
|
+
throw new Error("Response body is null");
|
|
116
|
+
}
|
|
117
|
+
const reader = res.body.getReader();
|
|
118
|
+
const decoder = new TextDecoder("utf-8");
|
|
119
|
+
const contentLength = res.headers.get("Content-Length");
|
|
120
|
+
const total = contentLength ? parseInt(contentLength, 10) : void 0;
|
|
121
|
+
let loaded = 0;
|
|
122
|
+
let buffer = "";
|
|
123
|
+
while (true) {
|
|
124
|
+
const { done, value } = yield reader.read();
|
|
125
|
+
if (done) {
|
|
126
|
+
if (buffer.trim()) {
|
|
127
|
+
options.onMessage(buffer);
|
|
128
|
+
}
|
|
129
|
+
(_a = options.onEnd) == null ? void 0 : _a.call(options);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
loaded += value.byteLength;
|
|
133
|
+
(_b = options.onProgress) == null ? void 0 : _b.call(options, loaded, total);
|
|
134
|
+
const chunk = decoder.decode(value, { stream: true });
|
|
135
|
+
buffer += chunk;
|
|
136
|
+
const lines = buffer.split("\n");
|
|
137
|
+
buffer = lines.pop() || "";
|
|
138
|
+
for (const line of lines) {
|
|
139
|
+
const trimmed = line.trim();
|
|
140
|
+
if (!trimmed || trimmed.startsWith(":"))
|
|
141
|
+
continue;
|
|
142
|
+
if (trimmed.startsWith("data:")) {
|
|
143
|
+
const data = trimmed.slice(5).trim();
|
|
144
|
+
if (data === "[DONE]") {
|
|
145
|
+
(_c = options.onEnd) == null ? void 0 : _c.call(options);
|
|
146
|
+
return () => controller.abort();
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const parsed = JSON.parse(data);
|
|
150
|
+
options.onMessage(parsed.content || data);
|
|
151
|
+
} catch (e) {
|
|
152
|
+
options.onMessage(data);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return () => controller.abort();
|
|
158
|
+
} catch (err) {
|
|
159
|
+
if (err.name !== "AbortError") {
|
|
160
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
161
|
+
(_d = options.onError) == null ? void 0 : _d.call(options, error);
|
|
162
|
+
}
|
|
163
|
+
return () => controller.abort();
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
export {
|
|
168
|
+
createEnhancedSSE,
|
|
169
|
+
createSSE
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=sse.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/business/AiChat/sse.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * SSE 流式响应处理\n * 支持大文件传输和流式数据处理\n */\n\nexport interface SSEOptions {\n onMessage: (data: string) => void;\n onEnd?: () => void;\n onError?: (err: Error) => void;\n onProgress?: (loaded: number, total?: number) => void;\n}\n\nexport async function createSSE(\n url: string,\n body: any,\n onMessage: (data: string) => void,\n onEnd?: () => void,\n onError?: (err: any) => void,\n) {\n const controller = new AbortController();\n const signal = controller.signal;\n\n try {\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n signal,\n });\n\n if (!res.ok) {\n const errorText = await res.text().catch(() => '');\n throw new Error(`HTTP ${res.status}: ${errorText || res.statusText}`);\n }\n\n if (!res.body) throw new Error('Response body is null, streaming not supported');\n\n const reader = res.body.getReader();\n const decoder = new TextDecoder('utf-8');\n let buffer = '';\n\n // 获取内容长度(如果可用)\n const contentLength = res.headers.get('Content-Length');\n const total = contentLength ? parseInt(contentLength, 10) : undefined;\n let loaded = 0;\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n // 处理剩余缓冲区数据\n if (buffer.trim()) {\n onMessage(buffer);\n }\n onEnd?.();\n break;\n }\n\n loaded += value.byteLength;\n\n // 解码数据块\n const chunk = decoder.decode(value, { stream: true });\n buffer += chunk;\n\n // 按行处理数据(SSE协议)\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // 保留最后不完整的行\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n\n // 处理SSE格式: data: {...}\n if (trimmed.startsWith('data:')) {\n const data = trimmed.slice(5).trim();\n if (data === '[DONE]') {\n onEnd?.();\n return () => controller.abort();\n }\n try {\n // 尝试解析JSON\n const parsed = JSON.parse(data);\n if (parsed.content) {\n onMessage(parsed.content);\n } else {\n onMessage(data);\n }\n } catch {\n // 非JSON数据,直接传递\n onMessage(data);\n }\n } else {\n // 非SSE格式,直接传递\n onMessage(trimmed);\n }\n }\n }\n\n return () => controller.abort();\n } catch (err: any) {\n if (err.name !== 'AbortError') {\n const error = err instanceof Error ? err : new Error(String(err));\n onError?.(error);\n }\n return () => controller.abort();\n }\n}\n\n/**\n * 创建增强型SSE连接\n * 支持进度追踪、断点续传等高级功能\n */\nexport async function createEnhancedSSE(url: string, body: any, options: SSEOptions): Promise<() => void> {\n const controller = new AbortController();\n const signal = controller.signal;\n\n try {\n const res = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'text/event-stream',\n },\n body: JSON.stringify(body),\n signal,\n });\n\n if (!res.ok) {\n const errorText = await res.text().catch(() => '');\n throw new Error(`HTTP ${res.status}: ${errorText || res.statusText}`);\n }\n\n if (!res.body) {\n throw new Error('Response body is null');\n }\n\n const reader = res.body.getReader();\n const decoder = new TextDecoder('utf-8');\n const contentLength = res.headers.get('Content-Length');\n const total = contentLength ? parseInt(contentLength, 10) : undefined;\n\n let loaded = 0;\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n if (buffer.trim()) {\n options.onMessage(buffer);\n }\n options.onEnd?.();\n break;\n }\n\n loaded += value.byteLength;\n options.onProgress?.(loaded, total);\n\n const chunk = decoder.decode(value, { stream: true });\n buffer += chunk;\n\n // SSE 协议处理\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(':')) continue;\n\n if (trimmed.startsWith('data:')) {\n const data = trimmed.slice(5).trim();\n if (data === '[DONE]') {\n options.onEnd?.();\n return () => controller.abort();\n }\n\n try {\n const parsed = JSON.parse(data);\n options.onMessage(parsed.content || data);\n } catch {\n options.onMessage(data);\n }\n }\n }\n }\n\n return () => controller.abort();\n } catch (err: any) {\n if (err.name !== 'AbortError') {\n const error = err instanceof Error ? err : new Error(String(err));\n options.onError?.(error);\n }\n return () => controller.abort();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface Message {
|
|
3
|
+
id: string;
|
|
4
|
+
role: 'user' | 'ai' | 'system';
|
|
5
|
+
content: string;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
category?: MessageCategory;
|
|
8
|
+
tags?: string[];
|
|
9
|
+
taskId?: string;
|
|
10
|
+
}
|
|
11
|
+
export type MessageCategory = 'technical' | 'business' | 'general' | 'task_creation' | 'task_query' | 'api_call';
|
|
12
|
+
export interface ChatSession {
|
|
13
|
+
id: string;
|
|
14
|
+
title: string;
|
|
15
|
+
createTime: number;
|
|
16
|
+
messages: Message[];
|
|
17
|
+
}
|
|
18
|
+
export interface AiChatApiCallbacks {
|
|
19
|
+
onFetchSessions?: () => Promise<ChatSession[]>;
|
|
20
|
+
onFetchSessionDetail?: (sessionId: string) => Promise<ChatSession>;
|
|
21
|
+
onCreateSession?: () => Promise<{
|
|
22
|
+
sessionId: string;
|
|
23
|
+
}>;
|
|
24
|
+
onSendMessage?: (params: {
|
|
25
|
+
sessionId: string;
|
|
26
|
+
prompt: string;
|
|
27
|
+
history: Message[];
|
|
28
|
+
}) => Promise<void>;
|
|
29
|
+
onUploadFile?: (params: {
|
|
30
|
+
sessionId: string;
|
|
31
|
+
file: File;
|
|
32
|
+
type: 'image' | 'document';
|
|
33
|
+
}) => Promise<{
|
|
34
|
+
url: string;
|
|
35
|
+
name: string;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
export interface AiChatConfig extends AiChatApiCallbacks {
|
|
39
|
+
apiPath?: string;
|
|
40
|
+
storageKey?: string;
|
|
41
|
+
position?: {
|
|
42
|
+
bottom?: number;
|
|
43
|
+
right?: number;
|
|
44
|
+
};
|
|
45
|
+
buttonSize?: number;
|
|
46
|
+
drawerWidth?: number;
|
|
47
|
+
zIndex?: number;
|
|
48
|
+
showSessionPanel?: boolean;
|
|
49
|
+
onBeforeSend?: (content: string) => boolean | Promise<boolean>;
|
|
50
|
+
onError?: (error: Error) => void;
|
|
51
|
+
onSuccess?: () => void;
|
|
52
|
+
}
|
|
53
|
+
export interface UseAiChatOptions extends AiChatApiCallbacks {
|
|
54
|
+
apiPath?: string;
|
|
55
|
+
storageKey?: string;
|
|
56
|
+
onBeforeSend?: (content: string) => boolean | Promise<boolean>;
|
|
57
|
+
onError?: (error: Error) => void;
|
|
58
|
+
onSuccess?: () => void;
|
|
59
|
+
}
|
|
60
|
+
export interface UseAiChatReturn {
|
|
61
|
+
sessions: ChatSession[];
|
|
62
|
+
activeSession: ChatSession | null;
|
|
63
|
+
loading: boolean;
|
|
64
|
+
visible: boolean;
|
|
65
|
+
createNewSession: () => void;
|
|
66
|
+
switchSession: (id: string) => void;
|
|
67
|
+
deleteSession: (id: string, e: React.MouseEvent) => void;
|
|
68
|
+
sendQuestion: (content: string, regenId?: string) => Promise<void>;
|
|
69
|
+
regenerateAnswer: (msg: Message) => void;
|
|
70
|
+
deleteSingleMsg: (id: string, e: React.MouseEvent) => void;
|
|
71
|
+
cancelRequest: () => void;
|
|
72
|
+
toggleVisible: (v?: boolean) => void;
|
|
73
|
+
}
|
|
74
|
+
export interface Intent {
|
|
75
|
+
type: IntentType;
|
|
76
|
+
confidence: number;
|
|
77
|
+
parameters: Record<string, any>;
|
|
78
|
+
rawText: string;
|
|
79
|
+
matchedPattern?: string;
|
|
80
|
+
}
|
|
81
|
+
export type IntentType = 'create_task' | 'query_task' | 'update_task' | 'delete_task' | 'call_api' | 'general_question';
|
|
82
|
+
export interface IntentPattern {
|
|
83
|
+
type: IntentType;
|
|
84
|
+
patterns: RegExp[];
|
|
85
|
+
taskType?: TaskCategory;
|
|
86
|
+
}
|
|
87
|
+
export interface Task {
|
|
88
|
+
id: string;
|
|
89
|
+
title: string;
|
|
90
|
+
description: string;
|
|
91
|
+
category: TaskCategory;
|
|
92
|
+
priority: TaskPriority;
|
|
93
|
+
status: TaskStatus;
|
|
94
|
+
dueDate?: number;
|
|
95
|
+
assignee?: string;
|
|
96
|
+
sourceMessageId?: string;
|
|
97
|
+
createTime: number;
|
|
98
|
+
apiResponse?: Record<string, any>;
|
|
99
|
+
}
|
|
100
|
+
export type TaskCategory = 'paimon' | 'data_sync' | 'report' | 'etl' | 'bug' | 'feature' | 'analysis' | 'other';
|
|
101
|
+
export type TaskPriority = 'high' | 'medium' | 'low';
|
|
102
|
+
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled' | 'failed';
|
|
103
|
+
export interface TaskTypeConfig {
|
|
104
|
+
type: string;
|
|
105
|
+
name: string;
|
|
106
|
+
description?: string;
|
|
107
|
+
apiEndpoint?: string;
|
|
108
|
+
defaultParams?: Record<string, any>;
|
|
109
|
+
urlPattern?: string;
|
|
110
|
+
keywords?: string[];
|
|
111
|
+
}
|
|
112
|
+
export interface TaskCreationResult {
|
|
113
|
+
success: boolean;
|
|
114
|
+
taskId?: string;
|
|
115
|
+
taskData?: any;
|
|
116
|
+
error?: string;
|
|
117
|
+
redirectUrl?: string;
|
|
118
|
+
}
|
|
119
|
+
export interface NavigationOptions {
|
|
120
|
+
replace?: boolean;
|
|
121
|
+
merge?: boolean;
|
|
122
|
+
queryParams?: Record<string, string>;
|
|
123
|
+
fragment?: string;
|
|
124
|
+
}
|
|
125
|
+
export interface EnhancedAiChatConfig extends AiChatConfig {
|
|
126
|
+
taskWorkflow?: {
|
|
127
|
+
enabled?: boolean;
|
|
128
|
+
createTaskApi?: string;
|
|
129
|
+
supportedTaskTypes?: TaskTypeConfig[];
|
|
130
|
+
autoNavigate?: boolean;
|
|
131
|
+
taskIdParamName?: string;
|
|
132
|
+
taskTypeParamName?: string;
|
|
133
|
+
};
|
|
134
|
+
intentRecognition?: {
|
|
135
|
+
enabled?: boolean;
|
|
136
|
+
customPatterns?: IntentPattern[];
|
|
137
|
+
confidenceThreshold?: number;
|
|
138
|
+
};
|
|
139
|
+
navigation?: {
|
|
140
|
+
refreshStrategy?: 'immediate' | 'delayed' | 'manual';
|
|
141
|
+
refreshDelay?: number;
|
|
142
|
+
preserveQueryParams?: boolean;
|
|
143
|
+
urlBuilder?: (taskId: string, taskType: string) => string;
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export interface EnhancedUseAiChatReturn extends UseAiChatReturn {
|
|
147
|
+
tasks: Task[];
|
|
148
|
+
createTask: (task: Omit<Task, 'id' | 'createTime'>) => void;
|
|
149
|
+
updateTaskStatus: (taskId: string, status: TaskStatus) => void;
|
|
150
|
+
deleteTask: (taskId: string) => void;
|
|
151
|
+
recognizeIntent: (text: string) => Intent;
|
|
152
|
+
createTaskFromNaturalLanguage: (description: string) => Promise<TaskCreationResult>;
|
|
153
|
+
updateUrlWithTaskId: (taskId: string, options?: NavigationOptions) => void;
|
|
154
|
+
refreshCurrentPage: (taskId?: string) => void;
|
|
155
|
+
executeTaskCreationWorkflow: (description: string) => Promise<void>;
|
|
156
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __async = (__this, __arguments, generator) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
var fulfilled = (value) => {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var rejected = (value) => {
|
|
30
|
+
try {
|
|
31
|
+
step(generator.throw(value));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
reject(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// src/business/AiChat/useAiChat.ts
|
|
42
|
+
import { message } from "antd";
|
|
43
|
+
import { useCallback, useEffect, useState } from "react";
|
|
44
|
+
import { createSSE } from "./sse";
|
|
45
|
+
function useAiChat(options) {
|
|
46
|
+
const apiPath = (options == null ? void 0 : options.apiPath) || "/api/ai/chat-stream";
|
|
47
|
+
const storageKey = (options == null ? void 0 : options.storageKey) || "ai_chat_sessions";
|
|
48
|
+
const [sessions, setSessions] = useState([]);
|
|
49
|
+
const [activeSession, setActiveSession] = useState(null);
|
|
50
|
+
const [loading, setLoading] = useState(false);
|
|
51
|
+
const [cancelFn, setCancelFn] = useState(null);
|
|
52
|
+
const [visible, setVisible] = useState(false);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const loadSessions = () => __async(this, null, function* () {
|
|
55
|
+
if (options == null ? void 0 : options.onFetchSessions) {
|
|
56
|
+
try {
|
|
57
|
+
const list = yield options.onFetchSessions();
|
|
58
|
+
setSessions(list);
|
|
59
|
+
if (list.length > 0)
|
|
60
|
+
setActiveSession(list[list.length - 1]);
|
|
61
|
+
} catch (err) {
|
|
62
|
+
console.error("加载会话失败:", err);
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
const saved = localStorage.getItem(storageKey);
|
|
66
|
+
if (saved) {
|
|
67
|
+
const list = JSON.parse(saved);
|
|
68
|
+
setSessions(list);
|
|
69
|
+
if (list.length > 0)
|
|
70
|
+
setActiveSession(list[list.length - 1]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
loadSessions();
|
|
75
|
+
}, [storageKey, options == null ? void 0 : options.onFetchSessions]);
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (!(options == null ? void 0 : options.onFetchSessions) && sessions.length) {
|
|
78
|
+
localStorage.setItem(storageKey, JSON.stringify(sessions));
|
|
79
|
+
}
|
|
80
|
+
}, [sessions, storageKey, options == null ? void 0 : options.onFetchSessions]);
|
|
81
|
+
const createNewSession = useCallback(() => __async(this, null, function* () {
|
|
82
|
+
let newSessionId;
|
|
83
|
+
if (options == null ? void 0 : options.onCreateSession) {
|
|
84
|
+
try {
|
|
85
|
+
const result = yield options.onCreateSession();
|
|
86
|
+
newSessionId = result.sessionId;
|
|
87
|
+
} catch (err) {
|
|
88
|
+
console.error("创建会话失败:", err);
|
|
89
|
+
message.error("创建会话失败");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
newSessionId = Date.now().toString();
|
|
94
|
+
}
|
|
95
|
+
const s = {
|
|
96
|
+
id: newSessionId,
|
|
97
|
+
title: "新会话",
|
|
98
|
+
createTime: Date.now(),
|
|
99
|
+
messages: []
|
|
100
|
+
};
|
|
101
|
+
setSessions((prev) => [...prev, s]);
|
|
102
|
+
setActiveSession(s);
|
|
103
|
+
setVisible(true);
|
|
104
|
+
}), [options == null ? void 0 : options.onCreateSession]);
|
|
105
|
+
const switchSession = useCallback(
|
|
106
|
+
(id) => __async(this, null, function* () {
|
|
107
|
+
if (options == null ? void 0 : options.onFetchSessionDetail) {
|
|
108
|
+
try {
|
|
109
|
+
const detail = yield options.onFetchSessionDetail(id);
|
|
110
|
+
setActiveSession(detail);
|
|
111
|
+
} catch (err) {
|
|
112
|
+
console.error("获取会话详情失败:", err);
|
|
113
|
+
message.error("获取会话详情失败");
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
const s = sessions.find((x) => x.id === id);
|
|
117
|
+
if (s)
|
|
118
|
+
setActiveSession(s);
|
|
119
|
+
}
|
|
120
|
+
}),
|
|
121
|
+
[sessions, options == null ? void 0 : options.onFetchSessionDetail]
|
|
122
|
+
);
|
|
123
|
+
const deleteSession = useCallback(
|
|
124
|
+
(id, e) => {
|
|
125
|
+
var _a;
|
|
126
|
+
e.stopPropagation();
|
|
127
|
+
const ns = sessions.filter((x) => x.id !== id);
|
|
128
|
+
setSessions(ns);
|
|
129
|
+
if ((activeSession == null ? void 0 : activeSession.id) === id)
|
|
130
|
+
setActiveSession((_a = ns.at(-1)) != null ? _a : null);
|
|
131
|
+
},
|
|
132
|
+
[sessions, activeSession]
|
|
133
|
+
);
|
|
134
|
+
const sendQuestion = useCallback(
|
|
135
|
+
(content, regenId) => __async(this, null, function* () {
|
|
136
|
+
var _a, _b;
|
|
137
|
+
if (!content.trim() || !activeSession)
|
|
138
|
+
return;
|
|
139
|
+
if (options == null ? void 0 : options.onBeforeSend) {
|
|
140
|
+
const canSend = yield options.onBeforeSend(content);
|
|
141
|
+
if (!canSend)
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const user = { id: `${Date.now()}_u`, role: "user", content };
|
|
145
|
+
const ai = {
|
|
146
|
+
id: `${Date.now()}_ai`,
|
|
147
|
+
role: "ai",
|
|
148
|
+
content: "",
|
|
149
|
+
loading: true
|
|
150
|
+
};
|
|
151
|
+
let newMsgs = [];
|
|
152
|
+
if (regenId) {
|
|
153
|
+
newMsgs = activeSession.messages.map((m) => m.id === regenId ? ai : m);
|
|
154
|
+
} else {
|
|
155
|
+
newMsgs = [...activeSession.messages, user, ai];
|
|
156
|
+
}
|
|
157
|
+
const updated = __spreadProps(__spreadValues({}, activeSession), {
|
|
158
|
+
title: activeSession.messages.length === 0 ? content.slice(0, 20) : activeSession.title,
|
|
159
|
+
messages: newMsgs
|
|
160
|
+
});
|
|
161
|
+
setActiveSession(updated);
|
|
162
|
+
setSessions((prev) => prev.map((x) => x.id === updated.id ? updated : x));
|
|
163
|
+
setLoading(true);
|
|
164
|
+
if (options == null ? void 0 : options.onSendMessage) {
|
|
165
|
+
try {
|
|
166
|
+
yield options.onSendMessage({
|
|
167
|
+
sessionId: activeSession.id,
|
|
168
|
+
prompt: content,
|
|
169
|
+
history: updated.messages.filter((m) => !m.loading)
|
|
170
|
+
});
|
|
171
|
+
setLoading(false);
|
|
172
|
+
const ms = updated.messages.map((m) => m.loading ? __spreadProps(__spreadValues({}, m), { loading: false }) : m);
|
|
173
|
+
const su = __spreadProps(__spreadValues({}, updated), { messages: ms });
|
|
174
|
+
setActiveSession(su);
|
|
175
|
+
setSessions((prev) => prev.map((x) => x.id === su.id ? su : x));
|
|
176
|
+
(_a = options == null ? void 0 : options.onSuccess) == null ? void 0 : _a.call(options);
|
|
177
|
+
} catch (err) {
|
|
178
|
+
setLoading(false);
|
|
179
|
+
const error = err;
|
|
180
|
+
message.error(`请求异常:${error.message}`);
|
|
181
|
+
(_b = options == null ? void 0 : options.onError) == null ? void 0 : _b.call(options, error);
|
|
182
|
+
}
|
|
183
|
+
} else {
|
|
184
|
+
const cancel = yield createSSE(
|
|
185
|
+
apiPath,
|
|
186
|
+
{
|
|
187
|
+
prompt: content,
|
|
188
|
+
history: updated.messages.filter((m) => !m.loading),
|
|
189
|
+
useMcp: true,
|
|
190
|
+
sessionId: activeSession.id
|
|
191
|
+
},
|
|
192
|
+
(text) => {
|
|
193
|
+
if (!activeSession)
|
|
194
|
+
return;
|
|
195
|
+
const ms = updated.messages.map((m) => m.loading ? __spreadProps(__spreadValues({}, m), { content: m.content + text }) : m);
|
|
196
|
+
const su = __spreadProps(__spreadValues({}, updated), { messages: ms });
|
|
197
|
+
setActiveSession(su);
|
|
198
|
+
setSessions((prev) => prev.map((x) => x.id === su.id ? su : x));
|
|
199
|
+
},
|
|
200
|
+
() => {
|
|
201
|
+
var _a2;
|
|
202
|
+
setLoading(false);
|
|
203
|
+
const ms = updated.messages.map((m) => m.loading ? __spreadProps(__spreadValues({}, m), { loading: false }) : m);
|
|
204
|
+
const su = __spreadProps(__spreadValues({}, updated), { messages: ms });
|
|
205
|
+
setActiveSession(su);
|
|
206
|
+
setSessions((prev) => prev.map((x) => x.id === su.id ? su : x));
|
|
207
|
+
(_a2 = options == null ? void 0 : options.onSuccess) == null ? void 0 : _a2.call(options);
|
|
208
|
+
},
|
|
209
|
+
(err) => {
|
|
210
|
+
var _a2;
|
|
211
|
+
setLoading(false);
|
|
212
|
+
const errorMsg = err.message;
|
|
213
|
+
message.error(`请求异常:${errorMsg}`);
|
|
214
|
+
(_a2 = options == null ? void 0 : options.onError) == null ? void 0 : _a2.call(options, err);
|
|
215
|
+
}
|
|
216
|
+
);
|
|
217
|
+
setCancelFn(() => cancel);
|
|
218
|
+
}
|
|
219
|
+
}),
|
|
220
|
+
[activeSession, apiPath, options]
|
|
221
|
+
);
|
|
222
|
+
const regenerateAnswer = useCallback(
|
|
223
|
+
(msg) => {
|
|
224
|
+
if (!activeSession)
|
|
225
|
+
return;
|
|
226
|
+
const idx = activeSession.messages.findIndex((x) => x.id === msg.id);
|
|
227
|
+
const userMsg = activeSession.messages[idx - 1];
|
|
228
|
+
if ((userMsg == null ? void 0 : userMsg.role) === "user")
|
|
229
|
+
sendQuestion(userMsg.content, msg.id);
|
|
230
|
+
},
|
|
231
|
+
[activeSession, sendQuestion]
|
|
232
|
+
);
|
|
233
|
+
const deleteSingleMsg = useCallback(
|
|
234
|
+
(id, e) => {
|
|
235
|
+
e.stopPropagation();
|
|
236
|
+
if (!activeSession)
|
|
237
|
+
return;
|
|
238
|
+
const ms = activeSession.messages.filter((x) => x.id !== id);
|
|
239
|
+
const up = __spreadProps(__spreadValues({}, activeSession), { messages: ms });
|
|
240
|
+
setActiveSession(up);
|
|
241
|
+
setSessions((prev) => prev.map((x) => x.id === up.id ? up : x));
|
|
242
|
+
},
|
|
243
|
+
[activeSession]
|
|
244
|
+
);
|
|
245
|
+
const cancelRequest = useCallback(() => {
|
|
246
|
+
cancelFn == null ? void 0 : cancelFn();
|
|
247
|
+
setLoading(false);
|
|
248
|
+
}, [cancelFn]);
|
|
249
|
+
const toggleVisible = useCallback((v) => setVisible(v != null ? v : !visible), [visible]);
|
|
250
|
+
return {
|
|
251
|
+
sessions,
|
|
252
|
+
activeSession,
|
|
253
|
+
loading,
|
|
254
|
+
visible,
|
|
255
|
+
createNewSession,
|
|
256
|
+
switchSession,
|
|
257
|
+
deleteSession,
|
|
258
|
+
sendQuestion,
|
|
259
|
+
regenerateAnswer,
|
|
260
|
+
deleteSingleMsg,
|
|
261
|
+
cancelRequest,
|
|
262
|
+
toggleVisible
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
export {
|
|
266
|
+
useAiChat
|
|
267
|
+
};
|
|
268
|
+
//# sourceMappingURL=useAiChat.js.map
|