@flatbiz/antd 4.5.41 → 4.5.43

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.
Files changed (219) hide show
  1. package/esm/_rollupPluginBabelHelpers-c0dbec57.js +3 -0
  2. package/esm/_rollupPluginBabelHelpers-c0dbec57.js.map +1 -0
  3. package/esm/ace-editor-groovy/index.js +1 -1
  4. package/esm/ace-editor-groovy/index.js.map +1 -1
  5. package/esm/ace-editor-java/index.js +1 -1
  6. package/esm/ace-editor-java/index.js.map +1 -1
  7. package/esm/ace-editor-json/index.js +1 -1
  8. package/esm/ace-editor-json/index.js.map +1 -1
  9. package/esm/ace-editor-mysql/index.js +1 -1
  10. package/esm/ace-editor-mysql/index.js.map +1 -1
  11. package/esm/ace-editor-xml/index.js +1 -1
  12. package/esm/ace-editor-xml/index.js.map +1 -1
  13. package/esm/alert-wrapper/index.js +1 -1
  14. package/esm/amount-fen-input/index.js +1 -1
  15. package/esm/amount-fen-input/index.js.map +1 -1
  16. package/esm/amount-fen-input-form-item/index.js +1 -1
  17. package/esm/anchor-steps/index.js +1 -1
  18. package/esm/anchor-steps/index.js.map +1 -1
  19. package/esm/block-layout/index.js +1 -1
  20. package/esm/bootstrap/index.js +1 -1
  21. package/esm/box-grid/index.js +1 -1
  22. package/esm/box-grid/index.js.map +1 -1
  23. package/esm/button-operate/index.js +1 -1
  24. package/esm/button-operate/index.js.map +1 -1
  25. package/esm/button-wrapper/index.js +1 -1
  26. package/esm/card-layout/index.js +1 -1
  27. package/esm/card-wrapper/index.js +1 -1
  28. package/esm/cascader-wrapper/index.js +1 -1
  29. package/esm/cascader-wrapper/index.js.map +1 -1
  30. package/esm/check-list/index.js +1 -1
  31. package/esm/check-list/index.js.map +1 -1
  32. package/esm/checkbox-wrapper/index.js +1 -1
  33. package/esm/checkbox-wrapper/index.js.map +1 -1
  34. package/esm/color-picker-wrapper/index.js +1 -1
  35. package/esm/color-picker-wrapper/index.js.map +1 -1
  36. package/esm/config-provider-wrapper/index.js +1 -1
  37. package/esm/create-drawer-wrapper-model/index.js.map +1 -1
  38. package/esm/create-modal-wrapper-model/index.js.map +1 -1
  39. package/esm/css-node-hover/index.js +1 -1
  40. package/esm/date-picker-wrapper/index.js +1 -1
  41. package/esm/date-picker-wrapper/index.js.map +1 -1
  42. package/esm/date-range-picker-wrapper/index.js +1 -1
  43. package/esm/date-range-picker-wrapper/index.js.map +1 -1
  44. package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
  45. package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
  46. package/esm/delete-node/index.js +1 -1
  47. package/esm/dialog-alert/index.js +1 -1
  48. package/esm/dialog-alert/index.js.map +1 -1
  49. package/esm/dialog-confirm/index.js +1 -1
  50. package/esm/dialog-confirm/index.js.map +1 -1
  51. package/esm/dialog-drawer/index.js +1 -1
  52. package/esm/dialog-drawer/index.js.map +1 -1
  53. package/esm/dialog-drawer-content/index.js +1 -1
  54. package/esm/dialog-loading/index.js +1 -1
  55. package/esm/dialog-loading/index.js.map +1 -1
  56. package/esm/dialog-modal/index.js +1 -1
  57. package/esm/dialog-modal/index.js.map +1 -1
  58. package/esm/dialog-preview-image/index.js +1 -1
  59. package/esm/dialog-preview-image/index.js.map +1 -1
  60. package/esm/drag-collapse/index.js +1 -1
  61. package/esm/drag-collapse/index.js.map +1 -1
  62. package/esm/drag-collapse-form-list/index.js +1 -1
  63. package/esm/drag-collapse-form-list/index.js.map +1 -1
  64. package/esm/drag-editable-card/index.js +1 -1
  65. package/esm/drag-editable-card/index.js.map +1 -1
  66. package/esm/drag-editable-table/index.js +1 -1
  67. package/esm/drag-editable-table/index.js.map +1 -1
  68. package/esm/drag-editable-table-pro/index.js +1 -1
  69. package/esm/drag-editable-table-pro/index.js.map +1 -1
  70. package/esm/drag-form-list/index.js +1 -1
  71. package/esm/drag-form-list/index.js.map +1 -1
  72. package/esm/drag-table/index.js +1 -1
  73. package/esm/drag-table/index.js.map +1 -1
  74. package/esm/drawer-wrapper/index.js +1 -1
  75. package/esm/dropdown-menu-wrapper/index.js +1 -1
  76. package/esm/dynamic-node/index.js +1 -1
  77. package/esm/dynamic-node/index.js.map +1 -1
  78. package/esm/easy-form/index.js +1 -1
  79. package/esm/easy-table/index.css +1 -1
  80. package/esm/easy-table/index.js +1 -1
  81. package/esm/easy-table/index.js.map +1 -1
  82. package/esm/editable-card/index.js +1 -1
  83. package/esm/editable-card/index.js.map +1 -1
  84. package/esm/editable-field/index.js +1 -1
  85. package/esm/editable-field/index.js.map +1 -1
  86. package/esm/editable-table/index.js +1 -1
  87. package/esm/editable-table/index.js.map +1 -1
  88. package/esm/editable-table-pro/index.js +1 -1
  89. package/esm/editable-table-pro/index.js.map +1 -1
  90. package/esm/editor-wrapper/index.js +1 -1
  91. package/esm/editor-wrapper/index.js.map +1 -1
  92. package/esm/error-boundary-wrapper/index.js +1 -1
  93. package/esm/error-boundary-wrapper/index.js.map +1 -1
  94. package/esm/fba-app/index.js +1 -1
  95. package/esm/fba-app/index.js.map +1 -1
  96. package/esm/fba-hooks/index.js +1 -1
  97. package/esm/file-export/index.js +1 -1
  98. package/esm/file-export/index.js.map +1 -1
  99. package/esm/file-import/index.js +1 -1
  100. package/esm/file-select/index.js +1 -1
  101. package/esm/file-select/index.js.map +1 -1
  102. package/esm/flex-layout/index.js +1 -1
  103. package/esm/form-grid/index.js +1 -1
  104. package/esm/form-item-group/index.js +1 -1
  105. package/esm/form-item-span/index.js +1 -1
  106. package/esm/form-item-text/index.js +1 -1
  107. package/esm/form-item-text/index.js.map +1 -1
  108. package/esm/form-item-wrapper/index.js +1 -1
  109. package/esm/form-item-wrapper/index.js.map +1 -1
  110. package/esm/form-item-wrapper-dependencies/index.js +1 -1
  111. package/esm/form-list-wrapper/index.js +1 -1
  112. package/esm/form-list-wrapper/index.js.map +1 -1
  113. package/esm/form-wrapper/index.js +1 -1
  114. package/esm/gap/index.js +1 -1
  115. package/esm/icon-wrapper/index.css +1 -1
  116. package/esm/icon-wrapper/index.js +1 -1
  117. package/esm/icon-wrapper/index.js.map +1 -1
  118. package/esm/{index-7f4ad045.js → index-83bede1b.js} +2 -2
  119. package/esm/{index-7f4ad045.js.map → index-83bede1b.js.map} +1 -1
  120. package/esm/index.js +1 -1
  121. package/esm/input-search-wrapper/index.js +1 -1
  122. package/esm/input-search-wrapper/index.js.map +1 -1
  123. package/esm/input-text-area-wrapper/index.js +1 -1
  124. package/esm/input-text-area-wrapper/index.js.map +1 -1
  125. package/esm/input-wrapper/index.js +1 -1
  126. package/esm/input-wrapper/index.js.map +1 -1
  127. package/esm/json-editor/index.js +1 -1
  128. package/esm/json-editor/index.js.map +1 -1
  129. package/esm/label-value-layout/index.js +1 -1
  130. package/esm/label-value-render/index.js +1 -1
  131. package/esm/label-value-render/index.js.map +1 -1
  132. package/esm/local-loading/index.js +1 -1
  133. package/esm/local-loading/index.js.map +1 -1
  134. package/esm/mention-editor/index.js +1 -1
  135. package/esm/mention-editor/index.js.map +1 -1
  136. package/esm/mentions-wrapper/index.js +1 -1
  137. package/esm/mentions-wrapper/index.js.map +1 -1
  138. package/esm/modal-action/index.js +1 -1
  139. package/esm/modal-wrapper/index.js +1 -1
  140. package/esm/number-range-form-item/index.js +1 -1
  141. package/esm/number-range-form-item/index.js.map +1 -1
  142. package/esm/pagination-wrapper/index.js +1 -1
  143. package/esm/pdf/index.js +1 -1
  144. package/esm/pdf/index.js.map +1 -1
  145. package/esm/pdf-preview/index.js +1 -1
  146. package/esm/pdf-preview/index.js.map +1 -1
  147. package/esm/radio-group-wrapper/index.js +1 -1
  148. package/esm/radio-group-wrapper/index.js.map +1 -1
  149. package/esm/relation-tree/index.js +1 -1
  150. package/esm/relation-tree/index.js.map +1 -1
  151. package/esm/rich-text-editor/index.js +1 -1
  152. package/esm/rich-text-editor/index.js.map +1 -1
  153. package/esm/rich-text-viewer/index.js +1 -1
  154. package/esm/rich-text-viewer/index.js.map +1 -1
  155. package/esm/roll-location-center/index.js +1 -1
  156. package/esm/roll-location-center/index.js.map +1 -1
  157. package/esm/roll-location-in-view/index.js +1 -1
  158. package/esm/roll-location-in-view/index.js.map +1 -1
  159. package/esm/rule-describe/index.js +1 -1
  160. package/esm/search-form/index.js +1 -1
  161. package/esm/search-form/index.js.map +1 -1
  162. package/esm/search-menu/index.js +1 -1
  163. package/esm/search-menu/index.js.map +1 -1
  164. package/esm/selector-wrapper/index.js +1 -1
  165. package/esm/selector-wrapper/index.js.map +1 -1
  166. package/esm/selector-wrapper-search/index.js +1 -1
  167. package/esm/selector-wrapper-search/index.js.map +1 -1
  168. package/esm/selector-wrapper-simple/index.js +1 -1
  169. package/esm/selector-wrapper-simple/index.js.map +1 -1
  170. package/esm/simple-layout/index.js +1 -1
  171. package/esm/sms-count-down/index.js +1 -1
  172. package/esm/sms-count-down/index.js.map +1 -1
  173. package/esm/split-wrapper/index.js +1 -1
  174. package/esm/svg-http-view/index.js +1 -1
  175. package/esm/switch-confirm-wrapper/index.js +1 -1
  176. package/esm/switch-confirm-wrapper/index.js.map +1 -1
  177. package/esm/switch-wrapper/index.js +1 -1
  178. package/esm/switch-wrapper/index.js.map +1 -1
  179. package/esm/table-cell-render/index.js +1 -1
  180. package/esm/table-scrollbar/index.js +1 -1
  181. package/esm/table-scrollbar/index.js.map +1 -1
  182. package/esm/tabs-sticky/index.js +1 -1
  183. package/esm/tabs-sticky/index.js.map +1 -1
  184. package/esm/tabs-wrapper/index.js +1 -1
  185. package/esm/tabs-wrapper/index.js.map +1 -1
  186. package/esm/tag-group/index.js +1 -1
  187. package/esm/tag-list-render/index.js +1 -1
  188. package/esm/tag-list-render/index.js.map +1 -1
  189. package/esm/tag-wrapper/index.js +1 -1
  190. package/esm/text-css-ellipsis/index.js +1 -1
  191. package/esm/text-css-ellipsis/index.js.map +1 -1
  192. package/esm/text-overflow/index.js +1 -1
  193. package/esm/text-overflow-render/index.js +1 -1
  194. package/esm/text-symbol-wrapper/index.js +1 -1
  195. package/esm/time-picker-wrapper/index.js +1 -1
  196. package/esm/time-picker-wrapper/index.js.map +1 -1
  197. package/esm/time-range-picker-wrapper/index.js +1 -1
  198. package/esm/time-range-picker-wrapper/index.js.map +1 -1
  199. package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
  200. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  201. package/esm/tips-title/index.js +1 -1
  202. package/esm/tips-wrapper/index.js +1 -1
  203. package/esm/tree-modal/index.js +1 -1
  204. package/esm/tree-modal/index.js.map +1 -1
  205. package/esm/tree-modal-selector/index.js +1 -1
  206. package/esm/tree-modal-selector/index.js.map +1 -1
  207. package/esm/tree-selector-wrapper/index.js +1 -1
  208. package/esm/tree-selector-wrapper/index.js.map +1 -1
  209. package/esm/tree-wrapper/index.css +1 -1
  210. package/esm/tree-wrapper/index.js +1 -1
  211. package/esm/tree-wrapper/index.js.map +1 -1
  212. package/esm/upload-wrapper/index.js +1 -1
  213. package/esm/upload-wrapper/index.js.map +1 -1
  214. package/esm/x-mind-preview/index.js +1 -1
  215. package/esm/x-mind-preview/index.js.map +1 -1
  216. package/index.d.ts +74 -63
  217. package/package.json +1 -1
  218. package/esm/_rollupPluginBabelHelpers-a0769acd.js +0 -3
  219. package/esm/_rollupPluginBabelHelpers-a0769acd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/utils.ts","@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["export const getBase64 = (file): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n","import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { isUndefinedOrNull, openNewWindow, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { UploadProps } from 'antd';\nimport { Button, Image, message, Upload } from 'antd';\nimport type { UploadChangeParam } from 'antd/lib/upload';\nimport type { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cloneElement, Fragment, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { getBase64 } from './utils';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[] | T;\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性取值映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n /** 文件大小 */\n size?: string | number;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n /** 图片预览开关, 重写 onPreview 方法后失效 */\n imagePreviewSwitch?: boolean;\n /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif'] */\n imagePreviewAccept?: string[];\n /**\n * 配置文件额外操作\n * ```\n * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式\n * ```\n */\n extraOperate?: {\n icon: ReactElement;\n onClick: (file: UploadFile, fileList: UploadFile[], e) => void;\n }[];\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n *\n * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可,\n * 2. 其他需要的字段可在对象中添加 responseData 对象\n * 例如:\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * responseData: { 'xx':'xxx' }\n * }]\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const {\n onChange,\n onUploadError,\n value,\n triggerText,\n limitHidden,\n autoSubmit,\n imagePreviewSwitch,\n imagePreviewAccept,\n extraOperate,\n ...otherProps\n } = props;\n const imagePreviewAcceptFt = isUndefinedOrNull(imagePreviewAccept)\n ? ['png', 'jpg', 'jpeg', 'gif']\n : imagePreviewAccept;\n const [previewImage, setPreviewImage] = useState<string>();\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n size: 'size',\n },\n props.fieldNames,\n );\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n size: item[fieldNames.size],\n responseData: item['responseData'],\n status: 'done',\n isOriginal: true,\n });\n }\n });\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, valueList]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n const target: TPlainObject = {\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n };\n if (!isUndefinedOrNull(item.size)) {\n target[fieldNames.size] = item.size;\n }\n if (item['responseData']) {\n target.responseData = item['responseData'];\n }\n newFileList.push(target);\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n const target: TPlainObject = {\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n };\n if (!isUndefinedOrNull(result[fieldNames.size])) {\n target[fieldNames.size] = result[fieldNames.size];\n }\n newFileList.push({\n ...target,\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.uid;\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n const handlePreview = async (file: UploadFile) => {\n const name = file.name || '';\n const extension = name.slice(name.lastIndexOf('.') + 1);\n const acceptTarget = imagePreviewAcceptFt?.find((item) => {\n return item.toLocaleLowerCase() === extension.toLocaleLowerCase();\n });\n if (acceptTarget) {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj);\n }\n setPreviewImage(file.url || (file.preview as string));\n } else {\n openNewWindow(file.url as string);\n }\n };\n\n return (\n <Fragment>\n <Upload\n beforeUpload={beforeUpload}\n onPreview={imagePreviewSwitch ? handlePreview : undefined}\n showUploadList\n itemRender={(originNode, file, fileList) => {\n if (!extraOperate || !extraOperate.length) return originNode;\n const countSign = `${otherProps.disabled ? 1 : 2}-${extraOperate.length}`;\n return (\n <div\n className={classNames(\n 'v-upload-list-item-actions-wrapper',\n `v-upload-list-item-extra-actions-${countSign}`,\n )}\n style={{ height: '100%' }}\n >\n {cloneElement(originNode, {\n children: [\n originNode.props.children,\n <div key=\"extra-actions\" className=\"v-upload-list-item-extra-actions\">\n {extraOperate.map((item, index) => {\n return (\n <ButtonWrapper\n key={index}\n size=\"small\"\n type=\"text\"\n icon={item.icon}\n onClick={item.onClick.bind(null, file, fileList)}\n />\n );\n })}\n </div>,\n ].filter(Boolean),\n })}\n </div>\n );\n }}\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n {previewImage ? (\n <Image\n wrapperStyle={{ display: 'none' }}\n preview={{\n visible: !!previewImage,\n onVisibleChange: () => setPreviewImage(undefined),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n ) : null}\n </Fragment>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate","otherProps","_objectWithoutPropertiesLoose","_excluded","imagePreviewAcceptFt","isUndefinedOrNull","_useState","useState","previewImage","setPreviewImage","_useState2","uploadList","setUploadList","fieldNames","_extend","uid","name","url","size","valueList","useMemo","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","responseData","status","isOriginal","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_target","target","_isPlainObject","code","_target3","respData","data","onRequestResultAdapter","_extends","errorMsg","message","onUploadChange","_hooks","useCallbackRef","info","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","handlePreview","$return","$error","extension","acceptTarget","lastIndexOf","find","toLocaleLowerCase","preview","originFileObj","then","$await_3","$If_2","call","this","$boundEx","bind","$If_1","openNewWindow","_jsxs","Fragment","children","_jsx","Upload","onPreview","showUploadList","itemRender","originNode","countSign","disabled","className","_classNames","style","height","cloneElement","index","ButtonWrapper","type","icon","onClick","Boolean","UploadTrigger","listType","Image","wrapperStyle","display","visible","onVisibleChange","afterOpenChange","src","_PlusOutlined","marginTop","Button","ghost"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/utils.ts","@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["export const getBase64 = (file): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n","import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { isUndefinedOrNull, openNewWindow, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { UploadProps } from 'antd';\nimport { Button, Image, message, Upload } from 'antd';\nimport type { UploadChangeParam } from 'antd/lib/upload';\nimport type { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cloneElement, Fragment, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { getBase64 } from './utils';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[] | T;\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性取值映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n /** 文件大小 */\n size?: string | number;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n /** 图片预览开关, 重写 onPreview 方法后失效 */\n imagePreviewSwitch?: boolean;\n /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif'] */\n imagePreviewAccept?: string[];\n /**\n * 配置文件额外操作\n * ```\n * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式\n * ```\n */\n extraOperate?: {\n icon: ReactElement;\n onClick: (file: UploadFile, fileList: UploadFile[], e) => void;\n }[];\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n *\n * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可,\n * 2. 其他需要的字段可在对象中添加 responseData 对象\n * 例如:\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * responseData: { 'xx':'xxx' }\n * }]\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const {\n onChange,\n onUploadError,\n value,\n triggerText,\n limitHidden,\n autoSubmit,\n imagePreviewSwitch,\n imagePreviewAccept,\n extraOperate,\n ...otherProps\n } = props;\n const imagePreviewAcceptFt = isUndefinedOrNull(imagePreviewAccept)\n ? ['png', 'jpg', 'jpeg', 'gif']\n : imagePreviewAccept;\n const [previewImage, setPreviewImage] = useState<string>();\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n size: 'size',\n },\n props.fieldNames,\n );\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n size: item[fieldNames.size],\n responseData: item['responseData'],\n status: 'done',\n isOriginal: true,\n });\n }\n });\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, valueList]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n const target: TPlainObject = {\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n };\n if (!isUndefinedOrNull(item.size)) {\n target[fieldNames.size] = item.size;\n }\n if (item['responseData']) {\n target.responseData = item['responseData'];\n }\n newFileList.push(target);\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n const target: TPlainObject = {\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n };\n if (!isUndefinedOrNull(result[fieldNames.size])) {\n target[fieldNames.size] = result[fieldNames.size];\n }\n newFileList.push({\n ...target,\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.uid;\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n const handlePreview = async (file: UploadFile) => {\n const name = file.name || '';\n const extension = name.slice(name.lastIndexOf('.') + 1);\n const acceptTarget = imagePreviewAcceptFt?.find((item) => {\n return item.toLocaleLowerCase() === extension.toLocaleLowerCase();\n });\n if (acceptTarget) {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj);\n }\n setPreviewImage(file.url || (file.preview as string));\n } else {\n openNewWindow(file.url as string);\n }\n };\n\n return (\n <Fragment>\n <Upload\n beforeUpload={beforeUpload}\n onPreview={imagePreviewSwitch ? handlePreview : undefined}\n showUploadList\n itemRender={(originNode, file, fileList) => {\n if (!extraOperate || !extraOperate.length) return originNode;\n const countSign = `${otherProps.disabled ? 1 : 2}-${extraOperate.length}`;\n return (\n <div\n className={classNames(\n 'v-upload-list-item-actions-wrapper',\n `v-upload-list-item-extra-actions-${countSign}`,\n )}\n style={{ height: '100%' }}\n >\n {cloneElement(originNode, {\n children: [\n originNode.props.children,\n <div key=\"extra-actions\" className=\"v-upload-list-item-extra-actions\">\n {extraOperate.map((item, index) => {\n return (\n <ButtonWrapper\n key={index}\n size=\"small\"\n type=\"text\"\n icon={item.icon}\n onClick={item.onClick.bind(null, file, fileList)}\n />\n );\n })}\n </div>,\n ].filter(Boolean),\n })}\n </div>\n );\n }}\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n {previewImage ? (\n <Image\n wrapperStyle={{ display: 'none' }}\n preview={{\n visible: !!previewImage,\n onVisibleChange: () => setPreviewImage(undefined),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n ) : null}\n </Fragment>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate","otherProps","_objectWithoutPropertiesLoose","_excluded","imagePreviewAcceptFt","isUndefinedOrNull","_useState","useState","previewImage","setPreviewImage","_useState2","uploadList","setUploadList","fieldNames","_extend","uid","name","url","size","valueList","useMemo","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","responseData","status","isOriginal","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_target","target","_isPlainObject","code","_target3","respData","data","onRequestResultAdapter","_extends","errorMsg","message","onUploadChange","_hooks","useCallbackRef","info","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","handlePreview","$return","$error","extension","acceptTarget","lastIndexOf","find","toLocaleLowerCase","preview","originFileObj","then","$await_3","$If_2","call","this","$boundEx","bind","$If_1","openNewWindow","_jsxs","Fragment","children","_jsx","Upload","onPreview","showUploadList","itemRender","originNode","countSign","disabled","className","_classNames","style","height","cloneElement","index","ButtonWrapper","type","icon","onClick","Boolean","UploadTrigger","listType","Image","wrapperStyle","display","visible","onVisibleChange","afterOpenChange","src","_PlusOutlined","marginTop","Button","ghost"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{classNames as r}from"@dimjs/utils/cjs/class-names";import{getUuid as e}from"@flatbiz/utils";import{useDebounceFn as n}from"ahooks";import{useRef as t,useCallback as i,useState as a,useEffect as o}from"react";import{createRoot as u}from"react-dom/client";import d from"simple-mind-map";import{jsx as c}from"react/jsx-runtime";function m(r){var e=t(r);e.current=r;return i((function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++){n[t]=arguments[t]}return e.current==null?void 0:e.current.apply(e,n)}),[])}var l=function i(l){var f=l.data,s=l.className,v=l.style,p=l.renderNode;var w=a(false),h=w[0],y=w[1];var M=t({id:"",mindMap:{}});if(!M.current.id){M.current.id="mindMapContainer-"+e()}o((function(){var r=new d({el:document.getElementById(M.current.id),fit:true,data:f,readonly:true,isUseCustomNodeContent:!!p,customCreateNodeContent:function r(e){var n=p==null?void 0:p(e.nodeData);if(!n)return null;var t=document.createElement("div");var i=n.width,a=n.height,o=n.reactNode;t.style.width=(i||200)+"px";t.style.height=(a||22)+"px";var d=u(t);d.render(o);return t}});M.current.mindMap=r;f&&y(true);return function(){r.destroy()}}),[]);o((function(){var r=M.current.mindMap;if(!r)return;!h&&g("node_tree_render_end",(function(){r.view.fit();y(true)}));r.setData(f||{})}),[f]);o((function(){window.addEventListener("resize",C);return function(){window.removeEventListener("resize",C)}}),[]);var N=n((function(){var r;M==null||(r=M.current.mindMap)==null?void 0:r.resize()})),x=N.run;var C=m(x);var g=m((function(r,e){var n=function n(){e();M.current.mindMap.off(r,n)};M.current.mindMap.on(r,n)}));return c("div",{className:r("x-mind-preview-panel-wrap",s),style:v,children:c("div",{id:M.current.id})})};export{l as XMindPreview};
