@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/mentions-wrapper/utils.ts","@flatbiz/antd/src/mentions-wrapper/mentions.tsx"],"sourcesContent":["import { type OverallKeyWordsPosition } from './types';\n\nexport const getOverallKeyWordsPosition = (params: { overallKeyWords: string[]; value?: string }) => {\n if (!params.value || !params.overallKeyWords.length) return [];\n const overallKeyWordsNew = Array.from(new Set(params.overallKeyWords || []));\n const positionItem: OverallKeyWordsPosition[][] = [];\n overallKeyWordsNew.forEach((item) => {\n if (!params.value?.includes(item)) return;\n const newItem = item\n .replace(/\\$/g, '\\\\$')\n .replace(/\\{/g, '\\\\{')\n .replace(/\\}/g, '\\\\}')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\[/g, '\\\\[');\n const regex = new RegExp(newItem, 'g');\n const positions: number[] = [];\n let match;\n while ((match = regex.exec(params.value)) !== null) {\n positions.push(match.index as number);\n }\n const innerList: OverallKeyWordsPosition[] = [];\n positions.forEach((temp) => {\n innerList.push({ start: temp + 1, end: temp + item.length });\n });\n positionItem.push(innerList);\n });\n return positionItem;\n};\n\n/**\n * 判断光标是否处在关键词位置内\n */\nexport const judgmentCursorInKeyWordsPosition = (params: {\n keyWordsPosition: OverallKeyWordsPosition[][];\n cursorPosition: number;\n}) => {\n for (let index = 0; index < params.keyWordsPosition.length; index++) {\n const element = params.keyWordsPosition[index].find((temp) => {\n return params.cursorPosition >= temp.start && params.cursorPosition < temp.end;\n });\n if (element) return element;\n }\n return undefined;\n};\n","import { toArray, type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useEventListener } from 'ahooks';\nimport { Mentions, type MentionProps } from 'antd';\nimport { forwardRef, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { getOverallKeyWordsPosition, judgmentCursorInKeyWordsPosition } from './utils';\n\nexport type MentionsWrapperRef = {\n getInputInstance: () => any;\n};\nexport type MentionsWrapperProps = Omit<\n MentionProps,\n | 'value'\n | 'onChange'\n | 'onClick'\n | 'onCursorChange'\n | 'options'\n | 'id'\n | 'split'\n | 'validateSearch'\n | 'ref'\n | 'prefix'\n> & {\n value?: string;\n onChange?: (value?: string) => void;\n /** 设置列表提示关键字,例如:@、$等 */\n prefix?: string | string[];\n onClick?: (value?: string) => void;\n /** 光标移动回调 */\n onCursorChange?: (position: number) => void;\n /**\n * 输入框内整体关键词列表\n * ```\n * 整体关键词交互\n * 1. 光标可整体移动\n * 2. 光标不会存在关键词内部\n * 3. 删除时,整体删除\n * ```\n */\n options?: string[];\n};\n\n/**\n * 基于Antd Mentions进行二次封装,可实现输入内关键字整体控制,包括光标移动、关键词删除等\n * ```\n * 可实现\n * 1. 控制光标输入\n * 2. 可设置关键词,光标不会出现在关键词内部\n * 3. 可整体删除关键词\n *\n * 应用场景例如:\n * 1. 公式输入\n * (【xx金额1】+【xx金额2】)*2\n * <MentionsWrapper prefix=\"$\" options={['【xx金额1】', '【xx金额2】']}/>\n *\n * 2. 短信模板设置\n * 您的订单号为${订单号},订单交易时间为${订单时间}\n * <MentionsWrapper prefix=\"$\" options={['${订单号}', '${订单时间}']}/>\n *\n * demo:https://fex.qa.tcshuke.com/docs/admin/main/other/widget\n * ```\n *\n */\nexport const MentionsWrapper = forwardRef<MentionsWrapperRef, MentionsWrapperProps>(\n (props: MentionsWrapperProps, ref) => {\n const { value, onChange, onClick, onCursorChange, onSelect, options, prefix, ...otherProps } = props;\n const id = hooks.useId(undefined, 'overall-input');\n const inputInnerRef = useRef<TAny>();\n const [cursorPosition, setCursorPosition] = useState(0);\n const invalidOnChangeRef = useRef(false);\n const valueNew = value || '';\n /** 关键词位置 */\n const overallKeyWordsPosition = useMemo(() => {\n if (options) {\n return getOverallKeyWordsPosition({\n overallKeyWords: options || [],\n value: valueNew,\n });\n }\n return [];\n }, [options, valueNew]);\n\n const getInputInstance = () => {\n return inputInnerRef.current?.textarea;\n };\n\n fbaHooks.useEffectCustom(() => {\n onCursorChange?.(cursorPosition || 0);\n }, [cursorPosition]);\n\n useEventListener(\n 'keydown',\n (ev) => {\n const selectionStart = getInputInstance()?.selectionStart as number;\n const selectionEnd = getInputInstance()?.selectionEnd as number;\n if (['ArrowLeft', 'ArrowRight'].includes(ev.code)) {\n let positionValue = 0;\n if (ev.code === 'ArrowLeft') {\n if (selectionStart - 1 < 0) return;\n positionValue = selectionStart - 1;\n setCursorPosition(positionValue);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: positionValue,\n });\n if (targret) {\n getInputInstance()?.setSelectionRange(targret.start, targret.start);\n }\n } else if (ev.code === 'ArrowRight') {\n if (selectionStart + 1 > valueNew.length) return;\n positionValue = selectionStart + 1;\n setCursorPosition(positionValue);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: positionValue,\n });\n if (targret) {\n getInputInstance()?.setSelectionRange(targret.end - 1, targret.end - 1);\n }\n }\n } else if (ev.code === 'Backspace') {\n /** 选中关键字/关键字+文字 的情况,直接删除 */\n if (selectionStart !== selectionEnd) {\n return;\n }\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: selectionStart - 1,\n });\n if (targret) {\n invalidOnChangeRef.current = true;\n const result = valueNew.substring(0, targret.start - 1) + valueNew.substring(targret.end);\n setTimeout(() => {\n getInputInstance()?.setSelectionRange(targret.start - 1, targret.start - 1);\n }, 50);\n if (!result) {\n invalidOnChangeRef.current = false;\n }\n onChange?.(result);\n }\n }\n },\n {\n target: () => {\n return document.querySelector(`#${id}`);\n },\n },\n );\n\n useEventListener(\n 'keyup',\n (ev) => {\n const selectionStart = getInputInstance()?.selectionStart || 0;\n if (['ArrowUp', 'ArrowDown'].includes(ev.code)) {\n setCursorPosition(selectionStart);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: selectionStart,\n });\n if (targret) {\n if (selectionStart - targret.start < targret.end - selectionStart) {\n getInputInstance()?.setSelectionRange(targret.start - 1, targret.start - 1);\n } else {\n getInputInstance()?.setSelectionRange(targret.end, targret.end);\n }\n }\n }\n },\n {\n target: () => {\n return document.querySelector(`#${id}`);\n },\n },\n );\n\n const onInputChange = hooks.useCallbackRef((value) => {\n if (otherProps.disabled) return;\n if (invalidOnChangeRef.current) {\n invalidOnChangeRef.current = false;\n return;\n }\n const selectionStart = getInputInstance()?.selectionStart || 0;\n setCursorPosition(selectionStart);\n onChange?.(value);\n });\n\n const onInputClick = hooks.useCallbackRef((event) => {\n const selectionStart = getInputInstance()?.selectionStart || 0;\n setCursorPosition(selectionStart);\n onClick?.(event.target.value);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: selectionStart,\n });\n if (targret) {\n if (selectionStart - targret.start < targret.end - selectionStart) {\n getInputInstance()?.setSelectionRange(targret.start - 1, targret.start - 1);\n } else {\n getInputInstance()?.setSelectionRange(targret.end, targret.end);\n }\n }\n });\n\n const onHandleSelect = (options, prefix) => {\n const addPos: number = options.value?.length || 0;\n setCursorPosition((prePos) => prePos + addPos);\n if (onSelect) {\n onSelect(options, prefix);\n }\n };\n\n const mentionOptions = useMemo(() => {\n const prefixList = toArray<string>(prefix);\n return (\n options?.map((item) => {\n let opValue = item;\n for (let index = 0; index < prefixList.length; index++) {\n const element = prefixList[index];\n if (opValue.startsWith(element)) {\n opValue = opValue.replace(element, '');\n break;\n }\n }\n return { label: opValue, value: opValue };\n }) || []\n );\n }, [options, prefix]);\n\n useImperativeHandle(ref, () => {\n return {\n getInputInstance,\n };\n });\n\n return (\n <Mentions\n notFoundContent={<div>暂无数据</div>}\n rows={3}\n {...otherProps}\n prefix={prefix}\n style={{ width: '100%', ...otherProps.style }}\n id={id}\n value={valueNew}\n ref={inputInnerRef}\n onSelect={onHandleSelect}\n onChange={onInputChange}\n onClick={onInputClick}\n split=\"\"\n validateSearch={(text: string) => {\n if (!mentionOptions.length) return false;\n const target = mentionOptions.find((item) => text.indexOf(item.value) >= 0);\n return target && text.length > target.value.length ? false : true;\n }}\n options={mentionOptions}\n />\n );\n },\n);\n"],"names":["getOverallKeyWordsPosition","params","value","overallKeyWords","length","overallKeyWordsNew","Array","from","Set","positionItem","forEach","item","_params$value","includes","newItem","replace","regex","RegExp","positions","match","exec","push","index","innerList","temp","start","end","judgmentCursorInKeyWordsPosition","keyWordsPosition","element","find","cursorPosition","undefined","MentionsWrapper","forwardRef","props","ref","onChange","onClick","onCursorChange","onSelect","options","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","id","_hooks","useId","inputInnerRef","useRef","_useState","useState","setCursorPosition","invalidOnChangeRef","valueNew","overallKeyWordsPosition","useMemo","getInputInstance","_inputInnerRef$curren","current","textarea","fbaHooks","useEffectCustom","useEventListener","ev","_getInputInstance","_getInputInstance2","selectionStart","selectionEnd","code","positionValue","targret","_getInputInstance3","setSelectionRange","_getInputInstance4","result","substring","setTimeout","_getInputInstance5","target","document","querySelector","_getInputInstance6","_getInputInstance7","_getInputInstance8","onInputChange","useCallbackRef","_getInputInstance9","disabled","onInputClick","event","_getInputInstance10","_getInputInstance11","_getInputInstance12","onHandleSelect","_options$value","addPos","prePos","mentionOptions","prefixList","toArray","map","opValue","startsWith","label","useImperativeHandle","_jsx","Mentions","_extends","notFoundContent","children","rows","style","width","split","validateSearch","text","indexOf"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/mentions-wrapper/utils.ts","@flatbiz/antd/src/mentions-wrapper/mentions.tsx"],"sourcesContent":["import { type OverallKeyWordsPosition } from './types';\n\nexport const getOverallKeyWordsPosition = (params: { overallKeyWords: string[]; value?: string }) => {\n if (!params.value || !params.overallKeyWords.length) return [];\n const overallKeyWordsNew = Array.from(new Set(params.overallKeyWords || []));\n const positionItem: OverallKeyWordsPosition[][] = [];\n overallKeyWordsNew.forEach((item) => {\n if (!params.value?.includes(item)) return;\n const newItem = item\n .replace(/\\$/g, '\\\\$')\n .replace(/\\{/g, '\\\\{')\n .replace(/\\}/g, '\\\\}')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\[/g, '\\\\[');\n const regex = new RegExp(newItem, 'g');\n const positions: number[] = [];\n let match;\n while ((match = regex.exec(params.value)) !== null) {\n positions.push(match.index as number);\n }\n const innerList: OverallKeyWordsPosition[] = [];\n positions.forEach((temp) => {\n innerList.push({ start: temp + 1, end: temp + item.length });\n });\n positionItem.push(innerList);\n });\n return positionItem;\n};\n\n/**\n * 判断光标是否处在关键词位置内\n */\nexport const judgmentCursorInKeyWordsPosition = (params: {\n keyWordsPosition: OverallKeyWordsPosition[][];\n cursorPosition: number;\n}) => {\n for (let index = 0; index < params.keyWordsPosition.length; index++) {\n const element = params.keyWordsPosition[index].find((temp) => {\n return params.cursorPosition >= temp.start && params.cursorPosition < temp.end;\n });\n if (element) return element;\n }\n return undefined;\n};\n","import { toArray, type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useEventListener } from 'ahooks';\nimport { Mentions, type MentionProps } from 'antd';\nimport { forwardRef, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { getOverallKeyWordsPosition, judgmentCursorInKeyWordsPosition } from './utils';\n\nexport type MentionsWrapperRef = {\n getInputInstance: () => any;\n};\nexport type MentionsWrapperProps = Omit<\n MentionProps,\n | 'value'\n | 'onChange'\n | 'onClick'\n | 'onCursorChange'\n | 'options'\n | 'id'\n | 'split'\n | 'validateSearch'\n | 'ref'\n | 'prefix'\n> & {\n value?: string;\n onChange?: (value?: string) => void;\n /** 设置列表提示关键字,例如:@、$等 */\n prefix?: string | string[];\n onClick?: (value?: string) => void;\n /** 光标移动回调 */\n onCursorChange?: (position: number) => void;\n /**\n * 输入框内整体关键词列表\n * ```\n * 整体关键词交互\n * 1. 光标可整体移动\n * 2. 光标不会存在关键词内部\n * 3. 删除时,整体删除\n * ```\n */\n options?: string[];\n};\n\n/**\n * 基于Antd Mentions进行二次封装,可实现输入内关键字整体控制,包括光标移动、关键词删除等\n * ```\n * 可实现\n * 1. 控制光标输入\n * 2. 可设置关键词,光标不会出现在关键词内部\n * 3. 可整体删除关键词\n *\n * 应用场景例如:\n * 1. 公式输入\n * (【xx金额1】+【xx金额2】)*2\n * <MentionsWrapper prefix=\"$\" options={['【xx金额1】', '【xx金额2】']}/>\n *\n * 2. 短信模板设置\n * 您的订单号为${订单号},订单交易时间为${订单时间}\n * <MentionsWrapper prefix=\"$\" options={['${订单号}', '${订单时间}']}/>\n *\n * demo:https://fex.qa.tcshuke.com/docs/admin/main/other/widget\n * ```\n *\n */\nexport const MentionsWrapper = forwardRef<MentionsWrapperRef, MentionsWrapperProps>(\n (props: MentionsWrapperProps, ref) => {\n const { value, onChange, onClick, onCursorChange, onSelect, options, prefix, ...otherProps } = props;\n const id = hooks.useId(undefined, 'overall-input');\n const inputInnerRef = useRef<TAny>();\n const [cursorPosition, setCursorPosition] = useState(0);\n const invalidOnChangeRef = useRef(false);\n const valueNew = value || '';\n /** 关键词位置 */\n const overallKeyWordsPosition = useMemo(() => {\n if (options) {\n return getOverallKeyWordsPosition({\n overallKeyWords: options || [],\n value: valueNew,\n });\n }\n return [];\n }, [options, valueNew]);\n\n const getInputInstance = () => {\n return inputInnerRef.current?.textarea;\n };\n\n fbaHooks.useEffectCustom(() => {\n onCursorChange?.(cursorPosition || 0);\n }, [cursorPosition]);\n\n useEventListener(\n 'keydown',\n (ev) => {\n const selectionStart = getInputInstance()?.selectionStart as number;\n const selectionEnd = getInputInstance()?.selectionEnd as number;\n if (['ArrowLeft', 'ArrowRight'].includes(ev.code)) {\n let positionValue = 0;\n if (ev.code === 'ArrowLeft') {\n if (selectionStart - 1 < 0) return;\n positionValue = selectionStart - 1;\n setCursorPosition(positionValue);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: positionValue,\n });\n if (targret) {\n getInputInstance()?.setSelectionRange(targret.start, targret.start);\n }\n } else if (ev.code === 'ArrowRight') {\n if (selectionStart + 1 > valueNew.length) return;\n positionValue = selectionStart + 1;\n setCursorPosition(positionValue);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: positionValue,\n });\n if (targret) {\n getInputInstance()?.setSelectionRange(targret.end - 1, targret.end - 1);\n }\n }\n } else if (ev.code === 'Backspace') {\n /** 选中关键字/关键字+文字 的情况,直接删除 */\n if (selectionStart !== selectionEnd) {\n return;\n }\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: selectionStart - 1,\n });\n if (targret) {\n invalidOnChangeRef.current = true;\n const result = valueNew.substring(0, targret.start - 1) + valueNew.substring(targret.end);\n setTimeout(() => {\n getInputInstance()?.setSelectionRange(targret.start - 1, targret.start - 1);\n }, 50);\n if (!result) {\n invalidOnChangeRef.current = false;\n }\n onChange?.(result);\n }\n }\n },\n {\n target: () => {\n return document.querySelector(`#${id}`);\n },\n },\n );\n\n useEventListener(\n 'keyup',\n (ev) => {\n const selectionStart = getInputInstance()?.selectionStart || 0;\n if (['ArrowUp', 'ArrowDown'].includes(ev.code)) {\n setCursorPosition(selectionStart);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: selectionStart,\n });\n if (targret) {\n if (selectionStart - targret.start < targret.end - selectionStart) {\n getInputInstance()?.setSelectionRange(targret.start - 1, targret.start - 1);\n } else {\n getInputInstance()?.setSelectionRange(targret.end, targret.end);\n }\n }\n }\n },\n {\n target: () => {\n return document.querySelector(`#${id}`);\n },\n },\n );\n\n const onInputChange = hooks.useCallbackRef((value) => {\n if (otherProps.disabled) return;\n if (invalidOnChangeRef.current) {\n invalidOnChangeRef.current = false;\n return;\n }\n const selectionStart = getInputInstance()?.selectionStart || 0;\n setCursorPosition(selectionStart);\n onChange?.(value);\n });\n\n const onInputClick = hooks.useCallbackRef((event) => {\n const selectionStart = getInputInstance()?.selectionStart || 0;\n setCursorPosition(selectionStart);\n onClick?.(event.target.value);\n const targret = judgmentCursorInKeyWordsPosition({\n keyWordsPosition: overallKeyWordsPosition,\n cursorPosition: selectionStart,\n });\n if (targret) {\n if (selectionStart - targret.start < targret.end - selectionStart) {\n getInputInstance()?.setSelectionRange(targret.start - 1, targret.start - 1);\n } else {\n getInputInstance()?.setSelectionRange(targret.end, targret.end);\n }\n }\n });\n\n const onHandleSelect = (options, prefix) => {\n const addPos: number = options.value?.length || 0;\n setCursorPosition((prePos) => prePos + addPos);\n if (onSelect) {\n onSelect(options, prefix);\n }\n };\n\n const mentionOptions = useMemo(() => {\n const prefixList = toArray<string>(prefix);\n return (\n options?.map((item) => {\n let opValue = item;\n for (let index = 0; index < prefixList.length; index++) {\n const element = prefixList[index];\n if (opValue.startsWith(element)) {\n opValue = opValue.replace(element, '');\n break;\n }\n }\n return { label: opValue, value: opValue };\n }) || []\n );\n }, [options, prefix]);\n\n useImperativeHandle(ref, () => {\n return {\n getInputInstance,\n };\n });\n\n return (\n <Mentions\n notFoundContent={<div>暂无数据</div>}\n rows={3}\n {...otherProps}\n prefix={prefix}\n style={{ width: '100%', ...otherProps.style }}\n id={id}\n value={valueNew}\n ref={inputInnerRef}\n onSelect={onHandleSelect}\n onChange={onInputChange}\n onClick={onInputClick}\n split=\"\"\n validateSearch={(text: string) => {\n if (!mentionOptions.length) return false;\n const target = mentionOptions.find((item) => text.indexOf(item.value) >= 0);\n return target && text.length > target.value.length ? false : true;\n }}\n options={mentionOptions}\n />\n );\n },\n);\n"],"names":["getOverallKeyWordsPosition","params","value","overallKeyWords","length","overallKeyWordsNew","Array","from","Set","positionItem","forEach","item","_params$value","includes","newItem","replace","regex","RegExp","positions","match","exec","push","index","innerList","temp","start","end","judgmentCursorInKeyWordsPosition","keyWordsPosition","element","find","cursorPosition","undefined","MentionsWrapper","forwardRef","props","ref","onChange","onClick","onCursorChange","onSelect","options","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","id","_hooks","useId","inputInnerRef","useRef","_useState","useState","setCursorPosition","invalidOnChangeRef","valueNew","overallKeyWordsPosition","useMemo","getInputInstance","_inputInnerRef$curren","current","textarea","fbaHooks","useEffectCustom","useEventListener","ev","_getInputInstance","_getInputInstance2","selectionStart","selectionEnd","code","positionValue","targret","_getInputInstance3","setSelectionRange","_getInputInstance4","result","substring","setTimeout","_getInputInstance5","target","document","querySelector","_getInputInstance6","_getInputInstance7","_getInputInstance8","onInputChange","useCallbackRef","_getInputInstance9","disabled","onInputClick","event","_getInputInstance10","_getInputInstance11","_getInputInstance12","onHandleSelect","_options$value","addPos","prePos","mentionOptions","prefixList","toArray","map","opValue","startsWith","label","useImperativeHandle","_jsx","Mentions","_extends","notFoundContent","children","rows","style","width","split","validateSearch","text","indexOf"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useState as n,isValidElement as o,Fragment as e}from"react";import{jsxs as t,jsx as i}from"react/jsx-runtime";var l=function l(c){var u=c.action,a=c.children;var s=n(false),p=s[0],f=s[1];var v=function r(n){return new Promise((function(r,e){var t;if(o(u)){t=u.props.onClick;if(typeof t==="function"){return Promise.resolve(t==null?void 0:t(n)).then(function(r){try{return i.call(this)}catch(r){return e(r)}}.bind(this),e)}function i(){return l.call(this)}return i.call(this)}function l(){f(true);return r()}return l.call(this)}))};var h=function r(){f(false)};var m=o(a)?a:a({onClose:h,open:p});return t(e,{children:[o(u)?i(u.type,r({},u.props,{onClick:v})):u==null?void 0:u({onClick:v,onClose:h,open:p}),i(m.type,r({open:p,onClose:h,onCancel:h},m.props))]})};export{l as ModalAction};
4
+ import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{useState as n,isValidElement as o,Fragment as e}from"react";import{jsxs as t,jsx as i}from"react/jsx-runtime";var l=function l(c){var u=c.action,a=c.children;var s=n(false),p=s[0],f=s[1];var v=function r(n){return new Promise((function(r,e){var t;if(o(u)){t=u.props.onClick;if(typeof t==="function"){return Promise.resolve(t==null?void 0:t(n)).then(function(r){try{return l.call(this)}catch(r){return e(r)}}.bind(this),e)}function l(){return i.call(this)}return l.call(this)}function i(){f(true);return r()}return i.call(this)}))};var h=function r(){f(false)};var m=o(a)?a:a({onClose:h,open:p});return t(e,{children:[o(u)?i(u.type,r({},u.props,{onClick:v})):u==null?void 0:u({onClick:v,onClose:h,open:p}),i(m.type,r({open:p,onClose:h,onCancel:h},m.props))]})};export{l as ModalAction};
5
5
  //# sourceMappingURL=index.js.map
