@flatbiz/antd 4.5.55 → 4.5.56

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 (242) hide show
  1. package/esm/ace-editor-groovy/index.js +1 -1
  2. package/esm/ace-editor-groovy/index.js.map +1 -1
  3. package/esm/ace-editor-java/index.js +1 -1
  4. package/esm/ace-editor-java/index.js.map +1 -1
  5. package/esm/ace-editor-json/index.js +1 -1
  6. package/esm/ace-editor-json/index.js.map +1 -1
  7. package/esm/ace-editor-mysql/index.js +1 -1
  8. package/esm/ace-editor-mysql/index.js.map +1 -1
  9. package/esm/ace-editor-xml/index.js +1 -1
  10. package/esm/ace-editor-xml/index.js.map +1 -1
  11. package/esm/anchor-steps/index.js +1 -1
  12. package/esm/anchor-steps/index.js.map +1 -1
  13. package/esm/bootstrap/index.js +1 -1
  14. package/esm/bootstrap/index.js.map +1 -1
  15. package/esm/box-grid/index.js +1 -1
  16. package/esm/box-grid/index.js.map +1 -1
  17. package/esm/button-operate/index.js +1 -1
  18. package/esm/button-operate/index.js.map +1 -1
  19. package/esm/button-wrapper/index.js +1 -1
  20. package/esm/button-wrapper/index.js.map +1 -1
  21. package/esm/card-layout/index.js +1 -1
  22. package/esm/card-layout/index.js.map +1 -1
  23. package/esm/cascader-wrapper/index.js +1 -1
  24. package/esm/cascader-wrapper/index.js.map +1 -1
  25. package/esm/check-list/index.js +1 -1
  26. package/esm/check-list/index.js.map +1 -1
  27. package/esm/checkbox-wrapper/index.js +1 -1
  28. package/esm/checkbox-wrapper/index.js.map +1 -1
  29. package/esm/code-render/index.css +1 -0
  30. package/esm/code-render/index.js +5 -0
  31. package/esm/code-render/index.js.map +1 -0
  32. package/esm/color-picker-wrapper/index.css +1 -1
  33. package/esm/color-picker-wrapper/index.js +1 -1
  34. package/esm/color-picker-wrapper/index.js.map +1 -1
  35. package/esm/config-provider-wrapper/index.js +1 -1
  36. package/esm/copy-wrapper/index.js +1 -1
  37. package/esm/copy-wrapper/index.js.map +1 -1
  38. package/esm/date-picker-wrapper/index.js +1 -1
  39. package/esm/date-picker-wrapper/index.js.map +1 -1
  40. package/esm/date-range-picker-wrapper/index.js +1 -1
  41. package/esm/date-range-picker-wrapper/index.js.map +1 -1
  42. package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
  43. package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
  44. package/esm/delete-node/index.js +1 -1
  45. package/esm/delete-node/index.js.map +1 -1
  46. package/esm/dialog-alert/index.js +1 -1
  47. package/esm/dialog-confirm/index.js +1 -1
  48. package/esm/dialog-drag-modal/index.js +1 -1
  49. package/esm/dialog-drag-modal/index.js.map +1 -1
  50. package/esm/dialog-drawer/index.js +1 -1
  51. package/esm/dialog-drawer/index.js.map +1 -1
  52. package/esm/dialog-drawer-content/index.js +1 -1
  53. package/esm/dialog-drawer-content/index.js.map +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/drawer-wrapper/index.js.map +1 -1
  76. package/esm/dropdown-menu-wrapper/index.js +1 -1
  77. package/esm/dropdown-menu-wrapper/index.js.map +1 -1
  78. package/esm/easy-form/index.js +1 -1
  79. package/esm/easy-form/index.js.map +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/fba-app/index.js +1 -1
  93. package/esm/fba-app/index.js.map +1 -1
  94. package/esm/fba-hooks/index.js +1 -1
  95. package/esm/fba-hooks/index.js.map +1 -1
  96. package/esm/fba-utils/index.js +1 -1
  97. package/esm/fba-utils/index.js.map +1 -1
  98. package/esm/file-export/index.js +1 -1
  99. package/esm/file-export/index.js.map +1 -1
  100. package/esm/file-import/index.js +1 -1
  101. package/esm/file-import/index.js.map +1 -1
  102. package/esm/file-select/index.js +1 -1
  103. package/esm/file-select/index.js.map +1 -1
  104. package/esm/flex-layout/index.js +1 -1
  105. package/esm/flex-layout/index.js.map +1 -1
  106. package/esm/form-grid/index.js +1 -1
  107. package/esm/form-grid/index.js.map +1 -1
  108. package/esm/form-item-group/index.js +1 -1
  109. package/esm/form-item-group/index.js.map +1 -1
  110. package/esm/form-item-text/index.js +1 -1
  111. package/esm/form-item-text/index.js.map +1 -1
  112. package/esm/form-item-wrapper/index.js +1 -1
  113. package/esm/form-item-wrapper/index.js.map +1 -1
  114. package/esm/form-list-wrapper/index.js +1 -1
  115. package/esm/form-list-wrapper/index.js.map +1 -1
  116. package/esm/form-wrapper/index.js +1 -1
  117. package/esm/form-wrapper/index.js.map +1 -1
  118. package/esm/full-screen/index.js +1 -1
  119. package/esm/full-screen/index.js.map +1 -1
  120. package/esm/icon-wrapper/index.js +1 -1
  121. package/esm/icon-wrapper/index.js.map +1 -1
  122. package/esm/{index-83bede1b.js → index-853b36e6.js} +2 -2
  123. package/esm/{index-83bede1b.js.map → index-853b36e6.js.map} +1 -1
  124. package/esm/index.js +2 -1
  125. package/esm/input-search-wrapper/index.js +1 -1
  126. package/esm/input-search-wrapper/index.js.map +1 -1
  127. package/esm/input-text-area-wrapper/index.js +1 -1
  128. package/esm/input-text-area-wrapper/index.js.map +1 -1
  129. package/esm/input-wrapper/index.js +1 -1
  130. package/esm/input-wrapper/index.js.map +1 -1
  131. package/esm/json-editor/index.js +1 -1
  132. package/esm/json-editor/index.js.map +1 -1
  133. package/esm/label-value-layout/index.js +1 -1
  134. package/esm/label-value-layout/index.js.map +1 -1
  135. package/esm/label-value-render/index.js +1 -1
  136. package/esm/label-value-render/index.js.map +1 -1
  137. package/esm/local-loading/index.js +1 -1
  138. package/esm/local-loading/index.js.map +1 -1
  139. package/esm/mention-editor/index.js +1 -1
  140. package/esm/mention-editor/index.js.map +1 -1
  141. package/esm/mentions-wrapper/index.js +1 -1
  142. package/esm/mentions-wrapper/index.js.map +1 -1
  143. package/esm/modal-action/index.js +1 -1
  144. package/esm/modal-action/index.js.map +1 -1
  145. package/esm/modal-wrapper/index.js +1 -1
  146. package/esm/modal-wrapper/index.js.map +1 -1
  147. package/esm/number-range-form-item/index.js +1 -1
  148. package/esm/number-range-form-item/index.js.map +1 -1
  149. package/esm/pdf/index.js +1 -1
  150. package/esm/pdf/index.js.map +1 -1
  151. package/esm/pdf-preview/index.js +1 -1
  152. package/esm/pdf-preview/index.js.map +1 -1
  153. package/esm/radio-group-wrapper/index.js +1 -1
  154. package/esm/radio-group-wrapper/index.js.map +1 -1
  155. package/esm/relation-tree/index.js +1 -1
  156. package/esm/relation-tree/index.js.map +1 -1
  157. package/esm/request-status/index.js +1 -1
  158. package/esm/request-status/index.js.map +1 -1
  159. package/esm/resizable-drawer/index.js +1 -1
  160. package/esm/resizable-drawer/index.js.map +1 -1
  161. package/esm/rich-text-editor/index.js +1 -1
  162. package/esm/rich-text-editor/index.js.map +1 -1
  163. package/esm/rich-text-viewer/index.js +1 -1
  164. package/esm/rich-text-viewer/index.js.map +1 -1
  165. package/esm/roll-location-center/index.js +1 -1
  166. package/esm/roll-location-center/index.js.map +1 -1
  167. package/esm/roll-location-in-view/index.js +1 -1
  168. package/esm/roll-location-in-view/index.js.map +1 -1
  169. package/esm/rule-describe/index.js +1 -1
  170. package/esm/rule-describe/index.js.map +1 -1
  171. package/esm/search-form/index.js +1 -1
  172. package/esm/search-form/index.js.map +1 -1
  173. package/esm/search-menu/index.js +1 -1
  174. package/esm/search-menu/index.js.map +1 -1
  175. package/esm/selector-wrapper/index.js +1 -1
  176. package/esm/selector-wrapper/index.js.map +1 -1
  177. package/esm/selector-wrapper-search/index.js +1 -1
  178. package/esm/selector-wrapper-search/index.js.map +1 -1
  179. package/esm/selector-wrapper-simple/index.js +1 -1
  180. package/esm/selector-wrapper-simple/index.js.map +1 -1
  181. package/esm/simple-layout/index.js +1 -1
  182. package/esm/simple-layout/index.js.map +1 -1
  183. package/esm/sms-count-down/index.js +1 -1
  184. package/esm/sms-count-down/index.js.map +1 -1
  185. package/esm/split-wrapper/index.js +1 -1
  186. package/esm/split-wrapper/index.js.map +1 -1
  187. package/esm/styles/index.css +1 -1
  188. package/esm/svg-http-view/index.js +1 -1
  189. package/esm/svg-http-view/index.js.map +1 -1
  190. package/esm/switch-confirm-wrapper/index.js +1 -1
  191. package/esm/switch-confirm-wrapper/index.js.map +1 -1
  192. package/esm/switch-wrapper/index.js +1 -1
  193. package/esm/switch-wrapper/index.js.map +1 -1
  194. package/esm/table-cell-render/index.js +1 -1
  195. package/esm/table-cell-render/index.js.map +1 -1
  196. package/esm/table-scrollbar/index.js +1 -1
  197. package/esm/table-scrollbar/index.js.map +1 -1
  198. package/esm/tabs-sticky/index.js +1 -1
  199. package/esm/tabs-sticky/index.js.map +1 -1
  200. package/esm/tabs-wrapper/index.js +1 -1
  201. package/esm/tabs-wrapper/index.js.map +1 -1
  202. package/esm/tag-group/index.js +1 -1
  203. package/esm/tag-group/index.js.map +1 -1
  204. package/esm/tag-list-render/index.js +1 -1
  205. package/esm/tag-list-render/index.js.map +1 -1
  206. package/esm/tag-list-select/index.js +1 -1
  207. package/esm/tag-list-select/index.js.map +1 -1
  208. package/esm/tag-wrapper/index.js +1 -1
  209. package/esm/tag-wrapper/index.js.map +1 -1
  210. package/esm/text-css-ellipsis/index.js +1 -1
  211. package/esm/text-css-ellipsis/index.js.map +1 -1
  212. package/esm/text-overflow/index.js +1 -1
  213. package/esm/text-overflow/index.js.map +1 -1
  214. package/esm/text-overflow-render/index.js +1 -1
  215. package/esm/text-symbol-wrapper/index.js +1 -1
  216. package/esm/text-symbol-wrapper/index.js.map +1 -1
  217. package/esm/time-ea73b2fb.js +3 -0
  218. package/esm/{time-53b3f55f.js.map → time-ea73b2fb.js.map} +1 -1
  219. package/esm/time-picker-wrapper/index.js +1 -1
  220. package/esm/time-picker-wrapper/index.js.map +1 -1
  221. package/esm/time-range-picker-wrapper/index.js +1 -1
  222. package/esm/time-range-picker-wrapper/index.js.map +1 -1
  223. package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
  224. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  225. package/esm/tree-modal/index.js +1 -1
  226. package/esm/tree-modal/index.js.map +1 -1
  227. package/esm/tree-modal-selector/index.js +1 -1
  228. package/esm/tree-modal-selector/index.js.map +1 -1
  229. package/esm/tree-selector-wrapper/index.js +1 -1
  230. package/esm/tree-selector-wrapper/index.js.map +1 -1
  231. package/esm/tree-wrapper/index.js +1 -1
  232. package/esm/tree-wrapper/index.js.map +1 -1
  233. package/esm/upload-wrapper/index.js +1 -1
  234. package/esm/upload-wrapper/index.js.map +1 -1
  235. package/esm/use-responsive-point-1e6d93d9.js +3 -0
  236. package/esm/{use-responsive-point-21b8c601.js.map → use-responsive-point-1e6d93d9.js.map} +1 -1
  237. package/esm/x-mind-preview/index.js +1 -1
  238. package/esm/x-mind-preview/index.js.map +1 -1
  239. package/index.d.ts +43 -4
  240. package/package.json +4 -5
  241. package/esm/time-53b3f55f.js +0 -3
  242. package/esm/use-responsive-point-21b8c601.js +0 -3