4
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{getUuid as e}from"@flatbiz/utils";import{useDebounceFn as n}from"ahooks";import{useRef as t,useCallback as i,useState as a,useEffect as o}from"react";import{createRoot as u}from"react-dom/client";import d from"simple-mind-map";import{jsx as c}from"react/jsx-runtime";function m(r){var e=t(r);e.current=r;return i((function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++){n[t]=arguments[t]}return e.current==null?void 0:e.current.apply(e,n)}),[])}var l=function i(l){var f=l.data,s=l.className,v=l.style,p=l.renderNode;var w=a(false),h=w[0],y=w[1];var M=t({id:"",mindMap:{}});if(!M.current.id){M.current.id="mindMapContainer-"+e()}o((function(){var r=new d({el:document.getElementById(M.current.id),fit:true,data:f,readonly:true,isUseCustomNodeContent:!!p,customCreateNodeContent:function r(e){var n=p==null?void 0:p(e.nodeData);if(!n)return null;var t=document.createElement("div");var i=n.width,a=n.height,o=n.reactNode;t.style.width=(i||200)+"px";t.style.height=(a||22)+"px";var d=u(t);d.render(o);return t}});M.current.mindMap=r;f&&y(true);return function(){r.destroy()}}),[]);o((function(){var r=M.current.mindMap;if(!r)return;!h&&g("node_tree_render_end",(function(){r.view.fit();y(true)}));r.setData(f||{})}),[f]);o((function(){window.addEventListener("resize",C);return function(){window.removeEventListener("resize",C)}}),[]);var N=n((function(){var r;M==null||(r=M.current.mindMap)==null||r.resize()})),x=N.run;var C=m(x);var g=m((function(r,e){var n=function t(){e();M.current.mindMap.off(r,n)};M.current.mindMap.on(r,n)}));return c("div",{className:r("x-mind-preview-panel-wrap",s),style:v,children:c("div",{id:M.current.id})})};export{l as XMindPreview};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/x-mind-preview/_hooks/use-callback-ref.tsx","@flatbiz/antd/src/x-mind-preview/x-mind-preview.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args) => unknown>(fn: T | undefined): T {\n const ref = useRef(fn);\n\n ref.current = fn;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback(((...args) => ref.current?.(...args)) as T, []);\n}\n","import { classNames } from '@dimjs/utils';\nimport { getUuid } from '@flatbiz/utils';\nimport { useDebounceFn } from 'ahooks';\nimport { useEffect, useRef, useState, type FC } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport MindMap from 'simple-mind-map';\nimport type { TXMindTreeItem } from './type';\nimport './x-mind-preview.less';\nimport { useCallbackRef } from './_hooks/use-callback-ref';\n\nexport interface IXMindPreviewProps {\n data?: TXMindTreeItem;\n className?: string;\n style?: React.CSSProperties;\n /**\n * 自定义节点渲染内容:\n * 默认情况 xmind 会自动计算节点的宽高,\n * 自定义渲染react组件,因为初始拿不到宽高,所以要返回一个节点宽高\n * - 默认宽高 200 22\n * - 返回值为空则使用默认渲染\n * @param node\n * @returns\n */\n renderNode?: (node: TXMindTreeItem) => {\n width?: number;\n height?: number;\n reactNode: React.ReactNode;\n } | void;\n}\nexport const XMindPreview: FC<IXMindPreviewProps> = (props) => {\n const { data, className, style, renderNode } = props;\n const [isInitData, setIsInitData] = useState(false);\n\n const comRef = useRef({\n id: '',\n mindMap: {} as MindMap,\n });\n /** 防止dom id重复,id在一个组件内需要时唯一的 */\n if (!comRef.current.id) {\n comRef.current.id = `mindMapContainer-${getUuid()}`;\n }\n\n useEffect(() => {\n const mindMap = new MindMap({\n el: document.getElementById(comRef.current.id),\n fit: true,\n data,\n readonly: true,\n isUseCustomNodeContent: !!renderNode,\n customCreateNodeContent: (node) => {\n const customRenderOption = renderNode?.(node.nodeData);\n // 默认渲染\n if (!customRenderOption) return null;\n\n const el = document.createElement('div');\n // 自定义渲染\n const { width, height, reactNode } = customRenderOption;\n el.style.width = `${width || 200}px`;\n el.style.height = `${height || 22}px`;\n const root = createRoot(el);\n root.render(reactNode);\n\n return el;\n },\n } as ConstructorParameters<typeof MindMap>[0]);\n comRef.current.mindMap = mindMap;\n data && setIsInitData(true);\n\n return () => {\n mindMap.destroy();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /** 数据更新重置状态 */\n useEffect(() => {\n const { mindMap } = comRef.current;\n if (!mindMap) return;\n\n /** 只有第一次渲染的时候更新画布位置 */\n !isInitData &&\n handleListenOnce('node_tree_render_end', () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n mindMap.view.fit();\n setIsInitData(true);\n });\n mindMap.setData(data || {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n // 屏幕自适应\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const { run: handleResizeDebounce } = useDebounceFn(() => {\n comRef?.current.mindMap?.resize();\n });\n const handleResize = useCallbackRef(handleResizeDebounce);\n\n // 监听一次事件\n const handleListenOnce = useCallbackRef((eventName: string, callback: () => void) => {\n const fun = () => {\n callback();\n comRef.current.mindMap.off(eventName, fun);\n };\n comRef.current.mindMap.on(eventName, fun);\n });\n\n return (\n <div className={classNames('x-mind-preview-panel-wrap', className)} style={style}>\n <div id={comRef.current.id}></div>\n </div>\n );\n};\n"],"names":["useCallbackRef","fn","ref","useRef","current","useCallback","_len","arguments","length","args","Array","_key","apply","XMindPreview","props","data","className","style","renderNode","_useState","useState","isInitData","setIsInitData","comRef","id","mindMap","getUuid","useEffect","MindMap","el","document","getElementById","fit","readonly","isUseCustomNodeContent","customCreateNodeContent","node","customRenderOption","nodeData","createElement","width","height","reactNode","root","createRoot","render","destroy","handleListenOnce","view","setData","window","addEventListener","handleResize","removeEventListener","_useDebounceFn","useDebounceFn","_comRef$current$mindM","resize","handleResizeDebounce","run","eventName","callback","fun","off","on","_jsx","_classNames","children"],"mappings":";4UAEO,SAASA,EAA+CC,GAC7D,IAAMC,EAAMC,EAAOF,GAEnBC,EAAIE,QAAUH,EAGd,OAAOI,GAAa,WAAA,IAAA,IAAAC,EAAAC,UAAAC,OAAIC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAA,CAAJF,EAAIE,GAAAJ,UAAAI,EAAA,CAAA,OAAKT,EAAIE,SAAO,UAAA,EAAXF,EAAIE,QAAOQ,MAAXV,EAAiBO,EAAK,GAAQ,GACjE,KCoBaI,EAAuC,SAAvCA,EAAwCC,GACnD,IAAQC,EAAuCD,EAAvCC,KAAMC,EAAiCF,EAAjCE,UAAWC,EAAsBH,EAAtBG,MAAOC,EAAeJ,EAAfI,WAChC,IAAAC,EAAoCC,EAAS,OAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAEhC,IAAMI,EAASpB,EAAO,CACpBqB,GAAI,GACJC,QAAS,CAAC,IAGZ,IAAKF,EAAOnB,QAAQoB,GAAI,CACtBD,EAAOnB,QAAQoB,GAAyBE,oBAAAA,GAC1C,CAEAC,GAAU,WACR,IAAMF,EAAU,IAAIG,EAAQ,CAC1BC,GAAIC,SAASC,eAAeR,EAAOnB,QAAQoB,IAC3CQ,IAAK,KACLjB,KAAAA,EACAkB,SAAU,KACVC,yBAA0BhB,EAC1BiB,wBAAyB,SAAAA,EAACC,GACxB,IAAMC,EAAqBnB,GAAU,UAAA,EAAVA,EAAakB,EAAKE,UAE7C,IAAKD,EAAoB,OAAO,KAEhC,IAAMR,EAAKC,SAASS,cAAc,OAElC,IAAQC,EAA6BH,EAA7BG,MAAOC,EAAsBJ,EAAtBI,OAAQC,EAAcL,EAAdK,UACvBb,EAAGZ,MAAMuB,OAAWA,GAAS,KAAO,KACpCX,EAAGZ,MAAMwB,QAAYA,GAAU,IAAM,KACrC,IAAME,EAAOC,EAAWf,GACxBc,EAAKE,OAAOH,GAEZ,OAAOb,CACT,IAEFN,EAAOnB,QAAQqB,QAAUA,EACzBV,GAAQO,EAAc,MAEtB,OAAO,WACLG,EAAQqB,UAGX,GAAE,IAGHnB,GAAU,WACR,IAAQF,EAAYF,EAAOnB,QAAnBqB,QACR,IAAKA,EAAS,QAGbJ,GACC0B,EAAiB,wBAAwB,WAGvCtB,EAAQuB,KAAKhB,MACbV,EAAc,KAChB,IACFG,EAAQwB,QAAQlC,GAAQ,CAAA,EAE1B,GAAG,CAACA,IAGJY,GAAU,WACRuB,OAAOC,iBAAiB,SAAUC,GAClC,OAAO,WACLF,OAAOG,oBAAoB,SAAUD,GAGxC,GAAE,IACH,IAAAE,EAAsCC,GAAc,WAAM,IAAAC,EACxDjC,GAAMiC,OAAAA,EAANjC,EAAQnB,QAAQqB,UAAhB+B,UAAAA,EAAAA,EAAyBC,QAC3B,IAFaC,EAAoBJ,EAAzBK,IAGR,IAAMP,EAAepD,EAAe0D,GAGpC,IAAMX,EAAmB/C,GAAe,SAAC4D,EAAmBC,GAC1D,IAAMC,EAAM,SAANA,IACJD,IACAtC,EAAOnB,QAAQqB,QAAQsC,IAAIH,EAAWE,IAExCvC,EAAOnB,QAAQqB,QAAQuC,GAAGJ,EAAWE,EACvC,IAEA,OACEG,EAAA,MAAA,CAAKjD,UAAWkD,EAAW,4BAA6BlD,GAAYC,MAAOA,EAAMkD,SAC/EF,EAAA,MAAA,CAAKzC,GAAID,EAAOnB,QAAQoB,MAG9B"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/x-mind-preview/_hooks/use-callback-ref.tsx","@flatbiz/antd/src/x-mind-preview/x-mind-preview.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args) => unknown>(fn: T | undefined): T {\n const ref = useRef(fn);\n\n ref.current = fn;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback(((...args) => ref.current?.(...args)) as T, []);\n}\n","import { classNames } from '@dimjs/utils';\nimport { getUuid } from '@flatbiz/utils';\nimport { useDebounceFn } from 'ahooks';\nimport { useEffect, useRef, useState, type FC } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport MindMap from 'simple-mind-map';\nimport type { TXMindTreeItem } from './type';\nimport './x-mind-preview.less';\nimport { useCallbackRef } from './_hooks/use-callback-ref';\n\nexport interface IXMindPreviewProps {\n data?: TXMindTreeItem;\n className?: string;\n style?: React.CSSProperties;\n /**\n * 自定义节点渲染内容:\n * 默认情况 xmind 会自动计算节点的宽高,\n * 自定义渲染react组件,因为初始拿不到宽高,所以要返回一个节点宽高\n * - 默认宽高 200 22\n * - 返回值为空则使用默认渲染\n * @param node\n * @returns\n */\n renderNode?: (node: TXMindTreeItem) => {\n width?: number;\n height?: number;\n reactNode: React.ReactNode;\n } | void;\n}\nexport const XMindPreview: FC<IXMindPreviewProps> = (props) => {\n const { data, className, style, renderNode } = props;\n const [isInitData, setIsInitData] = useState(false);\n\n const comRef = useRef({\n id: '',\n mindMap: {} as MindMap,\n });\n /** 防止dom id重复,id在一个组件内需要时唯一的 */\n if (!comRef.current.id) {\n comRef.current.id = `mindMapContainer-${getUuid()}`;\n }\n\n useEffect(() => {\n const mindMap = new MindMap({\n el: document.getElementById(comRef.current.id),\n fit: true,\n data,\n readonly: true,\n isUseCustomNodeContent: !!renderNode,\n customCreateNodeContent: (node) => {\n const customRenderOption = renderNode?.(node.nodeData);\n // 默认渲染\n if (!customRenderOption) return null;\n\n const el = document.createElement('div');\n // 自定义渲染\n const { width, height, reactNode } = customRenderOption;\n el.style.width = `${width || 200}px`;\n el.style.height = `${height || 22}px`;\n const root = createRoot(el);\n root.render(reactNode);\n\n return el;\n },\n } as ConstructorParameters<typeof MindMap>[0]);\n comRef.current.mindMap = mindMap;\n data && setIsInitData(true);\n\n return () => {\n mindMap.destroy();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /** 数据更新重置状态 */\n useEffect(() => {\n const { mindMap } = comRef.current;\n if (!mindMap) return;\n\n /** 只有第一次渲染的时候更新画布位置 */\n !isInitData &&\n handleListenOnce('node_tree_render_end', () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n mindMap.view.fit();\n setIsInitData(true);\n });\n mindMap.setData(data || {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n // 屏幕自适应\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const { run: handleResizeDebounce } = useDebounceFn(() => {\n comRef?.current.mindMap?.resize();\n });\n const handleResize = useCallbackRef(handleResizeDebounce);\n\n // 监听一次事件\n const handleListenOnce = useCallbackRef((eventName: string, callback: () => void) => {\n const fun = () => {\n callback();\n comRef.current.mindMap.off(eventName, fun);\n };\n comRef.current.mindMap.on(eventName, fun);\n });\n\n return (\n <div className={classNames('x-mind-preview-panel-wrap', className)} style={style}>\n <div id={comRef.current.id}></div>\n </div>\n );\n};\n"],"names":["useCallbackRef","fn","ref","useRef","current","useCallback","_len","arguments","length","args","Array","_key","apply","XMindPreview","props","data","className","style","renderNode","_useState","useState","isInitData","setIsInitData","comRef","id","mindMap","getUuid","useEffect","MindMap","el","document","getElementById","fit","readonly","isUseCustomNodeContent","customCreateNodeContent","node","customRenderOption","nodeData","createElement","width","height","reactNode","root","createRoot","render","destroy","handleListenOnce","view","setData","window","addEventListener","handleResize","removeEventListener","_useDebounceFn","useDebounceFn","_comRef$current$mindM","resize","handleResizeDebounce","run","eventName","callback","fun","off","on","_jsx","_classNames","children"],"mappings":";4UAEO,SAASA,EAA+CC,GAC7D,IAAMC,EAAMC,EAAOF,GAEnBC,EAAIE,QAAUH,EAGd,OAAOI,GAAa,WAAA,IAAA,IAAAC,EAAAC,UAAAC,OAAIC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAA,CAAJF,EAAIE,GAAAJ,UAAAI,EAAA,CAAA,OAAKT,EAAIE,SAAO,UAAA,EAAXF,EAAIE,QAAOQ,MAAXV,EAAiBO,EAAK,GAAQ,GACjE,KCoBaI,EAAuC,SAAvCA,EAAwCC,GACnD,IAAQC,EAAuCD,EAAvCC,KAAMC,EAAiCF,EAAjCE,UAAWC,EAAsBH,EAAtBG,MAAOC,EAAeJ,EAAfI,WAChC,IAAAC,EAAoCC,EAAS,OAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAEhC,IAAMI,EAASpB,EAAO,CACpBqB,GAAI,GACJC,QAAS,CAAC,IAGZ,IAAKF,EAAOnB,QAAQoB,GAAI,CACtBD,EAAOnB,QAAQoB,GAAyBE,oBAAAA,GAC1C,CAEAC,GAAU,WACR,IAAMF,EAAU,IAAIG,EAAQ,CAC1BC,GAAIC,SAASC,eAAeR,EAAOnB,QAAQoB,IAC3CQ,IAAK,KACLjB,KAAAA,EACAkB,SAAU,KACVC,yBAA0BhB,EAC1BiB,wBAAyB,SAAzBA,EAA0BC,GACxB,IAAMC,EAAqBnB,GAAU,UAAA,EAAVA,EAAakB,EAAKE,UAE7C,IAAKD,EAAoB,OAAO,KAEhC,IAAMR,EAAKC,SAASS,cAAc,OAElC,IAAQC,EAA6BH,EAA7BG,MAAOC,EAAsBJ,EAAtBI,OAAQC,EAAcL,EAAdK,UACvBb,EAAGZ,MAAMuB,OAAWA,GAAS,KAAO,KACpCX,EAAGZ,MAAMwB,QAAYA,GAAU,IAAM,KACrC,IAAME,EAAOC,EAAWf,GACxBc,EAAKE,OAAOH,GAEZ,OAAOb,CACT,IAEFN,EAAOnB,QAAQqB,QAAUA,EACzBV,GAAQO,EAAc,MAEtB,OAAO,WACLG,EAAQqB,UAGX,GAAE,IAGHnB,GAAU,WACR,IAAQF,EAAYF,EAAOnB,QAAnBqB,QACR,IAAKA,EAAS,QAGbJ,GACC0B,EAAiB,wBAAwB,WAGvCtB,EAAQuB,KAAKhB,MACbV,EAAc,KAChB,IACFG,EAAQwB,QAAQlC,GAAQ,CAAA,EAE1B,GAAG,CAACA,IAGJY,GAAU,WACRuB,OAAOC,iBAAiB,SAAUC,GAClC,OAAO,WACLF,OAAOG,oBAAoB,SAAUD,GAGxC,GAAE,IACH,IAAAE,EAAsCC,GAAc,WAAM,IAAAC,EACxDjC,GAAMiC,OAAAA,EAANjC,EAAQnB,QAAQqB,UAAhB+B,MAAAA,EAAyBC,QAC3B,IAFaC,EAAoBJ,EAAzBK,IAGR,IAAMP,EAAepD,EAAe0D,GAGpC,IAAMX,EAAmB/C,GAAe,SAAC4D,EAAmBC,GAC1D,IAAMC,EAAM,SAANA,IACJD,IACAtC,EAAOnB,QAAQqB,QAAQsC,IAAIH,EAAWE,IAExCvC,EAAOnB,QAAQqB,QAAQuC,GAAGJ,EAAWE,EACvC,IAEA,OACEG,EAAA,MAAA,CAAKjD,UAAWkD,EAAW,4BAA6BlD,GAAYC,MAAOA,EAAMkD,SAC/EF,EAAA,MAAA,CAAKzC,GAAID,EAAOnB,QAAQoB,MAG9B"}
package/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- /// <reference types="node" />
2
1
  /// <reference types="prop-types" />
3
- /// <reference types="scheduler" />
4
2
 
5
3
  import { API, ModelType } from '@dimjs/model';
6
4
  import { DateFormatType, LabelValueItem, TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils';
@@ -751,23 +749,23 @@ export declare const CascaderWrapper: import("react").ForwardRefExoticComponent<
751
749
  * ```
752
750
  */
753
751
  fieldNames?: {
754
- list?: string | undefined;
755
- label?: string | undefined;
756
- value?: string | undefined;
757
- children?: string | undefined;
758
- } | undefined;
752
+ list?: string;
753
+ label?: string;
754
+ value?: string;
755
+ children?: string;
756
+ };
759
757
  /**
760
758
  * 请求服务需求的数据,当设置`selectorList`后无效果
761
759
  */
762
- serviceConfig?: CascaderWrapperServiceConfig | undefined;
763
- onLabelRenderAdapter?: ((dataItem: TPlainObject) => string | ReactElement) | undefined;
764
- onSelectorListChange?: ((dataList: TPlainObject[]) => void) | undefined;
760
+ serviceConfig?: CascaderWrapperServiceConfig;
761
+ onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;
762
+ onSelectorListChange?: (dataList: TPlainObject[]) => void;
765
763
  /**
766
764
  * 是否动态加载选项
767
765
  */
768
- isDynamicLoad?: boolean | undefined;
769
- value?: string | number | (string | number)[] | LabelValueItem | LabelValueItem[] | undefined;
770
- onChange?: ((value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void) | undefined;
766
+ isDynamicLoad?: boolean;
767
+ value?: string | number | Array<string | number> | LabelValueItem | LabelValueItem[];
768
+ onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;
771
769
  /** 配置数据查询状态描述,比如有依赖字段描述 */
772
770
  requestMessageConfig?: TRequestStatusProps["messageConfig"];
773
771
  /**
@@ -777,9 +775,9 @@ export declare const CascaderWrapper: import("react").ForwardRefExoticComponent<
777
775
  * 2. all 响应选中的多级数据
778
776
  * ```
779
777
  */
780
- responseType?: "all" | "last" | undefined;
778
+ responseType?: "last" | "all";
781
779
  /** 响应数据是否包含label、value */
782
- labelInValue?: boolean | undefined;
780
+ labelInValue?: boolean;
783
781
  } & import("react").RefAttributes<CascaderWrapperRefApi>>;
784
782
  export interface CommonPropsWithChildren<S extends TPlainObject = TPlainObject> {
785
783
  className?: string;
@@ -815,7 +813,7 @@ export type CheckListItemProps = {
815
813
  className?: string;
816
814
  style?: CSSProperties;
817
815
  };
818
- export declare const CheckList: (<T extends "radio" | "multi">(props: CheckListProps<T>) => import("react/jsx-runtime").JSX.Element) & {
816
+ export declare const CheckList: (<T extends "multi" | "radio">(props: CheckListProps<T>) => import("react/jsx-runtime").JSX.Element) & {
819
817
  Item: (props: CheckListItemProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
820
818
  };
821
819
  export type CheckboxWrapperProps = Omit<CheckboxProps, "checked" | "defaultChecked" | "onChange"> & {
@@ -3436,6 +3434,7 @@ export type FbaAppModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContai
3436
3434
  /** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */
3437
3435
  bodyHeight?: number;
3438
3436
  };
3437
+ export type FbaAppConfirmProps = FbaAppModalProps;
3439
3438
  export type FbaAppAlertProps = Omit<FbaAppModalProps, "onOk" | "cancelHidden" | "cancelButtonProps" | "onCancel" | "onClick"> & {
3440
3439
  onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
3441
3440
  };
@@ -3455,7 +3454,7 @@ export declare const FbaApp: ((props: {
3455
3454
  };
3456
3455
  close: () => void;
3457
3456
  useAppDialogDrawer: () => {
3458
- rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
3457
+ rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
3459
3458
  };
3460
3459
  };
3461
3460
  };
@@ -3466,7 +3465,7 @@ export declare const FbaApp: ((props: {
3466
3465
  };
3467
3466
  close: () => void;
3468
3467
  useAppDialogDrawer: () => {
3469
- rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
3468
+ rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
3470
3469
  };
3471
3470
  };
3472
3471
  };
@@ -3478,7 +3477,7 @@ export declare const FbaApp: ((props: {
3478
3477
  };
3479
3478
  close: () => void;
3480
3479
  useAppDialogModal: () => {
3481
- rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
3480
+ rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
3482
3481
  };
3483
3482
  };
3484
3483
  };
@@ -3489,14 +3488,14 @@ export declare const FbaApp: ((props: {
3489
3488
  };
3490
3489
  close: () => void;
3491
3490
  useAppDialogModal: () => {
3492
- rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject | undefined) => void;
3491
+ rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
3493
3492
  };
3494
3493
  };
3495
3494
  };
3496
3495
  /** 不支持多次弹框 */
3497
3496
  useDialogConfirm: () => {
3498
3497
  appDialogConfirm: {
3499
- open: (data: FbaAppModalProps) => {
3498
+ open: (data: FbaAppConfirmProps) => {
3500
3499
  onClose: () => void;
3501
3500
  };
3502
3501
  close: () => void;
@@ -3514,7 +3513,7 @@ export declare const FbaApp: ((props: {
3514
3513
  /** 不支持多次弹框 */
3515
3514
  useDialogLoading: () => {
3516
3515
  appDialogLoading: {
3517
- open: (data?: FbaAppLoadingProps | undefined) => {
3516
+ open: (data?: FbaAppLoadingProps) => {
3518
3517
  onClose: () => void;
3519
3518
  };
3520
3519
  close: () => void;
@@ -3539,24 +3538,24 @@ export declare const fbaHooks: {
3539
3538
  useEffectCustom: (fn: import("react").EffectCallback, deps: import("react").DependencyList) => void;
3540
3539
  useEffectCustomAsync: (fn: () => Promise<void>, deps: import("react").DependencyList) => void;
3541
3540
  useThemeToken: () => import("antd").GlobalToken;
3542
- useArrayChange: <T>(defautDataList: T[], forceUpdate?: boolean) => readonly [
3541
+ useArrayChange: <T>(defautDataList: Array<T>, forceUpdate?: boolean) => readonly [
3543
3542
  T[],
3544
3543
  {
3545
- add: (dataItem: T | T[], isUnshift?: boolean | undefined) => void;
3544
+ add: (dataItem: T | Array<T>, isUnshift?: boolean) => void;
3546
3545
  update: (index: number, dataItem: T) => void;
3547
3546
  delete: (index: number) => T[];
3548
- resetList: (dataList: T[]) => void;
3547
+ resetList: (dataList: Array<T>) => void;
3549
3548
  getList: () => T[];
3550
3549
  }
3551
3550
  ];
3552
3551
  usePrevious: typeof usePrevious;
3553
3552
  useResponsivePoint: () => string | undefined;
3554
- useSafeState: <S extends unknown>(initialState?: S | (() => S) | undefined) => [
3553
+ useSafeState: <S extends undefined | unknown>(initialState?: S | (() => S)) => [
3555
3554
  S,
3556
3555
  import("react").Dispatch<import("react").SetStateAction<S>>
3557
3556
  ];
3558
- useMemoCustom: <T_1>(fn: () => T_1, deps: import("react").DependencyList) => T_1;
3559
- useCopyRemoveSpace: (props?: CopyRemoveSpaceProps | undefined) => void;
3557
+ useMemoCustom: <T>(fn: () => T, deps: import("react").DependencyList) => T;
3558
+ useCopyRemoveSpace: (props?: CopyRemoveSpaceProps) => void;
3560
3559
  };
3561
3560
  declare function attachPropertiesToComponent<C, P extends Record<string, unknown>>(component: C, properties: P): C & P;
3562
3561
  export declare const fbaUtils: {
@@ -4391,13 +4390,13 @@ export type MentionsWrapperProps = Omit<MentionProps, "value" | "onChange" | "on
4391
4390
  *
4392
4391
  */
4393
4392
  export declare const MentionsWrapper: import("react").ForwardRefExoticComponent<Omit<MentionProps, "split" | "id" | "value" | "prefix" | "options" | "ref" | "onChange" | "onClick" | "onCursorChange" | "validateSearch"> & {
4394
- value?: string | undefined;
4395
- onChange?: ((value?: string) => void) | undefined;
4393
+ value?: string;
4394
+ onChange?: (value?: string) => void;
4396
4395
  /** 设置列表提示关键字,例如:@、$等 */
4397
- prefix?: string | string[] | undefined;
4398
- onClick?: ((value?: string) => void) | undefined;
4396
+ prefix?: string | string[];
4397
+ onClick?: (value?: string) => void;
4399
4398
  /** 光标移动回调 */
4400
- onCursorChange?: ((position: number) => void) | undefined;
4399
+ onCursorChange?: (position: number) => void;
4401
4400
  /**
4402
4401
  * 输入框内整体关键词列表
4403
4402
  * ```
@@ -4407,7 +4406,7 @@ export declare const MentionsWrapper: import("react").ForwardRefExoticComponent<
4407
4406
  * 3. 删除时,整体删除
4408
4407
  * ```
4409
4408
  */
4410
- options?: string[] | undefined;
4409
+ options?: string[];
4411
4410
  } & import("react").RefAttributes<MentionsWrapperRef>>;
4412
4411
  export type ParamItem = {
4413
4412
  /** 模版参数code */
@@ -4568,23 +4567,23 @@ export declare const PaginationWrapper: (props: PaginationProps) => import("reac
4568
4567
  export declare const Pdf: {
4569
4568
  Document: (props: {
4570
4569
  pdfUrl: string;
4571
- onLoadError?: ((error: any) => void) | undefined;
4572
- onLoadSuccess?: ((pdfInstance: any) => void) | undefined;
4570
+ onLoadError?: (error: any) => void;
4571
+ onLoadSuccess?: (pdfInstance: any) => void;
4573
4572
  children: import("react").ReactNode;
4574
- error?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((error: any) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) | undefined;
4575
- className?: string | undefined;
4573
+ error?: import("react").ReactElement | ((error: any) => import("react").ReactElement);
4574
+ className?: string;
4576
4575
  }) => import("react/jsx-runtime").JSX.Element;
4577
4576
  Page: (props: {
4578
- onRenderSuccess?: ((pageInstance: any, pdfInstance: any) => void) | undefined;
4579
- onRenderError?: ((error: any, pdfInstance: any) => void) | undefined;
4580
- width?: number | undefined;
4581
- scale?: number | undefined;
4582
- gap?: number | undefined;
4577
+ onRenderSuccess?: (pageInstance: any, pdfInstance: any) => void;
4578
+ onRenderError?: (error: any, pdfInstance: any) => void;
4579
+ width?: number;
4580
+ scale?: number;
4581
+ gap?: number;
4583
4582
  pageNumber: number;
4584
4583
  children?: import("react").ReactNode;
4585
- onClick?: ((e: any) => void) | undefined;
4586
- className?: string | undefined;
4587
- style?: import("react").CSSProperties | undefined;
4584
+ onClick?: (e: any) => void;
4585
+ className?: string;
4586
+ style?: import("react").CSSProperties;
4588
4587
  }) => import("react/jsx-runtime").JSX.Element;
4589
4588
  };
4590
4589
  export type PdfPreviewProps = {
@@ -4649,27 +4648,12 @@ export declare const preDefinedClassName: {
4649
4648
  label_width_130: string;
4650
4649
  label_width_140: string;
4651
4650
  label_width_150: string;
4652
- label_width_160: string; /**
4653
- * 获取针对Form下全部label布局的预设className,包括
4654
- * ```
4655
- * 1. formLabel宽度
4656
- * 2. formLabel对齐方式
4657
- * 3. form label value的竖直布局
4658
- * 4. formItem之间的间距
4659
- * ```
4660
- */
4651
+ label_width_160: string;
4661
4652
  label_width_170: string;
4662
4653
  label_width_180: string;
4663
4654
  label_width_190: string;
4664
4655
  label_width_200: string;
4665
- label_width_auto: string; /**
4666
- * 获取针对单个FormItem label布局的预设className,包括
4667
- * ```
4668
- * 1. formLabel宽度
4669
- * 2. formLabel对齐方式
4670
- * 3. form label value的竖直布局
4671
- * ```
4672
- */
4656
+ label_width_auto: string;
4673
4657
  label_align_left: string;
4674
4658
  label_align_right: string;
4675
4659
  label_value_vertical: string;
@@ -6225,6 +6209,28 @@ export type TreeWrapperProps = Omit<TreeProps, "treeData" | "onExpand" | "select
6225
6209
  * 自定义搜索规则
6226
6210
  */
6227
6211
  customSearchRule?: (nodeData: TPlainObject, searchValue?: string) => boolean;
6212
+ /**
6213
+ * 点击父节点 是否切换折叠
6214
+ * ```
6215
+ * 1. 设置 titleRender 后,此配置失效
6216
+ * ```
6217
+ */
6218
+ clickParentNodeToggleExpand?: boolean;
6219
+ /**
6220
+ * 禁用节点选中
6221
+ * ```
6222
+ * 1. checkable = true,此配置失效
6223
+ * 2. 在未设置节点 disabled 属性情况下,满足此配置不会触发onChange事件
6224
+ * ```
6225
+ */
6226
+ disableNodeSelect?: (item: TPlainObject) => boolean;
6227
+ /**
6228
+ * 是否必选,最后一个不能取消
6229
+ * ```
6230
+ * 1. 设置 checkable = true 时无效
6231
+ * ```
6232
+ */
6233
+ required?: boolean;
6228
6234
  };
6229
6235
  export type TreeWrapperRefApi = {
6230
6236
  onClearSelectorList: () => void;
@@ -6334,6 +6340,11 @@ export type TreeSelectorServiceConfig = {
6334
6340
  export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys" | "treeData" | "loading" | "onTreeExpand" | "onChange" | "value" | "fieldNames" | "defaultValue" | "treeDataSimpleMode" | "onSearch"> & {
6335
6341
  modelKey: string;
6336
6342
  fieldNames?: {
6343
+ /**
6344
+ * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'
6345
+ * 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效
6346
+ */
6347
+ list?: string;
6337
6348
  label?: string;
6338
6349
  value?: string;
6339
6350
  children?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.5.41",
3
+ "version": "4.5.43",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- function t(){t=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n){if(Object.prototype.hasOwnProperty.call(n,e)){t[e]=n[e]}}}return t};return t.apply(this,arguments)}function r(t,r){t.prototype=Object.create(r.prototype);t.prototype.constructor=t;n(t,r)}function n(t,r){n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function t(r,n){r.__proto__=n;return r};return n(t,r)}function e(t,r){if(t==null)return{};var n={};var e=Object.keys(t);var o,c;for(c=0;c<e.length;c++){o=e[c];if(r.indexOf(o)>=0)continue;n[o]=t[o]}return n}export{t as _,e as a,r as b};
3
- //# sourceMappingURL=_rollupPluginBabelHelpers-a0769acd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers-a0769acd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}