plain-design 1.0.0-beta.99 → 3.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/dist/plain-design.commonjs.min.js +2 -18
- package/dist/plain-design.commonjs.min.js.LICENSE.txt +18 -0
- package/dist/plain-design.min.css +22 -21
- package/dist/plain-design.min.js +2 -18
- package/dist/plain-design.min.js.LICENSE.txt +18 -0
- package/dist/report.html +3 -3
- package/package.json +42 -40
- package/src/packages/components/$address/createAddressService.tsx +8 -3
- package/src/packages/components/$ai/index.tsx +368 -0
- package/src/packages/components/$configuration/index.tsx +4 -2
- package/src/packages/components/$file/index.tsx +44 -1
- package/src/packages/components/$imageSelector/index.tsx +56 -0
- package/src/packages/components/$message/image.service.utils.tsx +1 -1
- package/src/packages/components/$object/createObjectService.tsx +6 -6
- package/src/packages/components/$object/object.conver.ts +3 -3
- package/src/packages/components/$object/object.service.utils.ts +2 -2
- package/src/packages/components/$ov/createOvService.ts +2 -2
- package/src/packages/components/$previewer/ImagePreviewerFixedContainer.tsx +6 -6
- package/src/packages/components/$previewer/index.tsx +1 -1
- package/src/packages/components/$search/SearchFooter.tsx +1 -1
- package/src/packages/components/$search/SearchList.tsx +2 -2
- package/src/packages/components/$search/SearchServicePanel.tsx +4 -4
- package/src/packages/components/$search/createSearchService.tsx +1 -1
- package/src/packages/components/$search/search-service.scss +1 -0
- package/src/packages/components/$search/search.utils.tsx +1 -1
- package/src/packages/components/$upload/upload.utils.ts +7 -6
- package/src/packages/components/Address/index.tsx +2 -2
- package/src/packages/components/AddressCascade/address-cascade.utils.ts +1 -1
- package/src/packages/components/AddressCascade/createAddressCascade.hooks.ts +1 -1
- package/src/packages/components/AddressCascade/createAddressCascade.multiple.tsx +5 -6
- package/src/packages/components/AddressCascade/createAddressCascade.single.tsx +6 -7
- package/src/packages/components/AddressCascade/index.tsx +1 -1
- package/src/packages/components/AiChatBox/ai-chat-box.scss +74 -0
- package/src/packages/components/AiChatBox/index.tsx +306 -0
- package/src/packages/components/Alert/index.tsx +1 -1
- package/src/packages/components/Application/index.tsx +1 -1
- package/src/packages/components/Application/service/createApplicationService.tsx +2 -2
- package/src/packages/components/Application/service/createApplicationServiceComponent.tsx +1 -1
- package/src/packages/components/Application/service/createApplicationServiceManager.tsx +2 -2
- package/src/packages/components/Application/service/useApplicationService.tsx +3 -3
- package/src/packages/components/Application/utils/application.utils.ts +3 -4
- package/src/packages/components/Application/utils/createServiceReadyObserver.ts +1 -1
- package/src/packages/components/ArrowStep/index.tsx +1 -1
- package/src/packages/components/ArrowStepGroup/index.tsx +2 -2
- package/src/packages/components/AutoLoadingObserver/index.tsx +3 -3
- package/src/packages/components/AutoTable/AutoTable.tsx +1 -1
- package/src/packages/components/AutoTable/auto-table.scss +25 -3
- package/src/packages/components/AutoTable/createTableOptionUser.tsx +3 -1
- package/src/packages/components/AutoTable/filter/useTableOption.filter.form.tsx +8 -5
- package/src/packages/components/AutoTable/filter/useTableOption.filter.search.tsx +2 -2
- package/src/packages/components/AutoTable/filter/useTableOption.filter.state.ts +12 -7
- package/src/packages/components/AutoTable/setting/useTableOption.setting.all.fitler.tsx +1 -1
- package/src/packages/components/AutoTable/setting/useTableOption.setting.cache.tsx +3 -3
- package/src/packages/components/AutoTable/setting/useTableOption.setting.config.tsx +59 -17
- package/src/packages/components/AutoTable/setting/useTableOption.setting.export.tsx +5 -30
- package/src/packages/components/AutoTable/setting/useTableOption.setting.import.tsx +3 -3
- package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.filter.tsx +388 -385
- package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.sort.tsx +15 -8
- package/src/packages/components/AutoTable/setting/useTableOption.setting.tsx +109 -109
- package/src/packages/components/AutoTable/setting/useTableOption.setting.utils.ts +2 -2
- package/src/packages/components/AutoTable/use/useTableOption.ai.tsx +640 -0
- package/src/packages/components/AutoTable/use/useTableOption.buttons.tsx +27 -17
- package/src/packages/components/AutoTable/use/useTableOption.cache.ts +2 -2
- package/src/packages/components/AutoTable/use/useTableOption.check.tsx +3 -3
- package/src/packages/components/AutoTable/use/useTableOption.column.popper.tsx +5 -5
- package/src/packages/components/AutoTable/use/useTableOption.confirm.tsx +2 -2
- package/src/packages/components/AutoTable/use/useTableOption.fill.tsx +8 -8
- package/src/packages/components/AutoTable/use/useTableOption.hooks.tsx +6 -4
- package/src/packages/components/AutoTable/use/useTableOption.loading.tsx +3 -3
- package/src/packages/components/AutoTable/use/useTableOption.methods.tsx +7 -4
- package/src/packages/components/AutoTable/use/useTableOption.pagination.tsx +3 -3
- package/src/packages/components/AutoTable/use/useTableOption.parent.tsx +5 -2
- package/src/packages/components/AutoTable/use/useTableOption.permission.tsx +1 -1
- package/src/packages/components/AutoTable/use/useTableOption.sort.ts +8 -7
- package/src/packages/components/AutoTable/use/useTableOption.state.tsx +1 -1
- package/src/packages/components/AutoTable/use/useTableOption.table.tsx +7 -5
- package/src/packages/components/AutoTable/use/useTableOption.tips.tsx +3 -3
- package/src/packages/components/AutoTable/use/useTableOptionKeyboard.tsx +13 -4
- package/src/packages/components/AutoTable/utils/AutoModule.ts +1 -1
- package/src/packages/components/AutoTable/utils/AutoTable.utils.ts +76 -1
- package/src/packages/components/AutoTable/utils/TableOption.space.tsx +10 -6
- package/src/packages/components/AutoTable/utils/TableOption.url.ts +1 -1
- package/src/packages/components/AutoTable/utils/TableOption.utils.tsx +3 -3
- package/src/packages/components/AutoTable/utils/buildPlainDefaultUrlConfig.ts +6 -6
- package/src/packages/components/AutoWidthInput/index.tsx +2 -2
- package/src/packages/components/Badge/badge.scss +4 -0
- package/src/packages/components/Badge/index.tsx +1 -1
- package/src/packages/components/Box/index.tsx +31 -30
- package/src/packages/components/Button/index.tsx +11 -4
- package/src/packages/components/ButtonGroup/index.tsx +2 -2
- package/src/packages/components/Card/index.tsx +2 -2
- package/src/packages/components/Carousel/index.tsx +8 -8
- package/src/packages/components/CarouselItem/index.tsx +3 -3
- package/src/packages/components/Cascade/CascadeKeys.tsx +158 -0
- package/src/packages/components/Cascade/cascade.utils.ts +1 -1
- package/src/packages/components/Cascade/createCascadeHooks.ts +1 -1
- package/src/packages/components/Cascade/createCascadePopper.tsx +5 -4
- package/src/packages/components/Cascade/createCascadeUtils.ts +2 -2
- package/src/packages/components/Cascade/createMultipleCascadeRender.tsx +5 -6
- package/src/packages/components/Cascade/createSingleCascadeRender.tsx +7 -7
- package/src/packages/components/Cascade/index.tsx +3 -3
- package/src/packages/components/CascadeKeys/index.tsx +5 -0
- package/src/packages/components/CascadePanel/cascade-panel.utils.ts +3 -3
- package/src/packages/components/CascadePanel/flat/CascadeFlatPanelNode.tsx +1 -1
- package/src/packages/components/CascadePanel/flat/createCascadeFlatRender.tsx +14 -9
- package/src/packages/components/CascadePanel/index.tsx +22 -4
- package/src/packages/components/CascadePanel/list/CascadeListPanelItem.tsx +1 -1
- package/src/packages/components/CascadePanel/list/CascadeListPanelNode.tsx +1 -1
- package/src/packages/components/CascadePanel/list/createCascadeListRender.tsx +6 -2
- package/src/packages/components/Checkbox/index.tsx +8 -10
- package/src/packages/components/CheckboxGroup/index.tsx +1 -1
- package/src/packages/components/CheckboxInner/index.tsx +1 -1
- package/src/packages/components/Collapse/index.tsx +2 -2
- package/src/packages/components/CollapseGroup/index.tsx +1 -1
- package/src/packages/components/CollapseTransition/index.tsx +5 -5
- package/src/packages/components/ColorPicker/ColorPanel.tsx +146 -125
- package/src/packages/components/ColorPicker/color-panel.scss +117 -97
- package/src/packages/components/ColorPicker/index.tsx +144 -131
- package/src/packages/components/ColorPicker/sub/ColorAlphaSlider.tsx +1 -1
- package/src/packages/components/ColorPicker/sub/ColorHueSlider.tsx +1 -1
- package/src/packages/components/ColorPicker/sub/ColorSlider.tsx +5 -5
- package/src/packages/components/ColorPicker/sub/ColorSvPanel.tsx +4 -4
- package/src/packages/components/ColorPicker/useColorPanelEditor.tsx +1 -1
- package/src/packages/components/ColorPicker/useColorPanelHistory.tsx +1 -1
- package/src/packages/components/ColorPicker/utils/color-picker.utils.tsx +1 -1
- package/src/packages/components/ConfirmPopup/index.tsx +1 -1
- package/src/packages/components/Corner/index.tsx +3 -3
- package/src/packages/components/DatePicker/createDateRender.multiple.tsx +7 -7
- package/src/packages/components/DatePicker/createDateRender.single.tsx +8 -7
- package/src/packages/components/DatePicker/createRangeDateRender.range.tsx +3 -3
- package/src/packages/components/DatePicker/createRangeDateRender.separate.tsx +3 -3
- package/src/packages/components/DatePicker/date.utils.tsx +2 -2
- package/src/packages/components/DatePicker/index.tsx +3 -1
- package/src/packages/components/DatePicker/panel/DatePanel.tsx +1 -1
- package/src/packages/components/DatePicker/panel/DatePanelDate.tsx +2 -2
- package/src/packages/components/DatePicker/panel/DatePanelMonth.tsx +1 -1
- package/src/packages/components/DatePicker/panel/DatePanelQuarter.tsx +1 -1
- package/src/packages/components/DatePicker/panel/DatePanelRange.tsx +1 -1
- package/src/packages/components/DatePicker/panel/DatePanelWeek.tsx +1 -1
- package/src/packages/components/DatePicker/panel/DatePanelYear.tsx +1 -1
- package/src/packages/components/DatePicker/panel/useDatePanel.tsx +2 -2
- package/src/packages/components/DatePicker/panel/useDateWeek.tsx +2 -2
- package/src/packages/components/DatePicker/useRangeDateRender.tsx +8 -8
- package/src/packages/components/Dialog/index.tsx +11 -7
- package/src/packages/components/Dialog/useDialogMovable.tsx +1 -1
- package/src/packages/components/Dialog/utils/dialog.utils.ts +1 -1
- package/src/packages/components/Dropdown/dropdown.utils.tsx +2 -3
- package/src/packages/components/Dropdown/index.tsx +18 -5
- package/src/packages/components/DropdownGroup/index.tsx +1 -1
- package/src/packages/components/DropdownOption/index.tsx +2 -2
- package/src/packages/components/DropdownSeparator/index.tsx +1 -1
- package/src/packages/components/Empty/index.tsx +1 -1
- package/src/packages/components/FilterFormMultiple/index.tsx +12 -7
- package/src/packages/components/FilterFormSingle/index.tsx +178 -173
- package/src/packages/components/FilterService/filter/filter.city.tsx +4 -3
- package/src/packages/components/FilterService/filter/filter.district.tsx +4 -3
- package/src/packages/components/FilterService/filter/filter.number.tsx +2 -2
- package/src/packages/components/FilterService/filter/filter.province.tsx +1 -1
- package/src/packages/components/FilterService/filter/filter.select.tsx +3 -2
- package/src/packages/components/FilterService/filter/fitler.object.tsx +1 -1
- package/src/packages/components/FilterService/index.tsx +2 -2
- package/src/packages/components/FilterService/utils/filter.service.utils.ts +2 -2
- package/src/packages/components/FilterService/utils/mergeQueryParam.ts +3 -3
- package/src/packages/components/Form/form.scss +4 -0
- package/src/packages/components/Form/index.tsx +1 -1
- package/src/packages/components/Form/layout/useFormLayout.tsx +6 -5
- package/src/packages/components/Form/types/any.tsx +1 -1
- package/src/packages/components/Form/types/array.tsx +1 -1
- package/src/packages/components/Form/types/date.tsx +1 -1
- package/src/packages/components/Form/types/number.tsx +1 -1
- package/src/packages/components/Form/types/string.tsx +1 -1
- package/src/packages/components/Form/validate/createValidation.tsx +2 -2
- package/src/packages/components/Form/validate/useFormItemValidation.tsx +32 -31
- package/src/packages/components/Form/validate/useFormValidation.tsx +2 -2
- package/src/packages/components/Form/validate/validate.utils.tsx +4 -4
- package/src/packages/components/FormItem/FormItemValidateMessage.tsx +1 -1
- package/src/packages/components/FormItem/createFormEditor.tsx +2 -2
- package/src/packages/components/FormItem/index.tsx +8 -1
- package/src/packages/components/Grid/GridCol.tsx +1 -1
- package/src/packages/components/Grid/GridRow.tsx +3 -3
- package/src/packages/components/Icon/icon.external.tsx +117 -0
- package/src/packages/components/Icon/icon.registry.tsx +2 -2
- package/src/packages/components/Icon/index.tsx +13 -7
- package/src/packages/components/IconPicker/DefaultIcons.ts +7 -0
- package/src/packages/components/IconPicker/icon-picker.scss +43 -0
- package/src/packages/components/IconPicker/index.tsx +189 -0
- package/src/packages/components/Illustration/index.tsx +1 -1
- package/src/packages/components/Image/image.scss +9 -1
- package/src/packages/components/Image/index.tsx +15 -7
- package/src/packages/components/ImagePreviewer/ImagePreviewer.tsx +6 -6
- package/src/packages/components/ImagePreviewer/ImagePreviewerButtonBar.tsx +1 -1
- package/src/packages/components/ImagePreviewer/ImagePreviewerCarouselImage.tsx +2 -2
- package/src/packages/components/ImagePreviewer/ImagePreviewerGallery.tsx +3 -3
- package/src/packages/components/ImagePreviewer/PreviewerLoading.tsx +1 -1
- package/src/packages/components/ImagePreviewer/image-previewer.utils.tsx +4 -4
- package/src/packages/components/ImageSelector/image-selector.scss +70 -0
- package/src/packages/components/ImageSelector/index.tsx +59 -0
- package/src/packages/components/ImageUploader/index.tsx +32 -16
- package/src/packages/components/Input/index.scss +14 -2
- package/src/packages/components/Input/index.tsx +3 -3
- package/src/packages/components/Input/input.utils.ts +1 -1
- package/src/packages/components/Input/useMultipleInput.tsx +11 -10
- package/src/packages/components/Input/useSingleInput.tsx +2 -2
- package/src/packages/components/Input/useSuggestionInput.tsx +9 -9
- package/src/packages/components/Input/useTextareaInput.tsx +6 -6
- package/src/packages/components/Input/uses/useInputEnterHandler.tsx +24 -13
- package/src/packages/components/Input/uses/useInputHooks.tsx +1 -1
- package/src/packages/components/Input/uses/useInputMaxLength.tsx +1 -1
- package/src/packages/components/Input/uses/useInputSuffixIcon.tsx +2 -2
- package/src/packages/components/InputGroup/index.tsx +1 -1
- package/src/packages/components/InputGroup/input-group.scss +9 -0
- package/src/packages/components/InputNumber/NumberResize.tsx +4 -4
- package/src/packages/components/InputNumber/index.tsx +1 -1
- package/src/packages/components/InputNumber/input-number.utils.tsx +1 -1
- package/src/packages/components/InputNumber/number.scss +3 -0
- package/src/packages/components/InputNumber/number.utils.ts +1 -1
- package/src/packages/components/InputNumber/useInputNumber.multiple.tsx +2 -2
- package/src/packages/components/InputNumber/useInputNumber.public.tsx +12 -11
- package/src/packages/components/InputNumber/useInputNumber.single.tsx +2 -2
- package/src/packages/components/Layout/index.tsx +9 -2
- package/src/packages/components/Layout/layout.scss +20 -0
- package/src/packages/components/Layout/layout.utils.ts +1 -1
- package/src/packages/components/LayoutSection/index.tsx +12 -3
- package/src/packages/components/LayoutSection/useLayoutSectionResizer.tsx +2 -2
- package/src/packages/components/List/index.tsx +1 -1
- package/src/packages/components/ListOption/index.tsx +20 -0
- package/src/packages/components/ListPanel/index.tsx +30 -0
- package/src/packages/components/ListPanel/list-panel.scss +20 -0
- package/src/packages/components/Loading/index.tsx +2 -2
- package/src/packages/components/LoadingMask/index.tsx +2 -2
- package/src/packages/components/NumberRange/index.tsx +94 -93
- package/src/packages/components/Object/createObjectHooks.tsx +1 -1
- package/src/packages/components/Object/createObjectRender.multiple.tsx +10 -10
- package/src/packages/components/Object/createObjectRender.single.tsx +18 -14
- package/src/packages/components/Object/index.tsx +3 -3
- package/src/packages/components/Object/object.utils.ts +5 -3
- package/src/packages/components/Ov/index.tsx +1 -1
- package/src/packages/components/Ov/ov.utils.ts +1 -1
- package/src/packages/components/Ov/usePublicOv.tsx +1 -1
- package/src/packages/components/PageCard/index.tsx +4 -1
- package/src/packages/components/PageCardContent/index.tsx +4 -1
- package/src/packages/components/PageCardTitle/index.tsx +1 -1
- package/src/packages/components/PageRenderList/index.tsx +1 -1
- package/src/packages/components/PageThemeUtils/index.tsx +3 -3
- package/src/packages/components/Pagination/index.tsx +3 -3
- package/src/packages/components/Paragraph/index.tsx +1 -1
- package/src/packages/components/ParagraphItem/index.tsx +1 -1
- package/src/packages/components/PlcImage/index.tsx +6 -6
- package/src/packages/components/PlcObject/index.tsx +2 -2
- package/src/packages/components/PlcOv/index.tsx +1 -1
- package/src/packages/components/Popup/PopupProvider.tsx +1 -2
- package/src/packages/components/Popup/index.tsx +2 -2
- package/src/packages/components/ProgressBar/index.tsx +1 -1
- package/src/packages/components/ProgressBar/progress.utils.ts +2 -2
- package/src/packages/components/ProgressCircle/index.tsx +2 -2
- package/src/packages/components/ProgressMini/index.tsx +2 -2
- package/src/packages/components/Radio/index.tsx +4 -4
- package/src/packages/components/RadioGroup/index.tsx +1 -1
- package/src/packages/components/RadioInner/index.tsx +1 -1
- package/src/packages/components/Rate/index.tsx +3 -3
- package/src/packages/components/Reference/ReferenceProvider.tsx +1 -1
- package/src/packages/components/Reference/index.tsx +1 -1
- package/src/packages/components/RollingNumber/index.tsx +2 -2
- package/src/packages/components/Scroll/HorizontalScrollbar.tsx +4 -4
- package/src/packages/components/Scroll/VerticalScrollbar.tsx +4 -4
- package/src/packages/components/Scroll/index.tsx +6 -5
- package/src/packages/components/Scroll/useAutoScroll.ts +1 -1
- package/src/packages/components/Segment/index.tsx +1 -1
- package/src/packages/components/SegmentGroup/index.tsx +1 -1
- package/src/packages/components/Select/SelectPanel.tsx +1 -1
- package/src/packages/components/Select/createMultipleSelectRender.tsx +12 -8
- package/src/packages/components/Select/createPublicSelectRender.tsx +18 -12
- package/src/packages/components/Select/createSelectOptionDecoder.tsx +1 -1
- package/src/packages/components/Select/createSingleSelectRender.tsx +13 -9
- package/src/packages/components/Select/decodeSelectRenderNode.tsx +6 -4
- package/src/packages/components/Select/index.tsx +13 -1
- package/src/packages/components/Select/select.utils.tsx +5 -4
- package/src/packages/components/SelectDisplay/index.tsx +3 -3
- package/src/packages/components/SelectGroup/index.tsx +1 -1
- package/src/packages/components/SelectOption/index.tsx +2 -2
- package/src/packages/components/Skeleton/index.tsx +44 -0
- package/src/packages/components/Skeleton/skeleton.scss +27 -0
- package/src/packages/components/Slider/index.tsx +3 -3
- package/src/packages/components/Slider/slider.utils.tsx +1 -1
- package/src/packages/components/Slider/useSlider.range.tsx +13 -10
- package/src/packages/components/Slider/useSlider.single.tsx +8 -9
- package/src/packages/components/Slider/useSliderDotDragier.tsx +4 -4
- package/src/packages/components/SortList/index.tsx +4 -4
- package/src/packages/components/Space/index.tsx +1 -1
- package/src/packages/components/StackCard/index.tsx +4 -4
- package/src/packages/components/StackCardItem/index.tsx +1 -1
- package/src/packages/components/Step/index.tsx +1 -1
- package/src/packages/components/StepGroup/index.tsx +1 -1
- package/src/packages/components/Tab/index.tsx +1 -1
- package/src/packages/components/TabGroup/TabsHeader.tsx +1 -1
- package/src/packages/components/TabGroup/TabsInner.tsx +1 -1
- package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontal.tsx +3 -3
- package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalCard.tsx +1 -1
- package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalShadow.tsx +1 -1
- package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalText.tsx +2 -2
- package/src/packages/components/TabGroup/header/vertical/TabsHeaderVertical.tsx +1 -1
- package/src/packages/components/TabGroup/index.tsx +1 -1
- package/src/packages/components/TabGroup/tabs.utils.tsx +1 -1
- package/src/packages/components/Table/editor/PlcAddress.tsx +1 -1
- package/src/packages/components/Table/editor/PlcAddressItem.tsx +1 -1
- package/src/packages/components/Table/editor/PlcCheckbox.tsx +1 -1
- package/src/packages/components/Table/editor/PlcColorPicker.tsx +1 -1
- package/src/packages/components/Table/editor/PlcDate.tsx +1 -1
- package/src/packages/components/Table/editor/PlcDate.utils.tsx +2 -2
- package/src/packages/components/Table/editor/PlcDateRange.tsx +1 -1
- package/src/packages/components/Table/editor/PlcInput.tsx +1 -1
- package/src/packages/components/Table/editor/PlcNumber.tsx +1 -1
- package/src/packages/components/Table/editor/PlcRate.tsx +1 -1
- package/src/packages/components/Table/editor/PlcSelect.tsx +2 -1
- package/src/packages/components/Table/editor/PlcTextarea.tsx +1 -1
- package/src/packages/components/Table/editor/PlcTime.tsx +1 -1
- package/src/packages/components/Table/editor/PlcTime.utils.ts +2 -2
- package/src/packages/components/Table/editor/PlcTimeRange.tsx +1 -1
- package/src/packages/components/Table/editor/PlcToggle.tsx +1 -1
- package/src/packages/components/Table/plc/group/PlcGroup.tsx +1 -1
- package/src/packages/components/Table/plc/plc/Plc.tsx +1 -1
- package/src/packages/components/Table/plc/process/copyPlcList.ts +1 -1
- package/src/packages/components/Table/plc/process/processPlcFixed.ts +1 -1
- package/src/packages/components/Table/plc/process/processPlcSort.ts +1 -1
- package/src/packages/components/Table/plc/use/useBasePlc.tsx +3 -3
- package/src/packages/components/Table/plc/use/useBasePlcGroup.tsx +1 -1
- package/src/packages/components/Table/plc/use/usePlc.tsx +1 -1
- package/src/packages/components/Table/plc/use/usePlcPropsState.tsx +2 -2
- package/src/packages/components/Table/plc/use/useTableAutoSpan.tsx +112 -0
- package/src/packages/components/Table/plc/useTablePlc.tsx +7 -4
- package/src/packages/components/Table/plc/utils/plc.render.ts +1 -1
- package/src/packages/components/Table/plc/utils/plc.scope-slots.ts +1 -1
- package/src/packages/components/Table/plc/utils/plc.utils.ts +9 -6
- package/src/packages/components/Table/standard/PlcCheck/PlcCheck.hooks.tsx +3 -3
- package/src/packages/components/Table/standard/PlcCheck/PlcCheck.multiple.tsx +7 -8
- package/src/packages/components/Table/standard/PlcCheck/PlcCheck.single.tsx +4 -5
- package/src/packages/components/Table/standard/PlcCheck/PlcCheck.tsx +2 -2
- package/src/packages/components/Table/standard/PlcCheck/PlcCheck.utils.ts +3 -3
- package/src/packages/components/Table/standard/PlcDraggier/PlcDraggier.tsx +2 -2
- package/src/packages/components/Table/standard/PlcExclusion.tsx +2 -2
- package/src/packages/components/Table/standard/PlcExpand.tsx +2 -2
- package/src/packages/components/Table/standard/PlcIndex.tsx +1 -1
- package/src/packages/components/Table/standard/PlcOperation/OuterOperation.tsx +3 -2
- package/src/packages/components/Table/standard/PlcOperation/PlcOperation.tsx +12 -6
- package/src/packages/components/Table/standard/PlcOperation/PlcOperation.utils.tsx +4 -4
- package/src/packages/components/Table/standard/PlcOperation/useOperationPermission.ts +1 -1
- package/src/packages/components/Table/standard/PlcTree/PlcTree.autoWidth.tsx +1 -1
- package/src/packages/components/Table/standard/PlcTree/PlcTree.renderNode.tsx +2 -2
- package/src/packages/components/Table/standard/PlcTree/PlcTree.tsx +4 -4
- package/src/packages/components/Table/standard/PlcTree/PlcTree.utils.ts +2 -2
- package/src/packages/components/Table/standard/PlcTree/PlcTreeHeader.tsx +3 -3
- package/src/packages/components/Table/standard/PlcTree/RenderPlcTreeNode.tsx +6 -5
- package/src/packages/components/Table/table/Table.tsx +14 -10
- package/src/packages/components/Table/table/body/cell.tsx +36 -5
- package/src/packages/components/Table/table/body/row.tsx +1 -1
- package/src/packages/components/Table/table/body/useCellValue.tsx +15 -6
- package/src/packages/components/Table/table/head/head-cell.tsx +8 -2
- package/src/packages/components/Table/table/head/useHeadCellResize.ts +4 -4
- package/src/packages/components/Table/table/node/useTableNode.tsx +2 -2
- package/src/packages/components/Table/table/table.scss +4 -0
- package/src/packages/components/Table/table/use/useFixedShadow.ts +2 -2
- package/src/packages/components/Table/table/use/useTableDraggier.col.tsx +6 -6
- package/src/packages/components/Table/table/use/useTableDraggier.row.tsx +7 -7
- package/src/packages/components/Table/table/use/useTableDraggier.tsx +3 -3
- package/src/packages/components/Table/table/use/useTableFormEditor.tsx +47 -39
- package/src/packages/components/Table/table/use/useTableLoading.tsx +2 -2
- package/src/packages/components/Table/table/use/useTableMethods.tsx +2 -2
- package/src/packages/components/Table/table/use/useTableModifyEditor.tsx +12 -6
- package/src/packages/components/Table/table/use/useTableScroll.tsx +1 -1
- package/src/packages/components/Table/table/utils/createTableHooks.ts +7 -5
- package/src/packages/components/Table/table/utils/table.utils.ts +7 -5
- package/src/packages/components/Tag/index.tsx +8 -3
- package/src/packages/components/Tag/tag.scss +10 -1
- package/src/packages/components/ThemeColor/index.tsx +1 -1
- package/src/packages/components/ThemeColorSelector/index.tsx +1 -1
- package/src/packages/components/ThemeDarkSelector/index.tsx +1 -2
- package/src/packages/components/ThemeEditor/index.tsx +3 -3
- package/src/packages/components/ThemeLocaleSelector/index.tsx +1 -2
- package/src/packages/components/ThemeShapeSelector/index.tsx +1 -2
- package/src/packages/components/ThemeSizeSelector/index.tsx +1 -2
- package/src/packages/components/TimePicker/createRangeTimeRender.tsx +3 -3
- package/src/packages/components/TimePicker/createSeparateRangeTimeRender.tsx +3 -3
- package/src/packages/components/TimePicker/createSingleTimeRender.tsx +7 -8
- package/src/packages/components/TimePicker/index.tsx +1 -1
- package/src/packages/components/TimePicker/panel/TimeBaseColumn.tsx +4 -4
- package/src/packages/components/TimePicker/panel/TimeBasePanel.tsx +1 -1
- package/src/packages/components/TimePicker/panel/TimePanel.tsx +2 -2
- package/src/packages/components/TimePicker/panel/TimeRangePanel.tsx +1 -1
- package/src/packages/components/TimePicker/panel/time-panel.utils.ts +1 -1
- package/src/packages/components/TimePicker/time.utils.ts +1 -1
- package/src/packages/components/TimePicker/useRangeTimeRender.tsx +9 -9
- package/src/packages/components/TimePicker/useTimeHooks.ts +1 -1
- package/src/packages/components/Toggle/index.tsx +4 -4
- package/src/packages/components/Tooltip/index.tsx +2 -2
- package/src/packages/components/Transition/index.tsx +5 -2
- package/src/packages/components/Tree/RenderTreeNode.tsx +4 -3
- package/src/packages/components/Tree/index.tsx +2 -2
- package/src/packages/components/TreeCore/TreeCore.type.tsx +3 -1
- package/src/packages/components/TreeCore/createTreeCore.tsx +3 -3
- package/src/packages/components/TreeCore/createTreeDraggier.tsx +9 -9
- package/src/packages/components/TreeCore/createTreeHooks.ts +1 -1
- package/src/packages/components/TreeCore/createTreeMethods.tsx +2 -2
- package/src/packages/components/TreeCore/createTreeNode.tsx +11 -6
- package/src/packages/components/TreeCore/createTreeProps.ts +4 -3
- package/src/packages/components/TreeCore/createTreeUtils.ts +2 -2
- package/src/packages/components/TreeNodeWithMenu/index.tsx +5 -1
- package/src/packages/components/TreeNodeWithMenu/treeNodeWithMenu.utils.ts +1 -1
- package/src/packages/components/Triangle/index.tsx +2 -2
- package/src/packages/components/Upload/index.tsx +6 -6
- package/src/packages/components/VirtualList/createVirtualDraggier.ts +7 -7
- package/src/packages/components/VirtualList/index.tsx +1 -1
- package/src/packages/components/VirtualList/useVirtualList.tsx +11 -11
- package/src/packages/components/VirtualTable/index.tsx +10 -4
- package/src/packages/components/VirtualTable/virtual-table.scss +3 -3
- package/src/packages/components/createPlainAddressService/index.tsx +2 -2
- package/src/packages/components/createRequestInterceptor/index.ts +2 -2
- package/src/packages/components/createScrollDraggier/index.ts +5 -5
- package/src/packages/components/createScrollUtils/index.tsx +1 -1
- package/src/packages/components/createSimpleDate/index.ts +49 -0
- package/src/packages/components/createTransitionHandler/index.ts +1 -1
- package/src/packages/components/useAutoScrollUtils/index.tsx +4 -4
- package/src/packages/components/useContextmenuOptions/index.tsx +40 -0
- package/src/packages/components/useDialog/DialogService.tsx +9 -9
- package/src/packages/components/useDialog/dialog.service.utils.tsx +5 -5
- package/src/packages/components/useDialog/index.tsx +4 -4
- package/src/packages/components/useImage/ImageService.tsx +5 -5
- package/src/packages/components/useLoading/LoadingService.tsx +3 -3
- package/src/packages/components/useLoading/index.tsx +1 -1
- package/src/packages/components/useLoading/loading.service.utils.tsx +2 -2
- package/src/packages/components/useMessage/Message.tsx +1 -1
- package/src/packages/components/useMessage/MessageContainer.tsx +1 -1
- package/src/packages/components/useMessage/MessageManager.tsx +1 -1
- package/src/packages/components/useMessage/index.tsx +1 -1
- package/src/packages/components/useMessage/message.service.utils.tsx +4 -4
- package/src/packages/components/useNotice/Notice.tsx +1 -1
- package/src/packages/components/useNotice/NoticeContainer.tsx +1 -1
- package/src/packages/components/useNotice/NoticeManager.tsx +1 -1
- package/src/packages/components/useNotice/index.tsx +1 -1
- package/src/packages/components/useNotice/noitice.service.utils.tsx +4 -4
- package/src/packages/components/usePageRenderContext/index.tsx +1 -1
- package/src/packages/components/usePopup/PopupItem.tsx +17 -10
- package/src/packages/components/usePopup/refresh/refreshArrow.ts +1 -1
- package/src/packages/components/usePopup/trigger/useManagerTrigger.clickOutside.tsx +19 -24
- package/src/packages/components/usePopup/trigger/usePopupTrigger.tsx +2 -2
- package/src/packages/components/usePopup/trigger/useReferenceTrigger.tsx +52 -46
- package/src/packages/components/usePopup/usePopup.tsx +2 -2
- package/src/packages/components/usePopup/usePopupManager.tsx +14 -3
- package/src/packages/components/usePopup/utils/createPopupManagerHooks.tsx +1 -1
- package/src/packages/components/usePopup/utils/ids2map.ts +1 -1
- package/src/packages/components/usePopup/utils/popup.utils.ts +3 -4
- package/src/packages/components/usePopupEditor/index.tsx +6 -9
- package/src/packages/components/usePopupEditor/popup-editor.utils.ts +1 -1
- package/src/packages/components/useTableFilter/index.ts +73 -0
- package/src/packages/components/useTooltip/index.tsx +6 -7
- package/src/packages/directives/ClickWave/index.tsx +2 -2
- package/src/packages/directives/ResizeDetector/index.tsx +2 -2
- package/src/packages/entry.tsx +326 -287
- package/src/packages/i18n/i18n.utils.ts +5 -5
- package/src/packages/i18n/lang/en-us.ts +37 -14
- package/src/packages/i18n/lang/zh-cn.ts +24 -1
- package/src/packages/styles/application/application.public.scss +7 -0
- package/src/packages/styles/global.import.scss +60 -15
- package/src/packages/uses/createInputPopperAttrs.ts +10 -3
- package/src/packages/uses/useCollapseStyles.tsx +2 -2
- package/src/packages/uses/useDragHorizontalScroll.ts +4 -5
- package/src/packages/uses/useEdit.ts +42 -15
- package/src/packages/uses/useFocusHandler.ts +26 -13
- package/src/packages/uses/useFunctionWrapper.ts +3 -1
- package/src/packages/uses/useMultipleModel.tsx +6 -4
- package/src/packages/uses/useRenderReference.tsx +1 -1
- package/src/packages/uses/useStyle.tsx +4 -4
- package/src/packages/utils/ClientZoom.ts +1 -1
- package/src/packages/utils/FixInput.ts +1 -1
- package/src/packages/utils/InnerTransition.ts +2 -2
- package/src/packages/utils/LoadingText.ts +1 -1
- package/src/packages/utils/OpenController.ts +1 -1
- package/src/packages/utils/constant.tsx +1 -1
- package/src/packages/utils/createDraggier.ts +7 -7
- package/src/packages/utils/createFlagManager.ts +1 -1
- package/src/packages/utils/findReactElement.tsx +1 -1
- package/src/packages/utils/getDeviceInfo.ts +1 -1
- package/src/packages/utils/getRowEl.ts +2 -2
- package/src/packages/utils/incrementalMerge.ts +1 -1
- package/src/packages/utils/inheritSlots.ts +3 -1
- package/src/packages/utils/installAllIcons.ts +20 -19
- package/src/packages/utils/installAllLazyIcons.ts +1 -1
- package/src/packages/utils/isObjectCommonMatch.ts +1 -1
- package/src/packages/utils/onParentElementsScroll.tsx +2 -2
- package/src/packages/utils/plainDate.ts +1 -1
- package/src/packages/utils/useMove.tsx +3 -3
- package/src/packages/utils/watchEffectAutoClear.ts +2 -2
- package/src/packages/components/KeyboardService/index.ts +0 -214
- package/src/packages/components/ThemeDarkSelector/theme-dark-selector.scss +0 -5
- package/src/packages/components/ThemeLocaleSelector/theme-locale-selector.scss +0 -5
- package/src/packages/components/ThemeShapeSelector/theme-shape-selector.scss +0 -5
- package/src/packages/components/ThemeSizeSelector/theme-size-selector.scss +0 -5
- package/src/packages/components/createProvider/index.ts +0 -5
- package/src/packages/utils/createProvider.tsx +0 -35
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "plain-design",
|
3
|
-
"version": "
|
3
|
+
"version": "3.0.1",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/plain-design.min.js",
|
6
6
|
"module": "dist/plain-design.commonjs.min.js",
|
@@ -14,14 +14,15 @@
|
|
14
14
|
"local": "cross-env APP_ENV=local vue-cli-service serve",
|
15
15
|
"dev": "cross-env APP_ENV=prod vue-cli-service serve",
|
16
16
|
"build": "cross-env APP_ENV=prod vue-cli-service build",
|
17
|
-
"release": "cross-env NODE_ENV=production webpack --config ./build/webpack.release.js --progress"
|
17
|
+
"release": "cross-env NODE_ENV=production webpack --config ./build/webpack.release.js --progress",
|
18
|
+
"ferv": "ferv ./plain-design -b plain-design/ -c -s -p 3379"
|
18
19
|
},
|
19
20
|
"author": "",
|
20
21
|
"license": "ISC",
|
21
22
|
"peerDependencies": {
|
23
|
+
"@peryl/react-compose": "0.0.225",
|
22
24
|
"exceljs": "^4.2.1",
|
23
25
|
"file-saver": "^2.0.5",
|
24
|
-
"plain-design-composition": "^0.0.190",
|
25
26
|
"react": "^18.0.1",
|
26
27
|
"react-dom": "^18.0.1"
|
27
28
|
},
|
@@ -30,63 +31,64 @@
|
|
30
31
|
"@types/react-dom": "18.2.4"
|
31
32
|
},
|
32
33
|
"dependencies": {
|
34
|
+
"@peryl/icon": "0.0.8",
|
35
|
+
"@peryl/utils": "^0.1.73",
|
33
36
|
"@types/color": "3.0.6",
|
34
37
|
"@types/react-transition-group": "4.4.10",
|
35
38
|
"color": "4.2.3",
|
36
39
|
"dayjs": "1.11.10",
|
37
|
-
"plain-icons": "0.0.7",
|
38
|
-
"plain-utils": "^0.1.63",
|
39
40
|
"react-flip-move": "3.0.5",
|
40
41
|
"react-transition-group": "4.4.5"
|
41
42
|
},
|
42
43
|
"devDependencies": {
|
43
|
-
"@babel/plugin-proposal-optional-chaining": "7.21.0",
|
44
|
-
"@babel/plugin-transform-class-properties": "7.
|
45
|
-
"@babel/preset-env": "7.
|
46
|
-
"@babel/preset-react": "7.
|
47
|
-
"@babel/preset-typescript": "7.
|
44
|
+
"@babel/plugin-proposal-optional-chaining": "^7.21.0",
|
45
|
+
"@babel/plugin-transform-class-properties": "^7.22.3",
|
46
|
+
"@babel/preset-env": "^7.13.15",
|
47
|
+
"@babel/preset-react": "^7.13.13",
|
48
|
+
"@babel/preset-typescript": "^7.13.0",
|
49
|
+
"@peryl/react-compose": "0.0.225",
|
50
|
+
"@peryl/utils": "0.1.73",
|
48
51
|
"@types/classnames": "^2.2.11",
|
49
|
-
"@types/
|
50
|
-
"@types/
|
51
|
-
"@
|
52
|
-
"@
|
53
|
-
"@
|
52
|
+
"@types/node": "^20.8.6",
|
53
|
+
"@types/qs": "^6.9.8",
|
54
|
+
"@types/react": "18.0.0",
|
55
|
+
"@types/react-dom": "18.0.0",
|
56
|
+
"@typescript-eslint/eslint-plugin": "^4.18.0",
|
57
|
+
"@typescript-eslint/parser": "^4.18.0",
|
58
|
+
"@vue/cli-plugin-babel": "~5.0.0",
|
54
59
|
"@vue/cli-plugin-eslint": "4.5.19",
|
55
|
-
"@vue/cli-plugin-typescript": "
|
56
|
-
"@vue/cli-service": "
|
60
|
+
"@vue/cli-plugin-typescript": "~5.0.0",
|
61
|
+
"@vue/cli-service": "~5.0.0",
|
57
62
|
"@vue/compiler-sfc": "3.4.3",
|
58
63
|
"@vue/eslint-config-typescript": "^7.0.0",
|
59
|
-
"autoprefixer": "8.6.5",
|
60
|
-
"axios": "1.
|
64
|
+
"autoprefixer": "^8.6.5",
|
65
|
+
"axios": "^1.7.7",
|
61
66
|
"babel-plugin-import": "1.13.8",
|
62
67
|
"babel-plugin-syntax-jsx": "6.18.0",
|
63
|
-
"core-js": "3.
|
68
|
+
"core-js": "^3.8.3",
|
64
69
|
"cross-env": "^7.0.3",
|
65
70
|
"css-loader": "3.6.0",
|
66
71
|
"eslint": "6.8.0",
|
67
72
|
"eslint-plugin-vue": "7.20.0",
|
68
73
|
"exceljs": "^4.2.1",
|
69
74
|
"file-saver": "^2.0.5",
|
70
|
-
"fork-ts-checker-webpack-plugin": "6.
|
71
|
-
"mini-css-extract-plugin": "1.
|
72
|
-
"
|
73
|
-
"
|
74
|
-
"
|
75
|
-
"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
80
|
-
"
|
81
|
-
"
|
82
|
-
"
|
83
|
-
"
|
84
|
-
"
|
85
|
-
"
|
86
|
-
"url-loader": "4.1.1",
|
87
|
-
"vue": "3.4.3",
|
88
|
-
"vue-template-compiler": "2.7.16",
|
75
|
+
"fork-ts-checker-webpack-plugin": "^6.2.4",
|
76
|
+
"mini-css-extract-plugin": "^1.4.1",
|
77
|
+
"postcss": "^8.2.13",
|
78
|
+
"postcss-loader": "^4.2.0",
|
79
|
+
"qs": "^6.10.1",
|
80
|
+
"react": "18.0.0",
|
81
|
+
"react-dom": "18.0.0",
|
82
|
+
"sass": "1.32.7",
|
83
|
+
"sass-loader": "12.0.0",
|
84
|
+
"style-loader": "^2.0.0",
|
85
|
+
"ts-loader": "^9.4.2",
|
86
|
+
"ts-node": "^9.1.1",
|
87
|
+
"tslib": "^2.5.0",
|
88
|
+
"typescript": "^5.8.3",
|
89
|
+
"url-loader": "^4.1.1",
|
90
|
+
"vue-template-compiler": "2.7.15",
|
89
91
|
"webpack-bundle-analyzer": "^4.4.1",
|
90
|
-
"webpack-cli": "4.
|
92
|
+
"webpack-cli": "^4.6.0"
|
91
93
|
}
|
92
94
|
}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import {eAddressTypeEnum, iAddressLazyMeta, iAddressSyncMeta} from "./address.utils";
|
2
|
-
import {defer, DFD} from "
|
3
|
-
import {reactive} from "
|
2
|
+
import {defer, DFD} from "@peryl/utils/defer";
|
3
|
+
import {reactive} from "@peryl/react-compose";
|
4
4
|
import i18n from "../i18n";
|
5
|
+
import {createEffects} from "@peryl/utils/createEffects";
|
5
6
|
|
6
7
|
export function createAddressService(
|
7
8
|
config: {
|
@@ -35,6 +36,7 @@ export function createAddressService(
|
|
35
36
|
}
|
36
37
|
) {
|
37
38
|
|
39
|
+
const { effects } = createEffects();
|
38
40
|
/**
|
39
41
|
* 带缓存地通过code查询地址信息
|
40
42
|
* @author 韦胜健
|
@@ -187,7 +189,9 @@ export function createAddressService(
|
|
187
189
|
* @author 韦胜健
|
188
190
|
* @date 2024.6.18 15:35
|
189
191
|
*/
|
190
|
-
|
192
|
+
effects.push(
|
193
|
+
i18n.hooks.onChangeLang.use(() => clear())
|
194
|
+
);
|
191
195
|
|
192
196
|
return {
|
193
197
|
config,
|
@@ -197,6 +201,7 @@ export function createAddressService(
|
|
197
201
|
getAddress,
|
198
202
|
getAddressByCodesComputed,
|
199
203
|
clear,
|
204
|
+
dispose: effects.clear,
|
200
205
|
};
|
201
206
|
}
|
202
207
|
|
@@ -0,0 +1,368 @@
|
|
1
|
+
import $configuration from "../$configuration";
|
2
|
+
import Axios from "axios";
|
3
|
+
import $notice from "../$notice";
|
4
|
+
import {iTableAiOperatePlcMeta} from "../AutoTable/utils/AutoTable.utils";
|
5
|
+
import $dialog from "../$dialog";
|
6
|
+
import i18n from "../../i18n";
|
7
|
+
import AiChatBox, {iChatBoxHistory} from "../AiChatBox";
|
8
|
+
import {createSimpleDate} from "../createSimpleDate";
|
9
|
+
import {uuid} from "@peryl/utils/uuid";
|
10
|
+
import {PlainObject} from "@peryl/utils/event";
|
11
|
+
import {defer} from "@peryl/utils/defer";
|
12
|
+
import {toArray} from "@peryl/utils/toArray";
|
13
|
+
import {iEffects} from "@peryl/utils/createEffects";
|
14
|
+
|
15
|
+
export const $ai = (() => {
|
16
|
+
|
17
|
+
/**
|
18
|
+
* 获取模型服务信息
|
19
|
+
* @author 韦胜健
|
20
|
+
* @date 2025/5/20 19:26
|
21
|
+
*/
|
22
|
+
const getConfig = (): iAiConfiguration => {
|
23
|
+
const aiConfig = $configuration.get('aiConfig');
|
24
|
+
if (!aiConfig) {
|
25
|
+
throw new Error('There is a lack of aiConfig when initializing the $configuration.');
|
26
|
+
}
|
27
|
+
return aiConfig;
|
28
|
+
|
29
|
+
};
|
30
|
+
|
31
|
+
/**
|
32
|
+
* 带对话历史的模型调用
|
33
|
+
* @author 韦胜健
|
34
|
+
* @date 2025/5/20 19:26
|
35
|
+
*/
|
36
|
+
const chatHistories = async (histories: iAiHistory[], _aiConfig?: iAiConfiguration): Promise<{ message: string, chatData: iAiChatResponse }> => {
|
37
|
+
const axios = Axios.create();
|
38
|
+
const aiConfig = _aiConfig || getConfig();
|
39
|
+
try {
|
40
|
+
const resp = await axios.request({
|
41
|
+
method: 'post',
|
42
|
+
url: aiConfig.url,
|
43
|
+
headers: {
|
44
|
+
'Authorization': `Bearer ${aiConfig.key}`,
|
45
|
+
"Content-Type": 'application/json'
|
46
|
+
},
|
47
|
+
data: {
|
48
|
+
"model": aiConfig.model,
|
49
|
+
"messages": histories
|
50
|
+
}
|
51
|
+
});
|
52
|
+
|
53
|
+
const result = resp.data;
|
54
|
+
|
55
|
+
let message = result.choices[0].message.content;
|
56
|
+
|
57
|
+
if (message.slice(0, 7) === '```json' && message.slice(-3) === '```') {
|
58
|
+
message = message.slice(7, -3).trim();
|
59
|
+
}
|
60
|
+
|
61
|
+
return { message, chatData: result };
|
62
|
+
} catch (e: any) {
|
63
|
+
$notice.error((e.message || JSON.stringify(e)) + '\n' + e.response?.data?.error?.message);
|
64
|
+
throw e;
|
65
|
+
}
|
66
|
+
};
|
67
|
+
|
68
|
+
/**
|
69
|
+
* 带提示词的模型调用
|
70
|
+
* @author 韦胜健
|
71
|
+
* @date 2025/5/20 19:26
|
72
|
+
*/
|
73
|
+
const chatSystem = async (userContent: string, systemContent?: string, _aiConfig?: iAiConfiguration) => {
|
74
|
+
const messages: iAiHistory[] = [{ "role": "user", "content": userContent }];
|
75
|
+
if (!!systemContent) {
|
76
|
+
messages.unshift({ "role": "system", "content": systemContent });
|
77
|
+
}
|
78
|
+
return chatHistories(messages, _aiConfig);
|
79
|
+
};
|
80
|
+
|
81
|
+
/**
|
82
|
+
* 基础的模型调用
|
83
|
+
* @author 韦胜健
|
84
|
+
* @date 2025/5/20 19:27
|
85
|
+
*/
|
86
|
+
const chat = async (userContent: string, _aiConfig?: iAiConfiguration): Promise<{ message: string, chatData: iAiChatResponse }> => {
|
87
|
+
return chatSystem(userContent, '', _aiConfig);
|
88
|
+
};
|
89
|
+
|
90
|
+
/**
|
91
|
+
* 流式调用
|
92
|
+
* @author 韦胜健
|
93
|
+
* @date 2025/5/20 19:27
|
94
|
+
*/
|
95
|
+
const chatStream = async (
|
96
|
+
{
|
97
|
+
aiConfig: _aiConfig,
|
98
|
+
messages,
|
99
|
+
onReceiving,
|
100
|
+
onFinish,
|
101
|
+
onThinking,
|
102
|
+
onThinkEnd,
|
103
|
+
onThinkStart,
|
104
|
+
abortEffects,
|
105
|
+
}: iAiChatStreamParameter
|
106
|
+
) => {
|
107
|
+
const aiConfig = _aiConfig ?? getConfig();
|
108
|
+
|
109
|
+
const controller = new AbortController();
|
110
|
+
!!abortEffects && abortEffects.push(() => {controller.abort('abort stream.');});
|
111
|
+
// 发送请求
|
112
|
+
const response = await fetch(aiConfig.url, {
|
113
|
+
method: 'POST',
|
114
|
+
headers: {
|
115
|
+
'Authorization': `Bearer ${aiConfig.key}`,
|
116
|
+
"Content-Type": 'application/json'
|
117
|
+
},
|
118
|
+
body: JSON.stringify({
|
119
|
+
"model": aiConfig.model,
|
120
|
+
"messages": messages,
|
121
|
+
// "messages": [{ role: 'user', content: '你好' }],
|
122
|
+
stream: true // 请求流式响应
|
123
|
+
}),
|
124
|
+
signal: controller.signal,
|
125
|
+
});
|
126
|
+
|
127
|
+
if (!response.ok || !response.body) {throw response;}
|
128
|
+
|
129
|
+
// 创建一个解码器来处理UTF-8文本
|
130
|
+
const decoder = new TextDecoder("utf-8");
|
131
|
+
|
132
|
+
let isThinking = false;
|
133
|
+
let thinkText = '';
|
134
|
+
let fullText = '';
|
135
|
+
|
136
|
+
// 读取响应流
|
137
|
+
const reader = response.body.getReader();
|
138
|
+
let done = false;
|
139
|
+
|
140
|
+
while (!done) {
|
141
|
+
const { value, done: readerDone } = await reader.read();
|
142
|
+
done = readerDone;
|
143
|
+
if (done) {
|
144
|
+
console.log('Chat stream done...');
|
145
|
+
let message = fullText;
|
146
|
+
if (message.slice(0, 7) === '```json' && message.slice(-3) === '```') {
|
147
|
+
message = message.slice(7, -3).trim();
|
148
|
+
}
|
149
|
+
onReceiving({ fullText: fullText, chunkText: '' });
|
150
|
+
onFinish?.(message);
|
151
|
+
}
|
152
|
+
if (!value?.length) {
|
153
|
+
continue;
|
154
|
+
}
|
155
|
+
|
156
|
+
const receiveText = (() => {
|
157
|
+
let text = '';
|
158
|
+
let chunk = decoder.decode(value, { stream: true });
|
159
|
+
const pattern = /data: (.*)/g;
|
160
|
+
let match = pattern.exec(chunk);
|
161
|
+
while (match) {
|
162
|
+
if (match[1] === '[DONE]') {
|
163
|
+
return text;
|
164
|
+
} else {
|
165
|
+
const obj = JSON.parse(match[1]);
|
166
|
+
text += obj.choices[0].delta.content ?? '';
|
167
|
+
}
|
168
|
+
match = pattern.exec(chunk);
|
169
|
+
}
|
170
|
+
return text;
|
171
|
+
})();
|
172
|
+
|
173
|
+
if (receiveText.slice(0, 8) === '<think>') {
|
174
|
+
isThinking = true;
|
175
|
+
// thinkText += receiveText;
|
176
|
+
onThinkStart?.();
|
177
|
+
onThinking?.(thinkText);
|
178
|
+
} else if (receiveText.slice(-8) === '</think>') {
|
179
|
+
isThinking = false;
|
180
|
+
// thinkText += receiveText;
|
181
|
+
onThinkEnd?.();
|
182
|
+
onThinking?.(thinkText);
|
183
|
+
} else {
|
184
|
+
|
185
|
+
if (isThinking) {
|
186
|
+
thinkText += receiveText;
|
187
|
+
onThinking?.(thinkText);
|
188
|
+
} else {
|
189
|
+
fullText += receiveText;
|
190
|
+
onReceiving({ fullText: fullText, chunkText: receiveText });
|
191
|
+
}
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
return response;
|
196
|
+
};
|
197
|
+
|
198
|
+
|
199
|
+
/**
|
200
|
+
* 根据ai对话,将用户描述转化为表单数据对象,
|
201
|
+
* @author 韦胜健
|
202
|
+
* @date 2025/4/7 22:40
|
203
|
+
*/
|
204
|
+
const getFormDataByChat = async (fields: iTableAiOperatePlcMeta[], config?: { title?: string, placeholder?: string }): Promise<PlainObject[]> => {
|
205
|
+
|
206
|
+
const dfd = defer<PlainObject[]>();
|
207
|
+
|
208
|
+
fields = fields.filter(i =>
|
209
|
+
i.field != 'id' &&
|
210
|
+
i.field != 'createdAt' &&
|
211
|
+
i.field != 'createdBy' &&
|
212
|
+
i.field != 'updatedAt' &&
|
213
|
+
i.field != 'updatedBy'
|
214
|
+
);
|
215
|
+
|
216
|
+
const systemContent = `
|
217
|
+
当前时间是:${createSimpleDate()["YYYY-MM-DD HH:mm:ss"]}
|
218
|
+
你是一名专业的自然语言分析师,你需要将用户描述转化为一个json对象数据;这个json对象的属性是确定的,json对象的属性名来源于以下的字段的field,这个属性对应的值需要你从用户描述中获取,没有的话就给默认值null;
|
219
|
+
目前支持的字段:
|
220
|
+
${JSON.stringify(fields)}
|
221
|
+
|
222
|
+
注意的是,如果字段的filterType为date,那么这个字段的值为日期字符串,格式为YYYY-MM-DD
|
223
|
+
如果这个字段的filterType为datetime,那么这个字段的值为日期时间字符串,格式为YYYY-MM-DD HH:mm:ss,如果用户仅给出了日期没有给出时间,那么给一个默认的时间,当这个字段是开始日期时间时,这个时间的默认值为00:00:00;当这个字段是是结束日期时间时,这个时间的默认值为23:59:59;
|
224
|
+
如果用户给出的某个字段的值有多个,那么这个字段的值用数字来表示;
|
225
|
+
|
226
|
+
如果用户给了多条数据,那么你应该返回这个json对象数组;
|
227
|
+
最后你给我返回的数据格式为{data,message},如果能解析出来上面说的json对象的话就放在这个结果的data属性中;如果遇到错误,比如用户指定了一个无法识别的字段,则需要将错误原因写在结果的message中;
|
228
|
+
如果用户提问其他的问题,一律拒绝回答;
|
229
|
+
`.trim();
|
230
|
+
|
231
|
+
const close = $dialog({
|
232
|
+
title: config?.title || i18n.$it('table.aiButton').d('AI对话'),
|
233
|
+
position: 'right',
|
234
|
+
noFoot: true,
|
235
|
+
width: '500px',
|
236
|
+
render: () => (
|
237
|
+
<AiChatBox
|
238
|
+
fitHeight
|
239
|
+
systemContent={systemContent}
|
240
|
+
handleMessage={handleMessage}
|
241
|
+
placeholder={config?.placeholder || i18n.$it('ai.formAiPlaceholder').d("一句话描述你要编辑的数据内容")}
|
242
|
+
/>
|
243
|
+
)
|
244
|
+
});
|
245
|
+
|
246
|
+
const handleMessage = async ({ message }: { message: string }): Promise<iChatBoxHistory | iChatBoxHistory[] | void> => {
|
247
|
+
try {
|
248
|
+
const result: { data: PlainObject | PlainObject[], message?: string } = JSON.parse(message);
|
249
|
+
if (!!result.message) {
|
250
|
+
return [{ id: uuid(), role: 'assistant', content: result.message }];
|
251
|
+
} else {
|
252
|
+
close();
|
253
|
+
dfd.resolve(toArray(result.data));
|
254
|
+
return [];
|
255
|
+
}
|
256
|
+
} catch (e: any) {
|
257
|
+
console.error(e);
|
258
|
+
return [{ id: uuid(), role: 'assistant', content: JSON.stringify(e.message || e) }];
|
259
|
+
}
|
260
|
+
};
|
261
|
+
|
262
|
+
return dfd.promise;
|
263
|
+
};
|
264
|
+
|
265
|
+
return {
|
266
|
+
chat,
|
267
|
+
chatSystem,
|
268
|
+
chatHistories,
|
269
|
+
getConfig,
|
270
|
+
getFormDataByChat,
|
271
|
+
chatStream,
|
272
|
+
};
|
273
|
+
})();
|
274
|
+
|
275
|
+
export interface iAiConfiguration {
|
276
|
+
/*大模型的调用地址*/
|
277
|
+
url: string,
|
278
|
+
/*大模型的调用key*/
|
279
|
+
key: string,
|
280
|
+
/*调用的大模型名称*/
|
281
|
+
model: string,
|
282
|
+
}
|
283
|
+
|
284
|
+
export interface iAiHistory {
|
285
|
+
role: 'user' | 'assistant' | 'system';
|
286
|
+
content?: string;
|
287
|
+
}
|
288
|
+
|
289
|
+
export interface iAiChoice {
|
290
|
+
/**
|
291
|
+
* 模型停止生成 token 的原因。取值范围:
|
292
|
+
*
|
293
|
+
* stop:模型输出自然结束,或因命中请求参数 stop 中指定的字段而被截断。
|
294
|
+
* length:模型输出因达到模型输出限制而被截断。
|
295
|
+
* max_token:回答内容的长度限制。
|
296
|
+
* max_completion_tokens:思维链内容+回答内容的长度限制。
|
297
|
+
* context window :输入内容+思维链内容+回答内容的长度限制。
|
298
|
+
* content_filter:模型输出被内容审核拦截。
|
299
|
+
* tool_calls:模型调用了工具。
|
300
|
+
*
|
301
|
+
* @author 韦胜健
|
302
|
+
* @date 2025/4/5 21:37
|
303
|
+
*/
|
304
|
+
finish_reason: string,
|
305
|
+
/*当前元素在choices列表中的索引*/
|
306
|
+
index: number,
|
307
|
+
/**
|
308
|
+
* 当前内容的对数概率信息。
|
309
|
+
* 默认不返回输出 tokens 的对数概率,该值为null。
|
310
|
+
* 如需返回对数概率,请将请求参数 logprobs 设置为 true。
|
311
|
+
* @author 韦胜健
|
312
|
+
* @date 2025/4/5 21:38
|
313
|
+
*/
|
314
|
+
logprobs: any,
|
315
|
+
/*模型输出内容*/
|
316
|
+
message: iAiHistory
|
317
|
+
}
|
318
|
+
|
319
|
+
export interface iAiChatResponse {
|
320
|
+
/*iAiChoice*/
|
321
|
+
choices: iAiChoice[],
|
322
|
+
/*本次请求创建时间的 Unix 时间戳(秒)*/
|
323
|
+
created: number,
|
324
|
+
/*请求id*/
|
325
|
+
id: string,
|
326
|
+
/*调用的模型名称*/
|
327
|
+
model: string,
|
328
|
+
/*固定值chat.completion*/
|
329
|
+
object: string,
|
330
|
+
/**
|
331
|
+
* 本次请求是否使用了TPM保障包。
|
332
|
+
*
|
333
|
+
* scale:本次请求使用TPM保障包额度。
|
334
|
+
* default:本次请求未使用TPM保障包额度。
|
335
|
+
*
|
336
|
+
* @author 韦胜健
|
337
|
+
* @date 2025/4/5 21:41
|
338
|
+
*/
|
339
|
+
service_tier: string,
|
340
|
+
/*本次请求的 token 用量。*/
|
341
|
+
usage: {
|
342
|
+
/*模型生成的 token 数量。*/
|
343
|
+
completion_tokens: number,
|
344
|
+
/*本次请求花费的 token 的细节。其中reasoning_tokens是指输出思维链内容花费的 token 。*/
|
345
|
+
completion_tokens_details: {
|
346
|
+
reasoning_tokens: number,
|
347
|
+
},
|
348
|
+
/*输入的 prompt token 数量。*/
|
349
|
+
prompt_tokens: number,
|
350
|
+
/*prompt_tokens中命中上下文缓存的tokens数。需要开通上下文缓存功能,并创建缓存才会启用*/
|
351
|
+
prompt_tokens_details: {
|
352
|
+
cached_tokens: number,
|
353
|
+
},
|
354
|
+
/*本次请求消耗的总 token 数量(输入 + 输出)。*/
|
355
|
+
total_tokens: number,
|
356
|
+
}
|
357
|
+
}
|
358
|
+
|
359
|
+
export interface iAiChatStreamParameter {
|
360
|
+
aiConfig?: iAiConfiguration,
|
361
|
+
messages: iAiHistory[],
|
362
|
+
onReceiving: (data: { fullText: string, chunkText: string }) => void,
|
363
|
+
onFinish?: (fullText: string) => void,
|
364
|
+
onThinking?: (thinkText: string) => void,
|
365
|
+
onThinkStart?: () => void,
|
366
|
+
onThinkEnd?: () => void,
|
367
|
+
abortEffects?: iEffects,
|
368
|
+
}
|
@@ -1,10 +1,11 @@
|
|
1
|
-
import {createHooks, inject} from "
|
1
|
+
import {anonymousEffects, createHooks, inject} from "@peryl/react-compose";
|
2
2
|
import {iUploadService} from "../$upload/createUploadService";
|
3
3
|
import {iHttp} from "../createHttp";
|
4
4
|
import {iAddressService} from "../$address/createAddressService";
|
5
5
|
import {iObjectService} from "../$object/createObjectService";
|
6
6
|
import {iOvService} from "../$ov/createOvService";
|
7
7
|
import TableOptionSpace from "../TableOptionSpace";
|
8
|
+
import {iAiConfiguration} from "../$ai";
|
8
9
|
|
9
10
|
export interface iConfiguration {
|
10
11
|
address?: iAddressService,
|
@@ -13,6 +14,7 @@ export interface iConfiguration {
|
|
13
14
|
object?: iObjectService,
|
14
15
|
http: iHttp,
|
15
16
|
useTableOption: TableOptionSpace.iTableOptionUser,
|
17
|
+
aiConfig?: iAiConfiguration,
|
16
18
|
getExcelJS?: () => Promise<{ Workbook: any }>,
|
17
19
|
getFileSaver?: () => Promise<{ saveAs: (...args: any[]) => void }>,
|
18
20
|
}
|
@@ -22,7 +24,7 @@ export interface iConfiguration {
|
|
22
24
|
* @author 韦胜健
|
23
25
|
* @date 2022/7/13 10:56
|
24
26
|
*/
|
25
|
-
export const onInitializeConfigurationHook = createHooks<(configuration: iConfiguration) => void>();
|
27
|
+
export const onInitializeConfigurationHook = createHooks<(configuration: iConfiguration) => void>(anonymousEffects);
|
26
28
|
|
27
29
|
export const $configuration = (() => {
|
28
30
|
let _configuration: iConfiguration;
|
@@ -1,6 +1,8 @@
|
|
1
|
-
import {defer} from "
|
1
|
+
import {defer} from "@peryl/utils/defer";
|
2
2
|
import {$message} from "../$message";
|
3
3
|
import i18n from "../i18n";
|
4
|
+
import $configuration from "../$configuration";
|
5
|
+
import {createSimpleDate} from "../createSimpleDate";
|
4
6
|
|
5
7
|
export type FileServiceSingleFile = File & { calcSize: number, data?: any }
|
6
8
|
export type FileServiceValidator = (file: FileServiceSingleFile) => boolean | undefined
|
@@ -156,11 +158,52 @@ export function createFileService() {
|
|
156
158
|
return xhr;
|
157
159
|
};
|
158
160
|
|
161
|
+
/**
|
162
|
+
* 导出数据为excel文件
|
163
|
+
* @author 韦胜健
|
164
|
+
* @date 2025/4/8 12:32
|
165
|
+
*/
|
166
|
+
const export2file = async ({ exportData, fileName, columns }: { exportData: any[], fileName?: string, columns: { header?: string, key: string }[] }) => {
|
167
|
+
// 导出excel
|
168
|
+
let [ExcelJs, FileSaver] = await Promise.all([
|
169
|
+
$configuration.get('getExcelJS')?.(),
|
170
|
+
$configuration.get('getFileSaver')?.()
|
171
|
+
]);
|
172
|
+
|
173
|
+
if (!!ExcelJs && !!(ExcelJs as any).default) {ExcelJs = (ExcelJs as any).default;}
|
174
|
+
if (!!FileSaver && !!(FileSaver as any).default) {FileSaver = (FileSaver as any).default;}
|
175
|
+
|
176
|
+
if (!ExcelJs) {
|
177
|
+
throw new Error('请在$configuration中提供exceljs依赖');
|
178
|
+
}
|
179
|
+
if (!FileSaver) {
|
180
|
+
throw new Error('请在$configuration中提供filesaver依赖');
|
181
|
+
}
|
182
|
+
|
183
|
+
const workbook = new ExcelJs.Workbook();
|
184
|
+
const worksheet = workbook.addWorksheet('sheet');
|
185
|
+
worksheet.columns = [
|
186
|
+
{ header: 'Id', key: 'id', width: 10 },
|
187
|
+
{ header: 'Name', key: 'name', width: 32 },
|
188
|
+
{ header: 'D.O.B.', key: 'DOB', width: 10, outlineLevel: 1 }
|
189
|
+
];
|
190
|
+
worksheet.columns = columns;
|
191
|
+
exportData.forEach(data => {worksheet.addRow(data);});
|
192
|
+
|
193
|
+
const buffer = await workbook.xlsx.writeBuffer();
|
194
|
+
|
195
|
+
FileSaver.saveAs(
|
196
|
+
new Blob([buffer], { type: 'application/vnd.ms-excel' }),
|
197
|
+
`${fileName || createSimpleDate()["YYYY-MM-DD HH:mm:ss"]}.xlsx`
|
198
|
+
);
|
199
|
+
};
|
200
|
+
|
159
201
|
return {
|
160
202
|
chooseFile,
|
161
203
|
chooseImage,
|
162
204
|
readAsDataURL,
|
163
205
|
upload,
|
206
|
+
export2file,
|
164
207
|
};
|
165
208
|
}
|
166
209
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import $dialog from "../$dialog";
|
2
|
+
import ImageSelector, {iImageSelectOption} from "../ImageSelector";
|
3
|
+
import {iDialogServiceOption} from "../useDialog/dialog.service.utils";
|
4
|
+
import $message from "../$message";
|
5
|
+
import i18n from "../i18n";
|
6
|
+
|
7
|
+
export const $imageSelector = (
|
8
|
+
{
|
9
|
+
selectOptions,
|
10
|
+
selectValue,
|
11
|
+
dialogServiceOption,
|
12
|
+
handleConfirm,
|
13
|
+
title,
|
14
|
+
aspectRatio,
|
15
|
+
imageFit,
|
16
|
+
imagePosition,
|
17
|
+
}: {
|
18
|
+
title?: string,
|
19
|
+
selectOptions: iImageSelectOption[],
|
20
|
+
selectValue?: any,
|
21
|
+
dialogServiceOption?: iDialogServiceOption,
|
22
|
+
handleConfirm?: (selectValue: string, selectOption: iImageSelectOption) => void | boolean | Promise<void | boolean>,
|
23
|
+
aspectRatio?: string,
|
24
|
+
imageFit?: string,
|
25
|
+
imagePosition?: string,
|
26
|
+
}
|
27
|
+
) => {
|
28
|
+
const _handleConfirm = async () => {
|
29
|
+
if (!selectValue) {
|
30
|
+
$message.error(i18n.$it('base.pleaseSelect').d('请选择'));
|
31
|
+
return false;
|
32
|
+
}
|
33
|
+
const flag = await handleConfirm?.(selectValue, selectOptions.find(i => i.val === selectValue)!);
|
34
|
+
if (flag !== false) {close();}
|
35
|
+
};
|
36
|
+
const close = $dialog({
|
37
|
+
title,
|
38
|
+
width: 800,
|
39
|
+
render: () => <ImageSelector
|
40
|
+
imageFit={imageFit}
|
41
|
+
imagePosition={imagePosition}
|
42
|
+
modelValue={selectValue}
|
43
|
+
onUpdateModelValue={val => selectValue = val}
|
44
|
+
selectOptions={selectOptions}
|
45
|
+
aspectRatio={aspectRatio}
|
46
|
+
onDoubleClickOption={() => {_handleConfirm();}}
|
47
|
+
/>,
|
48
|
+
confirmButton: true,
|
49
|
+
cancelButton: true,
|
50
|
+
handleConfirm: () => {
|
51
|
+
_handleConfirm();
|
52
|
+
return false;
|
53
|
+
},
|
54
|
+
...dialogServiceOption,
|
55
|
+
});
|
56
|
+
};
|