@@ -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 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};
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,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"}
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,QAAA,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,EAoCR,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,IAAI,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,WAU7B"}
@@ -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-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";import"@dimjs/utils/cjs/uuid";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};
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-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";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","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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"}
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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"}
@@ -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{extend as r}from"@dimjs/utils/cjs/extend";import{valueIsEqual as s}from"@flatbiz/utils";import{Empty as e,Spin as t}from"antd";import{c as i}from"../index-636a568e.js";import{useMemo as o}from"react";import{TextOverflow as n}from"../text-overflow/index.js";import{jsxs as a,jsx as m}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/utils/cjs/class-names";import"ahooks";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var u=function u(p){var c=r({"request-success":"暂无数据","request-progress":"数据查询中","request-error":"数据查询异常","request-init":"暂无数据","no-dependencies-params":"未获取到必要的查询条件","request-search-keyword-empty":"请输入搜索关键字"},p.messageConfig);var d=o((function(){if(p.status&&s(p.status,["request-success","request-progress","request-error","no-dependencies-params","request-search-keyword-empty"])){return c[p.status]}return c["request-init"]}),[c,p.status]);var l=p.status==="request-error";return a(e,{image:e.PRESENTED_IMAGE_SIMPLE,description:m("div",{style:{width:"100%",overflow:"hidden"},children:m(n,{text:d})}),className:i("v-request-status"),children:[m(t,{spinning:p.loading||false}),l?p.errorButton:null]})};export{u as RequestStatus};
5
+ import{extend as r}from"@dimjs/utils/cjs/extend";import{valueIsEqual as s}from"@flatbiz/utils";import{Empty as e,Spin as t}from"antd";import{c as i}from"../index-636a568e.js";import{useMemo as o}from"react";import{TextOverflow as n}from"../text-overflow/index.js";import{jsxs as a,jsx as m}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-string";import"@dimjs/utils/cjs/class-names";import"ahooks";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";var u=function u(p){var c=r({"request-success":"暂无数据","request-progress":"数据查询中","request-error":"数据查询异常","request-init":"暂无数据","no-dependencies-params":"未获取到必要的查询条件","request-search-keyword-empty":"请输入搜索关键字"},p.messageConfig);var d=o(function(){if(p.status&&s(p.status,["request-success","request-progress","request-error","no-dependencies-params","request-search-keyword-empty"])){return c[p.status]}return c["request-init"]},[c,p.status]);var l=p.status==="request-error";return a(e,{image:e.PRESENTED_IMAGE_SIMPLE,description:m("div",{style:{width:"100%",overflow:"hidden"},children:m(n,{text:d})}),className:i("v-request-status"),children:[m(t,{spinning:p.loading||false}),l?p.errorButton:null]})};export{u as RequestStatus};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/request-status/request-status.tsx"],"sourcesContent":["import { extend } from '@dimjs/utils';\nimport { valueIsEqual } from '@flatbiz/utils';\nimport { Empty, Spin } from 'antd';\nimport classNames from 'classnames';\nimport { ReactElement, useMemo } from 'react';\nimport { TextOverflow } from '../text-overflow/text-overflow';\nimport './style.less';\n\nexport type TRequestStatus =\n | 'request-init'\n | 'request-progress'\n | 'request-success'\n | 'request-error'\n | 'request-search-keyword-empty'\n | 'no-dependencies-params';\nexport type TRequestStatusProps = {\n status?: TRequestStatus;\n errorButton?: ReactElement;\n messageConfig?: Partial<Record<TRequestStatus, string>>;\n loading?: boolean;\n};\nexport const RequestStatus = (props: TRequestStatusProps) => {\n const messageConfig = extend(\n {\n 'request-success': '暂无数据',\n 'request-progress': '数据查询中',\n 'request-error': '数据查询异常',\n 'request-init': '暂无数据',\n 'no-dependencies-params': '未获取到必要的查询条件',\n 'request-search-keyword-empty': '请输入搜索关键字',\n },\n props.messageConfig,\n );\n const description = useMemo(() => {\n if (\n props.status &&\n valueIsEqual(props.status, [\n 'request-success',\n 'request-progress',\n 'request-error',\n 'no-dependencies-params',\n 'request-search-keyword-empty',\n ])\n ) {\n return messageConfig[props.status];\n }\n return messageConfig['request-init'];\n }, [messageConfig, props.status]);\n\n const isError = props.status === 'request-error';\n return (\n <Empty\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n description={\n <div style={{ width: '100%', overflow: 'hidden' }}>\n <TextOverflow text={description} />\n </div>\n }\n className={classNames('v-request-status')}\n >\n <Spin spinning={props.loading || false}></Spin>\n {isError ? props.errorButton : null}\n </Empty>\n );\n};\n"],"names":["RequestStatus","props","messageConfig","_extend","description","useMemo","status","valueIsEqual","isError","_jsxs","Empty","image","PRESENTED_IMAGE_SIMPLE","_jsx","style","width","overflow","children","TextOverflow","text","className","classNames","Spin","spinning","loading","errorButton"],"mappings":";4mBAqBaA,EAAgB,SAAhBA,EAAiBC,GAC5B,IAAMC,EAAgBC,EACpB,CACE,kBAAmB,OACnB,mBAAoB,QACpB,gBAAiB,SACjB,eAAgB,OAChB,yBAA0B,cAC1B,+BAAgC,YAElCF,EAAMC,eAER,IAAME,EAAcC,GAAQ,WAC1B,GACEJ,EAAMK,QACNC,EAAaN,EAAMK,OAAQ,CACzB,kBACA,mBACA,gBACA,yBACA,iCAEF,CACA,OAAOJ,EAAcD,EAAMK,OAC7B,CACA,OAAOJ,EAAc,eACtB,GAAE,CAACA,EAAeD,EAAMK,SAEzB,IAAME,EAAUP,EAAMK,SAAW,gBACjC,OACEG,EAACC,EAAK,CACJC,MAAOD,EAAME,uBACbR,YACES,EAAA,MAAA,CAAKC,MAAO,CAAEC,MAAO,OAAQC,SAAU,UAAWC,SAChDJ,EAACK,EAAY,CAACC,KAAMf,MAGxBgB,UAAWC,EAAW,oBAAoBJ,SAAA,CAE1CJ,EAACS,EAAI,CAACC,SAAUtB,EAAMuB,SAAW,QAChChB,EAAUP,EAAMwB,YAAc,OAGrC"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/request-status/request-status.tsx"],"sourcesContent":["import { extend } from '@dimjs/utils';\nimport { valueIsEqual } from '@flatbiz/utils';\nimport { Empty, Spin } from 'antd';\nimport classNames from 'classnames';\nimport { ReactElement, useMemo } from 'react';\nimport { TextOverflow } from '../text-overflow/text-overflow';\nimport './style.less';\n\nexport type TRequestStatus =\n | 'request-init'\n | 'request-progress'\n | 'request-success'\n | 'request-error'\n | 'request-search-keyword-empty'\n | 'no-dependencies-params';\nexport type TRequestStatusProps = {\n status?: TRequestStatus;\n errorButton?: ReactElement;\n messageConfig?: Partial<Record<TRequestStatus, string>>;\n loading?: boolean;\n};\nexport const RequestStatus = (props: TRequestStatusProps) => {\n const messageConfig = extend(\n {\n 'request-success': '暂无数据',\n 'request-progress': '数据查询中',\n 'request-error': '数据查询异常',\n 'request-init': '暂无数据',\n 'no-dependencies-params': '未获取到必要的查询条件',\n 'request-search-keyword-empty': '请输入搜索关键字',\n },\n props.messageConfig,\n );\n const description = useMemo(() => {\n if (\n props.status &&\n valueIsEqual(props.status, [\n 'request-success',\n 'request-progress',\n 'request-error',\n 'no-dependencies-params',\n 'request-search-keyword-empty',\n ])\n ) {\n return messageConfig[props.status];\n }\n return messageConfig['request-init'];\n }, [messageConfig, props.status]);\n\n const isError = props.status === 'request-error';\n return (\n <Empty\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n description={\n <div style={{ width: '100%', overflow: 'hidden' }}>\n <TextOverflow text={description} />\n </div>\n }\n className={classNames('v-request-status')}\n >\n <Spin spinning={props.loading || false}></Spin>\n {isError ? props.errorButton : null}\n </Empty>\n );\n};\n"],"names":["RequestStatus","props","messageConfig","_extend","description","useMemo","status","valueIsEqual","isError","_jsxs","Empty","image","PRESENTED_IMAGE_SIMPLE","_jsx","style","width","overflow","children","TextOverflow","text","className","classNames","Spin","spinning","loading","errorButton"],"mappings":";4mBAqBaA,EAAgB,SAAhBA,EAAiBC,GAC5B,IAAMC,EAAgBC,EACpB,CACE,kBAAmB,OACnB,mBAAoB,QACpB,gBAAiB,SACjB,eAAgB,OAChB,yBAA0B,cAC1B,+BAAgC,YAElCF,EAAMC,eAER,IAAME,EAAcC,EAAQ,WAC1B,GACEJ,EAAMK,QACNC,EAAaN,EAAMK,OAAQ,CACzB,kBACA,mBACA,gBACA,yBACA,iCAEF,CACA,OAAOJ,EAAcD,EAAMK,OAC7B,CACA,OAAOJ,EAAc,eACtB,EAAE,CAACA,EAAeD,EAAMK,SAEzB,IAAME,EAAUP,EAAMK,SAAW,gBACjC,OACEG,EAACC,EAAK,CACJC,MAAOD,EAAME,uBACbR,YACES,EAAA,MAAA,CAAKC,MAAO,CAAEC,MAAO,OAAQC,SAAU,UAAWC,SAChDJ,EAACK,EAAY,CAACC,KAAMf,MAGxBgB,UAAWC,EAAW,oBAAoBJ,SAAA,CAE1CJ,EAACS,EAAI,CAACC,SAAUtB,EAAMuB,SAAW,QAChChB,EAAUP,EAAMwB,YAAc,OAGrC"}
@@ -6,5 +6,5 @@ import './../types/index.css';
6
6
  import './../fba-utils/index.css';
7
7
  import './index.css';
8
8
  /*! @flatjs/forge MIT @flatbiz/antd */
