@flatbiz/antd 4.5.41 → 4.5.42

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 (217) 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/local-loading/index.js +1 -1
  132. package/esm/local-loading/index.js.map +1 -1
  133. package/esm/mention-editor/index.js +1 -1
  134. package/esm/mention-editor/index.js.map +1 -1
  135. package/esm/mentions-wrapper/index.js +1 -1
  136. package/esm/mentions-wrapper/index.js.map +1 -1
  137. package/esm/modal-action/index.js +1 -1
  138. package/esm/modal-wrapper/index.js +1 -1
  139. package/esm/number-range-form-item/index.js +1 -1
  140. package/esm/number-range-form-item/index.js.map +1 -1
  141. package/esm/pagination-wrapper/index.js +1 -1
  142. package/esm/pdf/index.js +1 -1
  143. package/esm/pdf/index.js.map +1 -1
  144. package/esm/pdf-preview/index.js +1 -1
  145. package/esm/pdf-preview/index.js.map +1 -1
  146. package/esm/radio-group-wrapper/index.js +1 -1
  147. package/esm/radio-group-wrapper/index.js.map +1 -1
  148. package/esm/relation-tree/index.js +1 -1
  149. package/esm/relation-tree/index.js.map +1 -1
  150. package/esm/rich-text-editor/index.js +1 -1
  151. package/esm/rich-text-editor/index.js.map +1 -1
  152. package/esm/rich-text-viewer/index.js +1 -1
  153. package/esm/rich-text-viewer/index.js.map +1 -1
  154. package/esm/roll-location-center/index.js +1 -1
  155. package/esm/roll-location-center/index.js.map +1 -1
  156. package/esm/roll-location-in-view/index.js +1 -1
  157. package/esm/roll-location-in-view/index.js.map +1 -1
  158. package/esm/rule-describe/index.js +1 -1
  159. package/esm/search-form/index.js +1 -1
  160. package/esm/search-form/index.js.map +1 -1
  161. package/esm/search-menu/index.js +1 -1
  162. package/esm/search-menu/index.js.map +1 -1
  163. package/esm/selector-wrapper/index.js +1 -1
  164. package/esm/selector-wrapper/index.js.map +1 -1
  165. package/esm/selector-wrapper-search/index.js +1 -1
  166. package/esm/selector-wrapper-search/index.js.map +1 -1
  167. package/esm/selector-wrapper-simple/index.js +1 -1
  168. package/esm/selector-wrapper-simple/index.js.map +1 -1
  169. package/esm/simple-layout/index.js +1 -1
  170. package/esm/sms-count-down/index.js +1 -1
  171. package/esm/sms-count-down/index.js.map +1 -1
  172. package/esm/split-wrapper/index.js +1 -1
  173. package/esm/svg-http-view/index.js +1 -1
  174. package/esm/switch-confirm-wrapper/index.js +1 -1
  175. package/esm/switch-confirm-wrapper/index.js.map +1 -1
  176. package/esm/switch-wrapper/index.js +1 -1
  177. package/esm/switch-wrapper/index.js.map +1 -1
  178. package/esm/table-cell-render/index.js +1 -1
  179. package/esm/table-scrollbar/index.js +1 -1
  180. package/esm/table-scrollbar/index.js.map +1 -1
  181. package/esm/tabs-sticky/index.js +1 -1
  182. package/esm/tabs-sticky/index.js.map +1 -1
  183. package/esm/tabs-wrapper/index.js +1 -1
  184. package/esm/tabs-wrapper/index.js.map +1 -1
  185. package/esm/tag-group/index.js +1 -1
  186. package/esm/tag-list-render/index.js +1 -1
  187. package/esm/tag-list-render/index.js.map +1 -1
  188. package/esm/tag-wrapper/index.js +1 -1
  189. package/esm/text-css-ellipsis/index.js +1 -1
  190. package/esm/text-css-ellipsis/index.js.map +1 -1
  191. package/esm/text-overflow/index.js +1 -1
  192. package/esm/text-overflow-render/index.js +1 -1
  193. package/esm/text-symbol-wrapper/index.js +1 -1
  194. package/esm/time-picker-wrapper/index.js +1 -1
  195. package/esm/time-picker-wrapper/index.js.map +1 -1
  196. package/esm/time-range-picker-wrapper/index.js +1 -1
  197. package/esm/time-range-picker-wrapper/index.js.map +1 -1
  198. package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
  199. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  200. package/esm/tips-title/index.js +1 -1
  201. package/esm/tips-wrapper/index.js +1 -1
  202. package/esm/tree-modal/index.js +1 -1
  203. package/esm/tree-modal/index.js.map +1 -1
  204. package/esm/tree-modal-selector/index.js +1 -1
  205. package/esm/tree-modal-selector/index.js.map +1 -1
  206. package/esm/tree-selector-wrapper/index.js +1 -1
  207. package/esm/tree-selector-wrapper/index.js.map +1 -1
  208. package/esm/tree-wrapper/index.js +1 -1
  209. package/esm/tree-wrapper/index.js.map +1 -1
  210. package/esm/upload-wrapper/index.js +1 -1
  211. package/esm/upload-wrapper/index.js.map +1 -1
  212. package/esm/x-mind-preview/index.js +1 -1
  213. package/esm/x-mind-preview/index.js.map +1 -1
  214. package/index.d.ts +52 -63
  215. package/package.json +1 -1
  216. package/esm/_rollupPluginBabelHelpers-a0769acd.js +0 -3
  217. package/esm/_rollupPluginBabelHelpers-a0769acd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-editor/preview/preview.tsx","@flatbiz/antd/src/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { PlusCircleOutlined } from '@ant-design/icons';\nimport { Image } from 'antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\nimport { fbaHooks } from '../../fba-hooks';\nimport './preview.less';\n\nexport const Preview = (props) => {\n const { visible, url } = props;\n\n fbaHooks.useEffectCustom(() => {\n if (visible) {\n dynamicNode.append({\n content: (\n <PlusCircleOutlined\n onClick={props.close}\n className=\"preview-image-popup-close\"\n twoToneColor=\"#1890ff\"\n />\n ),\n });\n } else {\n dynamicNode.remove();\n }\n }, [visible]);\n\n if (!url) return <></>;\n\n return (\n <Fragment>\n <Image\n key={url}\n style={{ left: '100px' }}\n preview={{\n className: 'preview-image-popup',\n maskStyle: { backgroundColor: 'rgba(0,0,0,0.85)' },\n visible,\n src: url,\n onVisibleChange: () => {\n props.close();\n },\n }}\n />\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { getStrByteLen, type TAny } from '@flatbiz/utils';\nimport { Editor, type IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { message } from 'antd';\nimport { useRef, useState } from 'react';\nimport { type Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange' | 'init'> {\n /** 设置高度,默认:500 */\n height?: number;\n onChange?: (data?: string) => void;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n /** 图片点击预览 */\n imgPreview?: boolean;\n init?: IAllProps['init'] & {\n /**\n * 通过粘贴图片创建的img标签,显示压缩比例,此处min、max是和指图片宽度\n * ```\n * 1. 默认值:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\n img_ratio?: { min: number; max?: number; ratio: number }[];\n /**\n * 粘贴文本大小限制\n * ```\n * 1. limit 限制大小,单位KB,例如限制2M,值为2*1024\n * 2. 限制提示文案\n * ```\n */\n paste_text_limit?: {\n limit: number;\n message: string;\n };\n /** 插件添加;自定义plugins后失效 */\n plugins_append?: string;\n /** 工具栏添加;自定义toolbar后失效 */\n toolbar_append?: string;\n };\n /** 点击全屏按钮回调 */\n onFullScreenChange?: (state?: boolean) => void;\n className?: string;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce https://www.tiny.cloud/docs/tinymce/6\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 获取富文本实例,通过onInit(_, editor)函数获取\n * 3. 预览富文本数据,使用 RichTextViewer 组件\n * 4. 添加其他插件使用方式,配置 init.plugins_append、init.toolbar_append\n * <RichTextEditor init={{ plugins_append: 'codesample', toolbar_append: 'codesample' }} />\n * 5. 可通过设置 init.plugins、init.toolbar 完全自定义插件、工具栏\n * 6. 其他插件\n * emoticons 表情插件\n * 7. 可通过设置 init.img_ratio 设置通过粘贴上传的图片压缩显示比例\n * 默认比例:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, height, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\n const imgRatio = props.init?.img_ratio || [\n { min: 0, max: 1000, ratio: 0.5 },\n { min: 1000, ratio: 0.3 },\n ];\n\n // const varStyleString = useMemo(() => {\n // const merge = { ...defaultVarStyle, ...props.varStyle };\n // let varStyleString = '';\n // Object.keys(merge).map((key) => {\n // varStyleString += `${key}:${merge[key]};`;\n // });\n // return varStyleString;\n // }, [props.varStyle]);\n\n useKeyPress(\n () => true,\n (event) => {\n try {\n if (event.type === 'keyup' && event.key === 'Escape') {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n },\n {\n events: ['keydown', 'keyup'],\n },\n );\n\n const onKeyDown = hooks.useCallbackRef((event, editor: TinyMCEEditor) => {\n try {\n if (event.keyCode == 27) {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n props.onKeyDown?.(event, editor);\n });\n\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n editor.on('FullscreenStateChanged', (e) => {\n props.onFullScreenChange?.(e.state);\n });\n try {\n editor.iframeElement?.contentDocument?.addEventListener(\n 'click',\n (event) => {\n if (props.imgPreview && event.target?.['tagName'] === 'IMG') {\n setPreviewUrl(event.target['src']);\n }\n },\n true,\n );\n } catch (error) {\n //\n }\n otherProps.onInit?.(_, editor);\n });\n\n const onEditorChange = hooks.useCallbackRef((a: string, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n otherProps.onEditorChange?.(a, editor);\n onChange?.(a);\n });\n\n const tinymceBaseUrl = 'https://file.40017.cn/tcsk/tinymce@6.4.1';\n\n const getImgRatio = (width: number) => {\n if (imgRatio.length === 0) return 1;\n for (let index = 0; index < imgRatio.length; index++) {\n const element = imgRatio[index];\n if (element.max) {\n if (width >= element.min && width <= element.max) return element.ratio;\n } else {\n if (width >= element.min) return element.ratio;\n }\n }\n return 1;\n };\n\n const paste_postprocess = hooks.useCallbackRef((editor, args) => {\n try {\n const nodes = (args.node.children || []) as unknown as HTMLElement[];\n if (nodes.length === 1 && nodes[0].nodeName === 'IMG') {\n nodes[0].setAttribute('style', `display:none`);\n const img = document.createElement('img');\n img.src = nodes[0].getAttribute('src') as string;\n img.onload = () => {\n const ratio = getImgRatio(img.width);\n editor.execCommand(\n 'mceInsertContent',\n true,\n `<img src=\"${img.src}\" width=\"${img.width * ratio}\" height=\"${img.height * ratio}\" />`,\n );\n };\n }\n } catch (error) {\n //\n }\n });\n\n const paste_preprocess = hooks.useCallbackRef((_plugin, args) => {\n const paste_text_limit = props.init?.paste_text_limit;\n if (paste_text_limit) {\n const byteLen = getStrByteLen(args.content);\n if (byteLen > 1024 * paste_text_limit.limit) {\n message.error(paste_text_limit.message);\n args.content = '';\n }\n }\n });\n\n return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n tinymceScriptSrc={`${tinymceBaseUrl}/tinymce.min.js`}\n {...otherProps}\n onInit={onInit}\n onKeyDown={onKeyDown}\n onEditorChange={onEditorChange}\n init={{\n promotion: false,\n language: 'zh-Hans',\n height: height,\n paste_data_images: onUploadImage ? true : false,\n paste_postprocess,\n paste_preprocess,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\n autoresize_bottom_margin: 0,\n images_upload_handler: async (blobInfo) => {\n try {\n const blob = blobInfo.blob();\n const file = new File([blob], blob.name, { type: blob.type });\n const respData = await onUploadImage?.(file);\n return Promise.resolve(respData as string);\n } catch (error: any) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n plugins:\n 'lists link image advlist charmap preview fullscreen code table help codesample ' +\n (props.init?.plugins_append || ''),\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsize blocks |' +\n 'forecolor backcolor removeformat |' +\n 'numlist bullist advlist |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent |' +\n 'hr image link code codesample |' +\n (props.init?.toolbar_append || ''),\n font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n ...props.init,\n content_style: `img {max-width:100%;} table{width:100%} ${props.init?.content_style}`,\n convert_urls: false,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n"],"names":["Preview","props","visible","url","fbaHooks","useEffectCustom","dynamicNode","append","content","_jsx","_PlusCircleOutlined","onClick","close","className","twoToneColor","remove","_Fragment","Fragment","children","Image","style","left","preview","maskStyle","backgroundColor","src","onVisibleChange","RichTextEditor","_props$init","_props$init3","_props$init4","_props$init5","onUploadImage","onChange","height","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","imgRatio","init","img_ratio","min","max","ratio","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","error","events","onKeyDown","_hooks","useCallbackRef","editor","keyCode","_editorRef$current3","_editorRef$current4","onInit","_","on","e","onFullScreenChange","state","_editor$iframeElement","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","getImgRatio","width","length","index","element","paste_postprocess","args","nodes","node","nodeName","setAttribute","img","document","createElement","getAttribute","onload","paste_preprocess","_plugin","_props$init2","paste_text_limit","byteLen","getStrByteLen","limit","message","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","promotion","language","paste_data_images","autosave_ask_before_unload","base_url","autoresize_bottom_margin","images_upload_handler","blobInfo","Promise","$return","$error","blob","_file","respData","$Try_5_Catch","reject","$boundEx","file","File","name","resolve","then","$await_6","plugins","plugins_append","toolbar","toolbar_append","font_size_formats","content_style","convert_urls"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-editor/preview/preview.tsx","@flatbiz/antd/src/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { PlusCircleOutlined } from '@ant-design/icons';\nimport { Image } from 'antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\nimport { fbaHooks } from '../../fba-hooks';\nimport './preview.less';\n\nexport const Preview = (props) => {\n const { visible, url } = props;\n\n fbaHooks.useEffectCustom(() => {\n if (visible) {\n dynamicNode.append({\n content: (\n <PlusCircleOutlined\n onClick={props.close}\n className=\"preview-image-popup-close\"\n twoToneColor=\"#1890ff\"\n />\n ),\n });\n } else {\n dynamicNode.remove();\n }\n }, [visible]);\n\n if (!url) return <></>;\n\n return (\n <Fragment>\n <Image\n key={url}\n style={{ left: '100px' }}\n preview={{\n className: 'preview-image-popup',\n maskStyle: { backgroundColor: 'rgba(0,0,0,0.85)' },\n visible,\n src: url,\n onVisibleChange: () => {\n props.close();\n },\n }}\n />\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { getStrByteLen, type TAny } from '@flatbiz/utils';\nimport { Editor, type IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { message } from 'antd';\nimport { useRef, useState } from 'react';\nimport { type Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange' | 'init'> {\n /** 设置高度,默认:500 */\n height?: number;\n onChange?: (data?: string) => void;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n /** 图片点击预览 */\n imgPreview?: boolean;\n init?: IAllProps['init'] & {\n /**\n * 通过粘贴图片创建的img标签,显示压缩比例,此处min、max是和指图片宽度\n * ```\n * 1. 默认值:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\n img_ratio?: { min: number; max?: number; ratio: number }[];\n /**\n * 粘贴文本大小限制\n * ```\n * 1. limit 限制大小,单位KB,例如限制2M,值为2*1024\n * 2. 限制提示文案\n * ```\n */\n paste_text_limit?: {\n limit: number;\n message: string;\n };\n /** 插件添加;自定义plugins后失效 */\n plugins_append?: string;\n /** 工具栏添加;自定义toolbar后失效 */\n toolbar_append?: string;\n };\n /** 点击全屏按钮回调 */\n onFullScreenChange?: (state?: boolean) => void;\n className?: string;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce https://www.tiny.cloud/docs/tinymce/6\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 获取富文本实例,通过onInit(_, editor)函数获取\n * 3. 预览富文本数据,使用 RichTextViewer 组件\n * 4. 添加其他插件使用方式,配置 init.plugins_append、init.toolbar_append\n * <RichTextEditor init={{ plugins_append: 'codesample', toolbar_append: 'codesample' }} />\n * 5. 可通过设置 init.plugins、init.toolbar 完全自定义插件、工具栏\n * 6. 其他插件\n * emoticons 表情插件\n * 7. 可通过设置 init.img_ratio 设置通过粘贴上传的图片压缩显示比例\n * 默认比例:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, height, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\n const imgRatio = props.init?.img_ratio || [\n { min: 0, max: 1000, ratio: 0.5 },\n { min: 1000, ratio: 0.3 },\n ];\n\n // const varStyleString = useMemo(() => {\n // const merge = { ...defaultVarStyle, ...props.varStyle };\n // let varStyleString = '';\n // Object.keys(merge).map((key) => {\n // varStyleString += `${key}:${merge[key]};`;\n // });\n // return varStyleString;\n // }, [props.varStyle]);\n\n useKeyPress(\n () => true,\n (event) => {\n try {\n if (event.type === 'keyup' && event.key === 'Escape') {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n },\n {\n events: ['keydown', 'keyup'],\n },\n );\n\n const onKeyDown = hooks.useCallbackRef((event, editor: TinyMCEEditor) => {\n try {\n if (event.keyCode == 27) {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n props.onKeyDown?.(event, editor);\n });\n\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n editor.on('FullscreenStateChanged', (e) => {\n props.onFullScreenChange?.(e.state);\n });\n try {\n editor.iframeElement?.contentDocument?.addEventListener(\n 'click',\n (event) => {\n if (props.imgPreview && event.target?.['tagName'] === 'IMG') {\n setPreviewUrl(event.target['src']);\n }\n },\n true,\n );\n } catch (error) {\n //\n }\n otherProps.onInit?.(_, editor);\n });\n\n const onEditorChange = hooks.useCallbackRef((a: string, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n otherProps.onEditorChange?.(a, editor);\n onChange?.(a);\n });\n\n const tinymceBaseUrl = 'https://file.40017.cn/tcsk/tinymce@6.4.1';\n\n const getImgRatio = (width: number) => {\n if (imgRatio.length === 0) return 1;\n for (let index = 0; index < imgRatio.length; index++) {\n const element = imgRatio[index];\n if (element.max) {\n if (width >= element.min && width <= element.max) return element.ratio;\n } else {\n if (width >= element.min) return element.ratio;\n }\n }\n return 1;\n };\n\n const paste_postprocess = hooks.useCallbackRef((editor, args) => {\n try {\n const nodes = (args.node.children || []) as unknown as HTMLElement[];\n if (nodes.length === 1 && nodes[0].nodeName === 'IMG') {\n nodes[0].setAttribute('style', `display:none`);\n const img = document.createElement('img');\n img.src = nodes[0].getAttribute('src') as string;\n img.onload = () => {\n const ratio = getImgRatio(img.width);\n editor.execCommand(\n 'mceInsertContent',\n true,\n `<img src=\"${img.src}\" width=\"${img.width * ratio}\" height=\"${img.height * ratio}\" />`,\n );\n };\n }\n } catch (error) {\n //\n }\n });\n\n const paste_preprocess = hooks.useCallbackRef((_plugin, args) => {\n const paste_text_limit = props.init?.paste_text_limit;\n if (paste_text_limit) {\n const byteLen = getStrByteLen(args.content);\n if (byteLen > 1024 * paste_text_limit.limit) {\n void message.error(paste_text_limit.message);\n args.content = '';\n }\n }\n });\n\n return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n tinymceScriptSrc={`${tinymceBaseUrl}/tinymce.min.js`}\n {...otherProps}\n onInit={onInit}\n onKeyDown={onKeyDown}\n onEditorChange={onEditorChange}\n init={{\n promotion: false,\n language: 'zh-Hans',\n height: height,\n paste_data_images: onUploadImage ? true : false,\n paste_postprocess,\n paste_preprocess,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\n autoresize_bottom_margin: 0,\n images_upload_handler: async (blobInfo) => {\n try {\n const blob = blobInfo.blob();\n const file = new File([blob], blob['name'], { type: blob.type });\n const respData = await onUploadImage?.(file);\n return Promise.resolve(respData as string);\n } catch (error: any) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n plugins:\n 'lists link image advlist charmap preview fullscreen code table help codesample ' +\n (props.init?.plugins_append || ''),\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsize blocks |' +\n 'forecolor backcolor removeformat |' +\n 'numlist bullist advlist |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent |' +\n 'hr image link code codesample |' +\n (props.init?.toolbar_append || ''),\n font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n ...props.init,\n content_style: `img {max-width:100%;} table{width:100%} ${props.init?.content_style}`,\n convert_urls: false,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n"],"names":["Preview","props","visible","url","fbaHooks","useEffectCustom","dynamicNode","append","content","_jsx","_PlusCircleOutlined","onClick","close","className","twoToneColor","remove","_Fragment","Fragment","children","Image","style","left","preview","maskStyle","backgroundColor","src","onVisibleChange","RichTextEditor","_props$init","_props$init3","_props$init4","_props$init5","onUploadImage","onChange","height","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","imgRatio","init","img_ratio","min","max","ratio","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","error","events","onKeyDown","_hooks","useCallbackRef","editor","keyCode","_editorRef$current3","_editorRef$current4","onInit","_","on","e","onFullScreenChange","state","_editor$iframeElement","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","getImgRatio","width","length","index","element","paste_postprocess","args","nodes","node","nodeName","setAttribute","img","document","createElement","getAttribute","onload","paste_preprocess","_plugin","_props$init2","paste_text_limit","byteLen","getStrByteLen","limit","message","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","promotion","language","paste_data_images","autosave_ask_before_unload","base_url","autoresize_bottom_margin","images_upload_handler","blobInfo","Promise","$return","$error","blob","file","respData","$Try_5_Catch","reject","$boundEx","File","resolve","then","$await_6","plugins","plugins_append","toolbar","toolbar_append","font_size_formats","content_style","convert_urls"],"mappings":"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"}
@@ -5,5 +5,5 @@ import './../rich-text-editor/index.css';
5
5
  import './../dynamic-node/index.css';
6
6
  import './index.css';
7
7
  /*! @flatjs/forge MIT @flatbiz/antd */
8
- import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{useKeyPress as o}from"ahooks";import{useState as t,useRef as n}from"react";import{fbaHooks as s}from"../fba-hooks/index.js";import{IconWrapper as a}from"../icon-wrapper/index.js";import{RichTextEditor as l}from"../rich-text-editor/index.js";import{jsxs as m,jsx as c}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-a0769acd.js";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/lang/cjs/is-undefined";import"@tinymce/tinymce-react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"../dynamic-node/index.js";import"react-dom/client";import"../dom-4d04aa64.js";var u=function u(d){var p=t(false),f=p[0],v=p[1];var j=n();o((function(){return true}),(function(e){if(e.type==="keyup"&&e.key==="Escape"&&f){v(false)}}),{events:["keydown","keyup"]});var b=r.useCallbackRef((function(){v(!f)}));var y=r.useCallbackRef((function(e,i){j.current=i;d.onInit==null?void 0:d.onInit(i)}));s.useEffectCustom((function(){var e;(e=j.current)==null?void 0:e.editorCommands.execCommand("mceAutoResize")}),[d.value]);return m("div",{className:i("fba-editor-viewer",{"fba-editor-viewer-fixed":f},d.className),style:d.style,children:[d.children,d.fullscreen&&d.value&&c("div",{className:"fba-editor-viewer-icon",children:c(a,{hoverTips:d.fullscreenIconTips,icon:c(e,{}),onClick:b})}),c(l,{value:d.value,onInit:y,imgPreview:true,disabled:true,init:{plugins:"autoresize",menubar:false,toolbar:"",statusbar:false,readonly:true}})]})};export{u as RichTextViewer};
8
+ import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{useKeyPress as o}from"ahooks";import{useState as t,useRef as n}from"react";import{fbaHooks as s}from"../fba-hooks/index.js";import{IconWrapper as a}from"../icon-wrapper/index.js";import{RichTextEditor as l}from"../rich-text-editor/index.js";import{jsxs as m,jsx as c}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/lang/cjs/is-undefined";import"@tinymce/tinymce-react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"../dynamic-node/index.js";import"react-dom/client";import"../dom-4d04aa64.js";var u=function u(d){var p=t(false),f=p[0],v=p[1];var j=n();o((function(){return true}),(function(e){if(e.type==="keyup"&&e.key==="Escape"&&f){v(false)}}),{events:["keydown","keyup"]});var b=r.useCallbackRef((function(){v(!f)}));var y=r.useCallbackRef((function(e,i){j.current=i;d.onInit==null||d.onInit(i)}));s.useEffectCustom((function(){var e;(e=j.current)==null||e.editorCommands.execCommand("mceAutoResize")}),[d.value]);return m("div",{className:i("fba-editor-viewer",{"fba-editor-viewer-fixed":f},d.className),style:d.style,children:[d.children,d.fullscreen&&d.value&&c("div",{className:"fba-editor-viewer-icon",children:c(a,{hoverTips:d.fullscreenIconTips,icon:c(e,{}),onClick:b})}),c(l,{value:d.value,onInit:y,imgPreview:true,disabled:true,init:{plugins:"autoresize",menubar:false,toolbar:"",statusbar:false,readonly:true}})]})};export{u as RichTextViewer};
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-viewer/rich-text-viewer.tsx"],"sourcesContent":["import { FullscreenOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\n\nimport { fbaHooks } from '../fba-hooks';\nimport { IconWrapper } from '../icon-wrapper';\nimport { RichTextEditor } from '../rich-text-editor';\nimport './style.less';\n\ntype RichTextViewerProps = {\n value: string;\n className?: string;\n style?: CSSProperties;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * ```\n * 1. 通过 onInit 属性可获取实例:editor\n * 2. 如果高度发生变更,可执行 editor.execCommand('mceAutoResize');\n *\n * ```\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\n const editorRef = useRef<TinyMCEEditor>();\n\n useKeyPress(\n () => true,\n (event) => {\n if (event.type === 'keyup' && event.key === 'Escape' && isFixed) {\n setIsFixed(false);\n }\n },\n { events: ['keydown', 'keyup'] },\n );\n\n const onChangeFixed = hooks.useCallbackRef(() => {\n setIsFixed(!isFixed);\n });\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n props.onInit?.(editor);\n });\n\n fbaHooks.useEffectCustom(() => {\n editorRef.current?.editorCommands.execCommand('mceAutoResize');\n }, [props.value]);\n\n return (\n <div\n className={classNames('fba-editor-viewer', { 'fba-editor-viewer-fixed': isFixed }, props.className)}\n style={props.style}\n >\n {props.children}\n {props.fullscreen && props.value && (\n <div className=\"fba-editor-viewer-icon\">\n <IconWrapper\n hoverTips={props.fullscreenIconTips}\n icon={<FullscreenOutlined />}\n onClick={onChangeFixed}\n />\n </div>\n )}\n <RichTextEditor\n value={props.value}\n onInit={onInit}\n imgPreview\n disabled\n init={{\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n readonly: true,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","editorRef","useRef","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","current","fbaHooks","useEffectCustom","_editorRef$current","editorCommands","execCommand","value","_jsxs","className","_classNames","style","children","fullscreen","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","imgPreview","disabled","init","plugins","menubar","toolbar","statusbar","readonly"],"mappings":";o0BAgCaA,EAAiB,SAAjBA,EAAkBC,GAC7B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1B,IAAMI,EAAYC,IAElBC,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,UAAYP,EAAS,CAC/DC,EAAW,MACb,CACF,GACA,CAAEO,OAAQ,CAAC,UAAW,WAGxB,IAAMC,EAAgBC,EAAMC,gBAAe,WACzCV,GAAYD,EACd,IACA,IAAMY,EAASF,EAAMC,gBAAe,SAACE,EAAGC,GACtCZ,EAAUa,QAAUD,EACpBjB,EAAMe,QAANf,UAAAA,EAAAA,EAAMe,OAASE,EACjB,IAEAE,EAASC,iBAAgB,WAAM,IAAAC,GAC7BA,EAAAhB,EAAUa,UAAO,UAAA,EAAjBG,EAAmBC,eAAeC,YAAY,gBAChD,GAAG,CAACvB,EAAMwB,QAEV,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,oBAAqB,CAAE,0BAA2BxB,GAAWH,EAAM0B,WACzFE,MAAO5B,EAAM4B,MAAMC,SAElB7B,CAAAA,EAAM6B,SACN7B,EAAM8B,YAAc9B,EAAMwB,OACzBO,EAAA,MAAA,CAAKL,UAAU,yBAAwBG,SACrCE,EAACC,EAAW,CACVC,UAAWjC,EAAMkC,mBACjBC,KAAMJ,EAAAK,MACNC,QAASzB,MAIfmB,EAACO,EAAc,CACbd,MAAOxB,EAAMwB,MACbT,OAAQA,EACRwB,WAAU,KACVC,SAAQ,KACRC,KAAM,CACJC,QAAS,aACTC,QAAS,MACTC,QAAS,GACTC,UAAW,MACXC,SAAU,UAKpB"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-viewer/rich-text-viewer.tsx"],"sourcesContent":["import { FullscreenOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\n\nimport { fbaHooks } from '../fba-hooks';\nimport { IconWrapper } from '../icon-wrapper';\nimport { RichTextEditor } from '../rich-text-editor';\nimport './style.less';\n\ntype RichTextViewerProps = {\n value: string;\n className?: string;\n style?: CSSProperties;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * ```\n * 1. 通过 onInit 属性可获取实例:editor\n * 2. 如果高度发生变更,可执行 editor.execCommand('mceAutoResize');\n *\n * ```\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\n const editorRef = useRef<TinyMCEEditor>();\n\n useKeyPress(\n () => true,\n (event) => {\n if (event.type === 'keyup' && event.key === 'Escape' && isFixed) {\n setIsFixed(false);\n }\n },\n { events: ['keydown', 'keyup'] },\n );\n\n const onChangeFixed = hooks.useCallbackRef(() => {\n setIsFixed(!isFixed);\n });\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n props.onInit?.(editor);\n });\n\n fbaHooks.useEffectCustom(() => {\n editorRef.current?.editorCommands.execCommand('mceAutoResize');\n }, [props.value]);\n\n return (\n <div\n className={classNames('fba-editor-viewer', { 'fba-editor-viewer-fixed': isFixed }, props.className)}\n style={props.style}\n >\n {props.children}\n {props.fullscreen && props.value && (\n <div className=\"fba-editor-viewer-icon\">\n <IconWrapper\n hoverTips={props.fullscreenIconTips}\n icon={<FullscreenOutlined />}\n onClick={onChangeFixed}\n />\n </div>\n )}\n <RichTextEditor\n value={props.value}\n onInit={onInit}\n imgPreview\n disabled\n init={{\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n readonly: true,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","editorRef","useRef","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","current","fbaHooks","useEffectCustom","_editorRef$current","editorCommands","execCommand","value","_jsxs","className","_classNames","style","children","fullscreen","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","imgPreview","disabled","init","plugins","menubar","toolbar","statusbar","readonly"],"mappings":";o0BAgCaA,EAAiB,SAAjBA,EAAkBC,GAC7B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1B,IAAMI,EAAYC,IAElBC,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,UAAYP,EAAS,CAC/DC,EAAW,MACb,CACF,GACA,CAAEO,OAAQ,CAAC,UAAW,WAGxB,IAAMC,EAAgBC,EAAMC,gBAAe,WACzCV,GAAYD,EACd,IACA,IAAMY,EAASF,EAAMC,gBAAe,SAACE,EAAGC,GACtCZ,EAAUa,QAAUD,EACpBjB,EAAMe,QAANf,MAAAA,EAAMe,OAASE,EACjB,IAEAE,EAASC,iBAAgB,WAAM,IAAAC,GAC7BA,EAAAhB,EAAUa,UAAO,MAAjBG,EAAmBC,eAAeC,YAAY,gBAChD,GAAG,CAACvB,EAAMwB,QAEV,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,oBAAqB,CAAE,0BAA2BxB,GAAWH,EAAM0B,WACzFE,MAAO5B,EAAM4B,MAAMC,SAElB7B,CAAAA,EAAM6B,SACN7B,EAAM8B,YAAc9B,EAAMwB,OACzBO,EAAA,MAAA,CAAKL,UAAU,yBAAwBG,SACrCE,EAACC,EAAW,CACVC,UAAWjC,EAAMkC,mBACjBC,KAAMJ,EAAAK,MACNC,QAASzB,MAIfmB,EAACO,EAAc,CACbd,MAAOxB,EAAMwB,MACbT,OAAQA,EACRwB,WAAU,KACVC,SAAQ,KACRC,KAAM,CACJC,QAAS,aACTC,QAAS,MACTC,QAAS,GACTC,UAAW,MACXC,SAAU,UAKpB"}
@@ -2,5 +2,5 @@
2
2
  import './../fba-hooks/index.css';
3
3
  import './index.css';
4
4
  /*! @flatjs/forge MIT @flatbiz/antd */
5
- import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as o}from"../fba-hooks/index.js";import{jsx as i}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-a0769acd.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";var l=function l(a){var c=t(null);var n=a.behavior||"smooth";var v=a.direction||"vertical";var s=function r(e){var t,o;var i=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!i)return;var l=(o=c.current)==null?void 0:o.offsetHeight;var a=i.offsetTop;var v=i.offsetHeight;if(a<=v){var s;(s=c.current)==null?void 0:s.scrollTo({top:0,behavior:n})}else{var u=a-l/2+v/2;if(u>0){var f;(f=c.current)==null?void 0:f.scrollTo({top:u,behavior:n})}else{var m;(m=c.current)==null?void 0:m.scrollTo({top:0,behavior:n})}}};var u=function r(e){var t,o;var i=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!i)return;var l=(o=c.current)==null?void 0:o.offsetWidth;var a=i.offsetLeft;var v=i.offsetWidth;if(a<=v){var s;(s=c.current)==null?void 0:s.scrollTo({left:0,behavior:n})}else{var u=a-l/2+v/2;if(u>0){var f;(f=c.current)==null?void 0:f.scrollTo({left:u,behavior:n})}else{var m;(m=c.current)==null?void 0:m.scrollTo({left:0,behavior:n})}}};o.useEffectCustom((function(){if(a.activeKey){if(v==="vertical"){s(a.activeKey)}else{u(a.activeKey)}}}),[a.activeKey]);e((function(){if(a.activeKey){if(v==="vertical"){s(a.activeKey)}else{u(a.activeKey)}}}),c,{subtree:true,childList:true,characterData:true});return i("div",{className:r("roll-location-center","roll-location-center-"+v,a.className),style:a.style,ref:c,children:a.renderList.map((function(r){return i("div",{className:"roll-location-center-"+r.activeKey,children:r.render},r.activeKey)}))})};export{l as RollLocationCenter};
5
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as o}from"../fba-hooks/index.js";import{jsx as l}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";var i=function i(a){var c=t(null);var n=a.behavior||"smooth";var s=a.direction||"vertical";var v=function r(e){var t,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!l)return;var i=(o=c.current)==null?void 0:o.offsetHeight;var a=l.offsetTop;var s=l.offsetHeight;if(a<=s){var v;(v=c.current)==null||v.scrollTo({top:0,behavior:n})}else{var u=a-i/2+s/2;if(u>0){var f;(f=c.current)==null||f.scrollTo({top:u,behavior:n})}else{var m;(m=c.current)==null||m.scrollTo({top:0,behavior:n})}}};var u=function r(e){var t,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!l)return;var i=(o=c.current)==null?void 0:o.offsetWidth;var a=l.offsetLeft;var s=l.offsetWidth;if(a<=s){var v;(v=c.current)==null||v.scrollTo({left:0,behavior:n})}else{var u=a-i/2+s/2;if(u>0){var f;(f=c.current)==null||f.scrollTo({left:u,behavior:n})}else{var m;(m=c.current)==null||m.scrollTo({left:0,behavior:n})}}};o.useEffectCustom((function(){if(a.activeKey){if(s==="vertical"){v(a.activeKey)}else{u(a.activeKey)}}}),[a.activeKey]);e((function(){if(a.activeKey){if(s==="vertical"){v(a.activeKey)}else{u(a.activeKey)}}}),c,{subtree:true,childList:true,characterData:true});return l("div",{className:r("roll-location-center","roll-location-center-"+s,a.className),style:a.style,ref:c,children:a.renderList.map((function(r){return l("div",{className:"roll-location-center-"+r.activeKey,children:r.render},r.activeKey)}))})};export{i as RollLocationCenter};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/roll-location-center/center.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useMutationObserver } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type RollLocationCenterProps = {\n renderList: { activeKey: string; render: ReactElement }[];\n activeKey?: string;\n behavior?: ScrollBehavior;\n direction?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n className?: string;\n};\nexport const RollLocationCenter = (props: RollLocationCenterProps) => {\n const rollLocationCenterRef = useRef<HTMLDivElement>(null);\n const behavior = props.behavior || 'smooth';\n const direction = props.direction || 'vertical';\n\n const targetVerticalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeHeight = rollLocationCenterRef.current?.offsetHeight as number;\n const targetNodeOffsetTop = targetNode.offsetTop;\n const targetNodeHeight = targetNode.offsetHeight;\n if (targetNodeOffsetTop <= targetNodeHeight) {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n } else {\n const rollHeight = targetNodeOffsetTop - parentNodeHeight / 2 + targetNodeHeight / 2;\n if (rollHeight > 0) {\n rollLocationCenterRef.current?.scrollTo({ top: rollHeight, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n }\n }\n };\n const targetHorizontalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeWidth = rollLocationCenterRef.current?.offsetWidth as number;\n const targetNodeOffsetLeft = targetNode.offsetLeft;\n const targetNodeWidth = targetNode.offsetWidth;\n if (targetNodeOffsetLeft <= targetNodeWidth) {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n } else {\n const rollWidth = targetNodeOffsetLeft - parentNodeWidth / 2 + targetNodeWidth / 2;\n if (rollWidth > 0) {\n rollLocationCenterRef.current?.scrollTo({ left: rollWidth, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n }\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n }, [props.activeKey]);\n\n useMutationObserver(\n () => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n },\n rollLocationCenterRef,\n {\n subtree: true,\n childList: true,\n characterData: true,\n },\n );\n\n return (\n <div\n className={classNames('roll-location-center', `roll-location-center-${direction}`, props.className)}\n style={props.style}\n ref={rollLocationCenterRef}\n >\n {props.renderList.map((item) => {\n return (\n <div className={`roll-location-center-${item.activeKey}`} key={item.activeKey}>\n {item.render}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["RollLocationCenter","props","rollLocationCenterRef","useRef","behavior","direction","targetVerticalRoll","key","_rollLocationCenterRe","_rollLocationCenterRe2","targetNode","current","querySelector","parentNodeHeight","offsetHeight","targetNodeOffsetTop","offsetTop","targetNodeHeight","_rollLocationCenterRe3","scrollTo","top","rollHeight","_rollLocationCenterRe4","_rollLocationCenterRe5","targetHorizontalRoll","_rollLocationCenterRe6","_rollLocationCenterRe7","parentNodeWidth","offsetWidth","targetNodeOffsetLeft","offsetLeft","targetNodeWidth","_rollLocationCenterRe8","left","rollWidth","_rollLocationCenterRe9","_rollLocationCenterRe10","fbaHooks","useEffectCustom","activeKey","useMutationObserver","subtree","childList","characterData","_jsx","className","_classNames","style","ref","children","renderList","map","item","render"],"mappings":";maAcaA,EAAqB,SAArBA,EAAsBC,GACjC,IAAMC,EAAwBC,EAAuB,MACrD,IAAMC,EAAWH,EAAMG,UAAY,SACnC,IAAMC,EAAYJ,EAAMI,WAAa,WAErC,IAAMC,EAAqB,SAArBA,EAAsBC,GAAgB,IAAAC,EAAAC,EAC1C,IAAMC,GAAUF,EAAGN,EAAsBS,UAAO,UAAA,EAA7BH,EAA+BI,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMG,GAAgBJ,EAAGP,EAAsBS,UAAO,UAAA,EAA7BF,EAA+BK,aACxD,IAAMC,EAAsBL,EAAWM,UACvC,IAAMC,EAAmBP,EAAWI,aACpC,GAAIC,GAAuBE,EAAkB,CAAA,IAAAC,GAC3CA,EAAAhB,EAAsBS,UAAtBO,UAAAA,EAAAA,EAA+BC,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,KAAO,CACL,IAAMiB,EAAaN,EAAsBF,EAAmB,EAAII,EAAmB,EACnF,GAAII,EAAa,EAAG,CAAA,IAAAC,GAClBA,EAAApB,EAAsBS,UAAtBW,UAAAA,EAAAA,EAA+BH,SAAS,CAAEC,IAAKC,EAAYjB,SAAAA,GAC7D,KAAO,CAAA,IAAAmB,GACLA,EAAArB,EAAsBS,UAAtBY,UAAAA,EAAAA,EAA+BJ,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,CACF,GAEF,IAAMoB,EAAuB,SAAvBA,EAAwBjB,GAAgB,IAAAkB,EAAAC,EAC5C,IAAMhB,GAAUe,EAAGvB,EAAsBS,UAAO,UAAA,EAA7Bc,EAA+Bb,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMiB,GAAeD,EAAGxB,EAAsBS,UAAO,UAAA,EAA7Be,EAA+BE,YACvD,IAAMC,EAAuBnB,EAAWoB,WACxC,IAAMC,EAAkBrB,EAAWkB,YACnC,GAAIC,GAAwBE,EAAiB,CAAA,IAAAC,GAC3CA,EAAA9B,EAAsBS,UAAtBqB,UAAAA,EAAAA,EAA+Bb,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,KAAO,CACL,IAAM8B,EAAYL,EAAuBF,EAAkB,EAAII,EAAkB,EACjF,GAAIG,EAAY,EAAG,CAAA,IAAAC,GACjBA,EAAAjC,EAAsBS,UAAtBwB,UAAAA,EAAAA,EAA+BhB,SAAS,CAAEc,KAAMC,EAAW9B,SAAAA,GAC7D,KAAO,CAAA,IAAAgC,GACLA,EAAAlC,EAAsBS,UAAtByB,UAAAA,EAAAA,EAA+BjB,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,CACF,GAGFiC,EAASC,iBAAgB,WACvB,GAAIrC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACF,GAAG,CAACtC,EAAMsC,YAEVC,GACE,WACE,GAAIvC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACD,GACDrC,EACA,CACEuC,QAAS,KACTC,UAAW,KACXC,cAAe,OAInB,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,uBAAsB,wBAA0BzC,EAAaJ,EAAM4C,WACzFE,MAAO9C,EAAM8C,MACbC,IAAK9C,EAAsB+C,SAE1BhD,EAAMiD,WAAWC,KAAI,SAACC,GACrB,OACER,EAAA,MAAA,CAAKC,UAAS,wBAA0BO,EAAKb,UAAYU,SACtDG,EAAKC,QADuDD,EAAKb,eAO9E"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/roll-location-center/center.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useMutationObserver } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type RollLocationCenterProps = {\n renderList: { activeKey: string; render: ReactElement }[];\n activeKey?: string;\n behavior?: ScrollBehavior;\n direction?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n className?: string;\n};\nexport const RollLocationCenter = (props: RollLocationCenterProps) => {\n const rollLocationCenterRef = useRef<HTMLDivElement>(null);\n const behavior = props.behavior || 'smooth';\n const direction = props.direction || 'vertical';\n\n const targetVerticalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeHeight = rollLocationCenterRef.current?.offsetHeight as number;\n const targetNodeOffsetTop = targetNode.offsetTop;\n const targetNodeHeight = targetNode.offsetHeight;\n if (targetNodeOffsetTop <= targetNodeHeight) {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n } else {\n const rollHeight = targetNodeOffsetTop - parentNodeHeight / 2 + targetNodeHeight / 2;\n if (rollHeight > 0) {\n rollLocationCenterRef.current?.scrollTo({ top: rollHeight, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n }\n }\n };\n const targetHorizontalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeWidth = rollLocationCenterRef.current?.offsetWidth as number;\n const targetNodeOffsetLeft = targetNode.offsetLeft;\n const targetNodeWidth = targetNode.offsetWidth;\n if (targetNodeOffsetLeft <= targetNodeWidth) {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n } else {\n const rollWidth = targetNodeOffsetLeft - parentNodeWidth / 2 + targetNodeWidth / 2;\n if (rollWidth > 0) {\n rollLocationCenterRef.current?.scrollTo({ left: rollWidth, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n }\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n }, [props.activeKey]);\n\n useMutationObserver(\n () => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n },\n rollLocationCenterRef,\n {\n subtree: true,\n childList: true,\n characterData: true,\n },\n );\n\n return (\n <div\n className={classNames('roll-location-center', `roll-location-center-${direction}`, props.className)}\n style={props.style}\n ref={rollLocationCenterRef}\n >\n {props.renderList.map((item) => {\n return (\n <div className={`roll-location-center-${item.activeKey}`} key={item.activeKey}>\n {item.render}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["RollLocationCenter","props","rollLocationCenterRef","useRef","behavior","direction","targetVerticalRoll","key","_rollLocationCenterRe","_rollLocationCenterRe2","targetNode","current","querySelector","parentNodeHeight","offsetHeight","targetNodeOffsetTop","offsetTop","targetNodeHeight","_rollLocationCenterRe3","scrollTo","top","rollHeight","_rollLocationCenterRe4","_rollLocationCenterRe5","targetHorizontalRoll","_rollLocationCenterRe6","_rollLocationCenterRe7","parentNodeWidth","offsetWidth","targetNodeOffsetLeft","offsetLeft","targetNodeWidth","_rollLocationCenterRe8","left","rollWidth","_rollLocationCenterRe9","_rollLocationCenterRe10","fbaHooks","useEffectCustom","activeKey","useMutationObserver","subtree","childList","characterData","_jsx","className","_classNames","style","ref","children","renderList","map","item","render"],"mappings":";maAcaA,EAAqB,SAArBA,EAAsBC,GACjC,IAAMC,EAAwBC,EAAuB,MACrD,IAAMC,EAAWH,EAAMG,UAAY,SACnC,IAAMC,EAAYJ,EAAMI,WAAa,WAErC,IAAMC,EAAqB,SAArBA,EAAsBC,GAAgB,IAAAC,EAAAC,EAC1C,IAAMC,GAAUF,EAAGN,EAAsBS,UAAO,UAAA,EAA7BH,EAA+BI,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMG,GAAgBJ,EAAGP,EAAsBS,UAAO,UAAA,EAA7BF,EAA+BK,aACxD,IAAMC,EAAsBL,EAAWM,UACvC,IAAMC,EAAmBP,EAAWI,aACpC,GAAIC,GAAuBE,EAAkB,CAAA,IAAAC,GAC3CA,EAAAhB,EAAsBS,UAAtBO,MAAAA,EAA+BC,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,KAAO,CACL,IAAMiB,EAAaN,EAAsBF,EAAmB,EAAII,EAAmB,EACnF,GAAII,EAAa,EAAG,CAAA,IAAAC,GAClBA,EAAApB,EAAsBS,UAAtBW,MAAAA,EAA+BH,SAAS,CAAEC,IAAKC,EAAYjB,SAAAA,GAC7D,KAAO,CAAA,IAAAmB,GACLA,EAAArB,EAAsBS,UAAtBY,MAAAA,EAA+BJ,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,CACF,GAEF,IAAMoB,EAAuB,SAAvBA,EAAwBjB,GAAgB,IAAAkB,EAAAC,EAC5C,IAAMhB,GAAUe,EAAGvB,EAAsBS,UAAO,UAAA,EAA7Bc,EAA+Bb,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMiB,GAAeD,EAAGxB,EAAsBS,UAAO,UAAA,EAA7Be,EAA+BE,YACvD,IAAMC,EAAuBnB,EAAWoB,WACxC,IAAMC,EAAkBrB,EAAWkB,YACnC,GAAIC,GAAwBE,EAAiB,CAAA,IAAAC,GAC3CA,EAAA9B,EAAsBS,UAAtBqB,MAAAA,EAA+Bb,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,KAAO,CACL,IAAM8B,EAAYL,EAAuBF,EAAkB,EAAII,EAAkB,EACjF,GAAIG,EAAY,EAAG,CAAA,IAAAC,GACjBA,EAAAjC,EAAsBS,UAAtBwB,MAAAA,EAA+BhB,SAAS,CAAEc,KAAMC,EAAW9B,SAAAA,GAC7D,KAAO,CAAA,IAAAgC,GACLA,EAAAlC,EAAsBS,UAAtByB,MAAAA,EAA+BjB,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,CACF,GAGFiC,EAASC,iBAAgB,WACvB,GAAIrC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACF,GAAG,CAACtC,EAAMsC,YAEVC,GACE,WACE,GAAIvC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACD,GACDrC,EACA,CACEuC,QAAS,KACTC,UAAW,KACXC,cAAe,OAInB,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,uBAAsB,wBAA0BzC,EAAaJ,EAAM4C,WACzFE,MAAO9C,EAAM8C,MACbC,IAAK9C,EAAsB+C,SAE1BhD,EAAMiD,WAAWC,KAAI,SAACC,GACrB,OACER,EAAA,MAAA,CAAKC,UAAS,wBAA0BO,EAAKb,UAAYU,SACtDG,EAAKC,QADuDD,EAAKb,eAO9E"}
@@ -2,5 +2,5 @@
2
2
  import './../fba-hooks/index.css';
3
3
  import './index.css';
4
4
  /*! @flatjs/forge MIT @flatbiz/antd */
5
- import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as i}from"react";import{fbaHooks as t}from"../fba-hooks/index.js";import{jsx as o}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-a0769acd.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";var l=function l(a){var v=i(null);var c=a.behavior||"smooth";var n=a.activeOffset||0;var s=a.direction||"vertical";var u=function r(e){try{var i,t,o;var l=(i=v.current)==null?void 0:i.querySelector(".roll-location-in-view-item-"+e);var a=(t=v.current)==null?void 0:t.offsetHeight;var s=(o=v.current)==null?void 0:o.scrollTop;var u=l.offsetTop;var f=u-s;var m=l.offsetHeight;if(u===0){var d;(d=v.current)==null?void 0:d.scrollTo({top:0,behavior:c})}else{if(f<0){var p;(p=v.current)==null?void 0:p.scrollTo({top:u-n,behavior:c})}else if(f>=0&&f+m<a){}else{var h;var y=u-(a-m);(h=v.current)==null?void 0:h.scrollTo({top:y+n,behavior:c})}}}catch(r){}};var f=function r(e){try{var i,t,o;var l=(i=v.current)==null?void 0:i.querySelector(".roll-location-in-view-item-"+e);var a=(t=v.current)==null?void 0:t.offsetWidth;var s=(o=v.current)==null?void 0:o.scrollLeft;var u=l.offsetLeft;var f=u-s;var m=l.offsetWidth;if(u===0){var d;(d=v.current)==null?void 0:d.scrollTo({left:0,behavior:c})}else{if(f<0){var p;(p=v.current)==null?void 0:p.scrollTo({left:u-n,behavior:c})}else if(f>=0&&f+m<a){}else{var h;var y=u-(a-m);(h=v.current)==null?void 0:h.scrollTo({left:y+n,behavior:c})}}}catch(r){}};t.useEffectCustom((function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}}),[a.activeKey]);e((function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}}),v,{subtree:true,childList:true,characterData:true});return o("div",{className:r("roll-location-in-view","roll-location-in-view-"+s,a.className),style:a.style,ref:v,children:a.renderList.map((function(r){return o("div",{className:"roll-location-in-view-item-"+r.activeKey,children:r.render},r.activeKey)}))})};export{l as RollLocationInView};
5
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as i}from"../fba-hooks/index.js";import{jsx as o}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";var l=function l(a){var c=t(null);var v=a.behavior||"smooth";var n=a.activeOffset||0;var s=a.direction||"vertical";var u=function r(e){try{var t,i,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-in-view-item-"+e);var a=(i=c.current)==null?void 0:i.offsetHeight;var s=(o=c.current)==null?void 0:o.scrollTop;var u=l.offsetTop;var f=u-s;var m=l.offsetHeight;if(u===0){var p;(p=c.current)==null||p.scrollTo({top:0,behavior:v})}else{if(f<0){var h;(h=c.current)==null||h.scrollTo({top:u-n,behavior:v})}else if(f>=0&&f+m<a){}else{var d;var y=u-(a-m);(d=c.current)==null||d.scrollTo({top:y+n,behavior:v})}}}catch(r){}};var f=function r(e){try{var t,i,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-in-view-item-"+e);var a=(i=c.current)==null?void 0:i.offsetWidth;var s=(o=c.current)==null?void 0:o.scrollLeft;var u=l.offsetLeft;var f=u-s;var m=l.offsetWidth;if(u===0){var p;(p=c.current)==null||p.scrollTo({left:0,behavior:v})}else{if(f<0){var h;(h=c.current)==null||h.scrollTo({left:u-n,behavior:v})}else if(f>=0&&f+m<a){}else{var d;var y=u-(a-m);(d=c.current)==null||d.scrollTo({left:y+n,behavior:v})}}}catch(r){}};i.useEffectCustom((function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}}),[a.activeKey]);e((function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}}),c,{subtree:true,childList:true,characterData:true});return o("div",{className:r("roll-location-in-view","roll-location-in-view-"+s,a.className),style:a.style,ref:c,children:a.renderList.map((function(r){return o("div",{className:"roll-location-in-view-item-"+r.activeKey,children:r.render},r.activeKey)}))})};export{l as RollLocationInView};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/roll-location-in-view/in-view.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useMutationObserver } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type RollLocationInViewProps = {\n renderList: { activeKey: string; render: ReactElement }[];\n activeKey?: string;\n behavior?: ScrollBehavior;\n // 激活节点在边界时,上下节点露出偏移量\n activeOffset?: number;\n direction?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n className?: string;\n};\nexport const RollLocationInView = (props: RollLocationInViewProps) => {\n const rollLocationInViewRef = useRef<HTMLDivElement>(null);\n const behavior = props.behavior || 'smooth';\n const activeOffset = props.activeOffset || 0;\n const direction = props.direction || 'vertical';\n\n const targetVerticalRoll = (key: string) => {\n try {\n const targetNode = rollLocationInViewRef.current?.querySelector(\n `.roll-location-in-view-item-${key}`,\n ) as HTMLDivElement;\n const parentNodeHeight = rollLocationInViewRef.current?.offsetHeight as number;\n const scrollerScrollTop = rollLocationInViewRef.current?.scrollTop as number;\n const targetNodeOffsetTop = targetNode.offsetTop;\n const targetTop2ScrollWindowHeight = targetNodeOffsetTop - scrollerScrollTop;\n const targetNodeHeight = targetNode.offsetHeight;\n if (targetNodeOffsetTop === 0) {\n rollLocationInViewRef.current?.scrollTo({ top: 0, behavior });\n } else {\n if (targetTop2ScrollWindowHeight < 0) {\n rollLocationInViewRef.current?.scrollTo({ top: targetNodeOffsetTop - activeOffset, behavior });\n } else if (\n targetTop2ScrollWindowHeight >= 0 &&\n targetTop2ScrollWindowHeight + targetNodeHeight < parentNodeHeight\n ) {\n //\n } else {\n const xx = targetNodeOffsetTop - (parentNodeHeight - targetNodeHeight);\n rollLocationInViewRef.current?.scrollTo({ top: xx + activeOffset, behavior });\n }\n }\n } catch (error) {\n // 异常不处理\n }\n };\n const targetHorizontalRoll = (key: string) => {\n try {\n const targetNode = rollLocationInViewRef.current?.querySelector(\n `.roll-location-in-view-item-${key}`,\n ) as HTMLDivElement;\n const parentNodeWidth = rollLocationInViewRef.current?.offsetWidth as number;\n const scrollerScrollLeft = rollLocationInViewRef.current?.scrollLeft as number;\n const targetNodeOffsetLeft = targetNode.offsetLeft;\n const targetTop2ScrollWindowWidth = targetNodeOffsetLeft - scrollerScrollLeft;\n const targetNodeWidth = targetNode.offsetWidth;\n if (targetNodeOffsetLeft === 0) {\n rollLocationInViewRef.current?.scrollTo({ left: 0, behavior });\n } else {\n if (targetTop2ScrollWindowWidth < 0) {\n rollLocationInViewRef.current?.scrollTo({ left: targetNodeOffsetLeft - activeOffset, behavior });\n } else if (\n targetTop2ScrollWindowWidth >= 0 &&\n targetTop2ScrollWindowWidth + targetNodeWidth < parentNodeWidth\n ) {\n //\n } else {\n const xx = targetNodeOffsetLeft - (parentNodeWidth - targetNodeWidth);\n rollLocationInViewRef.current?.scrollTo({ left: xx + activeOffset, behavior });\n }\n }\n } catch (error) {\n // 异常不处理\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n }, [props.activeKey]);\n\n useMutationObserver(\n () => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n },\n rollLocationInViewRef,\n {\n subtree: true,\n childList: true,\n characterData: true,\n },\n );\n\n return (\n <div\n className={classNames('roll-location-in-view', `roll-location-in-view-${direction}`, props.className)}\n style={props.style}\n ref={rollLocationInViewRef}\n >\n {props.renderList.map((item) => {\n return (\n <div className={`roll-location-in-view-item-${item.activeKey}`} key={item.activeKey}>\n {item.render}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["RollLocationInView","props","rollLocationInViewRef","useRef","behavior","activeOffset","direction","targetVerticalRoll","key","_rollLocationInViewRe","_rollLocationInViewRe2","_rollLocationInViewRe3","targetNode","current","querySelector","parentNodeHeight","offsetHeight","scrollerScrollTop","scrollTop","targetNodeOffsetTop","offsetTop","targetTop2ScrollWindowHeight","targetNodeHeight","_rollLocationInViewRe4","scrollTo","top","_rollLocationInViewRe5","_rollLocationInViewRe6","xx","error","targetHorizontalRoll","_rollLocationInViewRe7","_rollLocationInViewRe8","_rollLocationInViewRe9","parentNodeWidth","offsetWidth","scrollerScrollLeft","scrollLeft","targetNodeOffsetLeft","offsetLeft","targetTop2ScrollWindowWidth","targetNodeWidth","_rollLocationInViewRe10","left","_rollLocationInViewRe11","_rollLocationInViewRe12","fbaHooks","useEffectCustom","activeKey","useMutationObserver","subtree","childList","characterData","_jsx","className","_classNames","style","ref","children","renderList","map","item","render"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/roll-location-in-view/in-view.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useMutationObserver } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type RollLocationInViewProps = {\n renderList: { activeKey: string; render: ReactElement }[];\n activeKey?: string;\n behavior?: ScrollBehavior;\n // 激活节点在边界时,上下节点露出偏移量\n activeOffset?: number;\n direction?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n className?: string;\n};\nexport const RollLocationInView = (props: RollLocationInViewProps) => {\n const rollLocationInViewRef = useRef<HTMLDivElement>(null);\n const behavior = props.behavior || 'smooth';\n const activeOffset = props.activeOffset || 0;\n const direction = props.direction || 'vertical';\n\n const targetVerticalRoll = (key: string) => {\n try {\n const targetNode = rollLocationInViewRef.current?.querySelector(\n `.roll-location-in-view-item-${key}`,\n ) as HTMLDivElement;\n const parentNodeHeight = rollLocationInViewRef.current?.offsetHeight as number;\n const scrollerScrollTop = rollLocationInViewRef.current?.scrollTop as number;\n const targetNodeOffsetTop = targetNode.offsetTop;\n const targetTop2ScrollWindowHeight = targetNodeOffsetTop - scrollerScrollTop;\n const targetNodeHeight = targetNode.offsetHeight;\n if (targetNodeOffsetTop === 0) {\n rollLocationInViewRef.current?.scrollTo({ top: 0, behavior });\n } else {\n if (targetTop2ScrollWindowHeight < 0) {\n rollLocationInViewRef.current?.scrollTo({ top: targetNodeOffsetTop - activeOffset, behavior });\n } else if (\n targetTop2ScrollWindowHeight >= 0 &&\n targetTop2ScrollWindowHeight + targetNodeHeight < parentNodeHeight\n ) {\n //\n } else {\n const xx = targetNodeOffsetTop - (parentNodeHeight - targetNodeHeight);\n rollLocationInViewRef.current?.scrollTo({ top: xx + activeOffset, behavior });\n }\n }\n } catch (error) {\n // 异常不处理\n }\n };\n const targetHorizontalRoll = (key: string) => {\n try {\n const targetNode = rollLocationInViewRef.current?.querySelector(\n `.roll-location-in-view-item-${key}`,\n ) as HTMLDivElement;\n const parentNodeWidth = rollLocationInViewRef.current?.offsetWidth as number;\n const scrollerScrollLeft = rollLocationInViewRef.current?.scrollLeft as number;\n const targetNodeOffsetLeft = targetNode.offsetLeft;\n const targetTop2ScrollWindowWidth = targetNodeOffsetLeft - scrollerScrollLeft;\n const targetNodeWidth = targetNode.offsetWidth;\n if (targetNodeOffsetLeft === 0) {\n rollLocationInViewRef.current?.scrollTo({ left: 0, behavior });\n } else {\n if (targetTop2ScrollWindowWidth < 0) {\n rollLocationInViewRef.current?.scrollTo({ left: targetNodeOffsetLeft - activeOffset, behavior });\n } else if (\n targetTop2ScrollWindowWidth >= 0 &&\n targetTop2ScrollWindowWidth + targetNodeWidth < parentNodeWidth\n ) {\n //\n } else {\n const xx = targetNodeOffsetLeft - (parentNodeWidth - targetNodeWidth);\n rollLocationInViewRef.current?.scrollTo({ left: xx + activeOffset, behavior });\n }\n }\n } catch (error) {\n // 异常不处理\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n }, [props.activeKey]);\n\n useMutationObserver(\n () => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n },\n rollLocationInViewRef,\n {\n subtree: true,\n childList: true,\n characterData: true,\n },\n );\n\n return (\n <div\n className={classNames('roll-location-in-view', `roll-location-in-view-${direction}`, props.className)}\n style={props.style}\n ref={rollLocationInViewRef}\n >\n {props.renderList.map((item) => {\n return (\n <div className={`roll-location-in-view-item-${item.activeKey}`} key={item.activeKey}>\n {item.render}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["RollLocationInView","props","rollLocationInViewRef","useRef","behavior","activeOffset","direction","targetVerticalRoll","key","_rollLocationInViewRe","_rollLocationInViewRe2","_rollLocationInViewRe3","targetNode","current","querySelector","parentNodeHeight","offsetHeight","scrollerScrollTop","scrollTop","targetNodeOffsetTop","offsetTop","targetTop2ScrollWindowHeight","targetNodeHeight","_rollLocationInViewRe4","scrollTo","top","_rollLocationInViewRe5","_rollLocationInViewRe6","xx","error","targetHorizontalRoll","_rollLocationInViewRe7","_rollLocationInViewRe8","_rollLocationInViewRe9","parentNodeWidth","offsetWidth","scrollerScrollLeft","scrollLeft","targetNodeOffsetLeft","offsetLeft","targetTop2ScrollWindowWidth","targetNodeWidth","_rollLocationInViewRe10","left","_rollLocationInViewRe11","_rollLocationInViewRe12","fbaHooks","useEffectCustom","activeKey","useMutationObserver","subtree","childList","characterData","_jsx","className","_classNames","style","ref","children","renderList","map","item","render"],"mappings":"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"}
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
3
3
  import './../flex-layout/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import{isUndefinedOrNull as l}from"@flatbiz/utils";import{fbaHooks as i}from"../fba-hooks/index.js";import{FlexLayout as t}from"../flex-layout/index.js";import{jsxs as r,jsx as s}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-a0769acd.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"react";import"../use-responsive-point-21b8c601.js";import"antd";var c=function c(a){var m=l(a.showTitleIndex)?true:a.showTitleIndex;var n=i.useThemeToken();var d={"--rule-describe-colorPrimary":n.colorPrimary};return r("div",{className:e("v-rule-describe",a.className),style:d,children:[a.title?s("div",{className:e("v-rule-describe-title",{"v-rule-describe-title-sign":a.titleSign}),children:a.title}):null,a.ruleDataList.map((function(e,l){if(m&&e.title){return r("div",{className:"v-rule-describe-item",style:a.ruleItemStyle,children:[r(t,{fullIndex:1,direction:"horizontal",className:"v-rule-describe-item-title",style:a.ruleItemTitleStyle,children:[r("span",{className:"v-rule-describe-item-title-index",children:[l+1,". "]}),s("span",{className:"v-rule-describe-item-title-content",children:e.title})]}),e.desc?r(t,{direction:"horizontal",className:"v-rule-describe-item-desc",style:a.ruleItemDescStyle,fullIndex:1,children:[s("span",{className:"v-rule-describe-item-title-index"}),s("span",{className:"v-rule-describe-item-title-content",children:e.desc})]}):null]},l)}return r("div",{className:"v-rule-describe-item",children:[e.title?s("div",{className:"v-rule-describe-item-title",style:a.ruleItemTitleStyle,children:e.title}):null,e.desc?s("div",{className:"v-rule-describe-item-desc",style:a.ruleItemDescStyle,children:e.desc}):null]},l)}))]})};export{c as RuleDescribe};
6
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import{isUndefinedOrNull as l}from"@flatbiz/utils";import{fbaHooks as i}from"../fba-hooks/index.js";import{FlexLayout as t}from"../flex-layout/index.js";import{jsxs as r,jsx as s}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"react";import"../use-responsive-point-21b8c601.js";import"antd";var c=function c(a){var m=l(a.showTitleIndex)?true:a.showTitleIndex;var n=i.useThemeToken();var d={"--rule-describe-colorPrimary":n.colorPrimary};return r("div",{className:e("v-rule-describe",a.className),style:d,children:[a.title?s("div",{className:e("v-rule-describe-title",{"v-rule-describe-title-sign":a.titleSign}),children:a.title}):null,a.ruleDataList.map((function(e,l){if(m&&e.title){return r("div",{className:"v-rule-describe-item",style:a.ruleItemStyle,children:[r(t,{fullIndex:1,direction:"horizontal",className:"v-rule-describe-item-title",style:a.ruleItemTitleStyle,children:[r("span",{className:"v-rule-describe-item-title-index",children:[l+1,". "]}),s("span",{className:"v-rule-describe-item-title-content",children:e.title})]}),e.desc?r(t,{direction:"horizontal",className:"v-rule-describe-item-desc",style:a.ruleItemDescStyle,fullIndex:1,children:[s("span",{className:"v-rule-describe-item-title-index"}),s("span",{className:"v-rule-describe-item-title-content",children:e.desc})]}):null]},l)}return r("div",{className:"v-rule-describe-item",children:[e.title?s("div",{className:"v-rule-describe-item-title",style:a.ruleItemTitleStyle,children:e.title}):null,e.desc?s("div",{className:"v-rule-describe-item-desc",style:a.ruleItemDescStyle,children:e.desc}):null]},l)}))]})};export{c as RuleDescribe};
7
7
  //# sourceMappingURL=index.js.map
@@ -9,5 +9,5 @@ import './../form-wrapper/index.css';
9
9
  import './../pre-defined-class-name/index.css';
10
10
  import './index.css';
11
11
  /*! @flatjs/forge MIT @flatbiz/antd */
12
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import i from"@ant-design/icons/es/icons/DownOutlined";import n from"@ant-design/icons/es/icons/UpOutlined";import{_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as t}from"@wove/react/cjs/hooks";import{Form as o}from"antd";import{forwardRef as l,useMemo as a,Children as s,useImperativeHandle as u}from"react";import{isFragment as d}from"react-is";import{ButtonWrapper as f}from"../button-wrapper/index.js";import{fbaHooks as m}from"../fba-hooks/index.js";import{FormGrid as p}from"../form-grid/index.js";import{FormWrapper as c}from"../form-wrapper/index.js";import{preDefinedClassName as h}from"../pre-defined-class-name/index.js";import{Model as v}from"@dimjs/model-react";import{jsx as y,jsxs as g}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@flatbiz/utils";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var j={queryCondition:{},isInit:true,openFold:false};var C={actions:{updateFilterCondition:function e(i){return function(e){e.queryCondition=r({},e.queryCondition,i)}},resetFilterCondition:function e(i){return function(e){e.queryCondition=r({},j.queryCondition,i)}},updateInitStatus:function e(){return function(e){e.isInit=false}},onChangeOpenFold:function e(i){return function(e){e.openFold=i}}},state:j};var F={};var b=function e(i){if(!F[i]){F[i]=v(C)}return F[i]};var I=l((function(l,v){var j=t.useId(undefined,"search-form-key");var C=a((function(){return l.cacheSwitch===false?j:location.pathname}),[j,l.cacheSwitch]);var F=b(C).useStore(),I=F[0],k=F[1];var x=o.useForm(l.form),w=x[0];var S=l.queryButtonProps,q=l.resetButtonProps,L=l.searchOperate,O=l.formClassName,A=l.rightOperateAreaAppendType,P=l.onQuery,_=l.onReset,z=l.initRequest,B=l.onFormFinish,R=l.defaultResetButtonTriggerRequest;var T=typeof l.children==="function"?l.children(w):l.children;var V=A||"cover";var G=a((function(){if(d(T)){return s.toArray(T.props.children)}else{return s.toArray(T)}}),[T]);var N=function e(i){Object.keys(i).forEach((function(e){if(e.startsWith("__#invalid_date_")){delete i[e]}}));void k.updateFilterCondition(i);void(P==null?void 0:P(i||{}))};var K=t.useCallbackRef((function(){return new Promise((function(e,i){return Promise.resolve(k.resetFilterCondition()).then((function(n){try{setTimeout((function(){w.resetFields()}),200);_==null?void 0:_();if(R===false){return e()}void N({});return e()}catch(e){return i(e)}}),i)}))}));var W=function e(i){if(B){B(i);return}void N(i)};var D=a((function(){var e;var t=[!(S!=null&&S.hidden)?y(f,r({type:"primary",htmlType:"submit",loadingPosition:"center"},S,{children:(S==null?void 0:S.text)||"查询"}),"1"):null,!(q!=null&&q.hidden)?y(f,r({onClick:K},q,{children:(q==null?void 0:q.text)||"重置"}),"2"):null].filter(Boolean);var o=L==null?void 0:L(w);var a=o==null?void 0:o.rightList;var s=(o==null?void 0:o.leftList)||[];var u=t;if(a){if(V==="afterAppend"){u=[].concat(t,a)}else if(V==="beforeAppend"){u=[].concat(a,t)}else{u=a}}if((e=l.foldKeys)!=null&&e.length){var d=y(f,{type:"link",style:{padding:"0"},onClick:function e(){void k.onChangeOpenFold(!I.openFold)},children:I.openFold?g("span",{children:["收起",y(n,{style:{marginLeft:3,fontSize:12}})]}):g("span",{children:["展开",y(i,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(u.length>0||s.length===0){u.push(d)}else if((s==null?void 0:s.length)>0){s.push(d)}}return G.map((function(e,i){var n;if(!I.openFold&&(n=l.foldKeys)!=null&&n.find((function(i){return".$"+i===e.key}))){return null}if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return y(p.Col,{children:e},i)})).filter(Boolean).concat(y(p.OperateCol,r({},o,{leftList:s,rightList:u}),999))}),[S,q,K,L,w,l.foldKeys,G,V,I.openFold,k]);m.useEffectCustom((function(){if(z===false&&!I.isInit||z!==false){void(P==null?void 0:P(r({},l.formInitialValues,I.queryCondition)))}void k.updateInitStatus()}),[]);u(v,(function(){return{onQuery:N,form:w}}));return y(c,{form:w,autoComplete:"off",onFinish:W,initialValues:r({},l.formInitialValues,I.queryCondition),className:e("search-form",h.form.formItemGap8,O),style:l.formStyle,labelWidth:l.formLabelWidth,labelAlign:l.formLabelAlign,formItemGap:l.formFormItemGap,labelItemVertical:l.formLabelItemVertical,children:l.isPure?T:y(p.Row,{gutter:[15,0],gridSize:l.formGridSize,children:D})})}));export{I as SearchForm};
12
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import i from"@ant-design/icons/es/icons/DownOutlined";import n from"@ant-design/icons/es/icons/UpOutlined";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as t}from"@wove/react/cjs/hooks";import{Form as o}from"antd";import{forwardRef as l,useMemo as a,Children as s,useImperativeHandle as u}from"react";import{isFragment as d}from"react-is";import{ButtonWrapper as f}from"../button-wrapper/index.js";import{fbaHooks as m}from"../fba-hooks/index.js";import{FormGrid as p}from"../form-grid/index.js";import{FormWrapper as c}from"../form-wrapper/index.js";import{preDefinedClassName as h}from"../pre-defined-class-name/index.js";import{Model as v}from"@dimjs/model-react";import{jsx as y,jsxs as g}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@flatbiz/utils";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var j={queryCondition:{},isInit:true,openFold:false};var C={actions:{updateFilterCondition:function e(i){return function(e){e.queryCondition=r({},e.queryCondition,i)}},resetFilterCondition:function e(i){return function(e){e.queryCondition=r({},j.queryCondition,i)}},updateInitStatus:function e(){return function(e){e.isInit=false}},onChangeOpenFold:function e(i){return function(e){e.openFold=i}}},state:j};var F={};var b=function e(i){if(!F[i]){F[i]=v(C)}return F[i]};var I=l((function(l,v){var j=t.useId(undefined,"search-form-key");var C=a((function(){return l.cacheSwitch===false?j:location.pathname}),[j,l.cacheSwitch]);var F=b(C).useStore(),I=F[0],k=F[1];var x=o.useForm(l.form),w=x[0];var S=l.queryButtonProps,q=l.resetButtonProps,L=l.searchOperate,O=l.formClassName,A=l.rightOperateAreaAppendType,P=l.onQuery,_=l.onReset,z=l.initRequest,B=l.onFormFinish,R=l.defaultResetButtonTriggerRequest;var T=typeof l.children==="function"?l.children(w):l.children;var V=A||"cover";var G=a((function(){if(d(T)){return s.toArray(T.props.children)}else{return s.toArray(T)}}),[T]);var N=function e(i){Object.keys(i).forEach((function(e){if(e.startsWith("__#invalid_date_")){delete i[e]}}));void k.updateFilterCondition(i);void(P==null?void 0:P(i||{}))};var K=t.useCallbackRef((function(){return new Promise((function(e,i){return Promise.resolve(k.resetFilterCondition()).then((function(n){try{setTimeout((function(){w.resetFields()}),200);_==null||_();if(R===false){return e()}void N({});return e()}catch(e){return i(e)}}),i)}))}));var W=function e(i){if(B){B(i);return}void N(i)};var D=a((function(){var e;var t=[!(S!=null&&S.hidden)?y(f,r({type:"primary",htmlType:"submit",loadingPosition:"center"},S,{children:(S==null?void 0:S.text)||"查询"}),"1"):null,!(q!=null&&q.hidden)?y(f,r({onClick:K},q,{children:(q==null?void 0:q.text)||"重置"}),"2"):null].filter(Boolean);var o=L==null?void 0:L(w);var a=o==null?void 0:o.rightList;var s=(o==null?void 0:o.leftList)||[];var u=t;if(a){if(V==="afterAppend"){u=[].concat(t,a)}else if(V==="beforeAppend"){u=[].concat(a,t)}else{u=a}}if((e=l.foldKeys)!=null&&e.length){var d=y(f,{type:"link",style:{padding:"0"},onClick:function e(){void k.onChangeOpenFold(!I.openFold)},children:I.openFold?g("span",{children:["收起",y(n,{style:{marginLeft:3,fontSize:12}})]}):g("span",{children:["展开",y(i,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(u.length>0||s.length===0){u.push(d)}else if((s==null?void 0:s.length)>0){s.push(d)}}return G.map((function(e,i){var n;if(!I.openFold&&(n=l.foldKeys)!=null&&n.find((function(i){return".$"+i===e.key}))){return null}if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return y(p.Col,{children:e},i)})).filter(Boolean).concat(y(p.OperateCol,r({},o,{leftList:s,rightList:u}),999))}),[S,q,K,L,w,l.foldKeys,G,V,I.openFold,k]);m.useEffectCustom((function(){if(z===false&&!I.isInit||z!==false){void(P==null?void 0:P(r({},l.formInitialValues,I.queryCondition)))}void k.updateInitStatus()}),[]);u(v,(function(){return{onQuery:N,form:w}}));return y(c,{form:w,autoComplete:"off",onFinish:W,initialValues:r({},l.formInitialValues,I.queryCondition),className:e("search-form",h.form.formItemGap8,O),style:l.formStyle,labelWidth:l.formLabelWidth,labelAlign:l.formLabelAlign,formItemGap:l.formFormItemGap,labelItemVertical:l.formLabelItemVertical,children:l.isPure?T:y(p.Row,{gutter:[15,0],gridSize:l.formGridSize,children:D})})}));export{I as SearchForm};
13
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/search-form/model.ts","@flatbiz/antd/src/search-form/search.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n openFold: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition?: TPlainObject;\n updateInitStatus: void;\n onChangeOpenFold: boolean;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n openFold: false,\n};\n\nconst SearchFormModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...defaultState.queryCondition,\n ...params,\n };\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n onChangeOpenFold: (boo) => {\n return (state) => {\n state.openFold = boo;\n };\n },\n },\n state: defaultState,\n};\n\nconst searchFormModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const searchFormModel = (key: string) => {\n if (!searchFormModels[key]) {\n searchFormModels[key] = Model(SearchFormModel);\n }\n return searchFormModels[key];\n};\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\n\nimport { classNames } from '@dimjs/utils';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, FormInstance } from 'antd';\nimport { Children, CSSProperties, forwardRef, ReactElement, useImperativeHandle, useMemo } from 'react';\nimport { isFragment } from 'react-is';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport { searchFormModel } from './model';\nimport './style.less';\n\nexport type SearchFormProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n searchOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n formClassName?: string;\n formStyle?: CSSProperties;\n /** form 初始值 */\n formInitialValues?: TPlainObject;\n /** label宽度,Form内部所有FormItem label都生效 */\n formLabelWidth?: FormWrapperProps['labelWidth'];\n /** labelItem 竖直布局 */\n formLabelItemVertical?: FormWrapperProps['labelItemVertical'];\n /** label 对齐方式 */\n formLabelAlign?: FormWrapperProps['labelAlign'];\n /** formItem之间竖直间距,默认值:24 */\n formFormItemGap?: FormWrapperProps['formItemGap'];\n /**\n * 自定义 searchOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n /**\n * 展开、收起key值列表(内容当前组件子组件key值)\n */\n foldKeys?: string[];\n /**\n * 按钮提交事件\n * 如果需要自定义回车提交事件,需要自定义提交按钮\n */\n onFormFinish?: (values?: TPlainObject) => void;\n /** 重置按钮 */\n onReset?: () => void;\n /** 查询按钮 */\n onQuery?: (values: TPlainObject) => void;\n /**\n * 是否缓存查询数据,默认值:true\n * ```\n * 1. 一般首页可缓存,二级、三级等页面不能缓存\n * ```\n */\n cacheSwitch?: boolean;\n /** 初始化是否请求,默认值:true */\n initRequest?: boolean;\n form?: FormInstance;\n};\n\nexport type SearchFormRefApi = {\n onQuery: (values?: TPlainObject) => void;\n form: FormInstance;\n};\n\n/**\n * 搜索表单\n *\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <SearchForm>\n * <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * </SearchForm>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 Form.Item\n * <SearchForm>\n * <FormCol span={12}><Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item></FormCol>\n * </SearchForm>\n *\n * -- children 可为 function\n * <SearchForm>\n * {(form) => {\n * return <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * }}\n * </SearchForm>\n *\n * 2. 用户2(自定义布局)\n * SearchForm设置 isPure = true,FormItem无布局规则\n * 3. SearchForm中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 searchOperate 设置操作按钮\n * 5. SearchForm 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,可在右侧按钮区域新增自定义按钮\n * 8. 可设置 cacheSwitch 来控制是否缓存查询数据(一般一级页面可缓存,二级、三级等不能缓存),\n * 缓存数据存储在内存中,react路由跳转可正常读取缓存,浏览器刷新后缓存丢失\n *```\n */\nexport const SearchForm = forwardRef<SearchFormRefApi, SearchFormProps>((props, ref) => {\n const searchFormId = hooks.useId(undefined, 'search-form-key');\n\n const modelKey = useMemo(() => {\n return props.cacheSwitch === false ? searchFormId : location.pathname;\n }, [searchFormId, props.cacheSwitch]);\n\n const [state, actions] = searchFormModel(modelKey).useStore();\n const [form] = Form.useForm(props.form);\n const {\n queryButtonProps,\n resetButtonProps,\n searchOperate,\n formClassName,\n rightOperateAreaAppendType,\n onQuery,\n onReset,\n initRequest,\n onFormFinish,\n defaultResetButtonTriggerRequest,\n } = props;\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const onInnerQuery = (values) => {\n Object.keys(values).forEach((key) => {\n if (key.startsWith('__#invalid_date_')) {\n delete values[key];\n }\n });\n void actions.updateFilterCondition(values);\n void onQuery?.(values || {});\n };\n\n const onInnerReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n setTimeout(() => {\n form.resetFields();\n }, 200);\n onReset?.();\n if (defaultResetButtonTriggerRequest === false) {\n return;\n }\n void onInnerQuery({});\n });\n\n const onInnerFormFinish = (values) => {\n if (onFormFinish) {\n onFormFinish(values);\n return;\n }\n void onInnerQuery(values);\n };\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper\n key=\"1\"\n type=\"primary\"\n htmlType={'submit'}\n loadingPosition=\"center\"\n {...queryButtonProps}\n >\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onInnerReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = searchOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n\n if (props.foldKeys?.length) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n void actions.onChangeOpenFold(!state.openFold);\n }}\n >\n {state.openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!state.openFold && props.foldKeys?.find((keyItem) => `.$${keyItem}` === item.key)) {\n return null;\n }\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n queryButtonProps,\n resetButtonProps,\n onInnerReset,\n searchOperate,\n form,\n props.foldKeys,\n childrens,\n rightOperateAreaAppendTypeFt,\n state.openFold,\n actions,\n ]);\n\n fbaHooks.useEffectCustom(() => {\n if ((initRequest === false && !state.isInit) || initRequest !== false) {\n void onQuery?.({\n ...props.formInitialValues,\n ...state.queryCondition,\n });\n }\n void actions.updateInitStatus();\n }, []);\n\n useImperativeHandle(ref, () => {\n return {\n onQuery: onInnerQuery,\n form,\n };\n });\n\n return (\n <FormWrapper\n form={form}\n autoComplete=\"off\"\n onFinish={onInnerFormFinish}\n initialValues={{\n ...props.formInitialValues,\n ...state.queryCondition,\n }}\n className={classNames('search-form', preDefinedClassName.form.formItemGap8, formClassName)}\n style={props.formStyle}\n labelWidth={props.formLabelWidth}\n labelAlign={props.formLabelAlign}\n formItemGap={props.formFormItemGap}\n labelItemVertical={props.formLabelItemVertical}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </FormWrapper>\n );\n});\n"],"names":["defaultState","queryCondition","isInit","openFold","SearchFormModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","onChangeOpenFold","boo","searchFormModels","searchFormModel","key","Model","SearchForm","forwardRef","props","ref","searchFormId","_hooks","useId","undefined","modelKey","useMemo","cacheSwitch","location","pathname","_searchFormModel$useS","useStore","_Form$useForm","Form","useForm","form","queryButtonProps","resetButtonProps","searchOperate","formClassName","rightOperateAreaAppendType","onQuery","onReset","initRequest","onFormFinish","defaultResetButtonTriggerRequest","children","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","onInnerQuery","values","Object","keys","forEach","startsWith","onInnerReset","useCallbackRef","Promise","$return","$error","resolve","then","$await_1","setTimeout","resetFields","$boundEx","onInnerFormFinish","formRowChildren","_props$foldKeys","defaultRightList","hidden","_jsx","ButtonWrapper","type","htmlType","loadingPosition","text","onClick","filter","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","foldKeys","length","changeFolditem","style","padding","_jsxs","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","map","item","index","_props$foldKeys2","find","keyItem","FormGrid","Col","OperateCol","fbaHooks","useEffectCustom","formInitialValues","useImperativeHandle","FormWrapper","autoComplete","onFinish","initialValues","className","_classNames","preDefinedClassName","formItemGap8","formStyle","labelWidth","formLabelWidth","labelAlign","formLabelAlign","formItemGap","formFormItemGap","labelItemVertical","formLabelItemVertical","isPure","Row","gutter","gridSize","formGridSize"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/search-form/model.ts","@flatbiz/antd/src/search-form/search.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n openFold: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition?: TPlainObject;\n updateInitStatus: void;\n onChangeOpenFold: boolean;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n openFold: false,\n};\n\nconst SearchFormModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...defaultState.queryCondition,\n ...params,\n };\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n onChangeOpenFold: (boo) => {\n return (state) => {\n state.openFold = boo;\n };\n },\n },\n state: defaultState,\n};\n\nconst searchFormModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const searchFormModel = (key: string) => {\n if (!searchFormModels[key]) {\n searchFormModels[key] = Model(SearchFormModel);\n }\n return searchFormModels[key];\n};\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\n\nimport { classNames } from '@dimjs/utils';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, FormInstance } from 'antd';\nimport { Children, CSSProperties, forwardRef, ReactElement, useImperativeHandle, useMemo } from 'react';\nimport { isFragment } from 'react-is';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport { searchFormModel } from './model';\nimport './style.less';\n\nexport type SearchFormProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n searchOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n formClassName?: string;\n formStyle?: CSSProperties;\n /** form 初始值 */\n formInitialValues?: TPlainObject;\n /** label宽度,Form内部所有FormItem label都生效 */\n formLabelWidth?: FormWrapperProps['labelWidth'];\n /** labelItem 竖直布局 */\n formLabelItemVertical?: FormWrapperProps['labelItemVertical'];\n /** label 对齐方式 */\n formLabelAlign?: FormWrapperProps['labelAlign'];\n /** formItem之间竖直间距,默认值:24 */\n formFormItemGap?: FormWrapperProps['formItemGap'];\n /**\n * 自定义 searchOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n /**\n * 展开、收起key值列表(内容当前组件子组件key值)\n */\n foldKeys?: string[];\n /**\n * 按钮提交事件\n * 如果需要自定义回车提交事件,需要自定义提交按钮\n */\n onFormFinish?: (values?: TPlainObject) => void;\n /** 重置按钮 */\n onReset?: () => void;\n /** 查询按钮 */\n onQuery?: (values: TPlainObject) => void;\n /**\n * 是否缓存查询数据,默认值:true\n * ```\n * 1. 一般首页可缓存,二级、三级等页面不能缓存\n * ```\n */\n cacheSwitch?: boolean;\n /** 初始化是否请求,默认值:true */\n initRequest?: boolean;\n form?: FormInstance;\n};\n\nexport type SearchFormRefApi = {\n onQuery: (values?: TPlainObject) => void;\n form: FormInstance;\n};\n\n/**\n * 搜索表单\n *\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <SearchForm>\n * <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * </SearchForm>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 Form.Item\n * <SearchForm>\n * <FormCol span={12}><Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item></FormCol>\n * </SearchForm>\n *\n * -- children 可为 function\n * <SearchForm>\n * {(form) => {\n * return <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * }}\n * </SearchForm>\n *\n * 2. 用户2(自定义布局)\n * SearchForm设置 isPure = true,FormItem无布局规则\n * 3. SearchForm中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 searchOperate 设置操作按钮\n * 5. SearchForm 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,可在右侧按钮区域新增自定义按钮\n * 8. 可设置 cacheSwitch 来控制是否缓存查询数据(一般一级页面可缓存,二级、三级等不能缓存),\n * 缓存数据存储在内存中,react路由跳转可正常读取缓存,浏览器刷新后缓存丢失\n *```\n */\nexport const SearchForm = forwardRef<SearchFormRefApi, SearchFormProps>((props, ref) => {\n const searchFormId = hooks.useId(undefined, 'search-form-key');\n\n const modelKey = useMemo(() => {\n return props.cacheSwitch === false ? searchFormId : location.pathname;\n }, [searchFormId, props.cacheSwitch]);\n\n const [state, actions] = searchFormModel(modelKey).useStore();\n const [form] = Form.useForm(props.form);\n const {\n queryButtonProps,\n resetButtonProps,\n searchOperate,\n formClassName,\n rightOperateAreaAppendType,\n onQuery,\n onReset,\n initRequest,\n onFormFinish,\n defaultResetButtonTriggerRequest,\n } = props;\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const onInnerQuery = (values) => {\n Object.keys(values).forEach((key) => {\n if (key.startsWith('__#invalid_date_')) {\n delete values[key];\n }\n });\n void actions.updateFilterCondition(values);\n void onQuery?.(values || {});\n };\n\n const onInnerReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n setTimeout(() => {\n form.resetFields();\n }, 200);\n onReset?.();\n if (defaultResetButtonTriggerRequest === false) {\n return;\n }\n void onInnerQuery({});\n });\n\n const onInnerFormFinish = (values) => {\n if (onFormFinish) {\n onFormFinish(values);\n return;\n }\n void onInnerQuery(values);\n };\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper\n key=\"1\"\n type=\"primary\"\n htmlType={'submit'}\n loadingPosition=\"center\"\n {...queryButtonProps}\n >\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onInnerReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = searchOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n\n if (props.foldKeys?.length) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n void actions.onChangeOpenFold(!state.openFold);\n }}\n >\n {state.openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!state.openFold && props.foldKeys?.find((keyItem) => `.$${keyItem}` === item.key)) {\n return null;\n }\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n queryButtonProps,\n resetButtonProps,\n onInnerReset,\n searchOperate,\n form,\n props.foldKeys,\n childrens,\n rightOperateAreaAppendTypeFt,\n state.openFold,\n actions,\n ]);\n\n fbaHooks.useEffectCustom(() => {\n if ((initRequest === false && !state.isInit) || initRequest !== false) {\n void onQuery?.({\n ...props.formInitialValues,\n ...state.queryCondition,\n });\n }\n void actions.updateInitStatus();\n }, []);\n\n useImperativeHandle(ref, () => {\n return {\n onQuery: onInnerQuery,\n form,\n };\n });\n\n return (\n <FormWrapper\n form={form}\n autoComplete=\"off\"\n onFinish={onInnerFormFinish}\n initialValues={{\n ...props.formInitialValues,\n ...state.queryCondition,\n }}\n className={classNames('search-form', preDefinedClassName.form.formItemGap8, formClassName)}\n style={props.formStyle}\n labelWidth={props.formLabelWidth}\n labelAlign={props.formLabelAlign}\n formItemGap={props.formFormItemGap}\n labelItemVertical={props.formLabelItemVertical}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </FormWrapper>\n );\n});\n"],"names":["defaultState","queryCondition","isInit","openFold","SearchFormModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","onChangeOpenFold","boo","searchFormModels","searchFormModel","key","Model","SearchForm","forwardRef","props","ref","searchFormId","_hooks","useId","undefined","modelKey","useMemo","cacheSwitch","location","pathname","_searchFormModel$useS","useStore","_Form$useForm","Form","useForm","form","queryButtonProps","resetButtonProps","searchOperate","formClassName","rightOperateAreaAppendType","onQuery","onReset","initRequest","onFormFinish","defaultResetButtonTriggerRequest","children","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","onInnerQuery","values","Object","keys","forEach","startsWith","onInnerReset","useCallbackRef","Promise","$return","$error","resolve","then","$await_1","setTimeout","resetFields","$boundEx","onInnerFormFinish","formRowChildren","_props$foldKeys","defaultRightList","hidden","_jsx","ButtonWrapper","type","htmlType","loadingPosition","text","onClick","filter","Boolean","customFormOperateCol","customRightList","rightList","leftList","concat","foldKeys","length","changeFolditem","style","padding","_jsxs","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","map","item","index","_props$foldKeys2","find","keyItem","FormGrid","Col","OperateCol","fbaHooks","useEffectCustom","formInitialValues","useImperativeHandle","FormWrapper","autoComplete","onFinish","initialValues","className","_classNames","preDefinedClassName","formItemGap8","formStyle","labelWidth","formLabelWidth","labelAlign","formLabelAlign","formItemGap","formFormItemGap","labelItemVertical","formLabelItemVertical","isPure","Row","gutter","gridSize","formGridSize"],"mappings":"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"}
@@ -4,5 +4,5 @@ import './../input-search-wrapper/index.css';
4
4
  import './../roll-location-center/index.css';
