@yoka-ui/ui 1.0.10-test
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 +92 -0
- package/@Docs-yoka/llms.txt +23 -0
- package/README.md +291 -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 +521 -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 +1 -0
- package/dist/es/business/AiChat/sse.js +60 -0
- package/dist/es/business/AiChat/sse.js.map +7 -0
- package/dist/es/business/AiChat/type.d.ts +157 -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 +238 -0
- package/dist/es/business/AiChat/useAiChat.js.map +7 -0
- package/dist/es/business/AiChat/useTaskWorkflow.d.ts +26 -0
- package/dist/es/business/AiChat/useTaskWorkflow.js +230 -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/index.d.ts +57 -0
- package/dist/es/components/YkDateRangePicker/index.js +261 -0
- package/dist/es/components/YkDateRangePicker/index.js.map +7 -0
- package/dist/es/components/YkDateRangePicker/index.module.less +281 -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 +556 -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 +548 -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 +41 -0
- package/dist/es/index.js +85 -0
- package/dist/es/index.js.map +7 -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 +514 -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 +1 -0
- package/dist/lib/business/AiChat/sse.js +61 -0
- package/dist/lib/business/AiChat/sse.js.map +7 -0
- package/dist/lib/business/AiChat/type.d.ts +157 -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 +222 -0
- package/dist/lib/business/AiChat/useAiChat.js.map +7 -0
- package/dist/lib/business/AiChat/useTaskWorkflow.d.ts +26 -0
- package/dist/lib/business/AiChat/useTaskWorkflow.js +216 -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/index.d.ts +57 -0
- package/dist/lib/components/YkDateRangePicker/index.js +282 -0
- package/dist/lib/components/YkDateRangePicker/index.js.map +7 -0
- package/dist/lib/components/YkDateRangePicker/index.module.less +281 -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 +567 -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 +548 -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 +41 -0
- package/dist/lib/index.js +158 -0
- package/dist/lib/index.js.map +7 -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 +147 -0
|
@@ -0,0 +1,230 @@
|
|
|
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/useTaskWorkflow.ts
|
|
42
|
+
import { message } from "antd";
|
|
43
|
+
import { useCallback, useState } from "react";
|
|
44
|
+
import { recognizeIntent, parseTaskDescription } from "./intentRecognizer";
|
|
45
|
+
import { NavigationManager, delay } from "./navigationManager";
|
|
46
|
+
var DEFAULT_API_PATH = "/api/task/create";
|
|
47
|
+
function useTaskWorkflow(options = {}) {
|
|
48
|
+
const {
|
|
49
|
+
enabled = true,
|
|
50
|
+
createTaskApi = DEFAULT_API_PATH,
|
|
51
|
+
autoNavigate = true,
|
|
52
|
+
refreshDelay = 1500,
|
|
53
|
+
taskIdParamName = "taskId",
|
|
54
|
+
taskTypeParamName = "type",
|
|
55
|
+
onTaskCreated,
|
|
56
|
+
onError
|
|
57
|
+
} = options;
|
|
58
|
+
const [tasks, setTasks] = useState([]);
|
|
59
|
+
const createTask = useCallback((task) => {
|
|
60
|
+
const newTask = __spreadProps(__spreadValues({}, task), {
|
|
61
|
+
id: Date.now().toString(),
|
|
62
|
+
createTime: Date.now()
|
|
63
|
+
});
|
|
64
|
+
setTasks((prev) => [...prev, newTask]);
|
|
65
|
+
return newTask;
|
|
66
|
+
}, []);
|
|
67
|
+
const updateTaskStatus = useCallback((taskId, status) => {
|
|
68
|
+
setTasks((prev) => prev.map((task) => task.id === taskId ? __spreadProps(__spreadValues({}, task), { status }) : task));
|
|
69
|
+
}, []);
|
|
70
|
+
const deleteTask = useCallback((taskId) => {
|
|
71
|
+
setTasks((prev) => prev.filter((task) => task.id !== taskId));
|
|
72
|
+
}, []);
|
|
73
|
+
const exportTasks = useCallback(
|
|
74
|
+
(format = "json") => {
|
|
75
|
+
if (tasks.length === 0) {
|
|
76
|
+
message.warning("没有任务可导出");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
let content;
|
|
80
|
+
let filename;
|
|
81
|
+
let mimeType;
|
|
82
|
+
if (format === "json") {
|
|
83
|
+
content = JSON.stringify(tasks, null, 2);
|
|
84
|
+
filename = `tasks_${Date.now()}.json`;
|
|
85
|
+
mimeType = "application/json";
|
|
86
|
+
} else {
|
|
87
|
+
const headers = "ID,Title,Description,Category,Priority,Status,CreateTime";
|
|
88
|
+
const rows = tasks.map(
|
|
89
|
+
(t) => `"${t.id}","${t.title}","${t.description}","${t.category}","${t.priority}","${t.status}","${new Date(t.createTime).toLocaleString()}"`
|
|
90
|
+
);
|
|
91
|
+
content = [headers, ...rows].join("\n");
|
|
92
|
+
filename = `tasks_${Date.now()}.csv`;
|
|
93
|
+
mimeType = "text/csv";
|
|
94
|
+
}
|
|
95
|
+
const blob = new Blob([content], { type: mimeType });
|
|
96
|
+
const url = URL.createObjectURL(blob);
|
|
97
|
+
const a = document.createElement("a");
|
|
98
|
+
a.href = url;
|
|
99
|
+
a.download = filename;
|
|
100
|
+
a.click();
|
|
101
|
+
URL.revokeObjectURL(url);
|
|
102
|
+
message.success(`导出成功 (${tasks.length} 个任务)`);
|
|
103
|
+
},
|
|
104
|
+
[tasks]
|
|
105
|
+
);
|
|
106
|
+
const recognizeIntentCallback = useCallback((text) => recognizeIntent(text), []);
|
|
107
|
+
const createTaskFromNaturalLanguage = useCallback(
|
|
108
|
+
(description) => __async(this, null, function* () {
|
|
109
|
+
var _a, _b, _c;
|
|
110
|
+
try {
|
|
111
|
+
const taskDesc = parseTaskDescription(description);
|
|
112
|
+
const requestData = {
|
|
113
|
+
type: taskDesc.taskType,
|
|
114
|
+
name: taskDesc.taskName,
|
|
115
|
+
description: taskDesc.description,
|
|
116
|
+
priority: taskDesc.priority,
|
|
117
|
+
timestamp: Date.now()
|
|
118
|
+
};
|
|
119
|
+
const response = yield fetch(createTaskApi, {
|
|
120
|
+
method: "POST",
|
|
121
|
+
headers: {
|
|
122
|
+
"Content-Type": "application/json"
|
|
123
|
+
},
|
|
124
|
+
body: JSON.stringify(requestData)
|
|
125
|
+
});
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
128
|
+
}
|
|
129
|
+
const result = yield response.json();
|
|
130
|
+
if (result.code !== 0 && result.code !== 200) {
|
|
131
|
+
throw new Error(result.message || "创建任务失败");
|
|
132
|
+
}
|
|
133
|
+
const taskId = ((_a = result.data) == null ? void 0 : _a.taskId) || ((_b = result.data) == null ? void 0 : _b.id);
|
|
134
|
+
if (!taskId) {
|
|
135
|
+
throw new Error("未获取到任务ID");
|
|
136
|
+
}
|
|
137
|
+
createTask({
|
|
138
|
+
title: taskDesc.taskName,
|
|
139
|
+
description: taskDesc.description,
|
|
140
|
+
category: taskDesc.taskType,
|
|
141
|
+
priority: taskDesc.priority,
|
|
142
|
+
status: "pending",
|
|
143
|
+
sourceMessageId: void 0,
|
|
144
|
+
apiResponse: result.data
|
|
145
|
+
});
|
|
146
|
+
onTaskCreated == null ? void 0 : onTaskCreated(taskId, result.data);
|
|
147
|
+
return {
|
|
148
|
+
success: true,
|
|
149
|
+
taskId,
|
|
150
|
+
taskData: result.data,
|
|
151
|
+
redirectUrl: (_c = result.data) == null ? void 0 : _c.redirectUrl
|
|
152
|
+
};
|
|
153
|
+
} catch (error) {
|
|
154
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
155
|
+
onError == null ? void 0 : onError(err);
|
|
156
|
+
return {
|
|
157
|
+
success: false,
|
|
158
|
+
error: err.message
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}),
|
|
162
|
+
[createTaskApi, createTask, onTaskCreated, onError]
|
|
163
|
+
);
|
|
164
|
+
const updateUrlWithTaskId = useCallback(
|
|
165
|
+
(taskId, options2) => {
|
|
166
|
+
const taskType = NavigationManager.getQueryParam(taskTypeParamName);
|
|
167
|
+
NavigationManager.updateQueryParams(
|
|
168
|
+
__spreadValues({
|
|
169
|
+
[taskIdParamName]: taskId
|
|
170
|
+
}, taskType ? { [taskTypeParamName]: taskType } : {}),
|
|
171
|
+
{
|
|
172
|
+
replace: (options2 == null ? void 0 : options2.replace) || false,
|
|
173
|
+
merge: (options2 == null ? void 0 : options2.merge) !== false,
|
|
174
|
+
queryParams: options2 == null ? void 0 : options2.queryParams
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
},
|
|
178
|
+
[taskIdParamName, taskTypeParamName]
|
|
179
|
+
);
|
|
180
|
+
const refreshCurrentPage = useCallback(
|
|
181
|
+
(taskId) => {
|
|
182
|
+
if (taskId) {
|
|
183
|
+
updateUrlWithTaskId(taskId);
|
|
184
|
+
}
|
|
185
|
+
setTimeout(() => {
|
|
186
|
+
window.location.reload();
|
|
187
|
+
}, refreshDelay);
|
|
188
|
+
},
|
|
189
|
+
[updateUrlWithTaskId, refreshDelay]
|
|
190
|
+
);
|
|
191
|
+
const executeTaskCreationWorkflow = useCallback(
|
|
192
|
+
(description) => __async(this, null, function* () {
|
|
193
|
+
if (!enabled) {
|
|
194
|
+
message.warning("任务工作流未启用");
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const result = yield createTaskFromNaturalLanguage(description);
|
|
198
|
+
if (!result.success) {
|
|
199
|
+
message.error(`创建任务失败: ${result.error}`);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const taskId = result.taskId;
|
|
203
|
+
message.success(`任务创建成功,ID: ${taskId}`);
|
|
204
|
+
if (autoNavigate) {
|
|
205
|
+
updateUrlWithTaskId(taskId);
|
|
206
|
+
}
|
|
207
|
+
if (autoNavigate) {
|
|
208
|
+
yield delay(refreshDelay);
|
|
209
|
+
refreshCurrentPage(taskId);
|
|
210
|
+
}
|
|
211
|
+
}),
|
|
212
|
+
[enabled, createTaskFromNaturalLanguage, autoNavigate, updateUrlWithTaskId, refreshDelay, refreshCurrentPage]
|
|
213
|
+
);
|
|
214
|
+
return {
|
|
215
|
+
tasks,
|
|
216
|
+
createTask,
|
|
217
|
+
updateTaskStatus,
|
|
218
|
+
deleteTask,
|
|
219
|
+
exportTasks,
|
|
220
|
+
recognizeIntent: recognizeIntentCallback,
|
|
221
|
+
createTaskFromNaturalLanguage,
|
|
222
|
+
updateUrlWithTaskId,
|
|
223
|
+
refreshCurrentPage,
|
|
224
|
+
executeTaskCreationWorkflow
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
export {
|
|
228
|
+
useTaskWorkflow
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=useTaskWorkflow.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/business/AiChat/useTaskWorkflow.ts"],
|
|
4
|
+
"sourcesContent": ["import { message } from 'antd';\nimport { useCallback, useState } from 'react';\nimport { recognizeIntent, parseTaskDescription } from './intentRecognizer';\nimport { NavigationManager, delay } from './navigationManager';\nimport type { Task, TaskCreationResult, NavigationOptions, TaskTypeConfig } from './type';\n\nexport interface UseTaskWorkflowOptions {\n enabled?: boolean;\n createTaskApi?: string;\n supportedTaskTypes?: TaskTypeConfig[];\n autoNavigate?: boolean;\n refreshDelay?: number;\n taskIdParamName?: string;\n taskTypeParamName?: string;\n onTaskCreated?: (taskId: string, taskData?: any) => void;\n onError?: (error: Error) => void;\n}\n\nexport interface UseTaskWorkflowReturn {\n tasks: Task[];\n createTask: (task: Omit<Task, 'id' | 'createTime'>) => void;\n updateTaskStatus: (taskId: string, status: Task['status']) => void;\n deleteTask: (taskId: string) => void;\n exportTasks: (format?: 'json' | 'csv') => void;\n\n // 意图识别\n recognizeIntent: (text: string) => ReturnType<typeof recognizeIntent>;\n\n // 任务工作流\n createTaskFromNaturalLanguage: (description: string) => Promise<TaskCreationResult>;\n updateUrlWithTaskId: (taskId: string, options?: NavigationOptions) => void;\n refreshCurrentPage: (taskId?: string) => void;\n executeTaskCreationWorkflow: (description: string) => Promise<void>;\n}\n\nconst DEFAULT_API_PATH = '/api/task/create';\n\nexport function useTaskWorkflow(options: UseTaskWorkflowOptions = {}): UseTaskWorkflowReturn {\n const {\n enabled = true,\n createTaskApi = DEFAULT_API_PATH,\n autoNavigate = true,\n refreshDelay = 1500,\n taskIdParamName = 'taskId',\n taskTypeParamName = 'type',\n onTaskCreated,\n onError,\n } = options;\n\n const [tasks, setTasks] = useState<Task[]>([]);\n\n // 创建任务\n const createTask = useCallback((task: Omit<Task, 'id' | 'createTime'>) => {\n const newTask: Task = {\n ...task,\n id: Date.now().toString(),\n createTime: Date.now(),\n };\n setTasks((prev) => [...prev, newTask]);\n return newTask;\n }, []);\n\n // 更新任务状态\n const updateTaskStatus = useCallback((taskId: string, status: Task['status']) => {\n setTasks((prev) => prev.map((task) => (task.id === taskId ? { ...task, status } : task)));\n }, []);\n\n // 删除任务\n const deleteTask = useCallback((taskId: string) => {\n setTasks((prev) => prev.filter((task) => task.id !== taskId));\n }, []);\n\n // 导出任务\n const exportTasks = useCallback(\n (format: 'json' | 'csv' = 'json') => {\n if (tasks.length === 0) {\n message.warning('没有任务可导出');\n return;\n }\n\n let content: string;\n let filename: string;\n let mimeType: string;\n\n if (format === 'json') {\n content = JSON.stringify(tasks, null, 2);\n filename = `tasks_${Date.now()}.json`;\n mimeType = 'application/json';\n } else {\n const headers = 'ID,Title,Description,Category,Priority,Status,CreateTime';\n const rows = tasks.map(\n (t) =>\n `\"${t.id}\",\"${t.title}\",\"${t.description}\",\"${t.category}\",\"${t.priority}\",\"${t.status}\",\"${new Date(t.createTime).toLocaleString()}\"`,\n );\n content = [headers, ...rows].join('\\n');\n filename = `tasks_${Date.now()}.csv`;\n mimeType = 'text/csv';\n }\n\n const blob = new Blob([content], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n a.click();\n URL.revokeObjectURL(url);\n message.success(`导出成功 (${tasks.length} 个任务)`);\n },\n [tasks],\n );\n\n // 识别意图\n const recognizeIntentCallback = useCallback((text: string) => recognizeIntent(text), []);\n\n // 从自然语言创建任务\n const createTaskFromNaturalLanguage = useCallback(\n async (description: string): Promise<TaskCreationResult> => {\n try {\n // 解析任务描述\n const taskDesc = parseTaskDescription(description);\n\n // 构建请求数据\n const requestData = {\n type: taskDesc.taskType,\n name: taskDesc.taskName,\n description: taskDesc.description,\n priority: taskDesc.priority,\n timestamp: Date.now(),\n };\n\n // 调用API创建任务\n const response = await fetch(createTaskApi, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestData),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const result = await response.json();\n\n if (result.code !== 0 && result.code !== 200) {\n throw new Error(result.message || '创建任务失败');\n }\n\n const taskId = result.data?.taskId || result.data?.id;\n\n if (!taskId) {\n throw new Error('未获取到任务ID');\n }\n\n // 创建本地任务记录\n createTask({\n title: taskDesc.taskName,\n description: taskDesc.description,\n category: taskDesc.taskType as Task['category'],\n priority: taskDesc.priority as Task['priority'],\n status: 'pending',\n sourceMessageId: undefined,\n apiResponse: result.data,\n });\n\n // 触发回调\n onTaskCreated?.(taskId, result.data);\n\n return {\n success: true,\n taskId,\n taskData: result.data,\n redirectUrl: result.data?.redirectUrl,\n };\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n onError?.(err);\n return {\n success: false,\n error: err.message,\n };\n }\n },\n [createTaskApi, createTask, onTaskCreated, onError],\n );\n\n // 更新URL中的任务ID\n const updateUrlWithTaskId = useCallback(\n (taskId: string, options?: NavigationOptions) => {\n const taskType = NavigationManager.getQueryParam(taskTypeParamName);\n NavigationManager.updateQueryParams(\n {\n [taskIdParamName]: taskId,\n ...(taskType ? { [taskTypeParamName]: taskType } : {}),\n },\n {\n replace: options?.replace || false,\n merge: options?.merge !== false,\n queryParams: options?.queryParams,\n },\n );\n },\n [taskIdParamName, taskTypeParamName],\n );\n\n // 刷新当前页面\n const refreshCurrentPage = useCallback(\n (taskId?: string) => {\n if (taskId) {\n updateUrlWithTaskId(taskId);\n }\n\n // 延迟刷新,让用户看到成功消息\n setTimeout(() => {\n window.location.reload();\n }, refreshDelay);\n },\n [updateUrlWithTaskId, refreshDelay],\n );\n\n // 执行任务创建工作流\n const executeTaskCreationWorkflow = useCallback(\n async (description: string) => {\n if (!enabled) {\n message.warning('任务工作流未启用');\n return;\n }\n\n // 1. 调用API创建任务\n const result = await createTaskFromNaturalLanguage(description);\n\n if (!result.success) {\n message.error(`创建任务失败: ${result.error}`);\n return;\n }\n\n const taskId = result.taskId!;\n\n // 2. 显示成功消息\n message.success(`任务创建成功,ID: ${taskId}`);\n\n // 3. 更新URL\n if (autoNavigate) {\n updateUrlWithTaskId(taskId);\n }\n\n // 4. 延迟刷新页面\n if (autoNavigate) {\n await delay(refreshDelay);\n refreshCurrentPage(taskId);\n }\n },\n [enabled, createTaskFromNaturalLanguage, autoNavigate, updateUrlWithTaskId, refreshDelay, refreshCurrentPage],\n );\n\n return {\n tasks,\n createTask,\n updateTaskStatus,\n deleteTask,\n exportTasks,\n recognizeIntent: recognizeIntentCallback,\n createTaskFromNaturalLanguage,\n updateUrlWithTaskId,\n refreshCurrentPage,\n executeTaskCreationWorkflow,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["options"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/** 提示内容数据结构,与 loadData 返回一致 */
|
|
3
|
+
export interface TipContentData {
|
|
4
|
+
tip_id: number;
|
|
5
|
+
tip_name: string;
|
|
6
|
+
content: string;
|
|
7
|
+
stared: boolean;
|
|
8
|
+
unstared: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** 反馈接口参数 */
|
|
11
|
+
export interface FeedbackParams {
|
|
12
|
+
stared?: boolean;
|
|
13
|
+
unstared?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* DrawerPageInfo 组件的 Props
|
|
17
|
+
* 数据与请求通过 loadData / onFeedback 由父组件负责,组件仅负责展示与交互。
|
|
18
|
+
*/
|
|
19
|
+
export type PropsType = {
|
|
20
|
+
/** 当前提示页 id,用于 loadData / onFeedback 入参 */
|
|
21
|
+
id: number | string;
|
|
22
|
+
/** 抽屉是否打开 */
|
|
23
|
+
open: boolean;
|
|
24
|
+
/** 抽屉打开状态变化回调(关闭时由组件调用) */
|
|
25
|
+
onOpenChange?: (open: boolean) => void;
|
|
26
|
+
/** 加载内容:抽屉打开且 id 有效时由组件调用,父组件请求后返回数据 */
|
|
27
|
+
loadData: (id: number) => Promise<TipContentData>;
|
|
28
|
+
/** 提交反馈(点赞/点踩):父组件请求接口,组件在成功后更新本地状态 */
|
|
29
|
+
onFeedback: (id: number, params: FeedbackParams) => Promise<void>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* 抽屉式提示页:展示富文本内容与点赞/点踩反馈,内容与反馈请求通过 props 回调解耦。
|
|
33
|
+
*/
|
|
34
|
+
declare const DrawerPageInfo: React.FC<PropsType>;
|
|
35
|
+
export default DrawerPageInfo;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// src/business/DrawerPageInfo/index.tsx
|
|
2
|
+
import { CloseOutlined, DislikeOutlined, LikeOutlined } from "@ant-design/icons";
|
|
3
|
+
import { Button, Divider, Drawer, Modal, Skeleton } from "antd";
|
|
4
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
5
|
+
import styles from "./index.module.less";
|
|
6
|
+
var FEEDBACK_RESET_DELAY = 200;
|
|
7
|
+
var DrawerPageInfo = ({ id, open, onOpenChange, loadData, onFeedback }) => {
|
|
8
|
+
const numericId = Number(id);
|
|
9
|
+
const onOpenChangeFn = onOpenChange != null ? onOpenChange : () => {
|
|
10
|
+
};
|
|
11
|
+
const [title, setTitle] = useState("");
|
|
12
|
+
const [content, setContent] = useState("");
|
|
13
|
+
const [stared, setStared] = useState(false);
|
|
14
|
+
const [unstared, setUnstared] = useState(false);
|
|
15
|
+
const [loading, setLoading] = useState(false);
|
|
16
|
+
const [feedbackLoading, setFeedbackLoading] = useState(false);
|
|
17
|
+
const [previewOpen, setPreviewOpen] = useState(false);
|
|
18
|
+
const [previewSrc, setPreviewSrc] = useState("");
|
|
19
|
+
const richTextRef = useRef(null);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!open || !numericId || Number.isNaN(numericId))
|
|
22
|
+
return;
|
|
23
|
+
setLoading(true);
|
|
24
|
+
loadData(numericId).then((data) => {
|
|
25
|
+
setTitle(data.tip_name);
|
|
26
|
+
setContent(data.content);
|
|
27
|
+
setStared(data.stared);
|
|
28
|
+
setUnstared(data.unstared);
|
|
29
|
+
}).finally(() => setLoading(false));
|
|
30
|
+
}, [open, numericId, loadData]);
|
|
31
|
+
const onClose = useCallback(() => {
|
|
32
|
+
setContent("");
|
|
33
|
+
onOpenChangeFn(false);
|
|
34
|
+
}, [onOpenChangeFn]);
|
|
35
|
+
const handleLike = useCallback(() => {
|
|
36
|
+
setFeedbackLoading(true);
|
|
37
|
+
const nextStared = !stared;
|
|
38
|
+
const run = unstared ? onFeedback(numericId, { unstared: false }).then(() => onFeedback(numericId, { stared: nextStared })) : onFeedback(numericId, { stared: nextStared });
|
|
39
|
+
run.then(() => {
|
|
40
|
+
setStared(nextStared);
|
|
41
|
+
if (unstared)
|
|
42
|
+
setUnstared(false);
|
|
43
|
+
}).finally(() => {
|
|
44
|
+
setTimeout(() => setFeedbackLoading(false), FEEDBACK_RESET_DELAY);
|
|
45
|
+
});
|
|
46
|
+
}, [numericId, stared, unstared, onFeedback]);
|
|
47
|
+
const handleDislike = useCallback(() => {
|
|
48
|
+
setFeedbackLoading(true);
|
|
49
|
+
const nextUnstared = !unstared;
|
|
50
|
+
const run = stared ? onFeedback(numericId, { stared: false }).then(() => onFeedback(numericId, { unstared: nextUnstared })) : onFeedback(numericId, { unstared: nextUnstared });
|
|
51
|
+
run.then(() => {
|
|
52
|
+
setUnstared(nextUnstared);
|
|
53
|
+
if (stared)
|
|
54
|
+
setStared(false);
|
|
55
|
+
}).finally(() => {
|
|
56
|
+
setTimeout(() => setFeedbackLoading(false), FEEDBACK_RESET_DELAY);
|
|
57
|
+
});
|
|
58
|
+
}, [numericId, stared, unstared, onFeedback]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
const el = richTextRef.current;
|
|
61
|
+
if (!el || !content)
|
|
62
|
+
return;
|
|
63
|
+
const images = el.querySelectorAll("img");
|
|
64
|
+
const handler = (e) => {
|
|
65
|
+
const img = e.currentTarget;
|
|
66
|
+
if (img == null ? void 0 : img.src) {
|
|
67
|
+
setPreviewSrc(img.src);
|
|
68
|
+
setPreviewOpen(true);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
images.forEach((img) => {
|
|
72
|
+
img.style.cursor = "pointer";
|
|
73
|
+
img.addEventListener("click", handler);
|
|
74
|
+
});
|
|
75
|
+
return () => images.forEach((img) => img.removeEventListener("click", handler));
|
|
76
|
+
}, [content]);
|
|
77
|
+
const showThanks = (stared || unstared) && !feedbackLoading;
|
|
78
|
+
if (!numericId || Number.isNaN(numericId))
|
|
79
|
+
return null;
|
|
80
|
+
return /* @__PURE__ */ React.createElement(
|
|
81
|
+
Drawer,
|
|
82
|
+
{
|
|
83
|
+
title,
|
|
84
|
+
width: 600,
|
|
85
|
+
open,
|
|
86
|
+
onClose,
|
|
87
|
+
extra: /* @__PURE__ */ React.createElement("div", { className: styles.pageInfoDrawerExtraClose, onClick: onClose, role: "button", tabIndex: 0 }, /* @__PURE__ */ React.createElement(CloseOutlined, null)),
|
|
88
|
+
maskClosable: false,
|
|
89
|
+
className: styles.drawerTipInfo
|
|
90
|
+
},
|
|
91
|
+
loading ? /* @__PURE__ */ React.createElement(Skeleton, { active: true }) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { ref: richTextRef, className: styles.boxTipHtml, dangerouslySetInnerHTML: { __html: content } }), /* @__PURE__ */ React.createElement("div", { className: styles.boxStared }, /* @__PURE__ */ React.createElement(Divider, { plain: true, style: { margin: "10px 0" } }, "此内容是否有帮助"), /* @__PURE__ */ React.createElement("div", { className: styles.btnsStared }, /* @__PURE__ */ React.createElement(
|
|
92
|
+
Button,
|
|
93
|
+
{
|
|
94
|
+
type: stared ? "primary" : "default",
|
|
95
|
+
shape: "circle",
|
|
96
|
+
loading: feedbackLoading,
|
|
97
|
+
disabled: feedbackLoading,
|
|
98
|
+
icon: /* @__PURE__ */ React.createElement(LikeOutlined, null),
|
|
99
|
+
onClick: handleLike
|
|
100
|
+
}
|
|
101
|
+
), /* @__PURE__ */ React.createElement(
|
|
102
|
+
Button,
|
|
103
|
+
{
|
|
104
|
+
type: unstared ? "primary" : "default",
|
|
105
|
+
shape: "circle",
|
|
106
|
+
loading: feedbackLoading,
|
|
107
|
+
disabled: feedbackLoading,
|
|
108
|
+
icon: /* @__PURE__ */ React.createElement(DislikeOutlined, null),
|
|
109
|
+
onClick: handleDislike
|
|
110
|
+
}
|
|
111
|
+
)), /* @__PURE__ */ React.createElement("div", { className: styles.thanksTip, style: { cursor: "default", opacity: showThanks ? 1 : 0 } }, "感谢您的反馈"))),
|
|
112
|
+
/* @__PURE__ */ React.createElement(
|
|
113
|
+
Modal,
|
|
114
|
+
{
|
|
115
|
+
title: "图片",
|
|
116
|
+
style: { top: 20 },
|
|
117
|
+
open: previewOpen,
|
|
118
|
+
onCancel: () => {
|
|
119
|
+
setPreviewOpen(false);
|
|
120
|
+
setPreviewSrc("");
|
|
121
|
+
},
|
|
122
|
+
footer: null,
|
|
123
|
+
width: "80%"
|
|
124
|
+
},
|
|
125
|
+
/* @__PURE__ */ React.createElement("img", { src: previewSrc, alt: "预览", style: { width: "100%" } })
|
|
126
|
+
)
|
|
127
|
+
);
|
|
128
|
+
};
|
|
129
|
+
var DrawerPageInfo_default = DrawerPageInfo;
|
|
130
|
+
export {
|
|
131
|
+
DrawerPageInfo_default as default
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/business/DrawerPageInfo/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { CloseOutlined, DislikeOutlined, LikeOutlined } from '@ant-design/icons';\nimport { Button, Divider, Drawer, Modal, Skeleton } from 'antd';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport styles from './index.module.less';\n\n/** 提示内容数据结构,与 loadData 返回一致 */\nexport interface TipContentData {\n tip_id: number;\n tip_name: string;\n content: string;\n stared: boolean;\n unstared: boolean;\n}\n\n/** 反馈接口参数 */\nexport interface FeedbackParams {\n stared?: boolean;\n unstared?: boolean;\n}\n\n/**\n * DrawerPageInfo 组件的 Props\n * 数据与请求通过 loadData / onFeedback 由父组件负责,组件仅负责展示与交互。\n */\nexport type PropsType = {\n /** 当前提示页 id,用于 loadData / onFeedback 入参 */\n id: number | string;\n /** 抽屉是否打开 */\n open: boolean;\n /** 抽屉打开状态变化回调(关闭时由组件调用) */\n onOpenChange?: (open: boolean) => void;\n /** 加载内容:抽屉打开且 id 有效时由组件调用,父组件请求后返回数据 */\n loadData: (id: number) => Promise<TipContentData>;\n /** 提交反馈(点赞/点踩):父组件请求接口,组件在成功后更新本地状态 */\n onFeedback: (id: number, params: FeedbackParams) => Promise<void>;\n};\n\nconst FEEDBACK_RESET_DELAY = 200;\n\n/**\n * 抽屉式提示页:展示富文本内容与点赞/点踩反馈,内容与反馈请求通过 props 回调解耦。\n */\nconst DrawerPageInfo: React.FC<PropsType> = ({ id, open, onOpenChange, loadData, onFeedback }) => {\n const numericId = Number(id);\n const onOpenChangeFn = onOpenChange ?? (() => {});\n const [title, setTitle] = useState('');\n const [content, setContent] = useState('');\n const [stared, setStared] = useState(false);\n const [unstared, setUnstared] = useState(false);\n const [loading, setLoading] = useState(false);\n const [feedbackLoading, setFeedbackLoading] = useState(false);\n\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewSrc, setPreviewSrc] = useState('');\n const richTextRef = useRef<HTMLDivElement>(null);\n\n /** 打开时根据 id 拉取内容 */\n useEffect(() => {\n if (!open || !numericId || Number.isNaN(numericId)) return;\n setLoading(true);\n loadData(numericId)\n .then((data) => {\n setTitle(data.tip_name);\n setContent(data.content);\n setStared(data.stared);\n setUnstared(data.unstared);\n })\n .finally(() => setLoading(false));\n }, [open, numericId, loadData]);\n\n const onClose = useCallback(() => {\n setContent('');\n onOpenChangeFn(false);\n }, [onOpenChangeFn]);\n\n /** 点赞:若已点踩则先取消点踩再点赞,否则直接点赞 */\n const handleLike = useCallback(() => {\n setFeedbackLoading(true);\n const nextStared = !stared;\n const run = unstared\n ? onFeedback(numericId, { unstared: false }).then(() => onFeedback(numericId, { stared: nextStared }))\n : onFeedback(numericId, { stared: nextStared });\n\n run\n .then(() => {\n setStared(nextStared);\n if (unstared) setUnstared(false);\n })\n .finally(() => {\n setTimeout(() => setFeedbackLoading(false), FEEDBACK_RESET_DELAY);\n });\n }, [numericId, stared, unstared, onFeedback]);\n\n /** 点踩:若已点赞则先取消点赞再点踩,否则直接点踩 */\n const handleDislike = useCallback(() => {\n setFeedbackLoading(true);\n const nextUnstared = !unstared;\n const run = stared\n ? onFeedback(numericId, { stared: false }).then(() => onFeedback(numericId, { unstared: nextUnstared }))\n : onFeedback(numericId, { unstared: nextUnstared });\n\n run\n .then(() => {\n setUnstared(nextUnstared);\n if (stared) setStared(false);\n })\n .finally(() => {\n setTimeout(() => setFeedbackLoading(false), FEEDBACK_RESET_DELAY);\n });\n }, [numericId, stared, unstared, onFeedback]);\n\n /** 富文本内图片点击放大:content 变化后重新绑定 */\n useEffect(() => {\n const el = richTextRef.current;\n if (!el || !content) return;\n const images = el.querySelectorAll<HTMLImageElement>('img');\n const handler = (e: Event) => {\n const img = e.currentTarget as HTMLImageElement;\n if (img?.src) {\n setPreviewSrc(img.src);\n setPreviewOpen(true);\n }\n };\n images.forEach((img) => {\n img.style.cursor = 'pointer';\n img.addEventListener('click', handler);\n });\n return () => images.forEach((img) => img.removeEventListener('click', handler));\n }, [content]);\n\n const showThanks = (stared || unstared) && !feedbackLoading;\n\n if (!numericId || Number.isNaN(numericId)) return null;\n\n return (\n <Drawer\n title={title}\n width={600}\n open={open}\n onClose={onClose}\n extra={\n <div className={styles.pageInfoDrawerExtraClose} onClick={onClose} role=\"button\" tabIndex={0}>\n <CloseOutlined />\n </div>\n }\n maskClosable={false}\n className={styles.drawerTipInfo}\n >\n {loading ? (\n <Skeleton active />\n ) : (\n <>\n <div ref={richTextRef} className={styles.boxTipHtml} dangerouslySetInnerHTML={{ __html: content }} />\n <div className={styles.boxStared}>\n <Divider plain style={{ margin: '10px 0' }}>\n 此内容是否有帮助\n </Divider>\n <div className={styles.btnsStared}>\n <Button\n type={stared ? 'primary' : 'default'}\n shape=\"circle\"\n loading={feedbackLoading}\n disabled={feedbackLoading}\n icon={<LikeOutlined />}\n onClick={handleLike}\n />\n <Button\n type={unstared ? 'primary' : 'default'}\n shape=\"circle\"\n loading={feedbackLoading}\n disabled={feedbackLoading}\n icon={<DislikeOutlined />}\n onClick={handleDislike}\n />\n </div>\n <div className={styles.thanksTip} style={{ cursor: 'default', opacity: showThanks ? 1 : 0 }}>\n 感谢您的反馈\n </div>\n </div>\n </>\n )}\n <Modal\n title=\"图片\"\n style={{ top: 20 }}\n open={previewOpen}\n onCancel={() => {\n setPreviewOpen(false);\n setPreviewSrc('');\n }}\n footer={null}\n width=\"80%\"\n >\n <img src={previewSrc} alt=\"预览\" style={{ width: '100%' }} />\n </Modal>\n </Drawer>\n );\n};\n\nexport default DrawerPageInfo;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.drawerTipInfo {
|
|
2
|
+
:global(.ant-drawer-close) {
|
|
3
|
+
display: none;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.boxTipHtml {
|
|
7
|
+
p {
|
|
8
|
+
margin-top: 1em;
|
|
9
|
+
line-height: 1.25;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
ul {
|
|
13
|
+
list-style: disc;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
ol {
|
|
17
|
+
list-style: decimal;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
blockquote {
|
|
21
|
+
display: block;
|
|
22
|
+
margin: 10px 0;
|
|
23
|
+
padding: 10px;
|
|
24
|
+
font-size: 100%;
|
|
25
|
+
line-height: 1.5;
|
|
26
|
+
background-color: #f1f1f1;
|
|
27
|
+
border-left: 8px solid #3b86f9;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
table {
|
|
31
|
+
th {
|
|
32
|
+
background-color: #f0f4ff;
|
|
33
|
+
}
|
|
34
|
+
th,
|
|
35
|
+
td {
|
|
36
|
+
padding: 10px;
|
|
37
|
+
border: 0.5px solid rgb(231, 231, 231);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
video {
|
|
42
|
+
width: 100%;
|
|
43
|
+
height: auto;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.boxStared {
|
|
48
|
+
padding: 100px 160px 20px 160px;
|
|
49
|
+
|
|
50
|
+
:global(.ant-divider-inner-text) {
|
|
51
|
+
color: #666666;
|
|
52
|
+
font-size: 12px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.btnsStared {
|
|
56
|
+
display: flex;
|
|
57
|
+
gap: 30px;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
|
|
60
|
+
button {
|
|
61
|
+
line-height: 24px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.thanksTip {
|
|
66
|
+
margin-top: 10px;
|
|
67
|
+
color: #666666;
|
|
68
|
+
font-size: 12px;
|
|
69
|
+
line-height: 18px;
|
|
70
|
+
text-align: center;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.pageInfoDrawerExtraClose {
|
|
76
|
+
position: absolute;
|
|
77
|
+
top: 5px;
|
|
78
|
+
left: -45px;
|
|
79
|
+
width: 45px;
|
|
80
|
+
height: 40px;
|
|
81
|
+
color: #fff;
|
|
82
|
+
line-height: 40px;
|
|
83
|
+
text-align: center;
|
|
84
|
+
background: rgb(59, 134, 249);
|
|
85
|
+
border-radius: 8px 0px 0px 8px;
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import '@wangeditor/editor/dist/css/style.css';
|
|
2
|
+
import React, { FC } from 'react';
|
|
3
|
+
import './index.less';
|
|
4
|
+
type PageTypes = {
|
|
5
|
+
value: string;
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
style?: React.CSSProperties;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const NoteEditor: FC<PageTypes>;
|
|
11
|
+
export default NoteEditor;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// src/business/Editor/index.tsx
|
|
19
|
+
import { Editor } from "@wangeditor/editor-for-react";
|
|
20
|
+
import "@wangeditor/editor/dist/css/style.css";
|
|
21
|
+
import React, { useEffect, useState } from "react";
|
|
22
|
+
import "./index.less";
|
|
23
|
+
var NoteEditor = ({ value, onChange, style, readOnly = false }) => {
|
|
24
|
+
const [editor, setEditor] = useState(null);
|
|
25
|
+
const editorConfig = {
|
|
26
|
+
placeholder: "请输入内容...",
|
|
27
|
+
readOnly,
|
|
28
|
+
// 配置 hoverbar 菜单项
|
|
29
|
+
hoverbarKeys: {
|
|
30
|
+
text: {
|
|
31
|
+
menuKeys: [
|
|
32
|
+
"headerSelect",
|
|
33
|
+
// N级标题
|
|
34
|
+
"justifyLeft",
|
|
35
|
+
// 左对齐按钮
|
|
36
|
+
"justifyCenter",
|
|
37
|
+
// 居中按钮
|
|
38
|
+
"justifyRight",
|
|
39
|
+
// 右对齐按钮
|
|
40
|
+
"bulletedList",
|
|
41
|
+
// 无序列表
|
|
42
|
+
"numberedList",
|
|
43
|
+
// 有序列表
|
|
44
|
+
"|",
|
|
45
|
+
// 分隔符
|
|
46
|
+
"color",
|
|
47
|
+
// 字色
|
|
48
|
+
"bgColor",
|
|
49
|
+
// 字背景
|
|
50
|
+
"bold",
|
|
51
|
+
// 加粗按钮
|
|
52
|
+
"through",
|
|
53
|
+
// 删除按钮(删除线)
|
|
54
|
+
"italic",
|
|
55
|
+
// 斜体按钮
|
|
56
|
+
"underline"
|
|
57
|
+
// 下划线按钮
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
return () => {
|
|
64
|
+
if (editor === null)
|
|
65
|
+
return;
|
|
66
|
+
editor.destroy();
|
|
67
|
+
setEditor(null);
|
|
68
|
+
};
|
|
69
|
+
}, [editor]);
|
|
70
|
+
return /* @__PURE__ */ React.createElement(
|
|
71
|
+
Editor,
|
|
72
|
+
{
|
|
73
|
+
defaultConfig: editorConfig,
|
|
74
|
+
value,
|
|
75
|
+
onCreated: setEditor,
|
|
76
|
+
onChange: (editor2) => onChange == null ? void 0 : onChange(editor2.getHtml()),
|
|
77
|
+
mode: "default",
|
|
78
|
+
style: __spreadValues({}, style)
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
var Editor_default = NoteEditor;
|
|
83
|
+
export {
|
|
84
|
+
Editor_default as default
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/business/Editor/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { IDomEditor, IEditorConfig } from '@wangeditor/editor';\nimport { Editor } from '@wangeditor/editor-for-react';\nimport '@wangeditor/editor/dist/css/style.css'; // 引入 css\nimport React, { FC, useEffect, useState } from 'react';\nimport './index.less';\n\ntype PageTypes = {\n value: string;\n onChange?: (value: string) => void;\n style?: React.CSSProperties;\n readOnly?: boolean;\n};\n\nconst NoteEditor: FC<PageTypes> = ({ value, onChange, style, readOnly = false }) => {\n // editor 实例\n const [editor, setEditor] = useState<IDomEditor | null>(null);\n\n // 编辑器配置\n const editorConfig: Partial<IEditorConfig> = {\n placeholder: '请输入内容...',\n readOnly: readOnly,\n // 配置 hoverbar 菜单项\n hoverbarKeys: {\n text: {\n menuKeys: [\n 'headerSelect', // N级标题\n 'justifyLeft', // 左对齐按钮\n 'justifyCenter', // 居中按钮\n 'justifyRight', // 右对齐按钮\n 'bulletedList', // 无序列表\n 'numberedList', // 有序列表\n '|', // 分隔符\n 'color', // 字色\n 'bgColor', // 字背景\n 'bold', // 加粗按钮\n 'through', // 删除按钮(删除线)\n 'italic', // 斜体按钮\n 'underline', // 下划线按钮\n ],\n },\n },\n };\n\n // 及时销毁 editor ,重要!\n useEffect(() => {\n return () => {\n if (editor === null) return;\n editor.destroy();\n setEditor(null);\n };\n }, [editor]);\n\n return (\n <Editor\n defaultConfig={editorConfig}\n value={value}\n onCreated={setEditor}\n onChange={(editor) => onChange?.(editor.getHtml())}\n mode='default'\n style={{ ...style }}\n />\n );\n};\n\nexport default NoteEditor;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AACA,SAAS,cAAc;AACvB,OAAO;AACP,OAAO,SAAa,WAAW,gBAAgB;AAC/C,OAAO;AASP,IAAM,aAA4B,CAAC,EAAE,OAAO,UAAU,OAAO,WAAW,MAAM,MAAM;AAElF,QAAM,CAAC,QAAQ,SAAS,IAAI,SAA4B,IAAI;AAG5D,QAAM,eAAuC;AAAA,IAC3C,aAAa;AAAA,IACb;AAAA;AAAA,IAEA,cAAc;AAAA,MACZ,MAAM;AAAA,QACJ,UAAU;AAAA,UACR;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW;AAAM;AACrB,aAAO,QAAQ;AACf,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAe;AAAA,MACf;AAAA,MACA,WAAW;AAAA,MACX,UAAU,CAACA,YAAW,qCAAWA,QAAO,QAAQ;AAAA,MAChD,MAAK;AAAA,MACL,OAAO,mBAAK;AAAA;AAAA,EACd;AAEJ;AAEA,IAAO,iBAAQ;",
|
|
6
|
+
"names": ["editor"]
|
|
7
|
+
}
|