@@ -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{a as e,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{Space as a,Button as n,Modal as i}from"antd";import{Fragment as l}from"react";import{fbaHooks as t}from"../fba-hooks/index.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var d=["loading","okText","cancelText","onCancel","onOk","hideOkBtn"];var p=function r(i){var t=i.loading,p=i.okText,m=p===void 0?"保存":p,h=i.cancelText,u=h===void 0?"取消":h,f=i.onCancel,v=i.onOk,k=i.hideOkBtn,N=e(i,d);return s(l,{children:c(a,{size:"middle",children:[s(n,o({},N.cancelButtonProps,{className:"cancel-btn",onClick:f,children:u})),k!=true&&s(n,o({type:"primary"},N.okButtonProps,{className:"ok-btn",onClick:v,loading:t,children:m}))]})})};var m=["pageLoading","className","width","children"];var h=function r(){return s("div",{className:"modal-wrapper-loader",children:c("div",{className:"loader-wrapper",children:[s("div",{className:"loader-inner"}),s("div",{className:"loader-text",children:"LOADING"})]})})};var u=function r(e){return c(l,{children:[s("div",{className:"modal-wrapper-content",children:e.children}),e.operationProps?s(f,{children:s(p,o({},e.operationProps))}):null]})};var f=function r(e){return s("div",{className:"modal-wrapper-footer",children:e.children})};var v=function a(n){var d=n.pageLoading,p=n.className,u=n.width,f=n.children,v=e(n,m);t.useEffectCustom((function(){if(n["operationProps"]){throw new Error("ModalWrapper组件升级,参数operationProps用法变更,请及时更新")}}),[]);return s(i,o({className:r("modal-wrapper",p),keyboard:false,destroyOnClose:true,forceRender:false},v,{width:u||600,footer:null,children:c(l,{children:[f,d&&s(h,{})]})}))};v.Content=u;v.Footer=f;export{v as ModalWrapper};
5
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{a as e,_ as o}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{Space as a,Button as n,Modal as i}from"antd";import{Fragment as l}from"react";import{fbaHooks as t}from"../fba-hooks/index.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var d=["loading","okText","cancelText","onCancel","onOk","hideOkBtn"];var p=function r(i){var t=i.loading,p=i.okText,m=p===void 0?"保存":p,h=i.cancelText,u=h===void 0?"取消":h,f=i.onCancel,v=i.onOk,k=i.hideOkBtn,N=e(i,d);return s(l,{children:c(a,{size:"middle",children:[s(n,o({},N.cancelButtonProps,{className:"cancel-btn",onClick:f,children:u})),k!=true&&s(n,o({type:"primary"},N.okButtonProps,{className:"ok-btn",onClick:v,loading:t,children:m}))]})})};var m=["pageLoading","className","width","children"];var h=function r(){return s("div",{className:"modal-wrapper-loader",children:c("div",{className:"loader-wrapper",children:[s("div",{className:"loader-inner"}),s("div",{className:"loader-text",children:"LOADING"})]})})};var u=function r(e){return c(l,{children:[s("div",{className:"modal-wrapper-content",children:e.children}),e.operationProps?s(f,{children:s(p,o({},e.operationProps))}):null]})};var f=function r(e){return s("div",{className:"modal-wrapper-footer",children:e.children})};var v=function a(n){var d=n.pageLoading,p=n.className,u=n.width,f=n.children,v=e(n,m);t.useEffectCustom((function(){if(n["operationProps"]){throw new Error("ModalWrapper组件升级,参数operationProps用法变更,请及时更新")}}),[]);return s(i,o({className:r("modal-wrapper",p),keyboard:false,destroyOnClose:true,forceRender:false},v,{width:u||600,footer:null,children:c(l,{children:[f,d&&s(h,{})]})}))};v.Content=u;v.Footer=f;export{v as ModalWrapper};
6
6
  //# sourceMappingURL=index.js.map
@@ -5,5 +5,5 @@ import './../pre-defined-class-name/index.css';
5
5
  import './../types/index.css';
6
6
  import './index.css';
7
7
  /*! @flatjs/forge MIT @flatbiz/antd */
8
- import{a as e,_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isNotEmptyArray as i,isEmptyArray as n,isUndefinedOrNull as t}from"@flatbiz/utils";import{InputNumber as s}from"antd";import{useMemo as o}from"react";import{FlexLayout as m}from"../flex-layout/index.js";import{FormItemWrapper as u}from"../form-item-wrapper/index.js";import{jsx as a,jsxs as l}from"react/jsx-runtime";import"@dimjs/utils/cjs/class-names";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"../pre-defined-class-name/index.js";var d=["minFormItemName","maxFormItemName","required","requiredRuleMessage","rangeRuleMessage","minInputNumberProps","maxInputNumberProps","isInputEqual"];var p=function p(f){var c=f.minFormItemName,v=f.maxFormItemName,g=f.required,P=f.requiredRuleMessage,j=f.rangeRuleMessage,x=f.minInputNumberProps,h=f.maxInputNumberProps,I=f.isInputEqual,q=e(f,d);var y=o((function(){if(!j)return["最小值输入不能超过最大值","最大值输入不能低于最小值"];if(i(j)){return[j[0],j[1]||j[0]]}return[j,j]}),[j]);var N=o((function(){if(!P||n(P))return[];if(i(P)){return[P[0],P[1]||P[0]]}return[P,P]}),[P]);var b=[{required:g,message:N[0]||""},function(e){var r=e.getFieldValue;return{validator:function e(i,n){if(t(n)){return Promise.resolve()}var s=r(v);if(t(s)){return Promise.resolve()}if(I){if(n<=s){return Promise.resolve()}}else{if(n<s){return Promise.resolve()}}return Promise.reject(new Error(y[0]))}}}];var w=[{required:g,message:N[1]||""},function(e){var r=e.getFieldValue;return{validator:function e(i,n){if(t(n)){return Promise.resolve()}var s=r(c);if(t(s)){return Promise.resolve()}if(I){if(n>=s){return Promise.resolve()}}else{if(n>s){return Promise.resolve()}}return Promise.reject(new Error(y[1]))}}}];return a(u,r({},q,{required:g,children:l(m,{fullIndex:[0,1],direction:"horizontal",gap:10,children:[a(u,{name:c,dependencies:[v],rules:b,style:{margin:0},children:a(s,r({placeholder:"请输入"},x,{style:r({width:"100%"},x==null?void 0:x.style)}))}),a(u,{name:v,dependencies:[c],rules:w,style:{margin:0},children:a(s,r({placeholder:"请输入"},h,{style:r({width:"100%"},h==null?void 0:h.style)}))})]})}))};export{p as NumberRangeFormItem};
8
+ import{a as e,_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isNotEmptyArray as i,isEmptyArray as n,isUndefinedOrNull as t}from"@flatbiz/utils";import{InputNumber as s}from"antd";import{useMemo as o}from"react";import{FlexLayout as m}from"../flex-layout/index.js";import{FormItemWrapper as u}from"../form-item-wrapper/index.js";import{jsx as a,jsxs as l}from"react/jsx-runtime";import"@dimjs/utils/cjs/class-names";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"../pre-defined-class-name/index.js";var d=["minFormItemName","maxFormItemName","required","requiredRuleMessage","rangeRuleMessage","minInputNumberProps","maxInputNumberProps","isInputEqual"];var p=function p(f){var c=f.minFormItemName,v=f.maxFormItemName,g=f.required,P=f.requiredRuleMessage,j=f.rangeRuleMessage,x=f.minInputNumberProps,h=f.maxInputNumberProps,I=f.isInputEqual,q=e(f,d);var y=o((function(){if(!j)return["最小值输入不能超过最大值","最大值输入不能低于最小值"];if(i(j)){return[j[0],j[1]||j[0]]}return[j,j]}),[j]);var N=o((function(){if(!P||n(P))return[];if(i(P)){return[P[0],P[1]||P[0]]}return[P,P]}),[P]);var b=[{required:g,message:N[0]||""},function(e){var r=e.getFieldValue;return{validator:function e(i,n){if(t(n)){return Promise.resolve()}var s=r(v);if(t(s)){return Promise.resolve()}if(I){if(n<=s){return Promise.resolve()}}else{if(n<s){return Promise.resolve()}}return Promise.reject(new Error(y[0]))}}}];var w=[{required:g,message:N[1]||""},function(e){var r=e.getFieldValue;return{validator:function e(i,n){if(t(n)){return Promise.resolve()}var s=r(c);if(t(s)){return Promise.resolve()}if(I){if(n>=s){return Promise.resolve()}}else{if(n>s){return Promise.resolve()}}return Promise.reject(new Error(y[1]))}}}];return a(u,r({},q,{required:g,children:l(m,{fullIndex:[0,1],direction:"horizontal",gap:10,children:[a(u,{name:c,dependencies:[v],rules:b,style:{margin:0},children:a(s,r({placeholder:"请输入"},x,{style:r({width:"100%"},x==null?void 0:x.style)}))}),a(u,{name:v,dependencies:[c],rules:w,style:{margin:0},children:a(s,r({placeholder:"请输入"},h,{style:r({width:"100%"},h==null?void 0:h.style)}))})]})}))};export{p as NumberRangeFormItem};
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/number-range-form-item/number-range.tsx"],"sourcesContent":["import { isEmptyArray, isNotEmptyArray, isUndefinedOrNull } from '@flatbiz/utils';\nimport { InputNumber, InputNumberProps } from 'antd';\nimport { useMemo } from 'react';\nimport { FlexLayout } from '../flex-layout/flex-layout';\nimport { FormItemWrapper, type FormItemWrapperProps } from '../form-item-wrapper';\nimport type { FormItemNamePath } from '../types';\n\n// type InputNumberProps = GetProps<typeof InputNumber>;\n\nexport type NumberRangeFormItemProps = Omit<FormItemWrapperProps, 'name' | 'rules'> & {\n minFormItemName: FormItemNamePath;\n maxFormItemName: FormItemNamePath;\n /** 是否必填 */\n required?: boolean;\n /** 必填验证异常文案 */\n requiredRuleMessage?: string | [string, string];\n /** 范围验证异常文案 */\n rangeRuleMessage?: string | [string, string];\n minInputNumberProps?: Omit<InputNumberProps, 'value'>;\n maxInputNumberProps?: Omit<InputNumberProps, 'value'>;\n /** 最小值与最大值输入是否可以相同 */\n isInputEqual?: boolean;\n};\n/**\n * 数字输入范围组件\n */\nexport const NumberRangeFormItem = (props: NumberRangeFormItemProps) => {\n const {\n minFormItemName,\n maxFormItemName,\n required,\n requiredRuleMessage,\n rangeRuleMessage,\n minInputNumberProps,\n maxInputNumberProps,\n isInputEqual,\n ...otherProps\n } = props;\n\n const rangeRuleMessageList = useMemo(() => {\n if (!rangeRuleMessage) return ['最小值输入不能超过最大值', '最大值输入不能低于最小值'];\n if (isNotEmptyArray(rangeRuleMessage)) {\n return [rangeRuleMessage[0], rangeRuleMessage[1] || rangeRuleMessage[0]];\n }\n return [rangeRuleMessage, rangeRuleMessage] as string[];\n }, [rangeRuleMessage]);\n\n const requiredRuleMessageList = useMemo(() => {\n if (!requiredRuleMessage || isEmptyArray(requiredRuleMessage)) return [];\n if (isNotEmptyArray(requiredRuleMessage)) {\n return [requiredRuleMessage[0], requiredRuleMessage[1] || requiredRuleMessage[0]];\n }\n return [requiredRuleMessage, requiredRuleMessage] as string[];\n }, [requiredRuleMessage]);\n\n const minRules = [\n { required: required, message: requiredRuleMessageList[0] || '' },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (isUndefinedOrNull(value)) {\n return Promise.resolve();\n }\n const maxValue = getFieldValue(maxFormItemName);\n if (isUndefinedOrNull(maxValue)) {\n return Promise.resolve();\n }\n if (isInputEqual) {\n if (value <= maxValue) {\n return Promise.resolve();\n }\n } else {\n if (value < maxValue) {\n return Promise.resolve();\n }\n }\n return Promise.reject(new Error(rangeRuleMessageList[0]));\n },\n }),\n ];\n\n const maxRules = [\n { required: required, message: requiredRuleMessageList[1] || '' },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (isUndefinedOrNull(value)) {\n return Promise.resolve();\n }\n const minValue = getFieldValue(minFormItemName);\n if (isUndefinedOrNull(minValue)) {\n return Promise.resolve();\n }\n\n if (isInputEqual) {\n if (value >= minValue) {\n return Promise.resolve();\n }\n } else {\n if (value > minValue) {\n return Promise.resolve();\n }\n }\n return Promise.reject(new Error(rangeRuleMessageList[1]));\n },\n }),\n ];\n\n return (\n <FormItemWrapper {...otherProps} required={required}>\n <FlexLayout fullIndex={[0, 1]} direction=\"horizontal\" gap={10}>\n <FormItemWrapper\n name={minFormItemName}\n dependencies={[maxFormItemName]}\n rules={minRules}\n style={{ margin: 0 }}\n >\n <InputNumber\n placeholder=\"请输入\"\n {...minInputNumberProps}\n style={{ width: '100%', ...minInputNumberProps?.style }}\n />\n </FormItemWrapper>\n <FormItemWrapper\n name={maxFormItemName}\n dependencies={[minFormItemName]}\n rules={maxRules}\n style={{ margin: 0 }}\n >\n <InputNumber\n placeholder=\"请输入\"\n {...maxInputNumberProps}\n style={{ width: '100%', ...maxInputNumberProps?.style }}\n />\n </FormItemWrapper>\n </FlexLayout>\n </FormItemWrapper>\n );\n};\n"],"names":["NumberRangeFormItem","props","minFormItemName","maxFormItemName","required","requiredRuleMessage","rangeRuleMessage","minInputNumberProps","maxInputNumberProps","isInputEqual","otherProps","_objectWithoutPropertiesLoose","_excluded","rangeRuleMessageList","useMemo","isNotEmptyArray","requiredRuleMessageList","isEmptyArray","minRules","message","_ref","getFieldValue","validator","_","value","isUndefinedOrNull","Promise","resolve","maxValue","reject","Error","maxRules","_ref2","minValue","_jsx","FormItemWrapper","_extends","children","_jsxs","FlexLayout","fullIndex","direction","gap","name","dependencies","rules","style","margin","InputNumber","placeholder","width"],"mappings":";gwBA0BaA,EAAsB,SAAtBA,EAAuBC,GAClC,IACEC,EASED,EATFC,gBACAC,EAQEF,EARFE,gBACAC,EAOEH,EAPFG,SACAC,EAMEJ,EANFI,oBACAC,EAKEL,EALFK,iBACAC,EAIEN,EAJFM,oBACAC,EAGEP,EAHFO,oBACAC,EAEER,EAFFQ,aACGC,EAAUC,EACXV,EAAKW,GAET,IAAMC,EAAuBC,GAAQ,WACnC,IAAKR,EAAkB,MAAO,CAAC,eAAgB,gBAC/C,GAAIS,EAAgBT,GAAmB,CACrC,MAAO,CAACA,EAAiB,GAAIA,EAAiB,IAAMA,EAAiB,GACvE,CACA,MAAO,CAACA,EAAkBA,EAC5B,GAAG,CAACA,IAEJ,IAAMU,EAA0BF,GAAQ,WACtC,IAAKT,GAAuBY,EAAaZ,GAAsB,MAAO,GACtE,GAAIU,EAAgBV,GAAsB,CACxC,MAAO,CAACA,EAAoB,GAAIA,EAAoB,IAAMA,EAAoB,GAChF,CACA,MAAO,CAACA,EAAqBA,EAC/B,GAAG,CAACA,IAEJ,IAAMa,EAAW,CACf,CAAEd,SAAUA,EAAUe,QAASH,EAAwB,IAAM,IAC7D,SAAAI,GAAA,IAAGC,EAAaD,EAAbC,cAAa,MAAQ,CACtBC,UAASA,SAAAA,EAACC,EAAGC,GACX,GAAIC,EAAkBD,GAAQ,CAC5B,OAAOE,QAAQC,SACjB,CACA,IAAMC,EAAWP,EAAclB,GAC/B,GAAIsB,EAAkBG,GAAW,CAC/B,OAAOF,QAAQC,SACjB,CACA,GAAIlB,EAAc,CAChB,GAAIe,GAASI,EAAU,CACrB,OAAOF,QAAQC,SACjB,CACF,KAAO,CACL,GAAIH,EAAQI,EAAU,CACpB,OAAOF,QAAQC,SACjB,CACF,CACA,OAAOD,QAAQG,OAAO,IAAIC,MAAMjB,EAAqB,IACvD,EACD,GAGH,IAAMkB,EAAW,CACf,CAAE3B,SAAUA,EAAUe,QAASH,EAAwB,IAAM,IAC7D,SAAAgB,GAAA,IAAGX,EAAaW,EAAbX,cAAa,MAAQ,CACtBC,UAASA,SAAAA,EAACC,EAAGC,GACX,GAAIC,EAAkBD,GAAQ,CAC5B,OAAOE,QAAQC,SACjB,CACA,IAAMM,EAAWZ,EAAcnB,GAC/B,GAAIuB,EAAkBQ,GAAW,CAC/B,OAAOP,QAAQC,SACjB,CAEA,GAAIlB,EAAc,CAChB,GAAIe,GAASS,EAAU,CACrB,OAAOP,QAAQC,SACjB,CACF,KAAO,CACL,GAAIH,EAAQS,EAAU,CACpB,OAAOP,QAAQC,SACjB,CACF,CACA,OAAOD,QAAQG,OAAO,IAAIC,MAAMjB,EAAqB,IACvD,EACD,GAGH,OACEqB,EAACC,EAAeC,KAAK1B,EAAU,CAAEN,SAAUA,EAASiC,SAClDC,EAACC,EAAU,CAACC,UAAW,CAAC,EAAG,GAAIC,UAAU,aAAaC,IAAK,GAAGL,SAAA,CAC5DH,EAACC,EAAe,CACdQ,KAAMzC,EACN0C,aAAc,CAACzC,GACf0C,MAAO3B,EACP4B,MAAO,CAAEC,OAAQ,GAAIV,SAErBH,EAACc,EAAWZ,EAAA,CACVa,YAAY,OACR1C,EAAmB,CACvBuC,MAAKV,EAAA,CAAIc,MAAO,QAAW3C,GAAmB,UAAA,EAAnBA,EAAqBuC,YAGpDZ,EAACC,EAAe,CACdQ,KAAMxC,EACNyC,aAAc,CAAC1C,GACf2C,MAAOd,EACPe,MAAO,CAAEC,OAAQ,GAAIV,SAErBH,EAACc,EAAWZ,EAAA,CACVa,YAAY,OACRzC,EAAmB,CACvBsC,MAAKV,EAAA,CAAIc,MAAO,QAAW1C,GAAmB,UAAA,EAAnBA,EAAqBsC,iBAM5D"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/number-range-form-item/number-range.tsx"],"sourcesContent":["import { isEmptyArray, isNotEmptyArray, isUndefinedOrNull } from '@flatbiz/utils';\nimport { InputNumber, InputNumberProps } from 'antd';\nimport { useMemo } from 'react';\nimport { FlexLayout } from '../flex-layout/flex-layout';\nimport { FormItemWrapper, type FormItemWrapperProps } from '../form-item-wrapper';\nimport type { FormItemNamePath } from '../types';\n\n// type InputNumberProps = GetProps<typeof InputNumber>;\n\nexport type NumberRangeFormItemProps = Omit<FormItemWrapperProps, 'name' | 'rules'> & {\n minFormItemName: FormItemNamePath;\n maxFormItemName: FormItemNamePath;\n /** 是否必填 */\n required?: boolean;\n /** 必填验证异常文案 */\n requiredRuleMessage?: string | [string, string];\n /** 范围验证异常文案 */\n rangeRuleMessage?: string | [string, string];\n minInputNumberProps?: Omit<InputNumberProps, 'value'>;\n maxInputNumberProps?: Omit<InputNumberProps, 'value'>;\n /** 最小值与最大值输入是否可以相同 */\n isInputEqual?: boolean;\n};\n/**\n * 数字输入范围组件\n */\nexport const NumberRangeFormItem = (props: NumberRangeFormItemProps) => {\n const {\n minFormItemName,\n maxFormItemName,\n required,\n requiredRuleMessage,\n rangeRuleMessage,\n minInputNumberProps,\n maxInputNumberProps,\n isInputEqual,\n ...otherProps\n } = props;\n\n const rangeRuleMessageList = useMemo(() => {\n if (!rangeRuleMessage) return ['最小值输入不能超过最大值', '最大值输入不能低于最小值'];\n if (isNotEmptyArray(rangeRuleMessage)) {\n return [rangeRuleMessage[0], rangeRuleMessage[1] || rangeRuleMessage[0]];\n }\n return [rangeRuleMessage, rangeRuleMessage] as string[];\n }, [rangeRuleMessage]);\n\n const requiredRuleMessageList = useMemo(() => {\n if (!requiredRuleMessage || isEmptyArray(requiredRuleMessage)) return [];\n if (isNotEmptyArray(requiredRuleMessage)) {\n return [requiredRuleMessage[0], requiredRuleMessage[1] || requiredRuleMessage[0]];\n }\n return [requiredRuleMessage, requiredRuleMessage] as string[];\n }, [requiredRuleMessage]);\n\n const minRules = [\n { required: required, message: requiredRuleMessageList[0] || '' },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (isUndefinedOrNull(value)) {\n return Promise.resolve();\n }\n const maxValue = getFieldValue(maxFormItemName);\n if (isUndefinedOrNull(maxValue)) {\n return Promise.resolve();\n }\n if (isInputEqual) {\n if (value <= maxValue) {\n return Promise.resolve();\n }\n } else {\n if (value < maxValue) {\n return Promise.resolve();\n }\n }\n return Promise.reject(new Error(rangeRuleMessageList[0]));\n },\n }),\n ];\n\n const maxRules = [\n { required: required, message: requiredRuleMessageList[1] || '' },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (isUndefinedOrNull(value)) {\n return Promise.resolve();\n }\n const minValue = getFieldValue(minFormItemName);\n if (isUndefinedOrNull(minValue)) {\n return Promise.resolve();\n }\n\n if (isInputEqual) {\n if (value >= minValue) {\n return Promise.resolve();\n }\n } else {\n if (value > minValue) {\n return Promise.resolve();\n }\n }\n return Promise.reject(new Error(rangeRuleMessageList[1]));\n },\n }),\n ];\n\n return (\n <FormItemWrapper {...otherProps} required={required}>\n <FlexLayout fullIndex={[0, 1]} direction=\"horizontal\" gap={10}>\n <FormItemWrapper\n name={minFormItemName}\n dependencies={[maxFormItemName]}\n rules={minRules}\n style={{ margin: 0 }}\n >\n <InputNumber\n placeholder=\"请输入\"\n {...minInputNumberProps}\n style={{ width: '100%', ...minInputNumberProps?.style }}\n />\n </FormItemWrapper>\n <FormItemWrapper\n name={maxFormItemName}\n dependencies={[minFormItemName]}\n rules={maxRules}\n style={{ margin: 0 }}\n >\n <InputNumber\n placeholder=\"请输入\"\n {...maxInputNumberProps}\n style={{ width: '100%', ...maxInputNumberProps?.style }}\n />\n </FormItemWrapper>\n </FlexLayout>\n </FormItemWrapper>\n );\n};\n"],"names":["NumberRangeFormItem","props","minFormItemName","maxFormItemName","required","requiredRuleMessage","rangeRuleMessage","minInputNumberProps","maxInputNumberProps","isInputEqual","otherProps","_objectWithoutPropertiesLoose","_excluded","rangeRuleMessageList","useMemo","isNotEmptyArray","requiredRuleMessageList","isEmptyArray","minRules","message","_ref","getFieldValue","validator","_","value","isUndefinedOrNull","Promise","resolve","maxValue","reject","Error","maxRules","_ref2","minValue","_jsx","FormItemWrapper","_extends","children","_jsxs","FlexLayout","fullIndex","direction","gap","name","dependencies","rules","style","margin","InputNumber","placeholder","width"],"mappings":";gwBA0BaA,EAAsB,SAAtBA,EAAuBC,GAClC,IACEC,EASED,EATFC,gBACAC,EAQEF,EARFE,gBACAC,EAOEH,EAPFG,SACAC,EAMEJ,EANFI,oBACAC,EAKEL,EALFK,iBACAC,EAIEN,EAJFM,oBACAC,EAGEP,EAHFO,oBACAC,EAEER,EAFFQ,aACGC,EAAUC,EACXV,EAAKW,GAET,IAAMC,EAAuBC,GAAQ,WACnC,IAAKR,EAAkB,MAAO,CAAC,eAAgB,gBAC/C,GAAIS,EAAgBT,GAAmB,CACrC,MAAO,CAACA,EAAiB,GAAIA,EAAiB,IAAMA,EAAiB,GACvE,CACA,MAAO,CAACA,EAAkBA,EAC5B,GAAG,CAACA,IAEJ,IAAMU,EAA0BF,GAAQ,WACtC,IAAKT,GAAuBY,EAAaZ,GAAsB,MAAO,GACtE,GAAIU,EAAgBV,GAAsB,CACxC,MAAO,CAACA,EAAoB,GAAIA,EAAoB,IAAMA,EAAoB,GAChF,CACA,MAAO,CAACA,EAAqBA,EAC/B,GAAG,CAACA,IAEJ,IAAMa,EAAW,CACf,CAAEd,SAAUA,EAAUe,QAASH,EAAwB,IAAM,IAC7D,SAAAI,GAAA,IAAGC,EAAaD,EAAbC,cAAa,MAAQ,CACtBC,mBAAAA,EAAUC,EAAGC,GACX,GAAIC,EAAkBD,GAAQ,CAC5B,OAAOE,QAAQC,SACjB,CACA,IAAMC,EAAWP,EAAclB,GAC/B,GAAIsB,EAAkBG,GAAW,CAC/B,OAAOF,QAAQC,SACjB,CACA,GAAIlB,EAAc,CAChB,GAAIe,GAASI,EAAU,CACrB,OAAOF,QAAQC,SACjB,CACF,KAAO,CACL,GAAIH,EAAQI,EAAU,CACpB,OAAOF,QAAQC,SACjB,CACF,CACA,OAAOD,QAAQG,OAAO,IAAIC,MAAMjB,EAAqB,IACvD,EACD,GAGH,IAAMkB,EAAW,CACf,CAAE3B,SAAUA,EAAUe,QAASH,EAAwB,IAAM,IAC7D,SAAAgB,GAAA,IAAGX,EAAaW,EAAbX,cAAa,MAAQ,CACtBC,mBAAAA,EAAUC,EAAGC,GACX,GAAIC,EAAkBD,GAAQ,CAC5B,OAAOE,QAAQC,SACjB,CACA,IAAMM,EAAWZ,EAAcnB,GAC/B,GAAIuB,EAAkBQ,GAAW,CAC/B,OAAOP,QAAQC,SACjB,CAEA,GAAIlB,EAAc,CAChB,GAAIe,GAASS,EAAU,CACrB,OAAOP,QAAQC,SACjB,CACF,KAAO,CACL,GAAIH,EAAQS,EAAU,CACpB,OAAOP,QAAQC,SACjB,CACF,CACA,OAAOD,QAAQG,OAAO,IAAIC,MAAMjB,EAAqB,IACvD,EACD,GAGH,OACEqB,EAACC,EAAeC,KAAK1B,EAAU,CAAEN,SAAUA,EAASiC,SAClDC,EAACC,EAAU,CAACC,UAAW,CAAC,EAAG,GAAIC,UAAU,aAAaC,IAAK,GAAGL,SAAA,CAC5DH,EAACC,EAAe,CACdQ,KAAMzC,EACN0C,aAAc,CAACzC,GACf0C,MAAO3B,EACP4B,MAAO,CAAEC,OAAQ,GAAIV,SAErBH,EAACc,EAAWZ,EAAA,CACVa,YAAY,OACR1C,EAAmB,CACvBuC,MAAKV,EAAA,CAAIc,MAAO,QAAW3C,GAAmB,UAAA,EAAnBA,EAAqBuC,YAGpDZ,EAACC,EAAe,CACdQ,KAAMxC,EACNyC,aAAc,CAAC1C,GACf2C,MAAOd,EACPe,MAAO,CAAEC,OAAQ,GAAIV,SAErBH,EAACc,EAAWZ,EAAA,CACVa,YAAY,OACRzC,EAAmB,CACvBsC,MAAKV,EAAA,CAAIc,MAAO,QAAW1C,GAAmB,UAAA,EAAnBA,EAAqBsC,iBAM5D"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{Select as e,Pagination as r}from"antd";import"react";import{jsx as n}from"react/jsx-runtime";var o=function r(o){return n(e,t({size:"small"},o,{placement:"topLeft"}))};o.Option=e.Option;e.Option;var i=function r(o){return n(e,t({size:"middle"},o,{placement:"topLeft"}))};i.Option=e.Option;var p=function e(p){var a=p.size==="small"?o:i;return n(r,t({},p,{selectComponentClass:a}))};export{p as PaginationWrapper};
4
+ import{_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{Select as e,Pagination as r}from"antd";import"react";import{jsx as n}from"react/jsx-runtime";var o=function r(o){return n(e,t({size:"small"},o,{placement:"topLeft"}))};o.Option=e.Option;e.Option;var i=function r(o){return n(e,t({size:"middle"},o,{placement:"topLeft"}))};i.Option=e.Option;var p=function e(p){var a=p.size==="small"?o:i;return n(r,t({},p,{selectComponentClass:a}))};export{p as PaginationWrapper};
5
5
  //# sourceMappingURL=index.js.map
package/esm/pdf/index.js CHANGED
@@ -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{Result as e,Spin as t}from"antd";import{useState as n}from"react";import{fbaHooks as o}from"../fba-hooks/index.js";import{createCtx as a}from"@wove/react/cjs/create-ctx";import{jsx as i,jsxs as c}from"react/jsx-runtime";import{_ as s}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as l}from"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var u=a(),d=u[0],f=u[1];var m=function a(c){var s=n(),l=s[0],u=s[1];var d=n(),m=d[0],p=d[1];o.useEffectCustomAsync((function(){return new Promise((function(r,e){var t,n,o,a;t=globalThis,n=t.pdfjsLib;n.GlobalWorkerOptions.workerSrc="//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.worker.min.js";var i=function(){try{return r()}catch(r){return e(r)}};var s=function(r){try{console.error(r);c.onLoadError==null?void 0:c.onLoadError(r);p(r);return i()}catch(r){return e(r)}};try{o=n.getDocument({url:c.pdfUrl,cMapUrl:"https://file.40017.cn/tcsk/react/pdf@3.2.146/bcmaps/",cMapPacked:true});return Promise.resolve(o.promise).then((function(r){try{a=r;u(a);c.onLoadSuccess==null?void 0:c.onLoadSuccess(a);return i()}catch(r){return s(r)}}),s)}catch(r){s(r)}}))}),[c.pdfUrl]);var v=function r(){return l};if(m){if(c.error){return typeof c.error==="function"?c.error(m):c.error}return i(e,{status:"error",title:"PDF加载异常",subTitle:m==null?void 0:m.message})}if(l){return i(f,{value:{getPdfInstance:v},children:i("div",{className:r("v-pdf-document",c.className),children:c.children})})}return i("div",{className:"v-pdf-document-init-loading",children:i(t,{})})};var p=function e(a){var u=d();var f=u.getPdfInstance();var m=l.useId(undefined,"v-pdf-page-"+a.pageNumber);var p=n(true),v=p[0],h=p[1];var g=f.numPages;o.useEffectCustom((function(){f.getPage(a.pageNumber).then((function(r){var e=a.scale||1;var t=r.getViewport({scale:e});var n=a.width;var o=document.getElementById(m);var i=o.getContext("2d");if(n&&!a.scale){var c=n/t.width;t=r.getViewport({scale:c})}var s=window.devicePixelRatio;s=s<=1?96/72:s;o.width=Math.floor(t.width*s);o.height=Math.floor(t.height*s);o.style.width=t.width+"px";o.style.height=t.height+"px";var l={transform:[s,0,0,s,0,0],canvasContext:i,viewport:t};var u=r.render(l);u.promise.then((function(){a.onRenderSuccess==null?void 0:a.onRenderSuccess({width:t.width,height:t.height,scale:e,pageNumber:a.pageNumber,page:r},f);h(false)})).catch((function(r){console.error(r==null?void 0:r.message);a.onRenderError==null?void 0:a.onRenderError(r,f);h(false)}))}))}),[f,a.scale,a.pageNumber]);var w=typeof a.gap==="undefined"?10:a.gap;var b=g!==a.pageNumber?{marginBottom:w}:{};return c("div",{className:r("v-pdf-page",a.className),style:s({},b,a.style),onClick:a.onClick,children:[i(t,{spinning:v,children:i("canvas",{id:m})}),a.children]})};var v={Document:m,Page:p};export{v as Pdf};
5
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{Result as e,Spin as t}from"antd";import{useState as n}from"react";import{fbaHooks as o}from"../fba-hooks/index.js";import{createCtx as a}from"@wove/react/cjs/create-ctx";import{jsx as i,jsxs as c}from"react/jsx-runtime";import{_ as s}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{hooks as l}from"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var u=a(),d=u[0],f=u[1];var m=function a(c){var s=n(),l=s[0],u=s[1];var d=n(),m=d[0],p=d[1];o.useEffectCustomAsync((function(){return new Promise((function(r,e){var t,n,o,a;t=globalThis,n=t.pdfjsLib;n.GlobalWorkerOptions.workerSrc="//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.worker.min.js";var i=function(){try{return r()}catch(r){return e(r)}};var s=function(r){try{console.error(r);c.onLoadError==null||c.onLoadError(r);p(r);return i()}catch(r){return e(r)}};try{o=n.getDocument({url:c.pdfUrl,cMapUrl:"https://file.40017.cn/tcsk/react/pdf@3.2.146/bcmaps/",cMapPacked:true});return Promise.resolve(o.promise).then((function(r){try{a=r;u(a);c.onLoadSuccess==null||c.onLoadSuccess(a);return i()}catch(r){return s(r)}}),s)}catch(r){s(r)}}))}),[c.pdfUrl]);var v=function r(){return l};if(m){if(c.error){return typeof c.error==="function"?c.error(m):c.error}return i(e,{status:"error",title:"PDF加载异常",subTitle:m==null?void 0:m.message})}if(l){return i(f,{value:{getPdfInstance:v},children:i("div",{className:r("v-pdf-document",c.className),children:c.children})})}return i("div",{className:"v-pdf-document-init-loading",children:i(t,{})})};var p=function e(a){var u=d();var f=u.getPdfInstance();var m=l.useId(undefined,"v-pdf-page-"+a.pageNumber);var p=n(true),v=p[0],h=p[1];var g=f.numPages;o.useEffectCustom((function(){f.getPage(a.pageNumber).then((function(r){var e=a.scale||1;var t=r.getViewport({scale:e});var n=a.width;var o=document.getElementById(m);var i=o.getContext("2d");if(n&&!a.scale){var c=n/t.width;t=r.getViewport({scale:c})}var s=window.devicePixelRatio;s=s<=1?96/72:s;o.width=Math.floor(t.width*s);o.height=Math.floor(t.height*s);o.style.width=t.width+"px";o.style.height=t.height+"px";var l={transform:[s,0,0,s,0,0],canvasContext:i,viewport:t};var u=r.render(l);u.promise.then((function(){a.onRenderSuccess==null||a.onRenderSuccess({width:t.width,height:t.height,scale:e,pageNumber:a.pageNumber,page:r},f);h(false)})).catch((function(r){console.error(r==null?void 0:r.message);a.onRenderError==null||a.onRenderError(r,f);h(false)}))}))}),[f,a.scale,a.pageNumber]);var w=typeof a.gap==="undefined"?10:a.gap;var b=g!==a.pageNumber?{marginBottom:w}:{};return c("div",{className:r("v-pdf-page",a.className),style:s({},b,a.style),onClick:a.onClick,children:[i(t,{spinning:v,children:i("canvas",{id:m})}),a.children]})};var v={Document:m,Page:p};export{v as Pdf};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/pdf/context.ts","@flatbiz/antd/src/pdf/document.tsx","@flatbiz/antd/src/pdf/page.tsx","@flatbiz/antd/src/pdf/index.ts"],"sourcesContent":["import { createCtx } from '@wove/react';\n\ntype CtxProps = {\n getPdfInstance: () => any;\n};\n\nexport const [getCtx, CtxProvider] = createCtx<CtxProps>();\n","import { classNames } from '@dimjs/utils';\nimport { Result, Spin } from 'antd';\nimport { ReactElement, ReactNode, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { CtxProvider } from './context';\nimport './style.less';\n\ntype PdfProps = {\n pdfUrl: string;\n onLoadError?: (error: any) => void;\n onLoadSuccess?: (pdfInstance: any) => void;\n children: ReactNode;\n error?: ReactElement | ((error) => ReactElement);\n className?: string;\n};\n\nexport const PdfDocument = (props: PdfProps) => {\n const [pdfInstance, setPdfInstance] = useState<any>();\n const [errorInst, setErrorInst] = useState<any>();\n\n fbaHooks.useEffectCustomAsync(async () => {\n const { pdfjsLib } = globalThis as any;\n pdfjsLib.GlobalWorkerOptions.workerSrc = '//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.worker.min.js';\n try {\n const loadingTask = pdfjsLib.getDocument({\n url: props.pdfUrl,\n // 避免服务端动态填充的字体不展示\n cMapUrl: 'https://file.40017.cn/tcsk/react/pdf@3.2.146/bcmaps/',\n cMapPacked: true,\n });\n const pdfInstance = await loadingTask.promise;\n setPdfInstance(pdfInstance);\n props.onLoadSuccess?.(pdfInstance);\n } catch (error: any) {\n console.error(error);\n props.onLoadError?.(error);\n setErrorInst(error);\n }\n }, [props.pdfUrl]);\n\n const getPdfInstance = () => {\n return pdfInstance;\n };\n\n if (errorInst) {\n if (props.error) {\n return typeof props.error === 'function' ? props.error(errorInst) : props.error;\n }\n return <Result status=\"error\" title=\"PDF加载异常\" subTitle={errorInst?.message}></Result>;\n }\n\n if (pdfInstance) {\n return (\n <CtxProvider value={{ getPdfInstance }}>\n <div className={classNames('v-pdf-document', props.className)}>{props.children}</div>\n </CtxProvider>\n );\n }\n\n return (\n <div className=\"v-pdf-document-init-loading\">\n <Spin />\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Spin } from 'antd';\nimport { CSSProperties, ReactNode, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { getCtx } from './context';\nimport './style.less';\n\ntype PdfProps = {\n onRenderSuccess?: (pageInstance: any, pdfInstance: any) => void;\n onRenderError?: (error: any, pdfInstance: any) => void;\n /** pdf page宽度,高度根据比例适配 */\n width?: number;\n /** 缩放比例,默认值:1,配置此参数后 width 属性失效,例如:1、0.6、0.8 */\n scale?: number;\n /** pdf页面上下之间的间隙,默认值10 */\n gap?: number;\n /** 页码 */\n pageNumber: number;\n children?: ReactNode;\n onClick?: (e) => void;\n className?: string;\n style?: CSSProperties;\n};\n\nexport const PdfPage = (props: PdfProps) => {\n const ctx = getCtx();\n const pdfInstance = ctx.getPdfInstance();\n const id = hooks.useId(undefined, `v-pdf-page-${props.pageNumber}`);\n const [spinning, setSpinning] = useState(true);\n\n const numPages = pdfInstance.numPages as number;\n\n fbaHooks.useEffectCustom(() => {\n pdfInstance.getPage(props.pageNumber).then(function (page) {\n const scale = props.scale || 1;\n let viewport = page.getViewport({ scale: scale });\n const customWidth = props.width;\n\n const canvas = document.getElementById(id) as any;\n const context = canvas.getContext('2d');\n\n if (customWidth && !props.scale) {\n const ratio = customWidth / viewport.width;\n viewport = page.getViewport({ scale: ratio });\n }\n let cssUnits = window.devicePixelRatio;\n cssUnits = cssUnits <= 1 ? 96 / 72 : cssUnits;\n canvas.width = Math.floor(viewport.width * cssUnits);\n canvas.height = Math.floor(viewport.height * cssUnits);\n\n canvas.style.width = `${viewport.width}px`;\n canvas.style.height = `${viewport.height}px`;\n\n const renderContext = {\n transform: [cssUnits, 0, 0, cssUnits, 0, 0],\n canvasContext: context,\n viewport: viewport,\n };\n const renderTask = page.render(renderContext);\n renderTask.promise\n .then(function () {\n props.onRenderSuccess?.(\n {\n width: viewport.width,\n height: viewport.height,\n scale: scale,\n pageNumber: props.pageNumber,\n page,\n },\n pdfInstance,\n );\n setSpinning(false);\n })\n .catch((error: any) => {\n console.error(error?.message);\n props.onRenderError?.(error, pdfInstance);\n setSpinning(false);\n });\n });\n }, [pdfInstance, props.scale, props.pageNumber]);\n\n const gap = typeof props.gap === 'undefined' ? 10 : props.gap;\n\n const style = numPages !== props.pageNumber ? { marginBottom: gap } : {};\n\n return (\n <div\n className={classNames('v-pdf-page', props.className)}\n style={{\n ...style,\n ...props.style,\n }}\n onClick={props.onClick}\n >\n <Spin spinning={spinning}>\n <canvas id={id}></canvas>\n </Spin>\n {props.children}\n </div>\n );\n};\n","import { PdfDocument } from './document';\nimport { PdfPage } from './page';\n\n/**\n * pdf预览\n * ```\n * 使用方式:在cdn.ts中引入 '//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.min.js'\n * Git: https://github.com/mozilla/pdfjs-dist/tree/master\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf-seal\n * ```\n */\nexport const Pdf = {\n Document: PdfDocument,\n Page: PdfPage,\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","PdfDocument","props","_useState","useState","pdfInstance","setPdfInstance","_useState2","errorInst","setErrorInst","fbaHooks","useEffectCustomAsync","Promise","$return","$error","_ref","pdfjsLib","loadingTask","_pdfInstance","globalThis","GlobalWorkerOptions","workerSrc","$Try_1_Post","$boundEx","$Try_1_Catch","error","console","onLoadError","getDocument","url","pdfUrl","cMapUrl","cMapPacked","resolve","promise","then","$await_2","onLoadSuccess","getPdfInstance","_jsx","Result","status","title","subTitle","message","value","children","className","_classNames","Spin","PdfPage","ctx","id","_hooks","useId","undefined","pageNumber","spinning","setSpinning","numPages","useEffectCustom","getPage","page","scale","viewport","getViewport","customWidth","width","canvas","document","getElementById","context","getContext","ratio","cssUnits","window","devicePixelRatio","Math","floor","height","style","renderContext","transform","canvasContext","renderTask","render","onRenderSuccess","catch","onRenderError","gap","marginBottom","_jsxs","_extends","onClick","Pdf","Document","Page"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/pdf/context.ts","@flatbiz/antd/src/pdf/document.tsx","@flatbiz/antd/src/pdf/page.tsx","@flatbiz/antd/src/pdf/index.ts"],"sourcesContent":["import { createCtx } from '@wove/react';\n\ntype CtxProps = {\n getPdfInstance: () => any;\n};\n\nexport const [getCtx, CtxProvider] = createCtx<CtxProps>();\n","import { classNames } from '@dimjs/utils';\nimport { Result, Spin } from 'antd';\nimport { ReactElement, ReactNode, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { CtxProvider } from './context';\nimport './style.less';\n\ntype PdfProps = {\n pdfUrl: string;\n onLoadError?: (error: any) => void;\n onLoadSuccess?: (pdfInstance: any) => void;\n children: ReactNode;\n error?: ReactElement | ((error) => ReactElement);\n className?: string;\n};\n\nexport const PdfDocument = (props: PdfProps) => {\n const [pdfInstance, setPdfInstance] = useState<any>();\n const [errorInst, setErrorInst] = useState<any>();\n\n fbaHooks.useEffectCustomAsync(async () => {\n const { pdfjsLib } = globalThis as any;\n pdfjsLib.GlobalWorkerOptions.workerSrc = '//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.worker.min.js';\n try {\n const loadingTask = pdfjsLib.getDocument({\n url: props.pdfUrl,\n // 避免服务端动态填充的字体不展示\n cMapUrl: 'https://file.40017.cn/tcsk/react/pdf@3.2.146/bcmaps/',\n cMapPacked: true,\n });\n const pdfInstance = await loadingTask.promise;\n setPdfInstance(pdfInstance);\n props.onLoadSuccess?.(pdfInstance);\n } catch (error: any) {\n console.error(error);\n props.onLoadError?.(error);\n setErrorInst(error);\n }\n }, [props.pdfUrl]);\n\n const getPdfInstance = () => {\n return pdfInstance;\n };\n\n if (errorInst) {\n if (props.error) {\n return typeof props.error === 'function' ? props.error(errorInst) : props.error;\n }\n return <Result status=\"error\" title=\"PDF加载异常\" subTitle={errorInst?.message}></Result>;\n }\n\n if (pdfInstance) {\n return (\n <CtxProvider value={{ getPdfInstance }}>\n <div className={classNames('v-pdf-document', props.className)}>{props.children}</div>\n </CtxProvider>\n );\n }\n\n return (\n <div className=\"v-pdf-document-init-loading\">\n <Spin />\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Spin } from 'antd';\nimport { CSSProperties, ReactNode, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { getCtx } from './context';\nimport './style.less';\n\ntype PdfProps = {\n onRenderSuccess?: (pageInstance: any, pdfInstance: any) => void;\n onRenderError?: (error: any, pdfInstance: any) => void;\n /** pdf page宽度,高度根据比例适配 */\n width?: number;\n /** 缩放比例,默认值:1,配置此参数后 width 属性失效,例如:1、0.6、0.8 */\n scale?: number;\n /** pdf页面上下之间的间隙,默认值10 */\n gap?: number;\n /** 页码 */\n pageNumber: number;\n children?: ReactNode;\n onClick?: (e) => void;\n className?: string;\n style?: CSSProperties;\n};\n\nexport const PdfPage = (props: PdfProps) => {\n const ctx = getCtx();\n const pdfInstance = ctx.getPdfInstance();\n const id = hooks.useId(undefined, `v-pdf-page-${props.pageNumber}`);\n const [spinning, setSpinning] = useState(true);\n\n const numPages = pdfInstance.numPages as number;\n\n fbaHooks.useEffectCustom(() => {\n pdfInstance.getPage(props.pageNumber).then(function (page) {\n const scale = props.scale || 1;\n let viewport = page.getViewport({ scale: scale });\n const customWidth = props.width;\n\n const canvas = document.getElementById(id) as any;\n const context = canvas.getContext('2d');\n\n if (customWidth && !props.scale) {\n const ratio = customWidth / viewport.width;\n viewport = page.getViewport({ scale: ratio });\n }\n let cssUnits = window.devicePixelRatio;\n cssUnits = cssUnits <= 1 ? 96 / 72 : cssUnits;\n canvas.width = Math.floor(viewport.width * cssUnits);\n canvas.height = Math.floor(viewport.height * cssUnits);\n\n canvas.style.width = `${viewport.width}px`;\n canvas.style.height = `${viewport.height}px`;\n\n const renderContext = {\n transform: [cssUnits, 0, 0, cssUnits, 0, 0],\n canvasContext: context,\n viewport: viewport,\n };\n const renderTask = page.render(renderContext);\n renderTask.promise\n .then(function () {\n props.onRenderSuccess?.(\n {\n width: viewport.width,\n height: viewport.height,\n scale: scale,\n pageNumber: props.pageNumber,\n page,\n },\n pdfInstance,\n );\n setSpinning(false);\n })\n .catch((error: any) => {\n console.error(error?.message);\n props.onRenderError?.(error, pdfInstance);\n setSpinning(false);\n });\n });\n }, [pdfInstance, props.scale, props.pageNumber]);\n\n const gap = typeof props.gap === 'undefined' ? 10 : props.gap;\n\n const style = numPages !== props.pageNumber ? { marginBottom: gap } : {};\n\n return (\n <div\n className={classNames('v-pdf-page', props.className)}\n style={{\n ...style,\n ...props.style,\n }}\n onClick={props.onClick}\n >\n <Spin spinning={spinning}>\n <canvas id={id}></canvas>\n </Spin>\n {props.children}\n </div>\n );\n};\n","import { PdfDocument } from './document';\nimport { PdfPage } from './page';\n\n/**\n * pdf预览\n * ```\n * 使用方式:在cdn.ts中引入 '//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.min.js'\n * Git: https://github.com/mozilla/pdfjs-dist/tree/master\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf-seal\n * ```\n */\nexport const Pdf = {\n Document: PdfDocument,\n Page: PdfPage,\n};\n"],"names":["_createCtx","_createCtx2","getCtx","CtxProvider","PdfDocument","props","_useState","useState","pdfInstance","setPdfInstance","_useState2","errorInst","setErrorInst","fbaHooks","useEffectCustomAsync","Promise","$return","$error","_ref","pdfjsLib","loadingTask","_pdfInstance","globalThis","GlobalWorkerOptions","workerSrc","$Try_1_Post","$boundEx","$Try_1_Catch","error","console","onLoadError","getDocument","url","pdfUrl","cMapUrl","cMapPacked","resolve","promise","then","$await_2","onLoadSuccess","getPdfInstance","_jsx","Result","status","title","subTitle","message","value","children","className","_classNames","Spin","PdfPage","ctx","id","_hooks","useId","undefined","pageNumber","spinning","setSpinning","numPages","useEffectCustom","getPage","page","scale","viewport","getViewport","customWidth","width","canvas","document","getElementById","context","getContext","ratio","cssUnits","window","devicePixelRatio","Math","floor","height","style","renderContext","transform","canvasContext","renderTask","render","onRenderSuccess","catch","onRenderError","gap","marginBottom","_jsxs","_extends","onClick","Pdf","Document","Page"],"mappings":"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"}
@@ -4,5 +4,5 @@ import './../fba-hooks/index.css';
4
4
  import './../roll-location-in-view/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 i}from"@wove/react/cjs/hooks";import{generateIntArray as a}from"@flatbiz/utils";import{Result as r}from"antd";import{useState as n,useRef as t,useMemo as o}from"react";import{Pdf as c}from"../pdf/index.js";import{RollLocationInView as s}from"../roll-location-in-view/index.js";import{jsx as l,jsxs as v}from"react/jsx-runtime";import"../fba-hooks/index.js";import"../_rollupPluginBabelHelpers-a0769acd.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@wove/react/cjs/create-ctx";import"ahooks";var d=function i(r){var n=typeof r.navigationWidth==="undefined"?200:r.navigationWidth;return l(s,{activeKey:""+r.activeNumber,behavior:"auto",style:{width:n},renderList:a(1,r.numPages+1).map((function(i){return{activeKey:""+i,render:v("div",{className:e("v-pdf-preview-navigation-content",{"v-pdf-preview-navigation-active":i===r.activeNumber}),children:[l(c.Page,{pageNumber:i,gap:0,scale:r.scale||.2,className:e("v-pdf-preview-navigation-page"),onClick:function e(){r.onChangeActiveNumber(i);var a=document.querySelector("#"+r.pdfContentNodeId);if(a){if(i===1){a.scrollTo(0,0)}else{var n=r.pdfPageListHeightScope[i-1][0];a.scrollTo(0,n)}}}}),v("div",{className:"v-pdf-preview-navigation-pagination",children:["- ",i," -"]})]},i)}}))})};var p=function s(p){var u=n(0),f=u[0],m=u[1];var g=t(null);var h=n(1),N=h[0],b=h[1];var j=n(0),w=j[0],P=j[1];var y=10;var x=i.useCallbackRef((function(e){m(e.numPages)}));var C=o((function(){if(!f)return[];var e=[];a(0,f).forEach((function(i){if(i===0){e.push([0,w])}else{var a=w*i+i*y;e.push([a,a+w])}}));return e}),[f,w]);var S=function e(i){var a;var r=i.target.scrollTop;var n=(a=g.current)==null?void 0:a.clientHeight;for(var t=0;t<C.length;t++){var o=C[t];if(o[1]-r>=n/2){b(t+1);break}}};var k=i.useId(undefined,"pdf-content-node");return v(c.Document,{pdfUrl:p.pdfUrl,onLoadSuccess:x,error:l(r,{status:"500",title:"PDF加载异常",subTitle:"PDF地址:"+p.pdfUrl}),className:e("v-pdf-preview-document",p.className),children:[!p.hiddenNavigation?l("div",{className:"v-pdf-preview-navigation",children:l(d,{numPages:f,activeNumber:N,onChangeActiveNumber:b,scale:p.navigationScale,navigationWidth:p.navigationWidth,pdfPageListHeightScope:C,pdfContentNodeId:k})}):null,l("div",{className:"v-pdf-preview-content",onScroll:S,ref:g,id:k,children:f>0?a(1,f+1).map((function(e){return l(c.Page,{pageNumber:e,scale:p.scale,gap:y,onRenderSuccess:function e(i){var a=Math.floor(i.height);P(a)},style:{display:"flex",justifyContent:"center"}},e)})):null})]})};export{p as PdfPreview};
7
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import{hooks as i}from"@wove/react/cjs/hooks";import{generateIntArray as a}from"@flatbiz/utils";import{Result as r}from"antd";import{useState as n,useRef as t,useMemo as o}from"react";import{Pdf as c}from"../pdf/index.js";import{RollLocationInView as s}from"../roll-location-in-view/index.js";import{jsx as l,jsxs as v}from"react/jsx-runtime";import"../fba-hooks/index.js";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@wove/react/cjs/create-ctx";import"ahooks";var d=function i(r){var n=typeof r.navigationWidth==="undefined"?200:r.navigationWidth;return l(s,{activeKey:""+r.activeNumber,behavior:"auto",style:{width:n},renderList:a(1,r.numPages+1).map((function(i){return{activeKey:""+i,render:v("div",{className:e("v-pdf-preview-navigation-content",{"v-pdf-preview-navigation-active":i===r.activeNumber}),children:[l(c.Page,{pageNumber:i,gap:0,scale:r.scale||.2,className:e("v-pdf-preview-navigation-page"),onClick:function e(){r.onChangeActiveNumber(i);var a=document.querySelector("#"+r.pdfContentNodeId);if(a){if(i===1){a.scrollTo(0,0)}else{var n=r.pdfPageListHeightScope[i-1][0];a.scrollTo(0,n)}}}}),v("div",{className:"v-pdf-preview-navigation-pagination",children:["- ",i," -"]})]},i)}}))})};var p=function s(p){var u=n(0),f=u[0],m=u[1];var g=t(null);var h=n(1),N=h[0],b=h[1];var j=n(0),w=j[0],P=j[1];var y=10;var x=i.useCallbackRef((function(e){m(e.numPages)}));var C=o((function(){if(!f)return[];var e=[];a(0,f).forEach((function(i){if(i===0){e.push([0,w])}else{var a=w*i+i*y;e.push([a,a+w])}}));return e}),[f,w]);var S=function e(i){var a;var r=i.target.scrollTop;var n=(a=g.current)==null?void 0:a.clientHeight;for(var t=0;t<C.length;t++){var o=C[t];if(o[1]-r>=n/2){b(t+1);break}}};var k=i.useId(undefined,"pdf-content-node");return v(c.Document,{pdfUrl:p.pdfUrl,onLoadSuccess:x,error:l(r,{status:"500",title:"PDF加载异常",subTitle:"PDF地址:"+p.pdfUrl}),className:e("v-pdf-preview-document",p.className),children:[!p.hiddenNavigation?l("div",{className:"v-pdf-preview-navigation",children:l(d,{numPages:f,activeNumber:N,onChangeActiveNumber:b,scale:p.navigationScale,navigationWidth:p.navigationWidth,pdfPageListHeightScope:C,pdfContentNodeId:k})}):null,l("div",{className:"v-pdf-preview-content",onScroll:S,ref:g,id:k,children:f>0?a(1,f+1).map((function(e){return l(c.Page,{pageNumber:e,scale:p.scale,gap:y,onRenderSuccess:function e(i){var a=Math.floor(i.height);P(a)},style:{display:"flex",justifyContent:"center"}},e)})):null})]})};export{p as PdfPreview};
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/pdf-preview/navigation.tsx","@flatbiz/antd/src/pdf-preview/preview.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { generateIntArray } from '@flatbiz/utils';\nimport { Pdf } from '../pdf';\nimport { RollLocationInView } from '../roll-location-in-view';\n\ntype NavigationProps = {\n numPages: number;\n activeNumber: number;\n onChangeActiveNumber: (active: number) => void;\n scale?: number;\n navigationWidth?: number;\n pdfPageListHeightScope: number[][];\n pdfContentNodeId: string;\n};\nexport const Navigation = (props: NavigationProps) => {\n const navigationWidth = typeof props.navigationWidth === 'undefined' ? 200 : props.navigationWidth;\n return (\n <RollLocationInView\n activeKey={`${props.activeNumber}`}\n behavior=\"auto\"\n style={{ width: navigationWidth }}\n renderList={generateIntArray(1, props.numPages + 1).map((pageNumer) => {\n return {\n activeKey: `${pageNumer}`,\n render: (\n <div\n key={pageNumer}\n className={classNames('v-pdf-preview-navigation-content', {\n 'v-pdf-preview-navigation-active': pageNumer === props.activeNumber,\n })}\n >\n <Pdf.Page\n pageNumber={pageNumer}\n gap={0}\n scale={props.scale || 0.2}\n className={classNames('v-pdf-preview-navigation-page')}\n onClick={() => {\n props.onChangeActiveNumber(pageNumer);\n const scroll = document.querySelector(`#${props.pdfContentNodeId}`) as HTMLDivElement;\n if (scroll) {\n if (pageNumer === 1) {\n scroll.scrollTo(0, 0);\n } else {\n const top = props.pdfPageListHeightScope[pageNumer - 1][0];\n scroll.scrollTo(0, top);\n }\n }\n }}\n ></Pdf.Page>\n\n <div className=\"v-pdf-preview-navigation-pagination\">- {pageNumer} -</div>\n </div>\n ),\n };\n })}\n />\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { generateIntArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Result } from 'antd';\nimport { useMemo, useRef, useState } from 'react';\nimport { Pdf } from '../pdf';\nimport { Navigation } from './navigation';\nimport './style.less';\n\nexport type PdfPreviewProps = {\n pdfUrl: string;\n /** 缩放比例,默认值:1 */\n scale?: number;\n className?: string;\n /** 导航pdf,缩放比例,默认值:0.2 */\n navigationScale?: number;\n /** 隐藏导航栏 */\n hiddenNavigation?: boolean;\n /** 导航栏宽度,默认值:200 */\n navigationWidth?: number;\n};\n\n/**\n * pdf预览方式1\n * ```\n * 使用方式:在cdn.ts中引入 '//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.min.js'\n * Git: https://github.com/mozilla/pdfjs-dist/tree/master\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf-seal\n * ```\n */\nexport const PdfPreview = (props: PdfPreviewProps) => {\n const [numPages, setNumPages] = useState(0);\n const dpfDoucmentRef = useRef<HTMLDivElement>(null);\n const [activePagination, setActivePagination] = useState(1);\n const [pdfPageHeight, setPdfPageHeight] = useState(0);\n\n const pageGap = 10;\n\n const onDocumentLoadSuccess = hooks.useCallbackRef((inst) => {\n setNumPages(inst.numPages);\n });\n\n /** 计算 page 在文档流中的高度范围,包含竖直方向间距 */\n const pdfPageListHeightScope = useMemo(() => {\n if (!numPages) return [];\n const pageHeightScopeList: number[][] = [];\n generateIntArray(0, numPages).forEach((item) => {\n if (item === 0) {\n pageHeightScopeList.push([0, pdfPageHeight]);\n } else {\n const x = pdfPageHeight * item + item * pageGap;\n pageHeightScopeList.push([x, x + pdfPageHeight]);\n }\n });\n return pageHeightScopeList;\n }, [numPages, pdfPageHeight]);\n\n const onDocumentCenterScroll = (event) => {\n const scrollTop = event.target.scrollTop;\n const scrollHeight = dpfDoucmentRef.current?.clientHeight as number;\n for (let index = 0; index < pdfPageListHeightScope.length; index++) {\n const element = pdfPageListHeightScope[index];\n if (element[1] - scrollTop >= scrollHeight / 2) {\n setActivePagination(index + 1);\n break;\n }\n }\n };\n\n const pdfContentNodeId = hooks.useId(undefined, 'pdf-content-node');\n\n return (\n <Pdf.Document\n pdfUrl={props.pdfUrl}\n onLoadSuccess={onDocumentLoadSuccess}\n error={<Result status=\"500\" title=\"PDF加载异常\" subTitle={`PDF地址:${props.pdfUrl}`} />}\n className={classNames('v-pdf-preview-document', props.className)}\n >\n {!props.hiddenNavigation ? (\n <div className=\"v-pdf-preview-navigation\">\n <Navigation\n numPages={numPages}\n activeNumber={activePagination}\n onChangeActiveNumber={setActivePagination}\n scale={props.navigationScale}\n navigationWidth={props.navigationWidth}\n pdfPageListHeightScope={pdfPageListHeightScope}\n pdfContentNodeId={pdfContentNodeId}\n />\n </div>\n ) : null}\n\n <div\n className=\"v-pdf-preview-content\"\n onScroll={onDocumentCenterScroll}\n ref={dpfDoucmentRef}\n id={pdfContentNodeId}\n >\n {numPages > 0\n ? generateIntArray(1, numPages + 1).map((item) => {\n return (\n <Pdf.Page\n key={item}\n pageNumber={item}\n scale={props.scale}\n gap={pageGap}\n onRenderSuccess={(node) => {\n const h = Math.floor(node.height);\n setPdfPageHeight(h);\n }}\n style={{ display: 'flex', justifyContent: 'center' }}\n ></Pdf.Page>\n );\n })\n : null}\n </div>\n </Pdf.Document>\n );\n};\n"],"names":["Navigation","props","navigationWidth","_jsx","RollLocationInView","activeKey","activeNumber","behavior","style","width","renderList","generateIntArray","numPages","map","pageNumer","render","_jsxs","className","_classNames","children","Pdf","Page","pageNumber","gap","scale","onClick","onChangeActiveNumber","scroll","document","querySelector","pdfContentNodeId","scrollTo","top","pdfPageListHeightScope","PdfPreview","_useState","useState","setNumPages","dpfDoucmentRef","useRef","_useState2","activePagination","setActivePagination","_useState3","pdfPageHeight","setPdfPageHeight","pageGap","onDocumentLoadSuccess","_hooks","useCallbackRef","inst","useMemo","pageHeightScopeList","forEach","item","push","x","onDocumentCenterScroll","event","_dpfDoucmentRef$curre","scrollTop","target","scrollHeight","current","clientHeight","index","length","element","useId","undefined","Document","pdfUrl","onLoadSuccess","error","Result","status","title","subTitle","hiddenNavigation","navigationScale","onScroll","ref","id","onRenderSuccess","node","h","Math","floor","height","display","justifyContent"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/pdf-preview/navigation.tsx","@flatbiz/antd/src/pdf-preview/preview.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { generateIntArray } from '@flatbiz/utils';\nimport { Pdf } from '../pdf';\nimport { RollLocationInView } from '../roll-location-in-view';\n\ntype NavigationProps = {\n numPages: number;\n activeNumber: number;\n onChangeActiveNumber: (active: number) => void;\n scale?: number;\n navigationWidth?: number;\n pdfPageListHeightScope: number[][];\n pdfContentNodeId: string;\n};\nexport const Navigation = (props: NavigationProps) => {\n const navigationWidth = typeof props.navigationWidth === 'undefined' ? 200 : props.navigationWidth;\n return (\n <RollLocationInView\n activeKey={`${props.activeNumber}`}\n behavior=\"auto\"\n style={{ width: navigationWidth }}\n renderList={generateIntArray(1, props.numPages + 1).map((pageNumer) => {\n return {\n activeKey: `${pageNumer}`,\n render: (\n <div\n key={pageNumer}\n className={classNames('v-pdf-preview-navigation-content', {\n 'v-pdf-preview-navigation-active': pageNumer === props.activeNumber,\n })}\n >\n <Pdf.Page\n pageNumber={pageNumer}\n gap={0}\n scale={props.scale || 0.2}\n className={classNames('v-pdf-preview-navigation-page')}\n onClick={() => {\n props.onChangeActiveNumber(pageNumer);\n const scroll = document.querySelector(`#${props.pdfContentNodeId}`) as HTMLDivElement;\n if (scroll) {\n if (pageNumer === 1) {\n scroll.scrollTo(0, 0);\n } else {\n const top = props.pdfPageListHeightScope[pageNumer - 1][0];\n scroll.scrollTo(0, top);\n }\n }\n }}\n ></Pdf.Page>\n\n <div className=\"v-pdf-preview-navigation-pagination\">- {pageNumer} -</div>\n </div>\n ),\n };\n })}\n />\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { generateIntArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Result } from 'antd';\nimport { useMemo, useRef, useState } from 'react';\nimport { Pdf } from '../pdf';\nimport { Navigation } from './navigation';\nimport './style.less';\n\nexport type PdfPreviewProps = {\n pdfUrl: string;\n /** 缩放比例,默认值:1 */\n scale?: number;\n className?: string;\n /** 导航pdf,缩放比例,默认值:0.2 */\n navigationScale?: number;\n /** 隐藏导航栏 */\n hiddenNavigation?: boolean;\n /** 导航栏宽度,默认值:200 */\n navigationWidth?: number;\n};\n\n/**\n * pdf预览方式1\n * ```\n * 使用方式:在cdn.ts中引入 '//file.40017.cn/tcsk/react/pdf@3.2.146/pdf.min.js'\n * Git: https://github.com/mozilla/pdfjs-dist/tree/master\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf\n * Demo: https://fex.qa.tcshuke.com/docs/admin/main/file/pdf-seal\n * ```\n */\nexport const PdfPreview = (props: PdfPreviewProps) => {\n const [numPages, setNumPages] = useState(0);\n const dpfDoucmentRef = useRef<HTMLDivElement>(null);\n const [activePagination, setActivePagination] = useState(1);\n const [pdfPageHeight, setPdfPageHeight] = useState(0);\n\n const pageGap = 10;\n\n const onDocumentLoadSuccess = hooks.useCallbackRef((inst) => {\n setNumPages(inst.numPages);\n });\n\n /** 计算 page 在文档流中的高度范围,包含竖直方向间距 */\n const pdfPageListHeightScope = useMemo(() => {\n if (!numPages) return [];\n const pageHeightScopeList: number[][] = [];\n generateIntArray(0, numPages).forEach((item) => {\n if (item === 0) {\n pageHeightScopeList.push([0, pdfPageHeight]);\n } else {\n const x = pdfPageHeight * item + item * pageGap;\n pageHeightScopeList.push([x, x + pdfPageHeight]);\n }\n });\n return pageHeightScopeList;\n }, [numPages, pdfPageHeight]);\n\n const onDocumentCenterScroll = (event) => {\n const scrollTop = event.target.scrollTop;\n const scrollHeight = dpfDoucmentRef.current?.clientHeight as number;\n for (let index = 0; index < pdfPageListHeightScope.length; index++) {\n const element = pdfPageListHeightScope[index];\n if (element[1] - scrollTop >= scrollHeight / 2) {\n setActivePagination(index + 1);\n break;\n }\n }\n };\n\n const pdfContentNodeId = hooks.useId(undefined, 'pdf-content-node');\n\n return (\n <Pdf.Document\n pdfUrl={props.pdfUrl}\n onLoadSuccess={onDocumentLoadSuccess}\n error={<Result status=\"500\" title=\"PDF加载异常\" subTitle={`PDF地址:${props.pdfUrl}`} />}\n className={classNames('v-pdf-preview-document', props.className)}\n >\n {!props.hiddenNavigation ? (\n <div className=\"v-pdf-preview-navigation\">\n <Navigation\n numPages={numPages}\n activeNumber={activePagination}\n onChangeActiveNumber={setActivePagination}\n scale={props.navigationScale}\n navigationWidth={props.navigationWidth}\n pdfPageListHeightScope={pdfPageListHeightScope}\n pdfContentNodeId={pdfContentNodeId}\n />\n </div>\n ) : null}\n\n <div\n className=\"v-pdf-preview-content\"\n onScroll={onDocumentCenterScroll}\n ref={dpfDoucmentRef}\n id={pdfContentNodeId}\n >\n {numPages > 0\n ? generateIntArray(1, numPages + 1).map((item) => {\n return (\n <Pdf.Page\n key={item}\n pageNumber={item}\n scale={props.scale}\n gap={pageGap}\n onRenderSuccess={(node) => {\n const h = Math.floor(node.height);\n setPdfPageHeight(h);\n }}\n style={{ display: 'flex', justifyContent: 'center' }}\n ></Pdf.Page>\n );\n })\n : null}\n </div>\n </Pdf.Document>\n );\n};\n"],"names":["Navigation","props","navigationWidth","_jsx","RollLocationInView","activeKey","activeNumber","behavior","style","width","renderList","generateIntArray","numPages","map","pageNumer","render","_jsxs","className","_classNames","children","Pdf","Page","pageNumber","gap","scale","onClick","onChangeActiveNumber","scroll","document","querySelector","pdfContentNodeId","scrollTo","top","pdfPageListHeightScope","PdfPreview","_useState","useState","setNumPages","dpfDoucmentRef","useRef","_useState2","activePagination","setActivePagination","_useState3","pdfPageHeight","setPdfPageHeight","pageGap","onDocumentLoadSuccess","_hooks","useCallbackRef","inst","useMemo","pageHeightScopeList","forEach","item","push","x","onDocumentCenterScroll","event","_dpfDoucmentRef$curre","scrollTop","target","scrollHeight","current","clientHeight","index","length","element","useId","undefined","Document","pdfUrl","onLoadSuccess","error","Result","status","title","subTitle","hiddenNavigation","navigationScale","onScroll","ref","id","onRenderSuccess","node","h","Math","floor","height","display","justifyContent"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{valueIsEqual as n}from"@flatbiz/utils";import{Space as e,Radio as r}from"antd";import{jsx as t}from"react/jsx-runtime";var i=function i(a){var o=function n(e){return new Promise((function(n,r){var t;t=e.target.value;if(a.onPreChange){return Promise.resolve(a.onPreChange(t)).then(function(n){try{return i.call(this)}catch(n){return r(n)}}.bind(this),r)}function i(){a.onChange==null?void 0:a.onChange(t);return n()}return i.call(this)}))};var u=function e(r){if(!a.isCancel)return;var t=r.target.value;if(n(a.value,t)){a.onChange==null?void 0:a.onChange(undefined)}};return t(e,{size:5,wrap:true,direction:a.direction,children:a.options.map((function(n){return t(r,{value:n.value,onClick:u,checked:a.value===n.value,onChange:o,disabled:a.disabled||n.disabled,children:n.label},String(n.value))}))})};export{i as RadioGroupWrapper};
4
+ import{valueIsEqual as n}from"@flatbiz/utils";import{Space as e,Radio as r}from"antd";import{jsx as t}from"react/jsx-runtime";var i=function i(a){var u=function n(e){return new Promise((function(n,r){var t;t=e.target.value;if(a.onPreChange){return Promise.resolve(a.onPreChange(t)).then(function(n){try{return i.call(this)}catch(n){return r(n)}}.bind(this),r)}function i(){a.onChange==null||a.onChange(t);return n()}return i.call(this)}))};var o=function e(r){if(!a.isCancel)return;var t=r.target.value;if(n(a.value,t)){a.onChange==null||a.onChange(undefined)}};return t(e,{size:5,wrap:true,direction:a.direction,children:a.options.map((function(n){return t(r,{value:n.value,onClick:o,checked:a.value===n.value,onChange:u,disabled:a.disabled||n.disabled,children:n.label},String(n.value))}))})};export{i as RadioGroupWrapper};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/radio-group-wrapper/radio-group-wrapper.tsx"],"sourcesContent":["import { valueIsEqual } from '@flatbiz/utils';\nimport { Radio, Space } from 'antd';\nimport { ReactElement } from 'react';\n\nexport type RadioGroupWrapperValue = string | number | boolean;\n\nexport type RadioGroupWrapperOptionItem = {\n label: string | ReactElement;\n value: RadioGroupWrapperValue;\n disabled?: boolean;\n};\n\nexport type CustomRadioGroupProps = {\n value?: RadioGroupWrapperValue;\n onChange?: (value?: RadioGroupWrapperValue) => void;\n onPreChange?: (value?: RadioGroupWrapperValue) => Promise<void>;\n options: RadioGroupWrapperOptionItem[];\n /** 是否可取消选中,默认:false */\n isCancel?: boolean;\n disabled?: boolean;\n /**方向,默认值 horizontal */\n direction?: 'horizontal' | 'vertical';\n};\n\n/**\n * RadioGroupWrapper 为了解决 RadioGroup 组件不能取消选中问题\n * @param props\n * @returns\n */\nexport const RadioGroupWrapper = (props: CustomRadioGroupProps) => {\n const onChange = async (event) => {\n const value = event.target.value;\n if (props.onPreChange) {\n await props.onPreChange(value);\n }\n props.onChange?.(value);\n };\n const onClick = (event) => {\n if (!props.isCancel) return;\n const value = event.target.value;\n if (valueIsEqual(props.value, value)) {\n props.onChange?.(undefined);\n }\n };\n return (\n <Space size={5} wrap={true} direction={props.direction}>\n {props.options.map((item) => {\n return (\n <Radio\n value={item.value}\n onClick={onClick}\n checked={props.value === item.value}\n key={String(item.value)}\n onChange={onChange}\n disabled={props.disabled || item.disabled}\n >\n {item.label}\n </Radio>\n );\n })}\n </Space>\n );\n};\n"],"names":["RadioGroupWrapper","props","onChange","event","Promise","$return","$error","value","target","onPreChange","resolve","then","$await_2","$If_1","call","this","$boundEx","bind","onClick","isCancel","valueIsEqual","undefined","_jsx","Space","size","wrap","direction","children","options","map","item","Radio","checked","disabled","label","String"],"mappings":";kIA6BaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAMC,EAAW,SAAXA,EAAkBC,GAAP,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IACTC,EAAAA,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIN,EAAMQ,YAAa,CACrB,OAAAL,QAAAM,QAAMT,EAAMQ,YAAYF,IAAxBI,KAjCN,SAAAC,GAAA,IAAI,OAAJC,EAAGC,KAAIC,KAAE,CAAC,MAAAC,GAAW,OAAOV,EAAAU,EAAM,CAAC,EAAhCC,KAAKF,MAAKT,EAkCT,CAAC,SAAAO,IACDZ,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAWK,GAAO,OAAAF,GAAA,CAAA,OAnC5BQ,EAAGC,KAAIC,KAAI,GAoCR,EACD,IAAMG,EAAU,SAAVA,EAAWf,GACf,IAAKF,EAAMkB,SAAU,OACrB,IAAMZ,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIa,EAAanB,EAAMM,MAAOA,GAAQ,CACpCN,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAWmB,UACnB,GAEF,OACEC,EAACC,EAAK,CAACC,KAAM,EAAGC,KAAM,KAAMC,UAAWzB,EAAMyB,UAAUC,SACpD1B,EAAM2B,QAAQC,KAAI,SAACC,GAClB,OACER,EAACS,EAAK,CACJxB,MAAOuB,EAAKvB,MACZW,QAASA,EACTc,QAAS/B,EAAMM,QAAUuB,EAAKvB,MAE9BL,SAAUA,EACV+B,SAAUhC,EAAMgC,UAAYH,EAAKG,SAASN,SAEzCG,EAAKI,OAJDC,OAAOL,EAAKvB,YAU7B"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/radio-group-wrapper/radio-group-wrapper.tsx"],"sourcesContent":["import { valueIsEqual } from '@flatbiz/utils';\nimport { Radio, Space } from 'antd';\nimport { ReactElement } from 'react';\n\nexport type RadioGroupWrapperValue = string | number | boolean;\n\nexport type RadioGroupWrapperOptionItem = {\n label: string | ReactElement;\n value: RadioGroupWrapperValue;\n disabled?: boolean;\n};\n\nexport type CustomRadioGroupProps = {\n value?: RadioGroupWrapperValue;\n onChange?: (value?: RadioGroupWrapperValue) => void;\n onPreChange?: (value?: RadioGroupWrapperValue) => Promise<void>;\n options: RadioGroupWrapperOptionItem[];\n /** 是否可取消选中,默认:false */\n isCancel?: boolean;\n disabled?: boolean;\n /**方向,默认值 horizontal */\n direction?: 'horizontal' | 'vertical';\n};\n\n/**\n * RadioGroupWrapper 为了解决 RadioGroup 组件不能取消选中问题\n * @param props\n * @returns\n */\nexport const RadioGroupWrapper = (props: CustomRadioGroupProps) => {\n const onChange = async (event) => {\n const value = event.target.value;\n if (props.onPreChange) {\n await props.onPreChange(value);\n }\n props.onChange?.(value);\n };\n const onClick = (event) => {\n if (!props.isCancel) return;\n const value = event.target.value;\n if (valueIsEqual(props.value, value)) {\n props.onChange?.(undefined);\n }\n };\n return (\n <Space size={5} wrap={true} direction={props.direction}>\n {props.options.map((item) => {\n return (\n <Radio\n value={item.value}\n onClick={onClick}\n checked={props.value === item.value}\n key={String(item.value)}\n onChange={onChange}\n disabled={props.disabled || item.disabled}\n >\n {item.label}\n </Radio>\n );\n })}\n </Space>\n );\n};\n"],"names":["RadioGroupWrapper","props","onChange","event","Promise","$return","$error","value","target","onPreChange","resolve","then","$await_2","$If_1","call","this","$boundEx","bind","onClick","isCancel","valueIsEqual","undefined","_jsx","Space","size","wrap","direction","children","options","map","item","Radio","checked","disabled","label","String"],"mappings":";kIA6BaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAMC,EAAW,SAAXA,EAAkBC,GAAP,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IACTC,EAAAA,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIN,EAAMQ,YAAa,CACrB,OAAAL,QAAAM,QAAMT,EAAMQ,YAAYF,IAAxBI,KAjCN,SAAAC,GAAA,IAAI,OAAJC,EAAGC,KAAIC,KAAE,CAAC,MAAAC,GAAW,OAAOV,EAAAU,EAAM,CAAC,EAAhCC,KAAKF,MAAKT,EAkCT,CAAC,SAAAO,IACDZ,EAAMC,UAAND,MAAAA,EAAMC,SAAWK,GAAO,OAAAF,GAAA,CAAA,OAnC5BQ,EAAGC,KAAIC,KAAI,GAoCR,EACD,IAAMG,EAAU,SAAVA,EAAWf,GACf,IAAKF,EAAMkB,SAAU,OACrB,IAAMZ,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIa,EAAanB,EAAMM,MAAOA,GAAQ,CACpCN,EAAMC,UAAND,MAAAA,EAAMC,SAAWmB,UACnB,GAEF,OACEC,EAACC,EAAK,CAACC,KAAM,EAAGC,KAAM,KAAMC,UAAWzB,EAAMyB,UAAUC,SACpD1B,EAAM2B,QAAQC,KAAI,SAACC,GAClB,OACER,EAACS,EAAK,CACJxB,MAAOuB,EAAKvB,MACZW,QAASA,EACTc,QAAS/B,EAAMM,QAAUuB,EAAKvB,MAE9BL,SAAUA,EACV+B,SAAUhC,EAAMgC,UAAYH,EAAKG,SAASN,SAEzCG,EAAKI,OAJDC,OAAOL,EAAKvB,YAU7B"}
@@ -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{hooks as e}from"@wove/react/cjs/hooks";import{_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{Tag as r,Empty as t,Form as l}from"antd";import{useState as a,createElement as o,Fragment as c}from"react";import{fbaHooks as s}from"../fba-hooks/index.js";import{jsxs as d,jsx as u}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var m=function e(n){var t;var l={"--relation-tagline-width":(n.tagLineWidth||40)+"px","--relation-group-indent-width":(n.indentWidth||80)+"px","--relation-tag-width":(n.tagWidth||26)+"px","--relation-line-color":""+(n.lineColor||"#fda148")};var a=i("relation-list",{"relation-list-only-one":n.onlyOne,"relation-list-only-no-main-one":n.onlyOne},n.className);var o=n.solt1,c=n.solt2;return d("div",{className:a,style:l,children:[o?d("div",{className:"relation-list-solt1",children:[u("div",{className:"relation-list-line"}),u("div",{className:"relation-list-label",children:n.label}),n.tagName?u(r,{className:"relation-item-tag",color:n.tagColor||"#fecd96",onClick:(t=n.onTagClick)==null?void 0:t.bind(null,n.tagName),children:n.tagName}):null,o()]}):null,c?u("div",{className:"relation-list-solt2",children:c()}):null]})};var f=function e(n){return u("div",{className:i("relation-group-list",n.className),children:n.children})};var h=function e(n){var r=i("relation-item",{"relation-item-line":true,"relation-item-first":n.isFirst,"relation-item-last":n.isLast,"relation-item-only-one":n.onlyOne});return u("div",{className:r,style:n.style,children:n.children})};var v=function e(n,i){var r;if(n.uid===i){n["_delete"]=true}n==null||(r=n.relationList)==null?void 0:r.forEach((function(r){var t,l;if(r.uid===i||((t=r.customData)==null?void 0:t.uid)===i){r["_delete"]=true;if(n.relationList.length===1){n["_delete"]=true}}(l=r.children)==null?void 0:l.forEach((function(n){e(n,i)}))}))};var g=function e(n){n.relationList=n.relationList||[];n.relationList=n.relationList.filter((function(e){return!e["_delete"]}));n.relationList.forEach((function(n){n.children=n.children||[];n.children=n.children.filter((function(e){return!e["_delete"]}));n.children.forEach((function(n){e(n)}))}));n.relationList=n.relationList.filter((function(e){if(!e.customData&&!e.children){return false}if(!e.customData&&(!e.children||e.children.length===0)){return false}return true}))};var p=function e(n){var r=n.relationItem;var t=n.dataSource;var a=n.index;if(r.customData&&r.children&&r.children.length>0){var o;return d(c,{children:[u(h,{isFirst:a===0,isLast:a===t.relationList.length-1,onlyOne:n.onlyOne,children:n.relationItemRender(r.customData,r.extraData)}),u(f,{children:(o=r.children)==null?void 0:o.map((function(e){return u(C,{dataSource:e,relationItemRender:n.relationItemRender,relationProps:n.relationProps,onTagClick:n.onTagClick,className:n.className},e.uid)}))})]},r.uid)}if(r.children&&r.children.length>0){var s;return u("div",{className:i("form-list-no-main-group",{"form-list-no-main-group":a===0}),children:(s=r.children)==null?void 0:s.map((function(e){return u(C,{dataSource:e,relationItemRender:n.relationItemRender,className:i("form-list-no-main",{"form-list-no-main-first":a===0,"form-list-no-main-last":a===t.relationList.length-1}),relationProps:n.relationProps,onTagClick:n.onTagClick},e.uid)}))},r.uid)}if(r.customData){return u(h,{isFirst:a===0,isLast:a===t.relationList.length-1,onlyOne:n.onlyOne,children:u(l,{component:false,children:n.relationItemRender(r.customData,r.extraData)})},r.uid)}return null};var C=function e(i){var r=i.dataSource;var t=r.relationList||[];var l=t[t.length-1];var a=t.length>0&&l.customData&&l.children&&l.children.length>0;var s=t.length==1;return o(m,n({},i.relationProps,{tagName:r.tagName,key:r.uid,onlyOne:s,label:r.label,className:i.className,onTagClick:function e(){i.onTagClick==null?void 0:i.onTagClick(r.uid,r.extraData)},solt1:function e(){return u(c,{children:t.map((function(e,r){var l=a&&r===t.length-1;return u(p,{dataSource:i.dataSource,relationItemRender:i.relationItemRender,relationProps:i.relationProps,onTagClick:i.onTagClick,relationItem:l?n({},e,{children:undefined}):e,index:r,onlyOne:s},r)}))})},solt2:function n(){if(a&&l.children&&l.children.length>0){return u(f,{children:l.children.map((function(n){return u(e,{dataSource:n,relationItemRender:i.relationItemRender,relationProps:i.relationProps,onTagClick:i.onTagClick},n.uid)}))},l.uid)}return null}}))};var N=function r(l){var o=a(),c=o[0],d=o[1];s.useEffectCustom((function(){d(l.dataSource)}),[l.dataSource]);var m=e.useCallbackRef((function(e,i,r){if(e){e[i]=r;l.onChange==null?void 0:l.onChange(n({},c))}}));var f=function e(n,i){for(var r=0;r<n.length;r++){var t=n[r];for(var l=0;l<t.relationList.length;l++){var a;var o=t.relationList[l];if(((a=o.customData)==null?void 0:a.uid)===i){return{relationTree:t,index:l,element:o}}else if(o.children){var c=e(o.children,i);if(c){return c}}}}return null};var h=e.useCallbackRef((function(e,n){var i;if(!c)return;var r=f([c],e.uid);if((i=r.relationTree)!=null&&i.relationList){var t;(t=r.relationTree)==null?void 0:t.relationList.splice(r.index+1,0,n);l.onChange==null?void 0:l.onChange(c)}}));var p=e.useCallbackRef((function(e,n){if(!c)return;var i=f([c],e.uid);if(i.element){i.element.children=(i.element.children||[]).concat(n);l.onChange==null?void 0:l.onChange(c)}}));var N=e.useCallbackRef((function(e){if(!c)return;v(c,e);if(c["_delete"]){l.onChange==null?void 0:l.onChange(undefined)}else{g(c);l.onChange==null?void 0:l.onChange(c)}}));if(!c)return u(t,{description:"暂无数据"});return u("div",{className:i("relation-tree",l.className),children:u(C,{dataSource:c,relationProps:l.relationProps,onTagClick:l.onTagClick,relationItemRender:function e(n,i){return l.children(n,{add:h,addChildren:p,remove:N,onChange:m.bind(null,n)},i)}})})};export{N as RelationTree};
5
+ import{hooks as e}from"@wove/react/cjs/hooks";import{_ as n}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{Tag as i,Empty as t,Form as l}from"antd";import{useState as a,createElement as o,Fragment as c}from"react";import{fbaHooks as s}from"../fba-hooks/index.js";import{jsxs as u,jsx as d}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";var m=function e(n){var t;var l={"--relation-tagline-width":(n.tagLineWidth||40)+"px","--relation-group-indent-width":(n.indentWidth||80)+"px","--relation-tag-width":(n.tagWidth||26)+"px","--relation-line-color":""+(n.lineColor||"#fda148")};var a=r("relation-list",{"relation-list-only-one":n.onlyOne,"relation-list-only-no-main-one":n.onlyOne},n.className);var o=n.solt1,c=n.solt2;return u("div",{className:a,style:l,children:[o?u("div",{className:"relation-list-solt1",children:[d("div",{className:"relation-list-line"}),d("div",{className:"relation-list-label",children:n.label}),n.tagName?d(i,{className:"relation-item-tag",color:n.tagColor||"#fecd96",onClick:(t=n.onTagClick)==null?void 0:t.bind(null,n.tagName),children:n.tagName}):null,o()]}):null,c?d("div",{className:"relation-list-solt2",children:c()}):null]})};var f=function e(n){return d("div",{className:r("relation-group-list",n.className),children:n.children})};var h=function e(n){var i=r("relation-item",{"relation-item-line":true,"relation-item-first":n.isFirst,"relation-item-last":n.isLast,"relation-item-only-one":n.onlyOne});return d("div",{className:i,style:n.style,children:n.children})};var v=function e(n,r){var i;if(n.uid===r){n["_delete"]=true}n==null||(i=n.relationList)==null||i.forEach((function(e){var i,t;if(e.uid===r||((i=e.customData)==null?void 0:i.uid)===r){e["_delete"]=true;if(n.relationList.length===1){n["_delete"]=true}}(t=e.children)==null||t.forEach((function(e){v(e,r)}))}))};var g=function e(n){n.relationList=n.relationList||[];n.relationList=n.relationList.filter((function(e){return!e["_delete"]}));n.relationList.forEach((function(e){e.children=e.children||[];e.children=e.children.filter((function(e){return!e["_delete"]}));e.children.forEach((function(e){g(e)}))}));n.relationList=n.relationList.filter((function(e){if(!e.customData&&!e.children){return false}if(!e.customData&&(!e.children||e.children.length===0)){return false}return true}))};var p=function e(n){var i=n.relationItem;var t=n.dataSource;var a=n.index;if(i.customData&&i.children&&i.children.length>0){var o;return u(c,{children:[d(h,{isFirst:a===0,isLast:a===t.relationList.length-1,onlyOne:n.onlyOne,children:n.relationItemRender(i.customData,i.extraData)}),d(f,{children:(o=i.children)==null?void 0:o.map((function(e){return d(C,{dataSource:e,relationItemRender:n.relationItemRender,relationProps:n.relationProps,onTagClick:n.onTagClick,className:n.className},e.uid)}))})]},i.uid)}if(i.children&&i.children.length>0){var s;return d("div",{className:r("form-list-no-main-group",{"form-list-no-main-group":a===0}),children:(s=i.children)==null?void 0:s.map((function(e){return d(C,{dataSource:e,relationItemRender:n.relationItemRender,className:r("form-list-no-main",{"form-list-no-main-first":a===0,"form-list-no-main-last":a===t.relationList.length-1}),relationProps:n.relationProps,onTagClick:n.onTagClick},e.uid)}))},i.uid)}if(i.customData){return d(h,{isFirst:a===0,isLast:a===t.relationList.length-1,onlyOne:n.onlyOne,children:d(l,{component:false,children:n.relationItemRender(i.customData,i.extraData)})},i.uid)}return null};var C=function e(r){var i=r.dataSource;var t=i.relationList||[];var l=t[t.length-1];var a=t.length>0&&l.customData&&l.children&&l.children.length>0;var s=t.length==1;return o(m,n({},r.relationProps,{tagName:i.tagName,key:i.uid,onlyOne:s,label:i.label,className:r.className,onTagClick:function e(){r.onTagClick==null||r.onTagClick(i.uid,i.extraData)},solt1:function e(){return d(c,{children:t.map((function(e,i){var l=a&&i===t.length-1;return d(p,{dataSource:r.dataSource,relationItemRender:r.relationItemRender,relationProps:r.relationProps,onTagClick:r.onTagClick,relationItem:l?n({},e,{children:undefined}):e,index:i,onlyOne:s},i)}))})},solt2:function e(){if(a&&l.children&&l.children.length>0){return d(f,{children:l.children.map((function(e){return d(C,{dataSource:e,relationItemRender:r.relationItemRender,relationProps:r.relationProps,onTagClick:r.onTagClick},e.uid)}))},l.uid)}return null}}))};var N=function i(l){var o=a(),c=o[0],u=o[1];s.useEffectCustom((function(){u(l.dataSource)}),[l.dataSource]);var m=e.useCallbackRef((function(e,r,i){if(e){e[r]=i;l.onChange==null||l.onChange(n({},c))}}));var f=function e(n,r){for(var i=0;i<n.length;i++){var t=n[i];for(var l=0;l<t.relationList.length;l++){var a;var o=t.relationList[l];if(((a=o.customData)==null?void 0:a.uid)===r){return{relationTree:t,index:l,element:o}}else if(o.children){var c=f(o.children,r);if(c){return c}}}}return null};var h=e.useCallbackRef((function(e,n){var r;if(!c)return;var i=f([c],e.uid);if((r=i.relationTree)!=null&&r.relationList){var t;(t=i.relationTree)==null||t.relationList.splice(i.index+1,0,n);l.onChange==null||l.onChange(c)}}));var p=e.useCallbackRef((function(e,n){if(!c)return;var r=f([c],e.uid);if(r.element){r.element.children=(r.element.children||[]).concat(n);l.onChange==null||l.onChange(c)}}));var N=e.useCallbackRef((function(e){if(!c)return;v(c,e);if(c["_delete"]){l.onChange==null||l.onChange(undefined)}else{g(c);l.onChange==null||l.onChange(c)}}));if(!c)return d(t,{description:"暂无数据"});return d("div",{className:r("relation-tree",l.className),children:d(C,{dataSource:c,relationProps:l.relationProps,onTagClick:l.onTagClick,relationItemRender:function e(n,r){return l.children(n,{add:h,addChildren:p,remove:N,onChange:m.bind(null,n)},r)}})})};export{N as RelationTree};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/relation-tree/compts/relation.tsx","@flatbiz/antd/src/relation-tree/compts/relation-group-list.tsx","@flatbiz/antd/src/relation-tree/compts/relation-item.tsx","@flatbiz/antd/src/relation-tree/utils.ts","@flatbiz/antd/src/relation-tree/relation-tree.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Tag } from 'antd';\nimport { CSSProperties } from 'react';\nimport { RelationProps } from '../type';\n\nexport const Relation = (props: RelationProps) => {\n const style = {\n '--relation-tagline-width': `${props.tagLineWidth || 40}px`,\n '--relation-group-indent-width': `${props.indentWidth || 80}px`,\n '--relation-tag-width': `${props.tagWidth || 26}px`,\n '--relation-line-color': `${props.lineColor || '#fda148'}`,\n } as CSSProperties;\n\n const className = classNames(\n 'relation-list',\n { 'relation-list-only-one': props.onlyOne, 'relation-list-only-no-main-one': props.onlyOne },\n props.className,\n );\n const { solt1, solt2 } = props;\n\n return (\n <div className={className} style={style}>\n {solt1 ? (\n <div className=\"relation-list-solt1\">\n <div className=\"relation-list-line\"></div>\n <div className=\"relation-list-label\">{props.label}</div>\n\n {props.tagName ? (\n <Tag\n className=\"relation-item-tag\"\n color={props.tagColor || '#fecd96'}\n onClick={props.onTagClick?.bind(null, props.tagName)}\n >\n {props.tagName}\n </Tag>\n ) : null}\n {solt1()}\n </div>\n ) : null}\n {solt2 ? <div className=\"relation-list-solt2\">{solt2()}</div> : null}\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { ReactElement } from 'react';\n\nexport type RelationGroupListProps = {\n children: ReactElement | ReactElement[] | null;\n className?: string;\n};\n\nexport const RelationGroupList = (props: RelationGroupListProps) => {\n return <div className={classNames('relation-group-list', props.className)}>{props.children}</div>;\n};\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, ReactElement } from 'react';\n\nexport type RelationItemProps = {\n children: ReactElement | null | Array<ReactElement | null>;\n className?: string;\n style?: CSSProperties;\n isFirst?: boolean;\n isLast?: boolean;\n onlyOne?: boolean;\n};\n\nexport const RelationItem = (props: RelationItemProps) => {\n const className = classNames('relation-item', {\n 'relation-item-line': true,\n 'relation-item-first': props.isFirst,\n 'relation-item-last': props.isLast,\n 'relation-item-only-one': props.onlyOne,\n });\n\n return (\n <div className={className} style={props.style}>\n {props.children}\n </div>\n );\n};\n","import { TRelationTreeData } from './type';\n\nexport const deleteLoop = (data: TRelationTreeData, uid: string) => {\n if (data.uid === uid) {\n data['_delete'] = true;\n }\n data?.relationList?.forEach((item) => {\n if (item.uid === uid || item.customData?.uid === uid) {\n item['_delete'] = true;\n if (data.relationList.length === 1) {\n data['_delete'] = true;\n }\n }\n\n item.children?.forEach((innerItem) => {\n deleteLoop(innerItem, uid);\n });\n });\n};\n\nexport const filterSurplusData = (data: TRelationTreeData) => {\n data.relationList = data.relationList || [];\n data.relationList = data.relationList.filter((item) => !item['_delete']);\n\n data.relationList.forEach((item) => {\n item.children = item.children || [];\n item.children = item.children.filter((item) => !item['_delete']);\n\n item.children.forEach((innerItem) => {\n filterSurplusData(innerItem);\n });\n });\n\n data.relationList = data.relationList.filter((item) => {\n if (!item.customData && !item.children) {\n return false;\n }\n if (!item.customData && (!item.children || item.children.length === 0)) {\n return false;\n }\n return true;\n });\n};\n","import { classNames } from '@dimjs/utils';\nimport { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form } from 'antd';\nimport { Fragment, ReactElement, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { Relation } from './compts/relation';\nimport { RelationGroupList } from './compts/relation-group-list';\nimport { RelationItem } from './compts/relation-item';\nimport './style.less';\n\nimport {\n RelationTreeProps,\n TRelationTreeCustomData,\n TRelationTreeData,\n TRelationTreeRelationItem,\n} from './type';\nimport { deleteLoop, filterSurplusData } from './utils';\n\ntype TRelationTreeLoop = {\n dataSource: TRelationTreeData;\n relationItemRender: (data: TRelationTreeCustomData, extraData?: TPlainObject) => ReactElement;\n className?: string;\n relationProps?: RelationTreeProps['relationProps'];\n onTagClick?: RelationTreeProps['onTagClick'];\n};\n\ntype RelationItemRenderProps = TRelationTreeLoop & {\n relationItem: TRelationTreeRelationItem;\n index: number;\n onlyOne?: boolean;\n};\n\nconst RelationItemRender = (props: RelationItemRenderProps) => {\n const relationItem = props.relationItem;\n const dataSource = props.dataSource;\n const index = props.index;\n\n if (relationItem.customData && relationItem.children && relationItem.children.length > 0) {\n return (\n <Fragment key={relationItem.uid}>\n <RelationItem\n isFirst={index === 0}\n isLast={index === dataSource.relationList.length - 1}\n onlyOne={props.onlyOne}\n >\n {props.relationItemRender(relationItem.customData, relationItem.extraData)}\n </RelationItem>\n <RelationGroupList>\n {relationItem.children?.map((innerItem) => {\n return (\n <RelationTreeLoop\n dataSource={innerItem}\n relationItemRender={props.relationItemRender}\n key={innerItem.uid}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n className={props.className}\n />\n );\n })}\n </RelationGroupList>\n </Fragment>\n );\n }\n if (relationItem.children && relationItem.children.length > 0) {\n return (\n <div\n className={classNames('form-list-no-main-group', { 'form-list-no-main-group': index === 0 })}\n key={relationItem.uid}\n >\n {relationItem.children?.map((innerItem) => {\n return (\n <RelationTreeLoop\n dataSource={innerItem}\n relationItemRender={props.relationItemRender}\n key={innerItem.uid}\n className={classNames('form-list-no-main', {\n 'form-list-no-main-first': index === 0,\n 'form-list-no-main-last': index === dataSource.relationList.length - 1,\n })}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n />\n );\n })}\n </div>\n );\n }\n if (relationItem.customData) {\n return (\n <RelationItem\n key={relationItem.uid}\n isFirst={index === 0}\n isLast={index === dataSource.relationList.length - 1}\n onlyOne={props.onlyOne}\n >\n <Form component={false}>\n {props.relationItemRender(relationItem.customData, relationItem.extraData)}\n </Form>\n </RelationItem>\n );\n }\n return null;\n};\n\nconst RelationTreeLoop = (props: TRelationTreeLoop) => {\n const dataSource = props.dataSource;\n const relationList = dataSource.relationList || [];\n\n const lastRelationItem = relationList[relationList.length - 1];\n const hasSolt2 =\n relationList.length > 0 &&\n lastRelationItem.customData &&\n lastRelationItem.children &&\n lastRelationItem.children.length > 0;\n const onlyOne = relationList.length == 1;\n // const onlyNoMainOne =\n // onlyOne && !relationList[0].customData && toArray(relationList[0].children).length === 1;\n return (\n <Relation\n {...props.relationProps}\n tagName={dataSource.tagName}\n key={dataSource.uid}\n onlyOne={onlyOne}\n label={dataSource.label}\n className={props.className}\n onTagClick={() => {\n props.onTagClick?.(dataSource.uid, dataSource.extraData);\n }}\n solt1={() => {\n return (\n <Fragment>\n {relationList.map((relationItem, index) => {\n const flat = hasSolt2 && index === relationList.length - 1;\n return (\n <RelationItemRender\n key={index}\n dataSource={props.dataSource}\n relationItemRender={props.relationItemRender}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n relationItem={\n flat\n ? {\n ...relationItem,\n children: undefined,\n }\n : relationItem\n }\n index={index}\n onlyOne={onlyOne}\n />\n );\n })}\n </Fragment>\n );\n }}\n solt2={() => {\n // 渲染最后一个relation item的children list数据\n if (hasSolt2 && lastRelationItem.children && lastRelationItem.children.length > 0) {\n return (\n <RelationGroupList key={lastRelationItem.uid}>\n {lastRelationItem.children.map((innerItem) => {\n return (\n <RelationTreeLoop\n dataSource={innerItem}\n relationItemRender={props.relationItemRender}\n key={innerItem.uid}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n />\n );\n })}\n </RelationGroupList>\n );\n }\n return null;\n }}\n ></Relation>\n );\n};\n\nexport const RelationTree = (props: RelationTreeProps) => {\n const [dataSource, setDataSource] = useState<TRelationTreeData>();\n\n fbaHooks.useEffectCustom(() => {\n setDataSource(props.dataSource);\n }, [props.dataSource]);\n\n const onRelationItemContentChange = hooks.useCallbackRef((data: TRelationTreeCustomData, name, value) => {\n if (data) {\n data[name] = value;\n props.onChange?.({ ...dataSource } as TRelationTreeData);\n }\n });\n\n const getTargetRelationList = (relationTreeList: TRelationTreeData[], uid: string) => {\n for (let index = 0; index < relationTreeList.length; index++) {\n const relationTree = relationTreeList[index];\n for (let innerIndex = 0; innerIndex < relationTree.relationList.length; innerIndex++) {\n const element = relationTree.relationList[innerIndex];\n if (element.customData?.uid === uid) {\n return {\n relationTree,\n index: innerIndex,\n element: element,\n };\n } else if (element.children) {\n const result = getTargetRelationList(element.children, uid);\n if (result) {\n return result;\n }\n }\n }\n }\n return null;\n };\n\n const onAdd = hooks.useCallbackRef(\n (data: TRelationTreeCustomData, initialData: TRelationTreeRelationItem) => {\n if (!dataSource) return;\n const result = getTargetRelationList([dataSource], data.uid);\n if (result.relationTree?.relationList) {\n result.relationTree?.relationList.splice((result.index as number) + 1, 0, initialData);\n props.onChange?.(dataSource);\n }\n },\n );\n const addChildren = hooks.useCallbackRef(\n (data: TRelationTreeCustomData, initialData: TRelationTreeData) => {\n if (!dataSource) return;\n const result = getTargetRelationList([dataSource], data.uid);\n if (result.element) {\n result.element.children = (result.element.children || []).concat(initialData);\n props.onChange?.(dataSource);\n }\n },\n );\n\n const onRemove = hooks.useCallbackRef((uid: string) => {\n if (!dataSource) return;\n deleteLoop(dataSource, uid);\n if (dataSource['_delete']) {\n props.onChange?.(undefined);\n } else {\n filterSurplusData(dataSource);\n props.onChange?.(dataSource);\n }\n });\n\n if (!dataSource) return <Empty description=\"暂无数据\"></Empty>;\n\n return (\n <div className={classNames('relation-tree', props.className)}>\n <RelationTreeLoop\n dataSource={dataSource}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n relationItemRender={(data, extraData) => {\n return props.children(\n data,\n {\n add: onAdd,\n addChildren: addChildren,\n remove: onRemove,\n onChange: onRelationItemContentChange.bind(null, data),\n },\n extraData,\n );\n }}\n />\n </div>\n );\n};\n"],"names":["Relation","props","_props$onTagClick","style","tagLineWidth","indentWidth","tagWidth","lineColor","className","_classNames","onlyOne","solt1","solt2","_jsxs","children","_jsx","label","tagName","Tag","color","tagColor","onClick","onTagClick","bind","RelationGroupList","RelationItem","isFirst","isLast","deleteLoop","data","uid","_data$relationList","relationList","forEach","item","_item$customData","_item$children","customData","length","innerItem","filterSurplusData","filter","RelationItemRender","relationItem","dataSource","index","_relationItem$childre","Fragment","relationItemRender","extraData","map","RelationTreeLoop","relationProps","_relationItem$childre2","Form","component","lastRelationItem","hasSolt2","_createElement","_extends","key","flat","undefined","RelationTree","_useState","useState","setDataSource","fbaHooks","useEffectCustom","onRelationItemContentChange","_hooks","useCallbackRef","name","value","onChange","getTargetRelationList","relationTreeList","relationTree","innerIndex","_element$customData","element","result","onAdd","initialData","_result$relationTree","_result$relationTree2","splice","addChildren","concat","onRemove","Empty","description","add","remove"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/relation-tree/compts/relation.tsx","@flatbiz/antd/src/relation-tree/compts/relation-group-list.tsx","@flatbiz/antd/src/relation-tree/compts/relation-item.tsx","@flatbiz/antd/src/relation-tree/utils.ts","@flatbiz/antd/src/relation-tree/relation-tree.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Tag } from 'antd';\nimport { CSSProperties } from 'react';\nimport { RelationProps } from '../type';\n\nexport const Relation = (props: RelationProps) => {\n const style = {\n '--relation-tagline-width': `${props.tagLineWidth || 40}px`,\n '--relation-group-indent-width': `${props.indentWidth || 80}px`,\n '--relation-tag-width': `${props.tagWidth || 26}px`,\n '--relation-line-color': `${props.lineColor || '#fda148'}`,\n } as CSSProperties;\n\n const className = classNames(\n 'relation-list',\n { 'relation-list-only-one': props.onlyOne, 'relation-list-only-no-main-one': props.onlyOne },\n props.className,\n );\n const { solt1, solt2 } = props;\n\n return (\n <div className={className} style={style}>\n {solt1 ? (\n <div className=\"relation-list-solt1\">\n <div className=\"relation-list-line\"></div>\n <div className=\"relation-list-label\">{props.label}</div>\n\n {props.tagName ? (\n <Tag\n className=\"relation-item-tag\"\n color={props.tagColor || '#fecd96'}\n onClick={props.onTagClick?.bind(null, props.tagName)}\n >\n {props.tagName}\n </Tag>\n ) : null}\n {solt1()}\n </div>\n ) : null}\n {solt2 ? <div className=\"relation-list-solt2\">{solt2()}</div> : null}\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { ReactElement } from 'react';\n\nexport type RelationGroupListProps = {\n children: ReactElement | ReactElement[] | null;\n className?: string;\n};\n\nexport const RelationGroupList = (props: RelationGroupListProps) => {\n return <div className={classNames('relation-group-list', props.className)}>{props.children}</div>;\n};\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, ReactElement } from 'react';\n\nexport type RelationItemProps = {\n children: ReactElement | null | Array<ReactElement | null>;\n className?: string;\n style?: CSSProperties;\n isFirst?: boolean;\n isLast?: boolean;\n onlyOne?: boolean;\n};\n\nexport const RelationItem = (props: RelationItemProps) => {\n const className = classNames('relation-item', {\n 'relation-item-line': true,\n 'relation-item-first': props.isFirst,\n 'relation-item-last': props.isLast,\n 'relation-item-only-one': props.onlyOne,\n });\n\n return (\n <div className={className} style={props.style}>\n {props.children}\n </div>\n );\n};\n","import { TRelationTreeData } from './type';\n\nexport const deleteLoop = (data: TRelationTreeData, uid: string) => {\n if (data.uid === uid) {\n data['_delete'] = true;\n }\n data?.relationList?.forEach((item) => {\n if (item.uid === uid || item.customData?.uid === uid) {\n item['_delete'] = true;\n if (data.relationList.length === 1) {\n data['_delete'] = true;\n }\n }\n\n item.children?.forEach((innerItem) => {\n deleteLoop(innerItem, uid);\n });\n });\n};\n\nexport const filterSurplusData = (data: TRelationTreeData) => {\n data.relationList = data.relationList || [];\n data.relationList = data.relationList.filter((item) => !item['_delete']);\n\n data.relationList.forEach((item) => {\n item.children = item.children || [];\n item.children = item.children.filter((item) => !item['_delete']);\n\n item.children.forEach((innerItem) => {\n filterSurplusData(innerItem);\n });\n });\n\n data.relationList = data.relationList.filter((item) => {\n if (!item.customData && !item.children) {\n return false;\n }\n if (!item.customData && (!item.children || item.children.length === 0)) {\n return false;\n }\n return true;\n });\n};\n","import { classNames } from '@dimjs/utils';\nimport { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Empty, Form } from 'antd';\nimport { Fragment, ReactElement, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { Relation } from './compts/relation';\nimport { RelationGroupList } from './compts/relation-group-list';\nimport { RelationItem } from './compts/relation-item';\nimport './style.less';\n\nimport {\n RelationTreeProps,\n TRelationTreeCustomData,\n TRelationTreeData,\n TRelationTreeRelationItem,\n} from './type';\nimport { deleteLoop, filterSurplusData } from './utils';\n\ntype TRelationTreeLoop = {\n dataSource: TRelationTreeData;\n relationItemRender: (data: TRelationTreeCustomData, extraData?: TPlainObject) => ReactElement;\n className?: string;\n relationProps?: RelationTreeProps['relationProps'];\n onTagClick?: RelationTreeProps['onTagClick'];\n};\n\ntype RelationItemRenderProps = TRelationTreeLoop & {\n relationItem: TRelationTreeRelationItem;\n index: number;\n onlyOne?: boolean;\n};\n\nconst RelationItemRender = (props: RelationItemRenderProps) => {\n const relationItem = props.relationItem;\n const dataSource = props.dataSource;\n const index = props.index;\n\n if (relationItem.customData && relationItem.children && relationItem.children.length > 0) {\n return (\n <Fragment key={relationItem.uid}>\n <RelationItem\n isFirst={index === 0}\n isLast={index === dataSource.relationList.length - 1}\n onlyOne={props.onlyOne}\n >\n {props.relationItemRender(relationItem.customData, relationItem.extraData)}\n </RelationItem>\n <RelationGroupList>\n {relationItem.children?.map((innerItem) => {\n return (\n <RelationTreeLoop\n dataSource={innerItem}\n relationItemRender={props.relationItemRender}\n key={innerItem.uid}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n className={props.className}\n />\n );\n })}\n </RelationGroupList>\n </Fragment>\n );\n }\n if (relationItem.children && relationItem.children.length > 0) {\n return (\n <div\n className={classNames('form-list-no-main-group', { 'form-list-no-main-group': index === 0 })}\n key={relationItem.uid}\n >\n {relationItem.children?.map((innerItem) => {\n return (\n <RelationTreeLoop\n dataSource={innerItem}\n relationItemRender={props.relationItemRender}\n key={innerItem.uid}\n className={classNames('form-list-no-main', {\n 'form-list-no-main-first': index === 0,\n 'form-list-no-main-last': index === dataSource.relationList.length - 1,\n })}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n />\n );\n })}\n </div>\n );\n }\n if (relationItem.customData) {\n return (\n <RelationItem\n key={relationItem.uid}\n isFirst={index === 0}\n isLast={index === dataSource.relationList.length - 1}\n onlyOne={props.onlyOne}\n >\n <Form component={false}>\n {props.relationItemRender(relationItem.customData, relationItem.extraData)}\n </Form>\n </RelationItem>\n );\n }\n return null;\n};\n\nconst RelationTreeLoop = (props: TRelationTreeLoop) => {\n const dataSource = props.dataSource;\n const relationList = dataSource.relationList || [];\n\n const lastRelationItem = relationList[relationList.length - 1];\n const hasSolt2 =\n relationList.length > 0 &&\n lastRelationItem.customData &&\n lastRelationItem.children &&\n lastRelationItem.children.length > 0;\n const onlyOne = relationList.length == 1;\n // const onlyNoMainOne =\n // onlyOne && !relationList[0].customData && toArray(relationList[0].children).length === 1;\n return (\n <Relation\n {...props.relationProps}\n tagName={dataSource.tagName}\n key={dataSource.uid}\n onlyOne={onlyOne}\n label={dataSource.label}\n className={props.className}\n onTagClick={() => {\n props.onTagClick?.(dataSource.uid, dataSource.extraData);\n }}\n solt1={() => {\n return (\n <Fragment>\n {relationList.map((relationItem, index) => {\n const flat = hasSolt2 && index === relationList.length - 1;\n return (\n <RelationItemRender\n key={index}\n dataSource={props.dataSource}\n relationItemRender={props.relationItemRender}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n relationItem={\n flat\n ? {\n ...relationItem,\n children: undefined,\n }\n : relationItem\n }\n index={index}\n onlyOne={onlyOne}\n />\n );\n })}\n </Fragment>\n );\n }}\n solt2={() => {\n // 渲染最后一个relation item的children list数据\n if (hasSolt2 && lastRelationItem.children && lastRelationItem.children.length > 0) {\n return (\n <RelationGroupList key={lastRelationItem.uid}>\n {lastRelationItem.children.map((innerItem) => {\n return (\n <RelationTreeLoop\n dataSource={innerItem}\n relationItemRender={props.relationItemRender}\n key={innerItem.uid}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n />\n );\n })}\n </RelationGroupList>\n );\n }\n return null;\n }}\n ></Relation>\n );\n};\n\nexport const RelationTree = (props: RelationTreeProps) => {\n const [dataSource, setDataSource] = useState<TRelationTreeData>();\n\n fbaHooks.useEffectCustom(() => {\n setDataSource(props.dataSource);\n }, [props.dataSource]);\n\n const onRelationItemContentChange = hooks.useCallbackRef((data: TRelationTreeCustomData, name, value) => {\n if (data) {\n data[name] = value;\n props.onChange?.({ ...dataSource } as TRelationTreeData);\n }\n });\n\n const getTargetRelationList = (relationTreeList: TRelationTreeData[], uid: string) => {\n for (let index = 0; index < relationTreeList.length; index++) {\n const relationTree = relationTreeList[index];\n for (let innerIndex = 0; innerIndex < relationTree.relationList.length; innerIndex++) {\n const element = relationTree.relationList[innerIndex];\n if (element.customData?.uid === uid) {\n return {\n relationTree,\n index: innerIndex,\n element: element,\n };\n } else if (element.children) {\n const result = getTargetRelationList(element.children, uid);\n if (result) {\n return result;\n }\n }\n }\n }\n return null;\n };\n\n const onAdd = hooks.useCallbackRef(\n (data: TRelationTreeCustomData, initialData: TRelationTreeRelationItem) => {\n if (!dataSource) return;\n const result = getTargetRelationList([dataSource], data.uid);\n if (result.relationTree?.relationList) {\n result.relationTree?.relationList.splice((result.index as number) + 1, 0, initialData);\n props.onChange?.(dataSource);\n }\n },\n );\n const addChildren = hooks.useCallbackRef(\n (data: TRelationTreeCustomData, initialData: TRelationTreeData) => {\n if (!dataSource) return;\n const result = getTargetRelationList([dataSource], data.uid);\n if (result.element) {\n result.element.children = (result.element.children || []).concat(initialData);\n props.onChange?.(dataSource);\n }\n },\n );\n\n const onRemove = hooks.useCallbackRef((uid: string) => {\n if (!dataSource) return;\n deleteLoop(dataSource, uid);\n if (dataSource['_delete']) {\n props.onChange?.(undefined);\n } else {\n filterSurplusData(dataSource);\n props.onChange?.(dataSource);\n }\n });\n\n if (!dataSource) return <Empty description=\"暂无数据\"></Empty>;\n\n return (\n <div className={classNames('relation-tree', props.className)}>\n <RelationTreeLoop\n dataSource={dataSource}\n relationProps={props.relationProps}\n onTagClick={props.onTagClick}\n relationItemRender={(data, extraData) => {\n return props.children(\n data,\n {\n add: onAdd,\n addChildren: addChildren,\n remove: onRemove,\n onChange: onRelationItemContentChange.bind(null, data),\n },\n extraData,\n );\n }}\n />\n </div>\n );\n};\n"],"names":["Relation","props","_props$onTagClick","style","tagLineWidth","indentWidth","tagWidth","lineColor","className","_classNames","onlyOne","solt1","solt2","_jsxs","children","_jsx","label","tagName","Tag","color","tagColor","onClick","onTagClick","bind","RelationGroupList","RelationItem","isFirst","isLast","deleteLoop","data","uid","_data$relationList","relationList","forEach","item","_item$customData","_item$children","customData","length","innerItem","filterSurplusData","filter","RelationItemRender","relationItem","dataSource","index","_relationItem$childre","Fragment","relationItemRender","extraData","map","_RelationTreeLoop","relationProps","_relationItem$childre2","Form","component","RelationTreeLoop","lastRelationItem","hasSolt2","_createElement","_extends","key","flat","undefined","RelationTree","_useState","useState","setDataSource","fbaHooks","useEffectCustom","onRelationItemContentChange","_hooks","useCallbackRef","name","value","onChange","getTargetRelationList","relationTreeList","relationTree","innerIndex","_element$customData","element","result","onAdd","initialData","_result$relationTree","_result$relationTree2","splice","addChildren","concat","onRemove","Empty","description","add","remove"],"mappings":"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"}
@@ -3,5 +3,5 @@ import './../dynamic-node/index.css';
3
3
  import './../fba-hooks/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import{a as e,_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{getStrByteLen as i}from"@flatbiz/utils";import{Editor as o}from"@tinymce/tinymce-react";import{useKeyPress as a}from"ahooks";import{Image as l,message as s}from"antd";import{Fragment as c,useRef as u,useState as m}from"react";import d from"@ant-design/icons/es/icons/PlusCircleOutlined";import{dynamicNode as f}from"../dynamic-node/index.js";import{fbaHooks as p}from"../fba-hooks/index.js";import{jsx as v,Fragment as g,jsxs as h}from"react/jsx-runtime";import"react-dom/client";import"../dom-4d04aa64.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var y=function e(n){var t=n.visible,r=n.url;p.useEffectCustom((function(){if(t){f.append({content:v(d,{onClick:n.close,className:"preview-image-popup-close",twoToneColor:"#1890ff"})})}else{f.remove()}}),[t]);if(!r)return v(g,{});return v(c,{children:v(l,{style:{left:"100px"},preview:{className:"preview-image-popup",maskStyle:{backgroundColor:"rgba(0,0,0,0.85)"},visible:t,src:r,onVisibleChange:function e(){n.close()}}},r)})};var b=["onUploadImage","onChange","height","className"];var C=function l(c){var d,f,p,g;var C=c.onUploadImage,k=c.onChange,x=c.height,_=c.className,w=e(c,b);var j=u(null);var E=m(""),I=E[0],S=E[1];var F=((d=c.init)==null?void 0:d.img_ratio)||[{min:0,max:1e3,ratio:.5},{min:1e3,ratio:.3}];a((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var n;var t=(n=j.current)==null?void 0:n.editorContainer.classList.contains("tox-fullscreen");if(t){var r;(r=j.current)==null?void 0:r.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});var N=r.useCallbackRef((function(e,n){try{if(e.keyCode==27){var t;var r=(t=j.current)==null?void 0:t.editorContainer.classList.contains("tox-fullscreen");if(r){var i;(i=j.current)==null?void 0:i.editorCommands.execCommand("mceFullScreen")}}}catch(e){}c.onKeyDown==null?void 0:c.onKeyDown(e,n)}));var P=r.useCallbackRef((function(e,n){j.current=n;n.on("FullscreenStateChanged",(function(e){c.onFullScreenChange==null?void 0:c.onFullScreenChange(e.state)}));try{var t;(t=n.iframeElement)==null||(t=t.contentDocument)==null?void 0:t.addEventListener("click",(function(e){var n;if(c.imgPreview&&((n=e.target)==null?void 0:n["tagName"])==="IMG"){S(e.target["src"])}}),true)}catch(e){}w.onInit==null?void 0:w.onInit(e,n)}));var z=r.useCallbackRef((function(e,n){j.current=n;w.onEditorChange==null?void 0:w.onEditorChange(e,n);k==null?void 0:k(e)}));var R="https://file.40017.cn/tcsk/tinymce@6.4.1";var D=function e(n){if(F.length===0)return 1;for(var t=0;t<F.length;t++){var r=F[t];if(r.max){if(n>=r.min&&n<=r.max)return r.ratio}else{if(n>=r.min)return r.ratio}}return 1};var K=r.useCallbackRef((function(e,n){try{var t=n.node.children||[];if(t.length===1&&t[0].nodeName==="IMG"){t[0].setAttribute("style","display:none");var r=document.createElement("img");r.src=t[0].getAttribute("src");r.onload=function(){var n=D(r.width);e.execCommand("mceInsertContent",true,'<img src="'+r.src+'" width="'+r.width*n+'" height="'+r.height*n+'" />')}}}catch(e){}}));var L=r.useCallbackRef((function(e,n){var t;var r=(t=c.init)==null?void 0:t.paste_text_limit;if(r){var o=i(n.content);if(o>1024*r.limit){s.error(r.message);n.content=""}}}));return h("div",{className:t("v-editor-wrapper",_),children:[v(o,n({tinymceScriptSrc:R+"/tinymce.min.js"},w,{onInit:P,onKeyDown:N,onEditorChange:z,init:n({promotion:false,language:"zh-Hans",height:x,paste_data_images:C?true:false,paste_postprocess:K,paste_preprocess:L,autosave_ask_before_unload:false,base_url:R,autoresize_bottom_margin:0,images_upload_handler:function e(n){return new Promise((function(e,t){var r,i,o;var a=function(n){try{return e(Promise.reject((n==null?void 0:n.message)||"图片上传异常"))}catch(e){return t(e)}};try{r=n.blob();i=new File([r],r.name,{type:r.type});return Promise.resolve(C==null?void 0:C(i)).then((function(n){try{o=n;return e(Promise.resolve(o))}catch(e){return a(e)}}),a)}catch(e){a(e)}}))},plugins:"lists link image advlist charmap preview fullscreen code table help codesample "+(((f=c.init)==null?void 0:f.plugins_append)||""),toolbar:"undo redo fullscreen preview | bold italic underline strikethrough |"+"fontsize blocks |"+"forecolor backcolor removeformat |"+"numlist bullist advlist |"+"alignleft aligncenter alignright alignjustify |"+"outdent indent |"+"hr image link code codesample |"+(((p=c.init)==null?void 0:p.toolbar_append)||""),font_size_formats:"8px 10px 12px 14px 16px 18px 24px 36px 48px"},c.init,{content_style:"img {max-width:100%;} table{width:100%} "+((g=c.init)==null?void 0:g.content_style),convert_urls:false})})),v(y,{visible:!!I,url:I,close:function e(){S("")}})]})};export{C as RichTextEditor};
6
+ import{a as e,_ as n}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{getStrByteLen as i}from"@flatbiz/utils";import{Editor as o}from"@tinymce/tinymce-react";import{useKeyPress as a}from"ahooks";import{Image as l,message as s}from"antd";import{Fragment as c,useRef as u,useState as m}from"react";import f from"@ant-design/icons/es/icons/PlusCircleOutlined";import{dynamicNode as p}from"../dynamic-node/index.js";import{fbaHooks as d}from"../fba-hooks/index.js";import{jsx as v,Fragment as g,jsxs as h}from"react/jsx-runtime";import"react-dom/client";import"../dom-4d04aa64.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var y=function e(n){var t=n.visible,r=n.url;d.useEffectCustom((function(){if(t){p.append({content:v(f,{onClick:n.close,className:"preview-image-popup-close",twoToneColor:"#1890ff"})})}else{p.remove()}}),[t]);if(!r)return v(g,{});return v(c,{children:v(l,{style:{left:"100px"},preview:{className:"preview-image-popup",maskStyle:{backgroundColor:"rgba(0,0,0,0.85)"},visible:t,src:r,onVisibleChange:function e(){n.close()}}},r)})};var b=["onUploadImage","onChange","height","className"];var C=function l(c){var f,p,d,g;var C=c.onUploadImage,k=c.onChange,x=c.height,_=c.className,w=e(c,b);var j=u(null);var E=m(""),I=E[0],S=E[1];var F=((f=c.init)==null?void 0:f.img_ratio)||[{min:0,max:1e3,ratio:.5},{min:1e3,ratio:.3}];a((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var n;var t=(n=j.current)==null?void 0:n.editorContainer.classList.contains("tox-fullscreen");if(t){var r;(r=j.current)==null||r.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});var N=r.useCallbackRef((function(e,n){try{if(e.keyCode==27){var t;var r=(t=j.current)==null?void 0:t.editorContainer.classList.contains("tox-fullscreen");if(r){var i;(i=j.current)==null||i.editorCommands.execCommand("mceFullScreen")}}}catch(e){}c.onKeyDown==null||c.onKeyDown(e,n)}));var P=r.useCallbackRef((function(e,n){j.current=n;n.on("FullscreenStateChanged",(function(e){c.onFullScreenChange==null||c.onFullScreenChange(e.state)}));try{var t;(t=n.iframeElement)==null||(t=t.contentDocument)==null||t.addEventListener("click",(function(e){var n;if(c.imgPreview&&((n=e.target)==null?void 0:n["tagName"])==="IMG"){S(e.target["src"])}}),true)}catch(e){}w.onInit==null||w.onInit(e,n)}));var z=r.useCallbackRef((function(e,n){j.current=n;w.onEditorChange==null||w.onEditorChange(e,n);k==null||k(e)}));var R="https://file.40017.cn/tcsk/tinymce@6.4.1";var D=function e(n){if(F.length===0)return 1;for(var t=0;t<F.length;t++){var r=F[t];if(r.max){if(n>=r.min&&n<=r.max)return r.ratio}else{if(n>=r.min)return r.ratio}}return 1};var K=r.useCallbackRef((function(e,n){try{var t=n.node.children||[];if(t.length===1&&t[0].nodeName==="IMG"){t[0].setAttribute("style","display:none");var r=document.createElement("img");r.src=t[0].getAttribute("src");r.onload=function(){var n=D(r.width);e.execCommand("mceInsertContent",true,'<img src="'+r.src+'" width="'+r.width*n+'" height="'+r.height*n+'" />')}}}catch(e){}}));var L=r.useCallbackRef((function(e,n){var t;var r=(t=c.init)==null?void 0:t.paste_text_limit;if(r){var o=i(n.content);if(o>1024*r.limit){void s.error(r.message);n.content=""}}}));return h("div",{className:t("v-editor-wrapper",_),children:[v(o,n({tinymceScriptSrc:R+"/tinymce.min.js"},w,{onInit:P,onKeyDown:N,onEditorChange:z,init:n({promotion:false,language:"zh-Hans",height:x,paste_data_images:C?true:false,paste_postprocess:K,paste_preprocess:L,autosave_ask_before_unload:false,base_url:R,autoresize_bottom_margin:0,images_upload_handler:function e(n){return new Promise((function(e,t){var r,i,o;var a=function(n){try{return e(Promise.reject((n==null?void 0:n.message)||"图片上传异常"))}catch(e){return t(e)}};try{r=n.blob();i=new File([r],r["name"],{type:r.type});return Promise.resolve(C==null?void 0:C(i)).then((function(n){try{o=n;return e(Promise.resolve(o))}catch(e){return a(e)}}),a)}catch(e){a(e)}}))},plugins:"lists link image advlist charmap preview fullscreen code table help codesample "+(((p=c.init)==null?void 0:p.plugins_append)||""),toolbar:"undo redo fullscreen preview | bold italic underline strikethrough |"+"fontsize blocks |"+"forecolor backcolor removeformat |"+"numlist bullist advlist |"+"alignleft aligncenter alignright alignjustify |"+"outdent indent |"+"hr image link code codesample |"+(((d=c.init)==null?void 0:d.toolbar_append)||""),font_size_formats:"8px 10px 12px 14px 16px 18px 24px 36px 48px"},c.init,{content_style:"img {max-width:100%;} table{width:100%} "+((g=c.init)==null?void 0:g.content_style),convert_urls:false})})),v(y,{visible:!!I,url:I,close:function e(){S("")}})]})};export{C as RichTextEditor};
7
7
  //# sourceMappingURL=index.js.map