5
5
  import './index.css';
6
6
  /*! @flatjs/forge MIT @flatbiz/antd */
7
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as a}from"../_rollupPluginBabelHelpers-a0769acd.js";import{valueIsEqual as l}from"@flatbiz/utils";import{useState as n,useMemo as t}from"react";import{fbaHooks as i}from"../fba-hooks/index.js";import{InputSearchWrapper as s}from"../input-search-wrapper/index.js";import{Empty as o}from"antd";import{RollLocationCenter as u}from"../roll-location-center/index.js";import{jsx as c,Fragment as m,jsxs as v}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"ahooks";var d=function r(a){var l=a.value,n=a.dataList,t=a.onChange,i=a.style,s=a.emptyView;if(!(n!=null&&n.length)){return s?c(m,{children:s}):c(o,{style:{marginTop:"40px"},description:"暂无数据"})}return c("ul",{className:"v-search-menu-list-view",style:i,children:c(u,{activeKey:a.value,renderList:n.map((function(r){return{activeKey:r.key,render:c("li",{className:e("v-search-menu-list-view-item",{"v-search-menu-list-view-item-active":l==r.key}),onClick:t==null?void 0:t.bind(null,r.key,r),children:r.label},r.key)}}))})})};function f(o){var u=o.value,m=o.onChange,f=o.dataSource,h=o.searchKeyList,p=o.wrapStyle,y=o.style,k=o.placeholder,b=o.fieldNames,j=o.renderItem,w=o.lazySearch,g=o.className,x=o.searchStyle,C=o.emptyView,N=o.showSearch,S=o.size;var E=n([]),L=E[0],z=E[1];var K=t((function(){return a({label:"label",key:"key"},b)}),[b]);var V=h!=null&&h.length?h:[K.label];var _=t((function(){var e=K.label,r=K.key;return L==null?void 0:L.map((function(l){return a({},l,{label:j?j(l):l==null?void 0:l[e],key:l==null?void 0:l[r]})}))}),[L,K,j]);i.useEffectCustom((function(){B("")}),[f]);var B=function e(r){if(!r){z(f);return}var a=f.filter((function(e){return!!(V!=null&&V.find((function(a){var l;return(l=e[a])==null?void 0:l.includes(r)})))}));z(a)};var H=function e(r){B(r.target.value)};var I=r.useCallbackRef((function(e){var r=f.find((function(r){return l(e,r[K.key])}));m==null?void 0:m(e,r)}));var P=e(g,"v-search-menu",{"v-search-menu-small":S==="small"});return v("div",{style:p,className:P,children:[N!==false?v("div",{className:"v-search-menu-search-area",style:x,children:[c(s,{onSearch:w?B:undefined,onChange:!w?H:undefined,placeholder:k||"请输入搜索关键词",allowClear:true}),!!o.searchExtraElement&&c("div",{className:"v-search-menu-search-extra",children:o.searchExtraElement})]}):null,c(d,{style:y,value:u,dataList:_,onChange:I,emptyView:C})]})}export{f as SearchMenu};
7
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as a}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{valueIsEqual as l}from"@flatbiz/utils";import{useState as n,useMemo as t}from"react";import{fbaHooks as i}from"../fba-hooks/index.js";import{InputSearchWrapper as s}from"../input-search-wrapper/index.js";import{Empty as o}from"antd";import{RollLocationCenter as u}from"../roll-location-center/index.js";import{jsx as c,Fragment as m,jsxs as v}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"ahooks";var d=function r(a){var l=a.value,n=a.dataList,t=a.onChange,i=a.style,s=a.emptyView;if(!(n!=null&&n.length)){return s?c(m,{children:s}):c(o,{style:{marginTop:"40px"},description:"暂无数据"})}return c("ul",{className:"v-search-menu-list-view",style:i,children:c(u,{activeKey:a.value,renderList:n.map((function(r){return{activeKey:r.key,render:c("li",{className:e("v-search-menu-list-view-item",{"v-search-menu-list-view-item-active":l==r.key}),onClick:t==null?void 0:t.bind(null,r.key,r),children:r.label},r.key)}}))})})};function f(o){var u=o.value,m=o.onChange,f=o.dataSource,h=o.searchKeyList,p=o.wrapStyle,y=o.style,k=o.placeholder,b=o.fieldNames,j=o.renderItem,w=o.lazySearch,g=o.className,x=o.searchStyle,C=o.emptyView,N=o.showSearch,S=o.size;var E=n([]),L=E[0],z=E[1];var K=t((function(){return a({label:"label",key:"key"},b)}),[b]);var V=h!=null&&h.length?h:[K.label];var _=t((function(){var e=K.label,r=K.key;return L==null?void 0:L.map((function(l){return a({},l,{label:j?j(l):l==null?void 0:l[e],key:l==null?void 0:l[r]})}))}),[L,K,j]);i.useEffectCustom((function(){B("")}),[f]);var B=function e(r){if(!r){z(f);return}var a=f.filter((function(e){return!!(V!=null&&V.find((function(a){var l;return(l=e[a])==null?void 0:l.includes(r)})))}));z(a)};var H=function e(r){B(r.target.value)};var I=r.useCallbackRef((function(e){var r=f.find((function(r){return l(e,r[K.key])}));m==null||m(e,r)}));var P=e(g,"v-search-menu",{"v-search-menu-small":S==="small"});return v("div",{style:p,className:P,children:[N!==false?v("div",{className:"v-search-menu-search-area",style:x,children:[c(s,{onSearch:w?B:undefined,onChange:!w?H:undefined,placeholder:k||"请输入搜索关键词",allowClear:true}),!!o.searchExtraElement&&c("div",{className:"v-search-menu-search-extra",children:o.searchExtraElement})]}):null,c(d,{style:y,value:u,dataList:_,onChange:I,emptyView:C})]})}export{f as SearchMenu};
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/search-menu/list-view/index.tsx","@flatbiz/antd/src/search-menu/search-menu.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Empty } from 'antd';\nimport { type CSSProperties, type FC, type ReactElement } from 'react';\nimport { RollLocationCenter } from '../../roll-location-center';\nimport { type IListViewItem } from '../type';\nimport './style.less';\n\nexport interface IListViewProps {\n dataList: IListViewItem[];\n value?: string;\n onChange?: (key: string, item: IListViewItem) => void;\n style?: CSSProperties;\n /** 自定义空数据提示 */\n emptyView?: ReactElement;\n}\n\n/**\n * 搜索列表\n * @param props\n * @returns search menu list view\n */\nexport const ListView: FC<IListViewProps> = (props) => {\n const { value, dataList, onChange, style, emptyView } = props;\n // 数据判空提示\n if (!dataList?.length) {\n return emptyView ? (\n <>{emptyView}</>\n ) : (\n <Empty\n style={{\n marginTop: '40px',\n }}\n description=\"暂无数据\"\n />\n );\n }\n\n return (\n <ul className=\"v-search-menu-list-view\" style={style}>\n <RollLocationCenter\n activeKey={props.value}\n renderList={dataList.map((item) => {\n return {\n activeKey: item.key,\n render: (\n <li\n className={classNames('v-search-menu-list-view-item', {\n 'v-search-menu-list-view-item-active': value == item.key,\n })}\n key={item.key}\n onClick={onChange?.bind(null, item.key, item)}\n >\n {item.label}\n </li>\n ),\n };\n })}\n />\n </ul>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { valueIsEqual, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { ListView, type IListViewProps } from './list-view';\nimport './style.less';\nimport { type ISearchMenuProps } from './type';\n\n/**\n * 列表搜索\n * @param props\n * @returns\n */\nexport function SearchMenu(props: ISearchMenuProps & Pick<IListViewProps, 'emptyView'>) {\n const {\n value,\n onChange,\n dataSource,\n searchKeyList,\n wrapStyle,\n style,\n placeholder,\n fieldNames,\n renderItem,\n lazySearch,\n className,\n searchStyle,\n emptyView,\n showSearch,\n size,\n } = props;\n const [listFilter, setListFilter] = useState<TPlainObject[]>([]);\n\n /** 格式化对象 */\n const mergeFormatOption = useMemo(() => {\n return {\n label: 'label',\n key: 'key',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n /** 可搜索的字段值 */\n const targetSearchKeyList = searchKeyList?.length ? searchKeyList : [mergeFormatOption.label];\n\n /** 生成菜单列表 */\n const listViewData = useMemo(() => {\n const { label, key } = mergeFormatOption;\n return listFilter?.map((item) => {\n return {\n ...item,\n label: renderItem ? renderItem(item) : item?.[label],\n key: item?.[key],\n };\n });\n }, [listFilter, mergeFormatOption, renderItem]);\n\n /**\n * 数据格式化\n */\n fbaHooks.useEffectCustom(() => {\n handleSearch('');\n }, [dataSource]);\n\n /** 搜索 */\n const handleSearch = (searchWord: string) => {\n if (!searchWord) {\n // 还原列表\n setListFilter(dataSource);\n return;\n }\n // 根据搜索次过滤\n const resList = dataSource.filter((item) => {\n return !!targetSearchKeyList?.find((key) => {\n return item[key]?.includes(searchWord);\n });\n });\n setListFilter(resList);\n };\n\n /**\n * 搜索词变换\n * @param e\n */\n const handleWordChange = (e) => {\n handleSearch(e.target.value);\n };\n\n /**\n * 点击条目\n */\n const onClick = hooks.useCallbackRef((key) => {\n const targetItem = dataSource.find((item) => valueIsEqual(key, item[mergeFormatOption.key]));\n onChange?.(key, targetItem);\n });\n\n const cname = classNames(className, 'v-search-menu', {\n 'v-search-menu-small': size === 'small',\n });\n\n return (\n <div style={wrapStyle} className={cname}>\n {showSearch !== false ? (\n <div className=\"v-search-menu-search-area\" style={searchStyle}>\n <InputSearchWrapper\n onSearch={lazySearch ? handleSearch : undefined}\n onChange={!lazySearch ? handleWordChange : undefined}\n placeholder={placeholder || '请输入搜索关键词'}\n allowClear\n />\n {!!props.searchExtraElement && (\n <div className=\"v-search-menu-search-extra\">{props.searchExtraElement}</div>\n )}\n </div>\n ) : null}\n <ListView\n style={style}\n value={value}\n dataList={listViewData}\n onChange={onClick}\n emptyView={emptyView}\n />\n </div>\n );\n}\n"],"names":["ListView","props","value","dataList","onChange","style","emptyView","length","_jsx","_Fragment","children","Empty","marginTop","description","className","RollLocationCenter","activeKey","renderList","map","item","key","render","_classNames","onClick","bind","label","SearchMenu","dataSource","searchKeyList","wrapStyle","placeholder","fieldNames","renderItem","lazySearch","searchStyle","showSearch","size","_useState","useState","listFilter","setListFilter","mergeFormatOption","useMemo","_extends","targetSearchKeyList","listViewData","fbaHooks","useEffectCustom","handleSearch","searchWord","resList","filter","find","_item$key","includes","handleWordChange","e","target","_hooks","useCallbackRef","targetItem","valueIsEqual","cname","_jsxs","InputSearchWrapper","onSearch","undefined","allowClear","searchExtraElement"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/search-menu/list-view/index.tsx","@flatbiz/antd/src/search-menu/search-menu.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Empty } from 'antd';\nimport { type CSSProperties, type FC, type ReactElement } from 'react';\nimport { RollLocationCenter } from '../../roll-location-center';\nimport { type IListViewItem } from '../type';\nimport './style.less';\n\nexport interface IListViewProps {\n dataList: IListViewItem[];\n value?: string;\n onChange?: (key: string, item: IListViewItem) => void;\n style?: CSSProperties;\n /** 自定义空数据提示 */\n emptyView?: ReactElement;\n}\n\n/**\n * 搜索列表\n * @param props\n * @returns search menu list view\n */\nexport const ListView: FC<IListViewProps> = (props) => {\n const { value, dataList, onChange, style, emptyView } = props;\n // 数据判空提示\n if (!dataList?.length) {\n return emptyView ? (\n <>{emptyView}</>\n ) : (\n <Empty\n style={{\n marginTop: '40px',\n }}\n description=\"暂无数据\"\n />\n );\n }\n\n return (\n <ul className=\"v-search-menu-list-view\" style={style}>\n <RollLocationCenter\n activeKey={props.value}\n renderList={dataList.map((item) => {\n return {\n activeKey: item.key,\n render: (\n <li\n className={classNames('v-search-menu-list-view-item', {\n 'v-search-menu-list-view-item-active': value == item.key,\n })}\n key={item.key}\n onClick={onChange?.bind(null, item.key, item)}\n >\n {item.label}\n </li>\n ),\n };\n })}\n />\n </ul>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { valueIsEqual, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useMemo, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { ListView, type IListViewProps } from './list-view';\nimport './style.less';\nimport { type ISearchMenuProps } from './type';\n\n/**\n * 列表搜索\n * @param props\n * @returns\n */\nexport function SearchMenu(props: ISearchMenuProps & Pick<IListViewProps, 'emptyView'>) {\n const {\n value,\n onChange,\n dataSource,\n searchKeyList,\n wrapStyle,\n style,\n placeholder,\n fieldNames,\n renderItem,\n lazySearch,\n className,\n searchStyle,\n emptyView,\n showSearch,\n size,\n } = props;\n const [listFilter, setListFilter] = useState<TPlainObject[]>([]);\n\n /** 格式化对象 */\n const mergeFormatOption = useMemo(() => {\n return {\n label: 'label',\n key: 'key',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n /** 可搜索的字段值 */\n const targetSearchKeyList = searchKeyList?.length ? searchKeyList : [mergeFormatOption.label];\n\n /** 生成菜单列表 */\n const listViewData = useMemo(() => {\n const { label, key } = mergeFormatOption;\n return listFilter?.map((item) => {\n return {\n ...item,\n label: renderItem ? renderItem(item) : item?.[label],\n key: item?.[key],\n };\n });\n }, [listFilter, mergeFormatOption, renderItem]);\n\n /**\n * 数据格式化\n */\n fbaHooks.useEffectCustom(() => {\n handleSearch('');\n }, [dataSource]);\n\n /** 搜索 */\n const handleSearch = (searchWord: string) => {\n if (!searchWord) {\n // 还原列表\n setListFilter(dataSource);\n return;\n }\n // 根据搜索次过滤\n const resList = dataSource.filter((item) => {\n return !!targetSearchKeyList?.find((key) => {\n return item[key]?.includes(searchWord);\n });\n });\n setListFilter(resList);\n };\n\n /**\n * 搜索词变换\n * @param e\n */\n const handleWordChange = (e) => {\n handleSearch(e.target.value);\n };\n\n /**\n * 点击条目\n */\n const onClick = hooks.useCallbackRef((key) => {\n const targetItem = dataSource.find((item) => valueIsEqual(key, item[mergeFormatOption.key]));\n onChange?.(key, targetItem);\n });\n\n const cname = classNames(className, 'v-search-menu', {\n 'v-search-menu-small': size === 'small',\n });\n\n return (\n <div style={wrapStyle} className={cname}>\n {showSearch !== false ? (\n <div className=\"v-search-menu-search-area\" style={searchStyle}>\n <InputSearchWrapper\n onSearch={lazySearch ? handleSearch : undefined}\n onChange={!lazySearch ? handleWordChange : undefined}\n placeholder={placeholder || '请输入搜索关键词'}\n allowClear\n />\n {!!props.searchExtraElement && (\n <div className=\"v-search-menu-search-extra\">{props.searchExtraElement}</div>\n )}\n </div>\n ) : null}\n <ListView\n style={style}\n value={value}\n dataList={listViewData}\n onChange={onClick}\n emptyView={emptyView}\n />\n </div>\n );\n}\n"],"names":["ListView","props","value","dataList","onChange","style","emptyView","length","_jsx","_Fragment","children","Empty","marginTop","description","className","RollLocationCenter","activeKey","renderList","map","item","key","render","_classNames","onClick","bind","label","SearchMenu","dataSource","searchKeyList","wrapStyle","placeholder","fieldNames","renderItem","lazySearch","searchStyle","showSearch","size","_useState","useState","listFilter","setListFilter","mergeFormatOption","useMemo","_extends","targetSearchKeyList","listViewData","fbaHooks","useEffectCustom","handleSearch","searchWord","resList","filter","find","_item$key","includes","handleWordChange","e","target","_hooks","useCallbackRef","targetItem","valueIsEqual","cname","_jsxs","InputSearchWrapper","onSearch","undefined","allowClear","searchExtraElement"],"mappings":"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"}
@@ -3,5 +3,5 @@ import './../request-status/index.css';
3
3
  import './../fba-hooks/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import e from"@ant-design/icons/es/icons/RedoOutlined";import{isString as r}from"@dimjs/lang/cjs/is-string";import{hooks as n}from"@wove/react/cjs/hooks";import{a as t,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefinedOrNull as u,toArray as s,valueIsEqual as i,arrayFind as a}from"@flatbiz/utils";import{Select as l,Button as c}from"antd";import{useState as f,useMemo as v,useRef as d,isValidElement as h}from"react";import{RequestStatus as p}from"../request-status/index.js";import{isDeepEqual as m}from"@dimjs/lang/cjs/is-deep-equal";import{isArray as g}from"@dimjs/lang/cjs/is-array";import{get as C}from"@dimjs/utils/cjs/get";import{json as q}from"@dimjs/utils/cjs/json";import w from"pubsub-js";import{fbaHooks as b}from"../fba-hooks/index.js";import{isObject as y}from"@dimjs/lang/cjs/is-object";import{jsx as _,jsxs as j}from"react/jsx-runtime";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";var R=function e(r){var n=r.cacheKey,t=r.serviceConfig,o=r.hasOuterSelectorList,s=r.outerSelectorList,i=r.onRespDataChange,a=r.onSelectorRequestError,l=r.onChange,c=r.useCache,d=r.fieldNames;var h=t==null?void 0:t.params;var p=(t==null?void 0:t.requiredParamsKeys)||[];var y=h&&Object.keys(h).length>0;var _=f(),j=_[0],R=_[1];var S=f(),L=S[0],O=S[1];var P=f(Date.now()),A=P[0],k=P[1];var x=v((function(){try{if(y){var e=JSON.stringify(q.sort(h));if(e==="{}"){return undefined}return e}}catch(e){}return undefined}),[y,h]);var N=""+x;var E=x+"_status";var D=n+"_"+N;var I=b.usePrevious(x);var K=b.usePrevious(h);var M=function e(r){var n=r;if(t!=null&&t.onRequestResultAdapter){n=t==null?void 0:t.onRequestResultAdapter(r)}else if(d!=null&&d.list){n=C(r,d==null?void 0:d.list)}if(n&&!g(n)){console.warn("待渲染数据为非数组结构",n);return[]}return n||[]};var B=function e(){var r;return(r=window["__selector_wrapper_"])==null?void 0:r[n]};var J=function e(){var r;return(r=B())==null?void 0:r[N]};var T=function e(){var r;return(r=B())==null?void 0:r[E]};var V=function e(r,t){if(!window["__selector_wrapper_"]){window["__selector_wrapper_"]={}}if(!window["__selector_wrapper_"][n]){window["__selector_wrapper_"][n]={}}window["__selector_wrapper_"][n][r]=t};var z=function e(r){V(E,r);O(r)};var F=function e(){return new Promise((function(e,r){var n,o;var u=function(n){try{console.error(n);z("request-error");R(undefined);setTimeout((function(){w.publish(D,{status:"request-error"})}));a==null?void 0:a(n);return e(Promise.reject())}catch(e){return r(e)}};try{z("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(h||{})).then((function(r){try{n=r;o=M(n);V(N,o);z("request-success");setTimeout((function(){w.publish(D,{status:"request-success",respData:o})}));return e(o)}catch(e){return u(e)}}),u)}catch(e){u(e)}}))};b.useEffectCustomAsync((function(){return new Promise((function(e,r){var n,f,v,d,g,C;if(o){O("request-success");R(s);i==null?void 0:i(s);return e()}if(p.length>0){n=h?p.find((function(e){return u(h[e])})):true;if(n){R([]);O("no-dependencies-params");if(I){l==null?void 0:l(undefined)}return e()}if(c===false){if(m(h,K)){return e()}var q=function(){try{return e()}catch(e){return r(e)}};var b=function(e){try{console.error(e);O("request-error");R(undefined);a==null?void 0:a(e);return q()}catch(e){return r(e)}};try{O("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(h||{})).then((function(e){try{f=e;v=M(f);O("request-success");R(v);i==null?void 0:i(v);return q()}catch(e){return b(e)}}),b)}catch(e){b(e)}}return y.call(this)}function y(){d=T();if(d==="request-success"){g=J();R(g);O(d);i==null?void 0:i(g);return e()}if(d==="request-progress"){O(d);w.subscribe(D,(function(e,r){var n=r.status,t=r.respData;if(n==="request-success"){O(n);R(t);i==null?void 0:i(t)}else{O("request-error");R(undefined)}}));return e()}var n=function(){try{return e()}catch(e){return r(e)}};var t=function(e){try{console.error(e);O("request-error");R(undefined);a==null?void 0:a(e);return n()}catch(e){return r(e)}};try{return Promise.resolve(F()).then((function(e){try{C=e;R(C);O("request-success");i==null?void 0:i(C);return n()}catch(e){return t(e)}}),t)}catch(e){t(e)}}return y.call(this)}))}),[JSON.stringify(h),s,A]);var H=function e(){k(Date.now())};return{requestStatus:L,stateSelectorList:j,serviceRequestParamsStringify:x,onRefreshRequest:H}};var S=function e(r,n){var t=s(r);t=t.map((function(e){if(y(e))return e[n];return e}));return t};var L=["serviceConfig","showAllOption","onSelectorListChange","onSelectorListAllChange","onSelectorRequestError","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","fieldNames","value","labelInValue","useCache"];var O=function u(f){var m=f.serviceConfig,g=f.showAllOption,C=f.onSelectorListChange,q=f.onSelectorListAllChange,w=f.onSelectorRequestError,b=f.onLabelRenderAdapter,y=f.requestMessageConfig,O=f.selectorList,P=f.modelKey,A=f.fieldNames,k=f.value,x=f.labelInValue,N=f.useCache,E=t(f,L);var D=d(true);var I=f.hasOwnProperty("selectorList");var K=o({label:"label",value:"value",disabled:"disabled"},A);var M=K.label,B=K.value,J=K.disabled;var T=v((function(){var e;if(!g)return null;var r=g===true;return e={},e[M]=r?"全部":g.label,e[B]=r?"":g.value,e}),[M,B,g]);var V=i(f.mode,["multiple"]);var z=R({fieldNames:K,cacheKey:P,hasOuterSelectorList:I,onChange:f.onChange,serviceConfig:m,outerSelectorList:O,onRespDataChange:function e(r){if(D.current){C==null?void 0:C(r||[]);D.current=false}q==null?void 0:q(r||[])},onSelectorRequestError:w,useCache:N===undefined?true:N}),F=z.requestStatus,H=z.stateSelectorList,W=z.onRefreshRequest;var G=n.useCallbackRef((function(e){if(x){if(V){f.onChange==null?void 0:f.onChange(e,e)}else{f.onChange==null?void 0:f.onChange(e[0],e)}}else{var r=e.map((function(e){return e[B]}));if(V){f.onChange==null?void 0:f.onChange(r,e)}else{f.onChange==null?void 0:f.onChange(r[0],e[0])}}}));var Q=n.useCallbackRef((function(e,r){if(!r)return f.onChange==null?void 0:f.onChange(undefined);var n=s(r);var t=[];n.forEach((function(e){if(g&&T&&e.value===T[B]){t.push(T)}else{var r=a(H||[],e.value,B);if(r){t.push(r)}}}));G(t)}));var U=v((function(){if(F!=="request-success")return[];if(!H||H.length===0)return[];if(!T)return H;return[T].concat(H)}),[T,F,H]);var X=F==="request-progress";var Y=v((function(){var e=S(k,B);return V?e:e[0]}),[V,B,k]);var Z=n.useCallbackRef((function(e,n){var t=s(n.children);var o="";var u=t.find((function(e){return h(e)}));if(!u){t.forEach((function(e){if(r(e))o+=e}))}else{o=r(n==null?void 0:n.label)?n.label:undefined}return o.toLowerCase().indexOf(e.toLowerCase())>=0}));return _(l,o({showSearch:true,allowClear:true,popupMatchSelectWidth:false,filterOption:Z},E,{style:o({width:"100%"},f.style),value:Y,loading:X,onChange:Q,fieldNames:undefined,suffixIcon:F==="request-error"?_(e,{spin:X,onClick:W}):E.suffixIcon,notFoundContent:_(p,{status:F,loading:X,messageConfig:o({"request-init":"暂无数据"},y),errorButton:_(c,{type:"primary",onClick:W,children:"重新获取数据"})}),children:U.map((function(e,r){var n=e[B];var t=e[M];return j(l.Option,{value:n,label:t,disabled:e[J],children:[f.showIcon?_("span",{className:"v-selector-item-icon",children:f.icon==null?void 0:f.icon(e,r)}):null,b?b(e):t]},n+"-"+r)}))}))};export{O as SelectorWrapper};
6
+ import e from"@ant-design/icons/es/icons/RedoOutlined";import{isString as r}from"@dimjs/lang/cjs/is-string";import{hooks as n}from"@wove/react/cjs/hooks";import{a as t,_ as u}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefinedOrNull as s,toArray as o,valueIsEqual as i,arrayFind as a}from"@flatbiz/utils";import{Select as l,Button as c}from"antd";import{useState as f,useMemo as v,useRef as d,isValidElement as h}from"react";import{RequestStatus as p}from"../request-status/index.js";import{isDeepEqual as m}from"@dimjs/lang/cjs/is-deep-equal";import{isArray as g}from"@dimjs/lang/cjs/is-array";import{get as C}from"@dimjs/utils/cjs/get";import{json as q}from"@dimjs/utils/cjs/json";import w from"pubsub-js";import{fbaHooks as b}from"../fba-hooks/index.js";import{isObject as y}from"@dimjs/lang/cjs/is-object";import{jsx as _,jsxs as j}from"react/jsx-runtime";import"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";var R=function e(r){var n=r.cacheKey,t=r.serviceConfig,u=r.hasOuterSelectorList,o=r.outerSelectorList,i=r.onRespDataChange,a=r.onSelectorRequestError,l=r.onChange,c=r.useCache,d=r.fieldNames;var h=t==null?void 0:t.params;var p=(t==null?void 0:t.requiredParamsKeys)||[];var y=h&&Object.keys(h).length>0;var _=f(),j=_[0],R=_[1];var S=f(),L=S[0],O=S[1];var P=f(Date.now()),A=P[0],k=P[1];var x=v((function(){try{if(y){var e=JSON.stringify(q.sort(h));if(e==="{}"){return undefined}return e}}catch(e){}return undefined}),[y,h]);var N=""+x;var E=x+"_status";var D=n+"_"+N;var I=b.usePrevious(x);var K=b.usePrevious(h);var M=function e(r){var n=r;if(t!=null&&t.onRequestResultAdapter){n=t==null?void 0:t.onRequestResultAdapter(r)}else if(d!=null&&d.list){n=C(r,d==null?void 0:d.list)}if(n&&!g(n)){console.warn("待渲染数据为非数组结构",n);return[]}return n||[]};var B=function e(){var r;return(r=window["__selector_wrapper_"])==null?void 0:r[n]};var J=function e(){var r;return(r=B())==null?void 0:r[N]};var T=function e(){var r;return(r=B())==null?void 0:r[E]};var V=function e(r,t){if(!window["__selector_wrapper_"]){window["__selector_wrapper_"]={}}if(!window["__selector_wrapper_"][n]){window["__selector_wrapper_"][n]={}}window["__selector_wrapper_"][n][r]=t};var z=function e(r){V(E,r);O(r)};var F=function e(){return new Promise((function(e,r){var n,u;var s=function(n){try{console.error(n);z("request-error");R(undefined);setTimeout((function(){w.publish(D,{status:"request-error"})}));a==null||a(n);return e(Promise.reject())}catch(e){return r(e)}};try{z("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(h||{})).then((function(r){try{n=r;u=M(n);V(N,u);z("request-success");setTimeout((function(){w.publish(D,{status:"request-success",respData:u})}));return e(u)}catch(e){return s(e)}}),s)}catch(e){s(e)}}))};b.useEffectCustomAsync((function(){return new Promise((function(e,r){var n,f,v,d,g,C;if(u){O("request-success");R(o);i==null||i(o);return e()}if(p.length>0){n=h?p.find((function(e){return s(h[e])})):true;if(n){R([]);O("no-dependencies-params");if(I){l==null||l(undefined)}return e()}if(c===false){if(m(h,K)){return e()}var q=function(){try{return e()}catch(e){return r(e)}};var b=function(e){try{console.error(e);O("request-error");R(undefined);a==null||a(e);return q()}catch(e){return r(e)}};try{O("request-progress");return Promise.resolve(t==null||t.onRequest==null?void 0:t.onRequest(h||{})).then((function(e){try{f=e;v=M(f);O("request-success");R(v);i==null||i(v);return q()}catch(e){return b(e)}}),b)}catch(e){b(e)}}return y.call(this)}function y(){d=T();if(d==="request-success"){g=J();R(g);O(d);i==null||i(g);return e()}if(d==="request-progress"){O(d);w.subscribe(D,(function(e,r){var n=r.status,t=r.respData;if(n==="request-success"){O(n);R(t);i==null||i(t)}else{O("request-error");R(undefined)}}));return e()}var n=function(){try{return e()}catch(e){return r(e)}};var t=function(e){try{console.error(e);O("request-error");R(undefined);a==null||a(e);return n()}catch(e){return r(e)}};try{return Promise.resolve(F()).then((function(e){try{C=e;R(C);O("request-success");i==null||i(C);return n()}catch(e){return t(e)}}),t)}catch(e){t(e)}}return y.call(this)}))}),[JSON.stringify(h),o,A]);var H=function e(){k(Date.now())};return{requestStatus:L,stateSelectorList:j,serviceRequestParamsStringify:x,onRefreshRequest:H}};var S=function e(r,n){var t=o(r);t=t.map((function(e){if(y(e))return e[n];return e}));return t};var L=["serviceConfig","showAllOption","onSelectorListChange","onSelectorListAllChange","onSelectorRequestError","onLabelRenderAdapter","requestMessageConfig","selectorList","modelKey","fieldNames","value","labelInValue","useCache"];var O=function s(f){var m=f.serviceConfig,g=f.showAllOption,C=f.onSelectorListChange,q=f.onSelectorListAllChange,w=f.onSelectorRequestError,b=f.onLabelRenderAdapter,y=f.requestMessageConfig,O=f.selectorList,P=f.modelKey,A=f.fieldNames,k=f.value,x=f.labelInValue,N=f.useCache,E=t(f,L);var D=d(true);var I=f.hasOwnProperty("selectorList");var K=u({label:"label",value:"value",disabled:"disabled"},A);var M=K.label,B=K.value,J=K.disabled;var T=v((function(){var e;if(!g)return null;var r=g===true;return e={},e[M]=r?"全部":g.label,e[B]=r?"":g.value,e}),[M,B,g]);var V=i(f.mode,["multiple"]);var z=R({fieldNames:K,cacheKey:P,hasOuterSelectorList:I,onChange:f.onChange,serviceConfig:m,outerSelectorList:O,onRespDataChange:function e(r){if(D.current){C==null||C(r||[]);D.current=false}q==null||q(r||[])},onSelectorRequestError:w,useCache:N===undefined?true:N}),F=z.requestStatus,H=z.stateSelectorList,W=z.onRefreshRequest;var G=n.useCallbackRef((function(e){if(x){if(V){f.onChange==null||f.onChange(e,e)}else{f.onChange==null||f.onChange(e[0],e)}}else{var r=e.map((function(e){return e[B]}));if(V){f.onChange==null||f.onChange(r,e)}else{f.onChange==null||f.onChange(r[0],e[0])}}}));var Q=n.useCallbackRef((function(e,r){if(!r)return f.onChange==null?void 0:f.onChange(undefined);var n=o(r);var t=[];n.forEach((function(e){if(g&&T&&e.value===T[B]){t.push(T)}else{var r=a(H||[],e.value,B);if(r){t.push(r)}}}));G(t)}));var U=v((function(){if(F!=="request-success")return[];if(!H||H.length===0)return[];if(!T)return H;return[T].concat(H)}),[T,F,H]);var X=F==="request-progress";var Y=v((function(){var e=S(k,B);return V?e:e[0]}),[V,B,k]);var Z=n.useCallbackRef((function(e,n){var t=o(n.children);var u="";var s=t.find((function(e){return h(e)}));if(!s){t.forEach((function(e){if(r(e))u+=e}))}else{u=r(n==null?void 0:n.label)?n.label:undefined}return u.toLowerCase().indexOf(e.toLowerCase())>=0}));return _(l,u({showSearch:true,allowClear:true,popupMatchSelectWidth:false,filterOption:Z},E,{style:u({width:"100%"},f.style),value:Y,loading:X,onChange:Q,fieldNames:undefined,suffixIcon:F==="request-error"?_(e,{spin:X,onClick:W}):E.suffixIcon,notFoundContent:_(p,{status:F,loading:X,messageConfig:u({"request-init":"暂无数据"},y),errorButton:_(c,{type:"primary",onClick:W,children:"重新获取数据"})}),children:U.map((function(e,r){var n=e[B];var t=e[M];return j(l.Option,{value:n,label:t,disabled:e[J],children:[f.showIcon?_("span",{className:"v-selector-item-icon",children:f.icon==null?void 0:f.icon(e,r)}):null,b?b(e):t]},n+"-"+r)}))}))};export{O as SelectorWrapper};
7
7
  //# sourceMappingURL=index.js.map