9
- import e from"@ant-design/icons/es/icons/CloseOutlined";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPromise as i}from"@dimjs/lang/cjs/is-promise";import{hooks as t}from"@wove/react/cjs/hooks";import{Button as o,Space as a}from"antd";import{c as s}from"../index-636a568e.js";import{forwardRef as n,useState as l,useMemo as d}from"react";import{createPortal as c}from"react-dom";import{Resizable as m}from"react-resizable";import{ButtonWrapper as p}from"../button-wrapper/index.js";import{jsx as u,jsxs as f}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/utils/cjs/class-names";import"@flatbiz/utils";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/model";var v=n((function(e,i){return u("div",r({ref:i},e,{className:"resize-border"}))}));var y=10;var h=function e(){y++;return y};var j=function n(y){var j=y.open,b=y.onClose,w=y.title,z=w===void 0?"抽屉标题":w,x=y.width,g=x===void 0?600:x,k=y.children,N=y.footer,C=y.maskClosable,P=C===void 0?true:C,E=y.className,R=y.style,S=y.mask,O=S===void 0?true:S,_=y.styles,F=y.headerExtraRender,I=y.zIndex,q=y.onOk,A=y.okText,H=y.cancelText,T=y.hidenFooter;var X=l(g),Y=X[0],B=X[1];var D=function e(r,i){var t=i.size;B(t.width)};var L=function e(r){r.stopPropagation();if(P){b()}};var U=typeof Y==="number"?Y+"px":Y;var G=j?{transform:"translateX(0)",opacity:1}:{transform:"translateX(100%)",opacity:0};var J=j?1:0;var K=d((function(){return I?I:10+h()}),[I]);var M=t.useCallbackRef((function(e){if(q){var r=q(e);if(r&&i(r)){return r.then(b)}}return b()}));return c(f("div",{className:s("drawer-resizable",{"drawer-resizable-visible":j},E),style:!O?{width:U,zIndex:K}:{left:0,zIndex:K},children:[O?u("div",{className:"drawer-resizable-mask",style:{opacity:J},onClick:L}):null,f("div",{className:"drawer-resizable-content",style:r({width:U},G,R),children:[f("div",{className:"drawer-resizable-header",style:_==null?void 0:_.header,children:[f("div",{className:"drawer-resizable-title",children:[u(o,{type:"text",className:"drawer-resizable-title-close",icon:u(e,{}),onClick:function e(r){r.stopPropagation();b()}}),u("div",{className:"",children:z})]}),F?u("div",{className:"drawer-resizable-title-extra",children:F}):null]}),u("div",{className:"drawer-resizable-body",style:_==null?void 0:_.body,children:u(m,{onResize:D,width:Y,handle:u(v,{}),axis:"x",resizeHandles:["w"],minConstraints:[400,0],maxConstraints:[1200,0],style:{height:"100%"},onResizeStop:function e(r){r.stopPropagation();var i=document.querySelectorAll("iframe");i.forEach((function(e){e.style.pointerEvents=""}))},onResizeStart:function e(r){r.stopPropagation();var i=document.querySelectorAll("iframe");i.forEach((function(e){e.style.pointerEvents="none"}))},children:k})}),T?null:N?u("div",{className:"drawer-footer",style:_==null?void 0:_.footer,children:N}):u("div",{className:"drawer-footer",style:_==null?void 0:_.footer,children:f(a,{children:[u(p,{onClick:b,children:H||"取消"}),u(p,{onClick:M,type:"primary",loadingPosition:"center",children:A||"确定"})]})})]})]}),document.body)};export{j as ResizableDrawer};
9
+ import e from"@ant-design/icons/es/icons/CloseOutlined";import{_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPromise as i}from"@dimjs/lang/cjs/is-promise";import{hooks as t}from"@wove/react/cjs/hooks";import{Button as o,Space as a}from"antd";import{c as s}from"../index-636a568e.js";import{forwardRef as n,useState as l,useMemo as d}from"react";import{createPortal as c}from"react-dom";import{Resizable as m}from"react-resizable";import{ButtonWrapper as p}from"../button-wrapper/index.js";import{jsx as u,jsxs as f}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/utils/cjs/class-names";import"@flatbiz/utils";import"../index-853b36e6.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";import"@dimjs/model";var v=n(function(e,i){return u("div",r({ref:i},e,{className:"resize-border"}))});var y=10;var h=function e(){y++;return y};var j=function n(y){var j=y.open,b=y.onClose,w=y.title,z=w===void 0?"抽屉标题":w,x=y.width,g=x===void 0?600:x,k=y.children,N=y.footer,C=y.maskClosable,P=C===void 0?true:C,E=y.className,R=y.style,S=y.mask,O=S===void 0?true:S,_=y.styles,F=y.headerExtraRender,I=y.zIndex,q=y.onOk,A=y.okText,H=y.cancelText,T=y.hidenFooter;var X=l(g),Y=X[0],B=X[1];var D=function e(r,i){var t=i.size;B(t.width)};var L=function e(r){r.stopPropagation();if(P){b()}};var U=typeof Y==="number"?Y+"px":Y;var G=j?{transform:"translateX(0)",opacity:1}:{transform:"translateX(100%)",opacity:0};var J=j?1:0;var K=d(function(){return I?I:10+h()},[I]);var M=t.useCallbackRef(function(e){if(q){var r=q(e);if(r&&i(r)){return r.then(b)}}return b()});return c(f("div",{className:s("drawer-resizable",{"drawer-resizable-visible":j},E),style:!O?{width:U,zIndex:K}:{left:0,zIndex:K},children:[O?u("div",{className:"drawer-resizable-mask",style:{opacity:J},onClick:L}):null,f("div",{className:"drawer-resizable-content",style:r({width:U},G,R),children:[f("div",{className:"drawer-resizable-header",style:_==null?void 0:_.header,children:[f("div",{className:"drawer-resizable-title",children:[u(o,{type:"text",className:"drawer-resizable-title-close",icon:u(e,{}),onClick:function e(r){r.stopPropagation();b()}}),u("div",{className:"",children:z})]}),F?u("div",{className:"drawer-resizable-title-extra",children:F}):null]}),u("div",{className:"drawer-resizable-body",style:_==null?void 0:_.body,children:u(m,{onResize:D,width:Y,handle:u(v,{}),axis:"x",resizeHandles:["w"],minConstraints:[400,0],maxConstraints:[1200,0],style:{height:"100%"},onResizeStop:function e(r){r.stopPropagation();var i=document.querySelectorAll("iframe");i.forEach(function(e){e.style.pointerEvents=""})},onResizeStart:function e(r){r.stopPropagation();var i=document.querySelectorAll("iframe");i.forEach(function(e){e.style.pointerEvents="none"})},children:k})}),T?null:N?u("div",{className:"drawer-footer",style:_==null?void 0:_.footer,children:N}):u("div",{className:"drawer-footer",style:_==null?void 0:_.footer,children:f(a,{children:[u(p,{onClick:b,children:H||"取消"}),u(p,{onClick:M,type:"primary",loadingPosition:"center",children:A||"确定"})]})})]})]}),document.body)};export{j as ResizableDrawer};
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/resizable-drawer/resize-handle/index.tsx","@flatbiz/antd/src/resizable-drawer/utils.ts","@flatbiz/antd/src/resizable-drawer/drawer.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport './style.less';\nexport const ResizeHandle = forwardRef<HTMLDivElement>((props, ref) => {\n return <div ref={ref} {...props} className=\"resize-border\" />;\n});\n","let zIndex = 10;\n\nexport const getZindex = () => {\n zIndex++;\n return zIndex;\n};\n","import { CloseOutlined } from '@ant-design/icons';\nimport { isPromise } from '@dimjs/lang';\nimport { hooks } from '@wove/react';\nimport { Button, Space } from 'antd';\nimport classNames from 'classnames';\nimport React, { useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Resizable } from 'react-resizable';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { ResizeHandle } from './resize-handle';\nimport './style.less';\nimport { getZindex } from './utils';\n\ntype ResizableDrawerProps = {\n open?: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n width?: number | string;\n children?: React.ReactNode;\n footer?: React.ReactNode | null;\n hidenFooter?: boolean;\n maskClosable?: boolean;\n mask?: boolean;\n className?: string;\n style?: React.CSSProperties;\n styles?: {\n header?: CSSProperties;\n body?: CSSProperties;\n footer?: CSSProperties;\n };\n headerExtraRender?: ReactElement;\n zIndex?: number;\n cancelText?: string;\n okText?: string;\n onOk?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n};\n\nexport const ResizableDrawer: React.FC<ResizableDrawerProps> = ({\n open,\n onClose,\n title = '抽屉标题',\n width: initialWidth = 600,\n children,\n footer,\n maskClosable = true,\n className,\n style,\n mask = true,\n styles,\n headerExtraRender,\n zIndex,\n onOk,\n okText,\n cancelText,\n hidenFooter,\n}) => {\n const [width, setWidth] = useState(initialWidth);\n\n const onResize = (_, data) => {\n const { size } = data;\n setWidth(size.width);\n };\n // 遮罩层点击\n const handleMaskClick = (e: React.MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n if (maskClosable) {\n onClose();\n }\n };\n\n // 计算宽度样式\n const widthStyle = typeof width === 'number' ? `${width}px` : width;\n\n const drawerStyle = open\n ? {\n transform: 'translateX(0)',\n opacity: 1,\n }\n : {\n transform: 'translateX(100%)',\n opacity: 0,\n };\n\n const maskOpacity = open ? 1 : 0;\n\n const zIndexInner = useMemo(() => {\n return zIndex ? zIndex : 10 + getZindex();\n }, [zIndex]);\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n return createPortal(\n <div\n className={classNames('drawer-resizable', { 'drawer-resizable-visible': open }, className)}\n style={!mask ? { width: widthStyle, zIndex: zIndexInner } : { left: 0, zIndex: zIndexInner }}\n >\n {mask ? (\n <div className=\"drawer-resizable-mask\" style={{ opacity: maskOpacity }} onClick={handleMaskClick} />\n ) : null}\n\n <div\n className=\"drawer-resizable-content\"\n style={{\n width: widthStyle,\n ...drawerStyle,\n ...style,\n }}\n >\n {/* 头部 */}\n <div className=\"drawer-resizable-header\" style={styles?.header}>\n <div className=\"drawer-resizable-title\">\n <Button\n type=\"text\"\n className=\"drawer-resizable-title-close\"\n icon={<CloseOutlined />}\n onClick={(event) => {\n event.stopPropagation();\n onClose();\n }}\n ></Button>\n <div className=\"\">{title}</div>\n </div>\n {headerExtraRender ? <div className=\"drawer-resizable-title-extra\">{headerExtraRender}</div> : null}\n </div>\n\n {/* 内容区域 */}\n <div className=\"drawer-resizable-body\" style={styles?.body}>\n <Resizable\n onResize={onResize}\n width={width}\n handle={<ResizeHandle />}\n axis=\"x\"\n resizeHandles={['w']}\n minConstraints={[400, 0]}\n maxConstraints={[1200, 0]}\n style={{ height: '100%' }}\n onResizeStop={(e) => {\n e.stopPropagation();\n const iframeList = document.querySelectorAll('iframe');\n iframeList.forEach((item) => {\n item.style.pointerEvents = '';\n });\n }}\n onResizeStart={(e) => {\n e.stopPropagation();\n const iframeList = document.querySelectorAll('iframe');\n iframeList.forEach((item) => {\n item.style.pointerEvents = 'none';\n });\n }}\n >\n {children}\n </Resizable>\n </div>\n {/* 底部 */}\n {hidenFooter ? null : footer ? (\n <div className=\"drawer-footer\" style={styles?.footer}>\n {footer}\n </div>\n ) : (\n <div className=\"drawer-footer\" style={styles?.footer}>\n <Space>\n <ButtonWrapper onClick={onClose}>{cancelText || '取消'}</ButtonWrapper>\n <ButtonWrapper onClick={onOkHandle} type=\"primary\" loadingPosition=\"center\">\n {okText || '确定'}\n </ButtonWrapper>\n </Space>\n </div>\n )}\n </div>\n </div>,\n document.body,\n );\n};\n"],"names":["ResizeHandle","forwardRef","props","ref","_jsx","_extends","className","zIndex","getZindex","ResizableDrawer","_ref","open","onClose","_ref$title","title","_ref$width","width","initialWidth","children","footer","_ref$maskClosable","maskClosable","style","_ref$mask","mask","styles","headerExtraRender","onOk","okText","cancelText","hidenFooter","_useState","useState","setWidth","onResize","_","data","size","handleMaskClick","e","stopPropagation","widthStyle","drawerStyle","transform","opacity","maskOpacity","zIndexInner","useMemo","onOkHandle","_hooks","useCallbackRef","response","_isPromise","then","createPortal","_jsxs","classNames","left","onClick","header","Button","type","icon","_CloseOutlined","event","body","Resizable","handle","axis","resizeHandles","minConstraints","maxConstraints","height","onResizeStop","iframeList","document","querySelectorAll","forEach","item","pointerEvents","onResizeStart","Space","ButtonWrapper","loadingPosition"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/resizable-drawer/resize-handle/index.tsx","@flatbiz/antd/src/resizable-drawer/utils.ts","@flatbiz/antd/src/resizable-drawer/drawer.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport './style.less';\nexport const ResizeHandle = forwardRef<HTMLDivElement>((props, ref) => {\n return <div ref={ref} {...props} className=\"resize-border\" />;\n});\n","let zIndex = 10;\n\nexport const getZindex = () => {\n zIndex++;\n return zIndex;\n};\n","import { CloseOutlined } from '@ant-design/icons';\nimport { isPromise } from '@dimjs/lang';\nimport { hooks } from '@wove/react';\nimport { Button, Space } from 'antd';\nimport classNames from 'classnames';\nimport React, { useMemo, useState, type CSSProperties, type ReactElement } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Resizable } from 'react-resizable';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { ResizeHandle } from './resize-handle';\nimport './style.less';\nimport { getZindex } from './utils';\n\ntype ResizableDrawerProps = {\n open?: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n width?: number | string;\n children?: React.ReactNode;\n footer?: React.ReactNode | null;\n hidenFooter?: boolean;\n maskClosable?: boolean;\n mask?: boolean;\n className?: string;\n style?: React.CSSProperties;\n styles?: {\n header?: CSSProperties;\n body?: CSSProperties;\n footer?: CSSProperties;\n };\n headerExtraRender?: ReactElement;\n zIndex?: number;\n cancelText?: string;\n okText?: string;\n onOk?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n};\n\nexport const ResizableDrawer: React.FC<ResizableDrawerProps> = ({\n open,\n onClose,\n title = '抽屉标题',\n width: initialWidth = 600,\n children,\n footer,\n maskClosable = true,\n className,\n style,\n mask = true,\n styles,\n headerExtraRender,\n zIndex,\n onOk,\n okText,\n cancelText,\n hidenFooter,\n}) => {\n const [width, setWidth] = useState(initialWidth);\n\n const onResize = (_, data) => {\n const { size } = data;\n setWidth(size.width);\n };\n // 遮罩层点击\n const handleMaskClick = (e: React.MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n if (maskClosable) {\n onClose();\n }\n };\n\n // 计算宽度样式\n const widthStyle = typeof width === 'number' ? `${width}px` : width;\n\n const drawerStyle = open\n ? {\n transform: 'translateX(0)',\n opacity: 1,\n }\n : {\n transform: 'translateX(100%)',\n opacity: 0,\n };\n\n const maskOpacity = open ? 1 : 0;\n\n const zIndexInner = useMemo(() => {\n return zIndex ? zIndex : 10 + getZindex();\n }, [zIndex]);\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n return createPortal(\n <div\n className={classNames('drawer-resizable', { 'drawer-resizable-visible': open }, className)}\n style={!mask ? { width: widthStyle, zIndex: zIndexInner } : { left: 0, zIndex: zIndexInner }}\n >\n {mask ? (\n <div className=\"drawer-resizable-mask\" style={{ opacity: maskOpacity }} onClick={handleMaskClick} />\n ) : null}\n\n <div\n className=\"drawer-resizable-content\"\n style={{\n width: widthStyle,\n ...drawerStyle,\n ...style,\n }}\n >\n {/* 头部 */}\n <div className=\"drawer-resizable-header\" style={styles?.header}>\n <div className=\"drawer-resizable-title\">\n <Button\n type=\"text\"\n className=\"drawer-resizable-title-close\"\n icon={<CloseOutlined />}\n onClick={(event) => {\n event.stopPropagation();\n onClose();\n }}\n ></Button>\n <div className=\"\">{title}</div>\n </div>\n {headerExtraRender ? <div className=\"drawer-resizable-title-extra\">{headerExtraRender}</div> : null}\n </div>\n\n {/* 内容区域 */}\n <div className=\"drawer-resizable-body\" style={styles?.body}>\n <Resizable\n onResize={onResize}\n width={width}\n handle={<ResizeHandle />}\n axis=\"x\"\n resizeHandles={['w']}\n minConstraints={[400, 0]}\n maxConstraints={[1200, 0]}\n style={{ height: '100%' }}\n onResizeStop={(e) => {\n e.stopPropagation();\n const iframeList = document.querySelectorAll('iframe');\n iframeList.forEach((item) => {\n item.style.pointerEvents = '';\n });\n }}\n onResizeStart={(e) => {\n e.stopPropagation();\n const iframeList = document.querySelectorAll('iframe');\n iframeList.forEach((item) => {\n item.style.pointerEvents = 'none';\n });\n }}\n >\n {children}\n </Resizable>\n </div>\n {/* 底部 */}\n {hidenFooter ? null : footer ? (\n <div className=\"drawer-footer\" style={styles?.footer}>\n {footer}\n </div>\n ) : (\n <div className=\"drawer-footer\" style={styles?.footer}>\n <Space>\n <ButtonWrapper onClick={onClose}>{cancelText || '取消'}</ButtonWrapper>\n <ButtonWrapper onClick={onOkHandle} type=\"primary\" loadingPosition=\"center\">\n {okText || '确定'}\n </ButtonWrapper>\n </Space>\n </div>\n )}\n </div>\n </div>,\n document.body,\n );\n};\n"],"names":["ResizeHandle","forwardRef","props","ref","_jsx","_extends","className","zIndex","getZindex","ResizableDrawer","_ref","open","onClose","_ref$title","title","_ref$width","width","initialWidth","children","footer","_ref$maskClosable","maskClosable","style","_ref$mask","mask","styles","headerExtraRender","onOk","okText","cancelText","hidenFooter","_useState","useState","setWidth","onResize","_","data","size","handleMaskClick","e","stopPropagation","widthStyle","drawerStyle","transform","opacity","maskOpacity","zIndexInner","useMemo","onOkHandle","_hooks","useCallbackRef","response","_isPromise","then","createPortal","_jsxs","classNames","left","onClick","header","Button","type","icon","_CloseOutlined","event","body","Resizable","handle","axis","resizeHandles","minConstraints","maxConstraints","height","onResizeStop","iframeList","document","querySelectorAll","forEach","item","pointerEvents","onResizeStart","Space","ButtonWrapper","loadingPosition"],"mappings":";8uCAEO,IAAMA,EAAeC,EAA2B,SAACC,EAAOC,GAC7D,OAAOC,QAAAC,EAAA,CAAKF,IAAKA,GAASD,EAAK,CAAEI,UAAU,kBAC7C,GCJA,IAAIC,EAAS,GAEN,IAAMC,EAAY,SAAZA,IACXD,IACA,OAAOA,CACT,MCgCaE,EAAkD,SAAlDA,EAA+CC,GAkBtD,IAjBJC,EAAID,EAAJC,KACAC,EAAOF,EAAPE,QAAOC,EAAAH,EACPI,MAAAA,EAAKD,SAAG,EAAA,OAAMA,EAAAE,EAAAL,EACdM,MAAOC,EAAYF,SAAG,EAAA,IAAGA,EACzBG,EAAQR,EAARQ,SACAC,EAAMT,EAANS,OAAMC,EAAAV,EACNW,aAAAA,EAAYD,SAAG,EAAA,KAAIA,EACnBd,EAASI,EAATJ,UACAgB,EAAKZ,EAALY,MAAKC,EAAAb,EACLc,KAAAA,EAAID,SAAG,EAAA,KAAIA,EACXE,EAAMf,EAANe,OACAC,EAAiBhB,EAAjBgB,kBACAnB,EAAMG,EAANH,OACAoB,EAAIjB,EAAJiB,KACAC,EAAMlB,EAANkB,OACAC,EAAUnB,EAAVmB,WACAC,EAAWpB,EAAXoB,YAEA,IAAAC,EAA0BC,EAASf,GAA5BD,EAAKe,EAAA,GAAEE,EAAQF,EAAA,GAEtB,IAAMG,EAAW,SAAXA,EAAYC,EAAGC,GACnB,IAAQC,EAASD,EAATC,KACRJ,EAASI,EAAKrB,QAGhB,IAAMsB,EAAkB,SAAlBA,EAAmBC,GACvBA,EAAEC,kBACF,GAAInB,EAAc,CAChBT,GACF,GAIF,IAAM6B,SAAoBzB,IAAU,SAAcA,EAAK,KAAOA,EAE9D,IAAM0B,EAAc/B,EAChB,CACEgC,UAAW,gBACXC,QAAS,GAEX,CACED,UAAW,mBACXC,QAAS,GAGf,IAAMC,EAAclC,EAAO,EAAI,EAE/B,IAAMmC,EAAcC,EAAQ,WAC1B,OAAOxC,EAASA,EAAS,GAAKC,GAChC,EAAG,CAACD,IAEJ,IAAMyC,EAAaC,EAAMC,eAAe,SAACX,GACvC,GAAIZ,EAAM,CACR,IAAMwB,EAAWxB,EAAKY,GACtB,GAAIY,GAAYC,EAAUD,GAAW,CACnC,OAAOA,EAASE,KAAKzC,EACvB,CACF,CACA,OAAOA,GACT,GAEA,OAAO0C,EACLC,EAAA,MAAA,CACEjD,UAAWkD,EAAW,mBAAoB,CAAE,2BAA4B7C,GAAQL,GAChFgB,OAAQE,EAAO,CAAER,MAAOyB,EAAYlC,OAAQuC,GAAgB,CAAEW,KAAM,EAAGlD,OAAQuC,GAAc5B,SAAA,CAE5FM,EACCpB,EAAA,MAAA,CAAKE,UAAU,wBAAwBgB,MAAO,CAAEsB,QAASC,GAAea,QAASpB,IAC/E,KAEJiB,EAAA,MAAA,CACEjD,UAAU,2BACVgB,MAAKjB,EAAA,CACHW,MAAOyB,GACJC,EACApB,GACHJ,UAGFqC,EAAA,MAAA,CAAKjD,UAAU,0BAA0BgB,MAAOG,GAAAA,UAAAA,EAAAA,EAAQkC,OAAOzC,UAC7DqC,EAAA,MAAA,CAAKjD,UAAU,yBAAwBY,SAAA,CACrCd,EAACwD,EAAM,CACLC,KAAK,OACLvD,UAAU,+BACVwD,KAAM1D,EAAA2D,MACNL,QAAS,SAATA,EAAUM,GACRA,EAAMxB,kBACN5B,GACF,IAEFR,EAAA,MAAA,CAAKE,UAAU,GAAEY,SAAEJ,OAEpBY,EAAoBtB,EAAA,MAAA,CAAKE,UAAU,+BAA8BY,SAAEQ,IAA2B,QAIjGtB,EAAA,MAAA,CAAKE,UAAU,wBAAwBgB,MAAOG,GAAAA,UAAAA,EAAAA,EAAQwC,KAAK/C,SACzDd,EAAC8D,EAAS,CACRhC,SAAUA,EACVlB,MAAOA,EACPmD,OAAQ/D,EAACJ,MACToE,KAAK,IACLC,cAAe,CAAC,KAChBC,eAAgB,CAAC,IAAK,GACtBC,eAAgB,CAAC,KAAM,GACvBjD,MAAO,CAAEkD,OAAQ,QACjBC,aAAc,SAAdA,EAAelC,GACbA,EAAEC,kBACF,IAAMkC,EAAaC,SAASC,iBAAiB,UAC7CF,EAAWG,QAAQ,SAACC,GAClBA,EAAKxD,MAAMyD,cAAgB,EAC7B,EACA,EACFC,cAAe,SAAfA,EAAgBzC,GACdA,EAAEC,kBACF,IAAMkC,EAAaC,SAASC,iBAAiB,UAC7CF,EAAWG,QAAQ,SAACC,GAClBA,EAAKxD,MAAMyD,cAAgB,MAC7B,EACA,EAAA7D,SAEDA,MAIJY,EAAc,KAAOX,EACpBf,EAAA,MAAA,CAAKE,UAAU,gBAAgBgB,MAAOG,GAAAA,UAAAA,EAAAA,EAAQN,OAAOD,SAClDC,IAGHf,EAAA,MAAA,CAAKE,UAAU,gBAAgBgB,MAAOG,GAAAA,UAAAA,EAAAA,EAAQN,OAAOD,SACnDqC,EAAC0B,EAAK,CAAA/D,SAAA,CACJd,EAAC8E,EAAa,CAACxB,QAAS9C,EAAQM,SAAEW,GAAc,OAChDzB,EAAC8E,EAAa,CAACxB,QAASV,EAAYa,KAAK,UAAUsB,gBAAgB,SAAQjE,SACxEU,GAAU,kBAOvB+C,SAASV,KAEb"}
@@ -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-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 d from"@ant-design/icons/es/icons/PlusCircleOutlined";import{dynamicNode as p}from"../dynamic-node/index.js";import{fbaHooks as f}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";import"@dimjs/utils/cjs/uuid";var y=function e(n){var t=n.visible,r=n.url;f.useEffectCustom((function(){if(t){p.append({content:v(d,{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 d,p,f,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||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 |"+(((f=c.init)==null?void 0:f.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 d from"@ant-design/icons/es/icons/PlusCircleOutlined";import{dynamicNode as p}from"../dynamic-node/index.js";import{fbaHooks as f}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-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";var y=function e(n){var t=n.visible,r=n.url;f.useEffectCustom(function(){if(t){p.append({content:v(d,{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 d,p,f,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||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 |"+(((f=c.init)==null?void 0:f.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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-editor/preview/preview.tsx","@flatbiz/antd/src/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { PlusCircleOutlined } from '@ant-design/icons';\nimport { Image } from 'antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\nimport { fbaHooks } from '../../fba-hooks';\nimport './preview.less';\n\nexport const Preview = (props) => {\n const { visible, url } = props;\n\n fbaHooks.useEffectCustom(() => {\n if (visible) {\n dynamicNode.append({\n content: (\n <PlusCircleOutlined\n onClick={props.close}\n className=\"preview-image-popup-close\"\n twoToneColor=\"#1890ff\"\n />\n ),\n });\n } else {\n dynamicNode.remove();\n }\n }, [visible]);\n\n if (!url) return <></>;\n\n return (\n <Fragment>\n <Image\n key={url}\n style={{ left: '100px' }}\n preview={{\n className: 'preview-image-popup',\n maskStyle: { backgroundColor: 'rgba(0,0,0,0.85)' },\n visible,\n src: url,\n onVisibleChange: () => {\n props.close();\n },\n }}\n />\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { getStrByteLen, type TAny } from '@flatbiz/utils';\nimport { Editor, type IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { message } from 'antd';\nimport { useRef, useState } from 'react';\nimport { type Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange' | 'init'> {\n /** 设置高度,默认:500 */\n height?: number;\n onChange?: (data?: string) => void;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n /** 图片点击预览 */\n imgPreview?: boolean;\n init?: IAllProps['init'] & {\n /**\n * 通过粘贴图片创建的img标签,显示压缩比例,此处min、max是和指图片宽度\n * ```\n * 1. 默认值:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\n img_ratio?: { min: number; max?: number; ratio: number }[];\n /**\n * 粘贴文本大小限制\n * ```\n * 1. limit 限制大小,单位KB,例如限制2M,值为2*1024\n * 2. 限制提示文案\n * ```\n */\n paste_text_limit?: {\n limit: number;\n message: string;\n };\n /** 插件添加;自定义plugins后失效 */\n plugins_append?: string;\n /** 工具栏添加;自定义toolbar后失效 */\n toolbar_append?: string;\n };\n /** 点击全屏按钮回调 */\n onFullScreenChange?: (state?: boolean) => void;\n className?: string;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce https://www.tiny.cloud/docs/tinymce/6\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 获取富文本实例,通过onInit(_, editor)函数获取\n * 3. 预览富文本数据,使用 RichTextViewer 组件\n * 4. 添加其他插件使用方式,配置 init.plugins_append、init.toolbar_append\n * <RichTextEditor init={{ plugins_append: 'codesample', toolbar_append: 'codesample' }} />\n * 5. 可通过设置 init.plugins、init.toolbar 完全自定义插件、工具栏\n * 6. 其他插件\n * emoticons 表情插件\n * 7. 可通过设置 init.img_ratio 设置通过粘贴上传的图片压缩显示比例\n * 默认比例:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, height, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\n const imgRatio = props.init?.img_ratio || [\n { min: 0, max: 1000, ratio: 0.5 },\n { min: 1000, ratio: 0.3 },\n ];\n\n // const varStyleString = useMemo(() => {\n // const merge = { ...defaultVarStyle, ...props.varStyle };\n // let varStyleString = '';\n // Object.keys(merge).map((key) => {\n // varStyleString += `${key}:${merge[key]};`;\n // });\n // return varStyleString;\n // }, [props.varStyle]);\n\n useKeyPress(\n () => true,\n (event) => {\n try {\n if (event.type === 'keyup' && event.key === 'Escape') {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n },\n {\n events: ['keydown', 'keyup'],\n },\n );\n\n const onKeyDown = hooks.useCallbackRef((event, editor: TinyMCEEditor) => {\n try {\n if (event.keyCode == 27) {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n props.onKeyDown?.(event, editor);\n });\n\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n editor.on('FullscreenStateChanged', (e) => {\n props.onFullScreenChange?.(e.state);\n });\n try {\n editor.iframeElement?.contentDocument?.addEventListener(\n 'click',\n (event) => {\n if (props.imgPreview && event.target?.['tagName'] === 'IMG') {\n setPreviewUrl(event.target['src']);\n }\n },\n true,\n );\n } catch (error) {\n //\n }\n otherProps.onInit?.(_, editor);\n });\n\n const onEditorChange = hooks.useCallbackRef((a: string, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n otherProps.onEditorChange?.(a, editor);\n onChange?.(a);\n });\n\n const tinymceBaseUrl = 'https://file.40017.cn/tcsk/tinymce@6.4.1';\n\n const getImgRatio = (width: number) => {\n if (imgRatio.length === 0) return 1;\n for (let index = 0; index < imgRatio.length; index++) {\n const element = imgRatio[index];\n if (element.max) {\n if (width >= element.min && width <= element.max) return element.ratio;\n } else {\n if (width >= element.min) return element.ratio;\n }\n }\n return 1;\n };\n\n const paste_postprocess = hooks.useCallbackRef((editor, args) => {\n try {\n const nodes = (args.node.children || []) as unknown as HTMLElement[];\n if (nodes.length === 1 && nodes[0].nodeName === 'IMG') {\n nodes[0].setAttribute('style', `display:none`);\n const img = document.createElement('img');\n img.src = nodes[0].getAttribute('src') as string;\n img.onload = () => {\n const ratio = getImgRatio(img.width);\n editor.execCommand(\n 'mceInsertContent',\n true,\n `<img src=\"${img.src}\" width=\"${img.width * ratio}\" height=\"${img.height * ratio}\" />`,\n );\n };\n }\n } catch (error) {\n //\n }\n });\n\n const paste_preprocess = hooks.useCallbackRef((_plugin, args) => {\n const paste_text_limit = props.init?.paste_text_limit;\n if (paste_text_limit) {\n const byteLen = getStrByteLen(args.content);\n if (byteLen > 1024 * paste_text_limit.limit) {\n void message.error(paste_text_limit.message);\n args.content = '';\n }\n }\n });\n\n return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n tinymceScriptSrc={`${tinymceBaseUrl}/tinymce.min.js`}\n {...otherProps}\n onInit={onInit}\n onKeyDown={onKeyDown}\n onEditorChange={onEditorChange}\n init={{\n promotion: false,\n language: 'zh-Hans',\n height: height,\n paste_data_images: onUploadImage ? true : false,\n paste_postprocess,\n paste_preprocess,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\n autoresize_bottom_margin: 0,\n images_upload_handler: async (blobInfo) => {\n try {\n const blob = blobInfo.blob();\n const file = new File([blob], blob['name'], { type: blob.type });\n const respData = await onUploadImage?.(file);\n return Promise.resolve(respData as string);\n } catch (error: any) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n plugins:\n 'lists link image advlist charmap preview fullscreen code table help codesample ' +\n (props.init?.plugins_append || ''),\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsize blocks |' +\n 'forecolor backcolor removeformat |' +\n 'numlist bullist advlist |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent |' +\n 'hr image link code codesample |' +\n (props.init?.toolbar_append || ''),\n font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n ...props.init,\n content_style: `img {max-width:100%;} table{width:100%} ${props.init?.content_style}`,\n convert_urls: false,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n"],"names":["Preview","props","visible","url","fbaHooks","useEffectCustom","dynamicNode","append","content","_jsx","_PlusCircleOutlined","onClick","close","className","twoToneColor","remove","_Fragment","Fragment","children","Image","style","left","preview","maskStyle","backgroundColor","src","onVisibleChange","RichTextEditor","_props$init","_props$init3","_props$init4","_props$init5","onUploadImage","onChange","height","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","imgRatio","init","img_ratio","min","max","ratio","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","error","events","onKeyDown","_hooks","useCallbackRef","editor","keyCode","_editorRef$current3","_editorRef$current4","onInit","_","on","e","onFullScreenChange","state","_editor$iframeElement","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","getImgRatio","width","length","index","element","paste_postprocess","args","nodes","node","nodeName","setAttribute","img","document","createElement","getAttribute","onload","paste_preprocess","_plugin","_props$init2","paste_text_limit","byteLen","getStrByteLen","limit","message","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","promotion","language","paste_data_images","autosave_ask_before_unload","base_url","autoresize_bottom_margin","images_upload_handler","blobInfo","Promise","$return","$error","blob","file","respData","$Try_5_Catch","reject","$boundEx","File","resolve","then","$await_6","plugins","plugins_append","toolbar","toolbar_append","font_size_formats","content_style","convert_urls"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-editor/preview/preview.tsx","@flatbiz/antd/src/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { PlusCircleOutlined } from '@ant-design/icons';\nimport { Image } from 'antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\nimport { fbaHooks } from '../../fba-hooks';\nimport './preview.less';\n\nexport const Preview = (props) => {\n const { visible, url } = props;\n\n fbaHooks.useEffectCustom(() => {\n if (visible) {\n dynamicNode.append({\n content: (\n <PlusCircleOutlined\n onClick={props.close}\n className=\"preview-image-popup-close\"\n twoToneColor=\"#1890ff\"\n />\n ),\n });\n } else {\n dynamicNode.remove();\n }\n }, [visible]);\n\n if (!url) return <></>;\n\n return (\n <Fragment>\n <Image\n key={url}\n style={{ left: '100px' }}\n preview={{\n className: 'preview-image-popup',\n maskStyle: { backgroundColor: 'rgba(0,0,0,0.85)' },\n visible,\n src: url,\n onVisibleChange: () => {\n props.close();\n },\n }}\n />\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { getStrByteLen, type TAny } from '@flatbiz/utils';\nimport { Editor, type IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { message } from 'antd';\nimport { useRef, useState } from 'react';\nimport { type Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange' | 'init'> {\n /** 设置高度,默认:500 */\n height?: number;\n onChange?: (data?: string) => void;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n /** 图片点击预览 */\n imgPreview?: boolean;\n init?: IAllProps['init'] & {\n /**\n * 通过粘贴图片创建的img标签,显示压缩比例,此处min、max是和指图片宽度\n * ```\n * 1. 默认值:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\n img_ratio?: { min: number; max?: number; ratio: number }[];\n /**\n * 粘贴文本大小限制\n * ```\n * 1. limit 限制大小,单位KB,例如限制2M,值为2*1024\n * 2. 限制提示文案\n * ```\n */\n paste_text_limit?: {\n limit: number;\n message: string;\n };\n /** 插件添加;自定义plugins后失效 */\n plugins_append?: string;\n /** 工具栏添加;自定义toolbar后失效 */\n toolbar_append?: string;\n };\n /** 点击全屏按钮回调 */\n onFullScreenChange?: (state?: boolean) => void;\n className?: string;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce https://www.tiny.cloud/docs/tinymce/6\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 获取富文本实例,通过onInit(_, editor)函数获取\n * 3. 预览富文本数据,使用 RichTextViewer 组件\n * 4. 添加其他插件使用方式,配置 init.plugins_append、init.toolbar_append\n * <RichTextEditor init={{ plugins_append: 'codesample', toolbar_append: 'codesample' }} />\n * 5. 可通过设置 init.plugins、init.toolbar 完全自定义插件、工具栏\n * 6. 其他插件\n * emoticons 表情插件\n * 7. 可通过设置 init.img_ratio 设置通过粘贴上传的图片压缩显示比例\n * 默认比例:[{ min: 0, max: 1000, ratio: 0.5 }, { min: 1000, ratio: 0.3 }]\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, height, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\n const imgRatio = props.init?.img_ratio || [\n { min: 0, max: 1000, ratio: 0.5 },\n { min: 1000, ratio: 0.3 },\n ];\n\n // const varStyleString = useMemo(() => {\n // const merge = { ...defaultVarStyle, ...props.varStyle };\n // let varStyleString = '';\n // Object.keys(merge).map((key) => {\n // varStyleString += `${key}:${merge[key]};`;\n // });\n // return varStyleString;\n // }, [props.varStyle]);\n\n useKeyPress(\n () => true,\n (event) => {\n try {\n if (event.type === 'keyup' && event.key === 'Escape') {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n },\n {\n events: ['keydown', 'keyup'],\n },\n );\n\n const onKeyDown = hooks.useCallbackRef((event, editor: TinyMCEEditor) => {\n try {\n if (event.keyCode == 27) {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n props.onKeyDown?.(event, editor);\n });\n\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n editor.on('FullscreenStateChanged', (e) => {\n props.onFullScreenChange?.(e.state);\n });\n try {\n editor.iframeElement?.contentDocument?.addEventListener(\n 'click',\n (event) => {\n if (props.imgPreview && event.target?.['tagName'] === 'IMG') {\n setPreviewUrl(event.target['src']);\n }\n },\n true,\n );\n } catch (error) {\n //\n }\n otherProps.onInit?.(_, editor);\n });\n\n const onEditorChange = hooks.useCallbackRef((a: string, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n otherProps.onEditorChange?.(a, editor);\n onChange?.(a);\n });\n\n const tinymceBaseUrl = 'https://file.40017.cn/tcsk/tinymce@6.4.1';\n\n const getImgRatio = (width: number) => {\n if (imgRatio.length === 0) return 1;\n for (let index = 0; index < imgRatio.length; index++) {\n const element = imgRatio[index];\n if (element.max) {\n if (width >= element.min && width <= element.max) return element.ratio;\n } else {\n if (width >= element.min) return element.ratio;\n }\n }\n return 1;\n };\n\n const paste_postprocess = hooks.useCallbackRef((editor, args) => {\n try {\n const nodes = (args.node.children || []) as unknown as HTMLElement[];\n if (nodes.length === 1 && nodes[0].nodeName === 'IMG') {\n nodes[0].setAttribute('style', `display:none`);\n const img = document.createElement('img');\n img.src = nodes[0].getAttribute('src') as string;\n img.onload = () => {\n const ratio = getImgRatio(img.width);\n editor.execCommand(\n 'mceInsertContent',\n true,\n `<img src=\"${img.src}\" width=\"${img.width * ratio}\" height=\"${img.height * ratio}\" />`,\n );\n };\n }\n } catch (error) {\n //\n }\n });\n\n const paste_preprocess = hooks.useCallbackRef((_plugin, args) => {\n const paste_text_limit = props.init?.paste_text_limit;\n if (paste_text_limit) {\n const byteLen = getStrByteLen(args.content);\n if (byteLen > 1024 * paste_text_limit.limit) {\n void message.error(paste_text_limit.message);\n args.content = '';\n }\n }\n });\n\n return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n tinymceScriptSrc={`${tinymceBaseUrl}/tinymce.min.js`}\n {...otherProps}\n onInit={onInit}\n onKeyDown={onKeyDown}\n onEditorChange={onEditorChange}\n init={{\n promotion: false,\n language: 'zh-Hans',\n height: height,\n paste_data_images: onUploadImage ? true : false,\n paste_postprocess,\n paste_preprocess,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\n autoresize_bottom_margin: 0,\n images_upload_handler: async (blobInfo) => {\n try {\n const blob = blobInfo.blob();\n const file = new File([blob], blob['name'], { type: blob.type });\n const respData = await onUploadImage?.(file);\n return Promise.resolve(respData as string);\n } catch (error: any) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n plugins:\n 'lists link image advlist charmap preview fullscreen code table help codesample ' +\n (props.init?.plugins_append || ''),\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsize blocks |' +\n 'forecolor backcolor removeformat |' +\n 'numlist bullist advlist |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent |' +\n 'hr image link code codesample |' +\n (props.init?.toolbar_append || ''),\n font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n ...props.init,\n content_style: `img {max-width:100%;} table{width:100%} ${props.init?.content_style}`,\n convert_urls: false,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n"],"names":["Preview","props","visible","url","fbaHooks","useEffectCustom","dynamicNode","append","content","_jsx","_PlusCircleOutlined","onClick","close","className","twoToneColor","remove","_Fragment","Fragment","children","Image","style","left","preview","maskStyle","backgroundColor","src","onVisibleChange","RichTextEditor","_props$init","_props$init3","_props$init4","_props$init5","onUploadImage","onChange","height","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","imgRatio","init","img_ratio","min","max","ratio","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","error","events","onKeyDown","_hooks","useCallbackRef","editor","keyCode","_editorRef$current3","_editorRef$current4","onInit","_","on","e","onFullScreenChange","state","_editor$iframeElement","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","getImgRatio","width","length","index","element","paste_postprocess","args","nodes","node","nodeName","setAttribute","img","document","createElement","getAttribute","onload","paste_preprocess","_plugin","_props$init2","paste_text_limit","byteLen","getStrByteLen","limit","message","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","promotion","language","paste_data_images","autosave_ask_before_unload","base_url","autoresize_bottom_margin","images_upload_handler","blobInfo","Promise","$return","$error","blob","file","respData","$Try_5_Catch","reject","$boundEx","File","resolve","then","$await_6","plugins","plugins_append","toolbar","toolbar_append","font_size_formats","content_style","convert_urls"],"mappings":"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"}
@@ -5,5 +5,5 @@ import './../rich-text-editor/index.css';
5
5
  import './../dynamic-node/index.css';
6
6
  import './index.css';
7
7
  /*! @flatjs/forge MIT @flatbiz/antd */
8
- import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{useKeyPress as o}from"ahooks";import{useState as t,useRef as n}from"react";import{fbaHooks as s}from"../fba-hooks/index.js";import{IconWrapper as a}from"../icon-wrapper/index.js";import{RichTextEditor as l}from"../rich-text-editor/index.js";import{jsxs as m,jsx as c}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/utils/cjs/uuid";import"@dimjs/lang/cjs/is-undefined";import"@tinymce/tinymce-react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"../dynamic-node/index.js";import"react-dom/client";import"../dom-4d04aa64.js";var u=function u(d){var p=t(false),f=p[0],v=p[1];var j=n();o((function(){return true}),(function(e){if(e.type==="keyup"&&e.key==="Escape"&&f){v(false)}}),{events:["keydown","keyup"]});var b=r.useCallbackRef((function(){v(!f)}));var y=r.useCallbackRef((function(e,i){j.current=i;d.onInit==null||d.onInit(i)}));s.useEffectCustom((function(){var e;(e=j.current)==null||e.editorCommands.execCommand("mceAutoResize")}),[d.value]);return m("div",{className:i("fba-editor-viewer",{"fba-editor-viewer-fixed":f},d.className),style:d.style,children:[d.children,d.fullscreen&&d.value&&c("div",{className:"fba-editor-viewer-icon",children:c(a,{hoverTips:d.fullscreenIconTips,icon:c(e,{}),onClick:b})}),c(l,{value:d.value,onInit:y,imgPreview:true,disabled:true,init:{plugins:"autoresize",menubar:false,toolbar:"",statusbar:false,readonly:true}})]})};export{u as RichTextViewer};
8
+ import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{useKeyPress as o}from"ahooks";import{useState as t,useRef as n}from"react";import{fbaHooks as s}from"../fba-hooks/index.js";import{IconWrapper as a}from"../icon-wrapper/index.js";import{RichTextEditor as l}from"../rich-text-editor/index.js";import{jsxs as m,jsx as c}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@flatbiz/utils";import"../use-responsive-point-1e6d93d9.js";import"antd";import"@dimjs/utils/cjs/uuid";import"@dimjs/lang/cjs/is-undefined";import"@tinymce/tinymce-react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"../dynamic-node/index.js";import"react-dom/client";import"../dom-4d04aa64.js";var u=function u(d){var p=t(false),f=p[0],v=p[1];var j=n();o(function(){return true},function(e){if(e.type==="keyup"&&e.key==="Escape"&&f){v(false)}},{events:["keydown","keyup"]});var b=r.useCallbackRef(function(){v(!f)});var y=r.useCallbackRef(function(e,i){j.current=i;d.onInit==null||d.onInit(i)});s.useEffectCustom(function(){var e;(e=j.current)==null||e.editorCommands.execCommand("mceAutoResize")},[d.value]);return m("div",{className:i("fba-editor-viewer",{"fba-editor-viewer-fixed":f},d.className),style:d.style,children:[d.children,d.fullscreen&&d.value&&c("div",{className:"fba-editor-viewer-icon",children:c(a,{hoverTips:d.fullscreenIconTips,icon:c(e,{}),onClick:b})}),c(l,{value:d.value,onInit:y,imgPreview:true,disabled:true,init:{plugins:"autoresize",menubar:false,toolbar:"",statusbar:false,readonly:true}})]})};export{u as RichTextViewer};
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-viewer/rich-text-viewer.tsx"],"sourcesContent":["import { FullscreenOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\n\nimport { fbaHooks } from '../fba-hooks';\nimport { IconWrapper } from '../icon-wrapper';\nimport { RichTextEditor } from '../rich-text-editor';\nimport './style.less';\n\ntype RichTextViewerProps = {\n value: string;\n className?: string;\n style?: CSSProperties;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * ```\n * 1. 通过 onInit 属性可获取实例:editor\n * 2. 如果高度发生变更,可执行 editor.execCommand('mceAutoResize');\n *\n * ```\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\n const editorRef = useRef<TinyMCEEditor>();\n\n useKeyPress(\n () => true,\n (event) => {\n if (event.type === 'keyup' && event.key === 'Escape' && isFixed) {\n setIsFixed(false);\n }\n },\n { events: ['keydown', 'keyup'] },\n );\n\n const onChangeFixed = hooks.useCallbackRef(() => {\n setIsFixed(!isFixed);\n });\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n props.onInit?.(editor);\n });\n\n fbaHooks.useEffectCustom(() => {\n editorRef.current?.editorCommands.execCommand('mceAutoResize');\n }, [props.value]);\n\n return (\n <div\n className={classNames('fba-editor-viewer', { 'fba-editor-viewer-fixed': isFixed }, props.className)}\n style={props.style}\n >\n {props.children}\n {props.fullscreen && props.value && (\n <div className=\"fba-editor-viewer-icon\">\n <IconWrapper\n hoverTips={props.fullscreenIconTips}\n icon={<FullscreenOutlined />}\n onClick={onChangeFixed}\n />\n </div>\n )}\n <RichTextEditor\n value={props.value}\n onInit={onInit}\n imgPreview\n disabled\n init={{\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n readonly: true,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","editorRef","useRef","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","current","fbaHooks","useEffectCustom","_editorRef$current","editorCommands","execCommand","value","_jsxs","className","_classNames","style","children","fullscreen","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","imgPreview","disabled","init","plugins","menubar","toolbar","statusbar","readonly"],"mappings":";k2BAgCaA,EAAiB,SAAjBA,EAAkBC,GAC7B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1B,IAAMI,EAAYC,IAElBC,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,UAAYP,EAAS,CAC/DC,EAAW,MACb,CACF,GACA,CAAEO,OAAQ,CAAC,UAAW,WAGxB,IAAMC,EAAgBC,EAAMC,gBAAe,WACzCV,GAAYD,EACd,IACA,IAAMY,EAASF,EAAMC,gBAAe,SAACE,EAAGC,GACtCZ,EAAUa,QAAUD,EACpBjB,EAAMe,QAANf,MAAAA,EAAMe,OAASE,EACjB,IAEAE,EAASC,iBAAgB,WAAM,IAAAC,GAC7BA,EAAAhB,EAAUa,UAAO,MAAjBG,EAAmBC,eAAeC,YAAY,gBAChD,GAAG,CAACvB,EAAMwB,QAEV,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,oBAAqB,CAAE,0BAA2BxB,GAAWH,EAAM0B,WACzFE,MAAO5B,EAAM4B,MAAMC,SAElB7B,CAAAA,EAAM6B,SACN7B,EAAM8B,YAAc9B,EAAMwB,OACzBO,EAAA,MAAA,CAAKL,UAAU,yBAAwBG,SACrCE,EAACC,EAAW,CACVC,UAAWjC,EAAMkC,mBACjBC,KAAMJ,EAAAK,MACNC,QAASzB,MAIfmB,EAACO,EAAc,CACbd,MAAOxB,EAAMwB,MACbT,OAAQA,EACRwB,WAAU,KACVC,SAAQ,KACRC,KAAM,CACJC,QAAS,aACTC,QAAS,MACTC,QAAS,GACTC,UAAW,MACXC,SAAU,UAKpB"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-viewer/rich-text-viewer.tsx"],"sourcesContent":["import { FullscreenOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\n\nimport { fbaHooks } from '../fba-hooks';\nimport { IconWrapper } from '../icon-wrapper';\nimport { RichTextEditor } from '../rich-text-editor';\nimport './style.less';\n\ntype RichTextViewerProps = {\n value: string;\n className?: string;\n style?: CSSProperties;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * ```\n * 1. 通过 onInit 属性可获取实例:editor\n * 2. 如果高度发生变更,可执行 editor.execCommand('mceAutoResize');\n *\n * ```\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\n const editorRef = useRef<TinyMCEEditor>();\n\n useKeyPress(\n () => true,\n (event) => {\n if (event.type === 'keyup' && event.key === 'Escape' && isFixed) {\n setIsFixed(false);\n }\n },\n { events: ['keydown', 'keyup'] },\n );\n\n const onChangeFixed = hooks.useCallbackRef(() => {\n setIsFixed(!isFixed);\n });\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n props.onInit?.(editor);\n });\n\n fbaHooks.useEffectCustom(() => {\n editorRef.current?.editorCommands.execCommand('mceAutoResize');\n }, [props.value]);\n\n return (\n <div\n className={classNames('fba-editor-viewer', { 'fba-editor-viewer-fixed': isFixed }, props.className)}\n style={props.style}\n >\n {props.children}\n {props.fullscreen && props.value && (\n <div className=\"fba-editor-viewer-icon\">\n <IconWrapper\n hoverTips={props.fullscreenIconTips}\n icon={<FullscreenOutlined />}\n onClick={onChangeFixed}\n />\n </div>\n )}\n <RichTextEditor\n value={props.value}\n onInit={onInit}\n imgPreview\n disabled\n init={{\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n readonly: true,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","editorRef","useRef","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","current","fbaHooks","useEffectCustom","_editorRef$current","editorCommands","execCommand","value","_jsxs","className","_classNames","style","children","fullscreen","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","imgPreview","disabled","init","plugins","menubar","toolbar","statusbar","readonly"],"mappings":";k2BAgCaA,EAAiB,SAAjBA,EAAkBC,GAC7B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1B,IAAMI,EAAYC,IAElBC,EACE,WAAA,OAAM,IACN,EAAA,SAACC,GACC,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,UAAYP,EAAS,CAC/DC,EAAW,MACb,CACF,EACA,CAAEO,OAAQ,CAAC,UAAW,WAGxB,IAAMC,EAAgBC,EAAMC,eAAe,WACzCV,GAAYD,EACd,GACA,IAAMY,EAASF,EAAMC,eAAe,SAACE,EAAGC,GACtCZ,EAAUa,QAAUD,EACpBjB,EAAMe,QAANf,MAAAA,EAAMe,OAASE,EACjB,GAEAE,EAASC,gBAAgB,WAAM,IAAAC,GAC7BA,EAAAhB,EAAUa,UAAO,MAAjBG,EAAmBC,eAAeC,YAAY,gBAChD,EAAG,CAACvB,EAAMwB,QAEV,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,oBAAqB,CAAE,0BAA2BxB,GAAWH,EAAM0B,WACzFE,MAAO5B,EAAM4B,MAAMC,SAElB7B,CAAAA,EAAM6B,SACN7B,EAAM8B,YAAc9B,EAAMwB,OACzBO,EAAA,MAAA,CAAKL,UAAU,yBAAwBG,SACrCE,EAACC,EAAW,CACVC,UAAWjC,EAAMkC,mBACjBC,KAAMJ,EAAAK,MACNC,QAASzB,MAIfmB,EAACO,EAAc,CACbd,MAAOxB,EAAMwB,MACbT,OAAQA,EACRwB,WAAU,KACVC,SAAQ,KACRC,KAAM,CACJC,QAAS,aACTC,QAAS,MACTC,QAAS,GACTC,UAAW,MACXC,SAAU,UAKpB"}
@@ -2,5 +2,5 @@
2
2
  import './../fba-hooks/index.css';
3
3
  import './index.css';
4
4
  /*! @flatjs/forge MIT @flatbiz/antd */
5
- import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as o}from"../fba-hooks/index.js";import{jsx as i}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/utils/cjs/uuid";var l=function l(a){var c=t(null);var n=a.behavior||"smooth";var s=a.direction||"vertical";var v=function r(e){var t,o;var i=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!i)return;var l=(o=c.current)==null?void 0:o.offsetHeight;var a=i.offsetTop;var s=i.offsetHeight;if(a<=s){var v;(v=c.current)==null||v.scrollTo({top:0,behavior:n})}else{var u=a-l/2+s/2;if(u>0){var f;(f=c.current)==null||f.scrollTo({top:u,behavior:n})}else{var m;(m=c.current)==null||m.scrollTo({top:0,behavior:n})}}};var u=function r(e){var t,o;var i=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!i)return;var l=(o=c.current)==null?void 0:o.offsetWidth;var a=i.offsetLeft;var s=i.offsetWidth;if(a<=s){var v;(v=c.current)==null||v.scrollTo({left:0,behavior:n})}else{var u=a-l/2+s/2;if(u>0){var f;(f=c.current)==null||f.scrollTo({left:u,behavior:n})}else{var m;(m=c.current)==null||m.scrollTo({left:0,behavior:n})}}};o.useEffectCustom((function(){if(a.activeKey){if(s==="vertical"){v(a.activeKey)}else{u(a.activeKey)}}}),[a.activeKey]);e((function(){if(a.activeKey){if(s==="vertical"){v(a.activeKey)}else{u(a.activeKey)}}}),c,{subtree:true,childList:true,characterData:true});return i("div",{className:r("roll-location-center","roll-location-center-"+s,a.className),style:a.style,ref:c,children:a.renderList.map((function(r){return i("div",{className:"roll-location-center-"+r.activeKey,children:r.render},r.activeKey)}))})};export{l as RollLocationCenter};
5
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as o}from"../fba-hooks/index.js";import{jsx as i}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-1e6d93d9.js";import"antd";import"@dimjs/utils/cjs/uuid";var l=function l(a){var c=t(null);var n=a.behavior||"smooth";var s=a.direction||"vertical";var v=function r(e){var t,o;var i=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!i)return;var l=(o=c.current)==null?void 0:o.offsetHeight;var a=i.offsetTop;var s=i.offsetHeight;if(a<=s){var v;(v=c.current)==null||v.scrollTo({top:0,behavior:n})}else{var u=a-l/2+s/2;if(u>0){var f;(f=c.current)==null||f.scrollTo({top:u,behavior:n})}else{var m;(m=c.current)==null||m.scrollTo({top:0,behavior:n})}}};var u=function r(e){var t,o;var i=(t=c.current)==null?void 0:t.querySelector(".roll-location-center-"+e);if(!i)return;var l=(o=c.current)==null?void 0:o.offsetWidth;var a=i.offsetLeft;var s=i.offsetWidth;if(a<=s){var v;(v=c.current)==null||v.scrollTo({left:0,behavior:n})}else{var u=a-l/2+s/2;if(u>0){var f;(f=c.current)==null||f.scrollTo({left:u,behavior:n})}else{var m;(m=c.current)==null||m.scrollTo({left:0,behavior:n})}}};o.useEffectCustom(function(){if(a.activeKey){if(s==="vertical"){v(a.activeKey)}else{u(a.activeKey)}}},[a.activeKey]);e(function(){if(a.activeKey){if(s==="vertical"){v(a.activeKey)}else{u(a.activeKey)}}},c,{subtree:true,childList:true,characterData:true});return i("div",{className:r("roll-location-center","roll-location-center-"+s,a.className),style:a.style,ref:c,children:a.renderList.map(function(r){return i("div",{className:"roll-location-center-"+r.activeKey,children:r.render},r.activeKey)})})};export{l as RollLocationCenter};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/roll-location-center/center.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useMutationObserver } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type RollLocationCenterProps = {\n renderList: { activeKey: string; render: ReactElement }[];\n activeKey?: string;\n behavior?: ScrollBehavior;\n direction?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n className?: string;\n};\nexport const RollLocationCenter = (props: RollLocationCenterProps) => {\n const rollLocationCenterRef = useRef<HTMLDivElement>(null);\n const behavior = props.behavior || 'smooth';\n const direction = props.direction || 'vertical';\n\n const targetVerticalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeHeight = rollLocationCenterRef.current?.offsetHeight as number;\n const targetNodeOffsetTop = targetNode.offsetTop;\n const targetNodeHeight = targetNode.offsetHeight;\n if (targetNodeOffsetTop <= targetNodeHeight) {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n } else {\n const rollHeight = targetNodeOffsetTop - parentNodeHeight / 2 + targetNodeHeight / 2;\n if (rollHeight > 0) {\n rollLocationCenterRef.current?.scrollTo({ top: rollHeight, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n }\n }\n };\n const targetHorizontalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeWidth = rollLocationCenterRef.current?.offsetWidth as number;\n const targetNodeOffsetLeft = targetNode.offsetLeft;\n const targetNodeWidth = targetNode.offsetWidth;\n if (targetNodeOffsetLeft <= targetNodeWidth) {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n } else {\n const rollWidth = targetNodeOffsetLeft - parentNodeWidth / 2 + targetNodeWidth / 2;\n if (rollWidth > 0) {\n rollLocationCenterRef.current?.scrollTo({ left: rollWidth, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n }\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n }, [props.activeKey]);\n\n useMutationObserver(\n () => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n },\n rollLocationCenterRef,\n {\n subtree: true,\n childList: true,\n characterData: true,\n },\n );\n\n return (\n <div\n className={classNames('roll-location-center', `roll-location-center-${direction}`, props.className)}\n style={props.style}\n ref={rollLocationCenterRef}\n >\n {props.renderList.map((item) => {\n return (\n <div className={`roll-location-center-${item.activeKey}`} key={item.activeKey}>\n {item.render}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["RollLocationCenter","props","rollLocationCenterRef","useRef","behavior","direction","targetVerticalRoll","key","_rollLocationCenterRe","_rollLocationCenterRe2","targetNode","current","querySelector","parentNodeHeight","offsetHeight","targetNodeOffsetTop","offsetTop","targetNodeHeight","_rollLocationCenterRe3","scrollTo","top","rollHeight","_rollLocationCenterRe4","_rollLocationCenterRe5","targetHorizontalRoll","_rollLocationCenterRe6","_rollLocationCenterRe7","parentNodeWidth","offsetWidth","targetNodeOffsetLeft","offsetLeft","targetNodeWidth","_rollLocationCenterRe8","left","rollWidth","_rollLocationCenterRe9","_rollLocationCenterRe10","fbaHooks","useEffectCustom","activeKey","useMutationObserver","subtree","childList","characterData","_jsx","className","_classNames","style","ref","children","renderList","map","item","render"],"mappings":";icAcaA,EAAqB,SAArBA,EAAsBC,GACjC,IAAMC,EAAwBC,EAAuB,MACrD,IAAMC,EAAWH,EAAMG,UAAY,SACnC,IAAMC,EAAYJ,EAAMI,WAAa,WAErC,IAAMC,EAAqB,SAArBA,EAAsBC,GAAgB,IAAAC,EAAAC,EAC1C,IAAMC,GAAUF,EAAGN,EAAsBS,UAAO,UAAA,EAA7BH,EAA+BI,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMG,GAAgBJ,EAAGP,EAAsBS,UAAO,UAAA,EAA7BF,EAA+BK,aACxD,IAAMC,EAAsBL,EAAWM,UACvC,IAAMC,EAAmBP,EAAWI,aACpC,GAAIC,GAAuBE,EAAkB,CAAA,IAAAC,GAC3CA,EAAAhB,EAAsBS,UAAtBO,MAAAA,EAA+BC,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,KAAO,CACL,IAAMiB,EAAaN,EAAsBF,EAAmB,EAAII,EAAmB,EACnF,GAAII,EAAa,EAAG,CAAA,IAAAC,GAClBA,EAAApB,EAAsBS,UAAtBW,MAAAA,EAA+BH,SAAS,CAAEC,IAAKC,EAAYjB,SAAAA,GAC7D,KAAO,CAAA,IAAAmB,GACLA,EAAArB,EAAsBS,UAAtBY,MAAAA,EAA+BJ,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,CACF,GAEF,IAAMoB,EAAuB,SAAvBA,EAAwBjB,GAAgB,IAAAkB,EAAAC,EAC5C,IAAMhB,GAAUe,EAAGvB,EAAsBS,UAAO,UAAA,EAA7Bc,EAA+Bb,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMiB,GAAeD,EAAGxB,EAAsBS,UAAO,UAAA,EAA7Be,EAA+BE,YACvD,IAAMC,EAAuBnB,EAAWoB,WACxC,IAAMC,EAAkBrB,EAAWkB,YACnC,GAAIC,GAAwBE,EAAiB,CAAA,IAAAC,GAC3CA,EAAA9B,EAAsBS,UAAtBqB,MAAAA,EAA+Bb,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,KAAO,CACL,IAAM8B,EAAYL,EAAuBF,EAAkB,EAAII,EAAkB,EACjF,GAAIG,EAAY,EAAG,CAAA,IAAAC,GACjBA,EAAAjC,EAAsBS,UAAtBwB,MAAAA,EAA+BhB,SAAS,CAAEc,KAAMC,EAAW9B,SAAAA,GAC7D,KAAO,CAAA,IAAAgC,GACLA,EAAAlC,EAAsBS,UAAtByB,MAAAA,EAA+BjB,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,CACF,GAGFiC,EAASC,iBAAgB,WACvB,GAAIrC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACF,GAAG,CAACtC,EAAMsC,YAEVC,GACE,WACE,GAAIvC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACD,GACDrC,EACA,CACEuC,QAAS,KACTC,UAAW,KACXC,cAAe,OAInB,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,uBAAsB,wBAA0BzC,EAAaJ,EAAM4C,WACzFE,MAAO9C,EAAM8C,MACbC,IAAK9C,EAAsB+C,SAE1BhD,EAAMiD,WAAWC,KAAI,SAACC,GACrB,OACER,EAAA,MAAA,CAAKC,UAAS,wBAA0BO,EAAKb,UAAYU,SACtDG,EAAKC,QADuDD,EAAKb,eAO9E"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/roll-location-center/center.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { useMutationObserver } from 'ahooks';\nimport { CSSProperties, ReactElement, useRef } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type RollLocationCenterProps = {\n renderList: { activeKey: string; render: ReactElement }[];\n activeKey?: string;\n behavior?: ScrollBehavior;\n direction?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n className?: string;\n};\nexport const RollLocationCenter = (props: RollLocationCenterProps) => {\n const rollLocationCenterRef = useRef<HTMLDivElement>(null);\n const behavior = props.behavior || 'smooth';\n const direction = props.direction || 'vertical';\n\n const targetVerticalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeHeight = rollLocationCenterRef.current?.offsetHeight as number;\n const targetNodeOffsetTop = targetNode.offsetTop;\n const targetNodeHeight = targetNode.offsetHeight;\n if (targetNodeOffsetTop <= targetNodeHeight) {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n } else {\n const rollHeight = targetNodeOffsetTop - parentNodeHeight / 2 + targetNodeHeight / 2;\n if (rollHeight > 0) {\n rollLocationCenterRef.current?.scrollTo({ top: rollHeight, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ top: 0, behavior });\n }\n }\n };\n const targetHorizontalRoll = (key: string) => {\n const targetNode = rollLocationCenterRef.current?.querySelector(\n `.roll-location-center-${key}`,\n ) as HTMLDivElement;\n if (!targetNode) return;\n const parentNodeWidth = rollLocationCenterRef.current?.offsetWidth as number;\n const targetNodeOffsetLeft = targetNode.offsetLeft;\n const targetNodeWidth = targetNode.offsetWidth;\n if (targetNodeOffsetLeft <= targetNodeWidth) {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n } else {\n const rollWidth = targetNodeOffsetLeft - parentNodeWidth / 2 + targetNodeWidth / 2;\n if (rollWidth > 0) {\n rollLocationCenterRef.current?.scrollTo({ left: rollWidth, behavior });\n } else {\n rollLocationCenterRef.current?.scrollTo({ left: 0, behavior });\n }\n }\n };\n\n fbaHooks.useEffectCustom(() => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n }, [props.activeKey]);\n\n useMutationObserver(\n () => {\n if (props.activeKey) {\n if (direction === 'vertical') {\n targetVerticalRoll(props.activeKey);\n } else {\n targetHorizontalRoll(props.activeKey);\n }\n }\n },\n rollLocationCenterRef,\n {\n subtree: true,\n childList: true,\n characterData: true,\n },\n );\n\n return (\n <div\n className={classNames('roll-location-center', `roll-location-center-${direction}`, props.className)}\n style={props.style}\n ref={rollLocationCenterRef}\n >\n {props.renderList.map((item) => {\n return (\n <div className={`roll-location-center-${item.activeKey}`} key={item.activeKey}>\n {item.render}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["RollLocationCenter","props","rollLocationCenterRef","useRef","behavior","direction","targetVerticalRoll","key","_rollLocationCenterRe","_rollLocationCenterRe2","targetNode","current","querySelector","parentNodeHeight","offsetHeight","targetNodeOffsetTop","offsetTop","targetNodeHeight","_rollLocationCenterRe3","scrollTo","top","rollHeight","_rollLocationCenterRe4","_rollLocationCenterRe5","targetHorizontalRoll","_rollLocationCenterRe6","_rollLocationCenterRe7","parentNodeWidth","offsetWidth","targetNodeOffsetLeft","offsetLeft","targetNodeWidth","_rollLocationCenterRe8","left","rollWidth","_rollLocationCenterRe9","_rollLocationCenterRe0","fbaHooks","useEffectCustom","activeKey","useMutationObserver","subtree","childList","characterData","_jsx","className","_classNames","style","ref","children","renderList","map","item","render"],"mappings":";icAcaA,EAAqB,SAArBA,EAAsBC,GACjC,IAAMC,EAAwBC,EAAuB,MACrD,IAAMC,EAAWH,EAAMG,UAAY,SACnC,IAAMC,EAAYJ,EAAMI,WAAa,WAErC,IAAMC,EAAqB,SAArBA,EAAsBC,GAAgB,IAAAC,EAAAC,EAC1C,IAAMC,GAAUF,EAAGN,EAAsBS,UAAO,UAAA,EAA7BH,EAA+BI,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMG,GAAgBJ,EAAGP,EAAsBS,UAAO,UAAA,EAA7BF,EAA+BK,aACxD,IAAMC,EAAsBL,EAAWM,UACvC,IAAMC,EAAmBP,EAAWI,aACpC,GAAIC,GAAuBE,EAAkB,CAAA,IAAAC,GAC3CA,EAAAhB,EAAsBS,UAAtBO,MAAAA,EAA+BC,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,KAAO,CACL,IAAMiB,EAAaN,EAAsBF,EAAmB,EAAII,EAAmB,EACnF,GAAII,EAAa,EAAG,CAAA,IAAAC,GAClBA,EAAApB,EAAsBS,UAAtBW,MAAAA,EAA+BH,SAAS,CAAEC,IAAKC,EAAYjB,SAAAA,GAC7D,KAAO,CAAA,IAAAmB,GACLA,EAAArB,EAAsBS,UAAtBY,MAAAA,EAA+BJ,SAAS,CAAEC,IAAK,EAAGhB,SAAAA,GACpD,CACF,GAEF,IAAMoB,EAAuB,SAAvBA,EAAwBjB,GAAgB,IAAAkB,EAAAC,EAC5C,IAAMhB,GAAUe,EAAGvB,EAAsBS,UAAO,UAAA,EAA7Bc,EAA+Bb,cAAa,yBACpCL,GAE3B,IAAKG,EAAY,OACjB,IAAMiB,GAAeD,EAAGxB,EAAsBS,UAAO,UAAA,EAA7Be,EAA+BE,YACvD,IAAMC,EAAuBnB,EAAWoB,WACxC,IAAMC,EAAkBrB,EAAWkB,YACnC,GAAIC,GAAwBE,EAAiB,CAAA,IAAAC,GAC3CA,EAAA9B,EAAsBS,UAAtBqB,MAAAA,EAA+Bb,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,KAAO,CACL,IAAM8B,EAAYL,EAAuBF,EAAkB,EAAII,EAAkB,EACjF,GAAIG,EAAY,EAAG,CAAA,IAAAC,GACjBA,EAAAjC,EAAsBS,UAAtBwB,MAAAA,EAA+BhB,SAAS,CAAEc,KAAMC,EAAW9B,SAAAA,GAC7D,KAAO,CAAA,IAAAgC,GACLA,EAAAlC,EAAsBS,UAAtByB,MAAAA,EAA+BjB,SAAS,CAAEc,KAAM,EAAG7B,SAAAA,GACrD,CACF,GAGFiC,EAASC,gBAAgB,WACvB,GAAIrC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACF,EAAG,CAACtC,EAAMsC,YAEVC,EACE,WACE,GAAIvC,EAAMsC,UAAW,CACnB,GAAIlC,IAAc,WAAY,CAC5BC,EAAmBL,EAAMsC,UAC3B,KAAO,CACLf,EAAqBvB,EAAMsC,UAC7B,CACF,CACD,EACDrC,EACA,CACEuC,QAAS,KACTC,UAAW,KACXC,cAAe,OAInB,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,uBAAsB,wBAA0BzC,EAAaJ,EAAM4C,WACzFE,MAAO9C,EAAM8C,MACbC,IAAK9C,EAAsB+C,SAE1BhD,EAAMiD,WAAWC,IAAI,SAACC,GACrB,OACER,EAAA,MAAA,CAAKC,UAAS,wBAA0BO,EAAKb,UAAYU,SACtDG,EAAKC,QADuDD,EAAKb,cAO9E"}
@@ -2,5 +2,5 @@
2
2
  import './../fba-hooks/index.css';
3
3
  import './index.css';
4
4
  /*! @flatjs/forge MIT @flatbiz/antd */
5
- import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as i}from"../fba-hooks/index.js";import{jsx as o}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/utils/cjs/uuid";var l=function l(a){var c=t(null);var v=a.behavior||"smooth";var n=a.activeOffset||0;var s=a.direction||"vertical";var u=function r(e){try{var t,i,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-in-view-item-"+e);var a=(i=c.current)==null?void 0:i.offsetHeight;var s=(o=c.current)==null?void 0:o.scrollTop;var u=l.offsetTop;var f=u-s;var m=l.offsetHeight;if(u===0){var p;(p=c.current)==null||p.scrollTo({top:0,behavior:v})}else{if(f<0){var d;(d=c.current)==null||d.scrollTo({top:u-n,behavior:v})}else if(f>=0&&f+m<a){}else{var h;var y=u-(a-m);(h=c.current)==null||h.scrollTo({top:y+n,behavior:v})}}}catch(r){}};var f=function r(e){try{var t,i,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-in-view-item-"+e);var a=(i=c.current)==null?void 0:i.offsetWidth;var s=(o=c.current)==null?void 0:o.scrollLeft;var u=l.offsetLeft;var f=u-s;var m=l.offsetWidth;if(u===0){var p;(p=c.current)==null||p.scrollTo({left:0,behavior:v})}else{if(f<0){var d;(d=c.current)==null||d.scrollTo({left:u-n,behavior:v})}else if(f>=0&&f+m<a){}else{var h;var y=u-(a-m);(h=c.current)==null||h.scrollTo({left:y+n,behavior:v})}}}catch(r){}};i.useEffectCustom((function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}}),[a.activeKey]);e((function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}}),c,{subtree:true,childList:true,characterData:true});return o("div",{className:r("roll-location-in-view","roll-location-in-view-"+s,a.className),style:a.style,ref:c,children:a.renderList.map((function(r){return o("div",{className:"roll-location-in-view-item-"+r.activeKey,children:r.render},r.activeKey)}))})};export{l as RollLocationInView};
5
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{useMutationObserver as e}from"ahooks";import{useRef as t}from"react";import{fbaHooks as i}from"../fba-hooks/index.js";import{jsx as o}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"@flatbiz/utils";import"../use-responsive-point-1e6d93d9.js";import"antd";import"@dimjs/utils/cjs/uuid";var l=function l(a){var c=t(null);var v=a.behavior||"smooth";var n=a.activeOffset||0;var s=a.direction||"vertical";var u=function r(e){try{var t,i,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-in-view-item-"+e);var a=(i=c.current)==null?void 0:i.offsetHeight;var s=(o=c.current)==null?void 0:o.scrollTop;var u=l.offsetTop;var f=u-s;var m=l.offsetHeight;if(u===0){var p;(p=c.current)==null||p.scrollTo({top:0,behavior:v})}else{if(f<0){var d;(d=c.current)==null||d.scrollTo({top:u-n,behavior:v})}else if(f>=0&&f+m<a){}else{var h;var y=u-(a-m);(h=c.current)==null||h.scrollTo({top:y+n,behavior:v})}}}catch(r){}};var f=function r(e){try{var t,i,o;var l=(t=c.current)==null?void 0:t.querySelector(".roll-location-in-view-item-"+e);var a=(i=c.current)==null?void 0:i.offsetWidth;var s=(o=c.current)==null?void 0:o.scrollLeft;var u=l.offsetLeft;var f=u-s;var m=l.offsetWidth;if(u===0){var p;(p=c.current)==null||p.scrollTo({left:0,behavior:v})}else{if(f<0){var d;(d=c.current)==null||d.scrollTo({left:u-n,behavior:v})}else if(f>=0&&f+m<a){}else{var h;var y=u-(a-m);(h=c.current)==null||h.scrollTo({left:y+n,behavior:v})}}}catch(r){}};i.useEffectCustom(function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}},[a.activeKey]);e(function(){if(a.activeKey){if(s==="vertical"){u(a.activeKey)}else{f(a.activeKey)}}},c,{subtree:true,childList:true,characterData:true});return o("div",{className:r("roll-location-in-view","roll-location-in-view-"+s,a.className),style:a.style,ref:c,children:a.renderList.map(function(r){return o("div",{className:"roll-location-in-view-item-"+r.activeKey,children:r.render},r.activeKey)})})};export{l as RollLocationInView};
6
6
  //# sourceMappingURL=index.js.map