@flatbiz/antd 4.2.18 → 4.2.19

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.
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import n from"react-dom";import{b as t}from"../dom-4d04aa64.js";import{jsx as o}from"react/jsx-runtime";var r={append:function r(i){if(i===void 0){i={}}var d=function(){var e;if(typeof i.getContainer==="string"){e=document.querySelector(i.getContainer)}else if(typeof i.getContainer==="function"){e=i.getContainer()}return e}();var a=e("v-dynamic-node",{"v-dynamic-node-fixed":i.fixed},i.className);var m="id_"+Date.now();if(d){n.render(o("div",{className:a,id:m,children:i.content}),d)}else{var c=t(),l=c.divElement,s=c.elementId;m=s;n.render(o("div",{className:a,children:i.content}),l)}window["_dynamic_node_element_id"]=m;console.log("nodeElementId",m);return{elementId:m}},remove:function e(n){var t=n||window["_dynamic_node_element_id"];if(t){try{var o;(o=document.querySelector("#"+t))==null?void 0:o.remove()}catch(e){}}}};export{r as dynamicNode};
4
+ export{d as dynamicNode}from"../dynamic-node-577ef8fd.js";import"@dimjs/utils/cjs/class-names";import"react-dom";import"../dom-4d04aa64.js";import"react/jsx-runtime";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dynamic-node/dynamic-node.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { CSSProperties, ReactElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport { bodyAppendDivElement } from '../_utils/dom';\nimport './style.less';\n\nexport type TDynamicNodeProps = {\n className?: string;\n getContainer?: HTMLElement | (() => HTMLElement) | string;\n content?: ReactElement;\n fixed?: boolean;\n style?: CSSProperties;\n};\n\n/**\n * 动态添加 element 元素\n * ```\n * 1. 默认添加到 body 下\n * 2. 可通过 getContainer 参数设置添加位置\n * ```\n */\nexport const dynamicNode = {\n append: (props: TDynamicNodeProps = {}) => {\n const container = (() => {\n let tempElement;\n if (typeof props.getContainer === 'string') {\n tempElement = document.querySelector(props.getContainer);\n } else if (typeof props.getContainer === 'function') {\n tempElement = props.getContainer();\n }\n return tempElement as Element | undefined;\n })();\n\n const className = classNames('v-dynamic-node', { 'v-dynamic-node-fixed': props.fixed }, props.className);\n let nodeElementId = `id_${Date.now()}`;\n if (container) {\n ReactDOM.render(\n <div className={className} id={nodeElementId}>\n {props.content}\n </div>,\n container,\n );\n } else {\n const { divElement, elementId } = bodyAppendDivElement();\n nodeElementId = elementId;\n ReactDOM.render(<div className={className}>{props.content}</div>, divElement);\n }\n window['_dynamic_node_element_id'] = nodeElementId;\n console.log('nodeElementId', nodeElementId);\n return {\n elementId: nodeElementId,\n };\n },\n remove: (elementId?: string) => {\n const dynamicElementId = elementId || window['_dynamic_node_element_id'];\n if (dynamicElementId) {\n try {\n document.querySelector(`#${dynamicElementId}`)?.remove();\n } catch (error) {\n //\n }\n }\n },\n};\n"],"names":["dynamicNode","append","props","container","tempElement","getContainer","document","querySelector","className","_classNames","fixed","nodeElementId","Date","now","ReactDOM","render","_jsx","id","children","content","_bodyAppendDivElement","bodyAppendDivElement","divElement","elementId","window","console","log","remove","dynamicElementId","_document$querySelect","error"],"mappings":";kKAqBO,IAAMA,EAAc,CACzBC,OAAQ,SAAAA,EAACC,GAAkC,GAAlCA,SAAwB,EAAA,CAAxBA,EAA2B,CAAA,CAAE,CACpC,IAAMC,EAAa,WACjB,IAAIC,EACJ,UAAWF,EAAMG,eAAiB,SAAU,CAC1CD,EAAcE,SAASC,cAAcL,EAAMG,aAC5C,MAAM,UAAWH,EAAMG,eAAiB,WAAY,CACnDD,EAAcF,EAAMG,cACtB,CACA,OAAOD,CACT,CARmB,GAUnB,IAAMI,EAAYC,EAAW,iBAAkB,CAAE,uBAAwBP,EAAMQ,OAASR,EAAMM,WAC9F,IAAIG,EAAa,MAASC,KAAKC,MAC/B,GAAIV,EAAW,CACbW,EAASC,OACPC,EAAA,MAAA,CAAKR,UAAWA,EAAWS,GAAIN,EAAcO,SAC1ChB,EAAMiB,UAEThB,EAEJ,KAAO,CACL,IAAAiB,EAAkCC,IAA1BC,EAAUF,EAAVE,WAAYC,EAASH,EAATG,UACpBZ,EAAgBY,EAChBT,EAASC,OAAOC,EAAA,MAAA,CAAKR,UAAWA,EAAUU,SAAEhB,EAAMiB,UAAgBG,EACpE,CACAE,OAAO,4BAA8Bb,EACrCc,QAAQC,IAAI,gBAAiBf,GAC7B,MAAO,CACLY,UAAWZ,EAEd,EACDgB,OAAQ,SAAAA,EAACJ,GACP,IAAMK,EAAmBL,GAAaC,OAAO,4BAC7C,GAAII,EAAkB,CACpB,IAAI,IAAAC,GACFA,EAAAvB,SAASC,cAAa,IAAKqB,KAA3BC,UAAAA,EAAAA,EAAgDF,QACjD,CAAC,MAAOG,GACP,CAEJ,CACF"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,3 @@
1
+ /*! @flatjs/forge MIT @flatbiz/antd */
2
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import n from"react-dom";import{b as t}from"./dom-4d04aa64.js";import{jsx as o}from"react/jsx-runtime";var r={append:function r(i){if(i===void 0){i={}}var d=function(){var e;if(typeof i.getContainer==="string"){e=document.querySelector(i.getContainer)}else if(typeof i.getContainer==="function"){e=i.getContainer()}return e}();var a=e("v-dynamic-node",{"v-dynamic-node-fixed":i.fixed},i.className);var m="id_"+Date.now();if(d){n.render(o("div",{className:a,id:m,children:i.content}),d)}else{var c=t(),l=c.divElement,s=c.elementId;m=s;n.render(o("div",{className:a,children:i.content}),l)}window["_dynamic_node_element_id"]=m;console.log("nodeElementId",m);return{elementId:m}},remove:function e(n){var t=n||window["_dynamic_node_element_id"];if(t){try{var o;(o=document.querySelector("#"+t))==null?void 0:o.remove()}catch(e){}}}};export{r as d};
3
+ //# sourceMappingURL=dynamic-node-577ef8fd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-node-577ef8fd.js","sources":["@flatbiz/antd/src/dynamic-node/dynamic-node.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { CSSProperties, ReactElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport { bodyAppendDivElement } from '../_utils/dom';\nimport './style.less';\n\nexport type TDynamicNodeProps = {\n className?: string;\n getContainer?: HTMLElement | (() => HTMLElement) | string;\n content?: ReactElement;\n fixed?: boolean;\n style?: CSSProperties;\n};\n\n/**\n * 动态添加 element 元素\n * ```\n * 1. 默认添加到 body 下\n * 2. 可通过 getContainer 参数设置添加位置\n * ```\n */\nexport const dynamicNode = {\n append: (props: TDynamicNodeProps = {}) => {\n const container = (() => {\n let tempElement;\n if (typeof props.getContainer === 'string') {\n tempElement = document.querySelector(props.getContainer);\n } else if (typeof props.getContainer === 'function') {\n tempElement = props.getContainer();\n }\n return tempElement as Element | undefined;\n })();\n\n const className = classNames('v-dynamic-node', { 'v-dynamic-node-fixed': props.fixed }, props.className);\n let nodeElementId = `id_${Date.now()}`;\n if (container) {\n ReactDOM.render(\n <div className={className} id={nodeElementId}>\n {props.content}\n </div>,\n container,\n );\n } else {\n const { divElement, elementId } = bodyAppendDivElement();\n nodeElementId = elementId;\n ReactDOM.render(<div className={className}>{props.content}</div>, divElement);\n }\n window['_dynamic_node_element_id'] = nodeElementId;\n console.log('nodeElementId', nodeElementId);\n return {\n elementId: nodeElementId,\n };\n },\n remove: (elementId?: string) => {\n const dynamicElementId = elementId || window['_dynamic_node_element_id'];\n if (dynamicElementId) {\n try {\n document.querySelector(`#${dynamicElementId}`)?.remove();\n } catch (error) {\n //\n }\n }\n },\n};\n"],"names":["dynamicNode","append","props","container","tempElement","getContainer","document","querySelector","className","_classNames","fixed","nodeElementId","Date","now","ReactDOM","render","_jsx","id","children","content","_bodyAppendDivElement","bodyAppendDivElement","divElement","elementId","window","console","log","remove","dynamicElementId","_document$querySelect","error"],"mappings":";iKAqBO,IAAMA,EAAc,CACzBC,OAAQ,SAAAA,EAACC,GAAkC,GAAlCA,SAAwB,EAAA,CAAxBA,EAA2B,CAAA,CAAE,CACpC,IAAMC,EAAa,WACjB,IAAIC,EACJ,UAAWF,EAAMG,eAAiB,SAAU,CAC1CD,EAAcE,SAASC,cAAcL,EAAMG,aAC5C,MAAM,UAAWH,EAAMG,eAAiB,WAAY,CACnDD,EAAcF,EAAMG,cACtB,CACA,OAAOD,CACT,CARmB,GAUnB,IAAMI,EAAYC,EAAW,iBAAkB,CAAE,uBAAwBP,EAAMQ,OAASR,EAAMM,WAC9F,IAAIG,EAAa,MAASC,KAAKC,MAC/B,GAAIV,EAAW,CACbW,EAASC,OACPC,EAAA,MAAA,CAAKR,UAAWA,EAAWS,GAAIN,EAAcO,SAC1ChB,EAAMiB,UAEThB,EAEJ,KAAO,CACL,IAAAiB,EAAkCC,IAA1BC,EAAUF,EAAVE,WAAYC,EAASH,EAATG,UACpBZ,EAAgBY,EAChBT,EAASC,OAAOC,EAAA,MAAA,CAAKR,UAAWA,EAAUU,SAAEhB,EAAMiB,UAAgBG,EACpE,CACAE,OAAO,4BAA8Bb,EACrCc,QAAQC,IAAI,gBAAiBf,GAC7B,MAAO,CACLY,UAAWZ,EAEd,EACDgB,OAAQ,SAAAA,EAACJ,GACP,IAAMK,EAAmBL,GAAaC,OAAO,4BAC7C,GAAII,EAAkB,CACpB,IAAI,IAAAC,GACFA,EAAAvB,SAASC,cAAa,IAAKqB,KAA3BC,UAAAA,EAAAA,EAAgDF,QACjD,CAAC,MAAOG,GACP,CAEJ,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/model.ts","@flatbiz/antd/src/easy-table/select.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\nimport { FormInstance } from 'antd';\nimport { EasyTableRefApi } from './type';\n\nexport const [useEasyTableCtx, EasyTableCtxProvider] = createCtx<{\n modelKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableList: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initRequest: boolean;\n initialValues: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n paginationStatus: boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n}>();\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition: void;\n updateInitStatus: void;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n};\n\nconst _EasyTableModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: () => {\n return (state) => {\n state.queryCondition = defaultState.queryCondition;\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n },\n state: defaultState,\n};\n\nconst easyTableModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const easyTableModel = (key: string) => {\n if (!easyTableModels[key]) {\n easyTableModels[key] = Model(_EasyTableModel);\n }\n return easyTableModels[key];\n};\n","import { Select, SelectProps } from 'antd';\nimport * as React from 'react';\n\ntype CompoundedComponent = React.FC<SelectProps> & {\n Option: typeof Select.Option;\n};\n\n/**\n * 由于 antd 5.3.x 分页Pagination组件,存在点击分页选择框框时,一直朝下\n * issues:https://github.com/ant-design/ant-design/issues/36866\n * 为了兼容,在 Pagination 中添加了 selectComponentClass 属性,后期antd 官方优化了bug,可取消 配置selectComponentClass\n * @param props\n * @returns\n */\nexport const MiniSelect: CompoundedComponent = (props) => (\n <Select {...props} size=\"small\" placement=\"topLeft\" />\n);\n\nMiniSelect.Option = Select.Option;\n","import { isArray, isUndefined } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Pagination, PaginationProps } from 'antd';\nimport { forwardRef, ReactElement, useImperativeHandle, useMemo, useState } from 'react';\nimport { EasyTableCtxProvider } from './context';\nimport { easyTableModel } from './model';\nimport { MiniSelect } from './select';\nimport './style.less';\nimport { EasyTableRefApi } from './type';\n\ntype EasyTableServiceConfig = {\n /** 接口配置 */\n onRequest: (params?: TPlainObject) => Promise<TPlainObject | TPlainObject[]>;\n /** 请求参数处理 */\n requestParamsAdapter?: (params: TPlainObject) => TPlainObject;\n /**\n * 接口相应数据处理\n * @param params\n * ```\n * 返回数据为对象,包含两个字段\n * 1. 表格列表数据 - Array\n * 2. 表格条数总数 - Number\n * 其中 字段key 命名会通过 fieldNames 进行转义\n * ```\n */\n requestResultAdapter?: (params: TAny) => TPlainObject;\n};\n\nexport type EasyTableProps = {\n children: ReactElement | ReactElement[];\n /** EasyTable唯一值,可用于缓存查询条件 */\n modelKey: string;\n /** 接口数据配置 */\n serviceConfig: EasyTableServiceConfig;\n /**\n * 1. 查询条件Form initialValues\n * 2. 接口其他参数,例如常量类型\n */\n initialValues?: TPlainObject;\n /**\n * 分页初始化参数,默认值: pageSize = 10\n * @deprecated 使用 pageSize 赋值\n */\n initialPaginationParams?: { pageSize?: number };\n /** 分页单页条数,默认值:10 */\n pageSize?: number;\n /** 字段映射 */\n fieldNames?: { list?: string; total?: string; pageNo?: string; pageSize?: string; uid?: string };\n /** 初始化是否请求,默认值:true */\n initRequest?: boolean;\n onDataSourceChange?: (dataSource: TAny) => void;\n /** 如果自定义查询按钮,可设置 Form onFinish */\n onFormFinish?: (values?: TPlainObject) => void;\n /** 在父节点高度下,上下铺满;默认值:true */\n isFull?: boolean;\n /** 查询条件固定,不随滚动条滚动 */\n filterFixed?: boolean;\n /** 分页区域固定,不随滚动条滚动 */\n paginationFixed?: boolean;\n /**\n * 1. 配合paginationFixed=true一起使用有效果\n * 2. 当使用Table内的pagination时,在EasyTable.Table中配置分页属性\n */\n pagination?: PaginationProps;\n /**\n * 查询条件展开、收起,被收起key数组;数组内容为EasyTable.Filter 子节点key值\n */\n foldKeys?: string[];\n};\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props: EasyTableProps, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>([]);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const [state, actions] = easyTableModel(props.modelKey).useStore();\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const [paginationStatus, setPaginationStatus] = useState(false);\n\n const fieldNames = {\n list: 'list',\n total: 'tatal',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm();\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n setLoading(true);\n const allState = await actions.updateFilterCondition(params);\n const queryCondition = cloneState(allState.queryCondition || {});\n const { requestParamsAdapter, onRequest, requestResultAdapter } = props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(queryCondition) : queryCondition;\n const respData = (await onRequest(paramsNew)) || {};\n props.onDataSourceChange?.(respData);\n const respDataNew = requestResultAdapter ? requestResultAdapter(respData) : respData;\n const respList = respDataNew[fieldNames.list];\n setDataSource(isArray(respList) ? respList : []);\n setTotal(respDataNew[fieldNames.total]);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n void message.error(error.message);\n }\n });\n\n const clearQueryCondition = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (values) {\n void actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n }\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (paginationStatus) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {};\n }\n };\n\n const onResetRequest = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n void onInnerRequest({\n ...getPaginationData(1, pageSize),\n ...props.initialValues,\n ...values,\n });\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...state.queryCondition,\n ...form.getFieldsValue(),\n };\n });\n\n const getEasyTableRef = () => {\n return {\n onRequest: onInnerRequest,\n clearQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n setPaginationStatus(status);\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({ ...values, ...getPaginationData(1, state.queryCondition.pageSize) });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, state.queryCondition.pageSize),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames('fba-easy-table', {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n });\n\n const paginationData = useMemo(() => {\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, fieldNames.pageSize, pageSize, props.pagination, state.queryCondition, total]);\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n void onInnerRequest({ [fieldNames.pageSize]: pageSize, [fieldNames.pageNo]: page });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n return (\n <EasyTableCtxProvider\n value={{\n getEasyTableRef,\n modelKey: props.modelKey,\n onRequest: onInnerRequest,\n tableList: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n initRequest,\n initialValues: props.initialValues || {},\n onSetPaginationStatus,\n paginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n }}\n >\n {props.paginationFixed ? (\n <div className=\"fba-easy-table-wrapper\">\n <div className={className}>{props.children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <Pagination\n size=\"small\"\n {...paginationData}\n onChange={onChange}\n selectComponentClass={MiniSelect}\n />\n </div>\n )}\n </div>\n ) : (\n <div className={className}>{props.children}</div>\n )}\n </EasyTableCtxProvider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Form, FormInstance } from 'antd';\nimport { Children, ReactElement, useMemo, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { SimpleLayout } from '../simple-layout';\nimport { useEasyTableCtx } from './context';\nimport { easyTableModel } from './model';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n // 查询按钮配置\n queryButtonProps?: Omit<ButtonProps, 'onClick'> & { text?: string };\n // 重置按钮配置\n resetButtonProps?: Omit<ButtonProps, 'onClick'> & { text?: string };\n};\n\n/**\n * 过滤条件\n * @param props\n * @returns\n *\n *```\n *1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 Form.Item\n * <EasyTableFilter>\n * <FormCol span={12}><Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item></FormCol>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * }}\n * </EasyTableFilter>\n *2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n *3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n *4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const { queryButtonProps, resetButtonProps, filterOperate } = props;\n const {\n modelKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n paginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = useEasyTableCtx();\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n const childrens = Children.toArray(children) as ReactElement[];\n\n const [openFold, setOpenFold] = useState(false);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\n\n const onReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (paginationStatus) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n });\n\n const formRowChildren = useMemo(() => {\n const formOperateColProps = {\n rightList: [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ],\n leftList: [],\n ...filterOperate?.(form),\n };\n\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n const { rightList, leftList } = formOperateColProps;\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.type['domTypeName'] === 'FormCol') {\n return item;\n }\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(<FormGrid.OperateCol key={999} {...formOperateColProps} />);\n }, [childrens, filterOperate, foldKeys, form, onReset, openFold, queryButtonProps, resetButtonProps]);\n\n return (\n <SimpleLayout className=\"easy-table-filter\">\n <Form\n form={form}\n onFinish={onFormFinish}\n initialValues={{\n ...initialValues,\n ...state.queryCondition,\n }}\n >\n {props.isPure ? children : <FormGrid.Row gutter={[15, 0]}>{formRowChildren}</FormGrid.Row>}\n </Form>\n </SimpleLayout>\n );\n};\n","import { useRef } from 'react';\nimport { useEasyTableCtx } from './context';\nimport { EasyTableRefApi } from './type';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useEasyTableCtx();\n const resp = useRef(ctx.getEasyTableRef());\n return resp.current;\n};\n\n/**\n *\n * @deprecated 已过去,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const { getEasyTableRef } = useEasyTableCtx();\n const ref = useRef<EasyTableRefApi>(getEasyTableRef());\n return ref;\n};\n","import { getUuid, isMacEnv, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Table, TableProps } from 'antd';\nimport { ReactElement, useMemo } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { SimpleLayout } from '../simple-layout';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { useEasyTableCtx } from './context';\nimport { easyTableModel } from './model';\nimport { MiniSelect } from './select';\n\nexport type EasyTableTableProps = Omit<TableProps<TAny>, 'dataSource' | 'loading' | 'rowKey'> & {\n children?: ReactElement | ReactElement[];\n /** 表格行 key 的取值 */\n rowKey: string;\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * ```\n */\nexport const EasyTableTable = (props: EasyTableTableProps) => {\n const { children, rowKey, pagination, ...otherProps } = props;\n\n const {\n modelKey,\n fieldNames,\n onRequest,\n tableList,\n initRequest,\n pageSize,\n tableTotal,\n loading,\n initialValues,\n paginationFixed,\n onSetPaginationStatus,\n } = useEasyTableCtx();\n const [state, actions] = easyTableModel(modelKey).useStore();\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n selectComponentClass: MiniSelect,\n };\n }, [\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n state.queryCondition,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (data, ...otherProps) => {\n if (tablePaginationData) {\n onRequest({ [fieldNames.pageSize]: data.pageSize, [fieldNames.pageNo]: data.current });\n }\n props.onChange?.(data, ...otherProps);\n };\n\n const dataSource = useMemo(() => {\n if (tableList.length === 0) {\n return [];\n }\n if (isUndefinedOrNull(tableList[0][rowKey])) {\n return tableList.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableList;\n }, [tableList, rowKey]);\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = paginationFixed || tablePaginationData !== false;\n onSetPaginationStatus(hasPagination);\n if (initRequest !== false || !state.isInit) {\n if (hasPagination) {\n void onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n void onRequest(initialValues);\n }\n } else {\n void actions.updateFilterCondition(initialValues);\n }\n void actions.updateInitStatus();\n }, []);\n\n return (\n <SimpleLayout className=\"easy-table-table\">\n {children}\n {isMacEnv() ? (\n <Table\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n ) : (\n <TableScrollbar>\n <Table\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n )}\n </SimpleLayout>\n );\n};\n","import { attachPropertiesToComponent } from '../_utils/attach-properties-to-component';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * 1. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 2. 可通过属性 initRequest 设置初始化是否请求数据\n * 3. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 4. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 5. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 6. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 7. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n *\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n * ```\n */\nexport const EasyTable = attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n * @param props\n * @returns\n *\n *```\n *1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 Form.Item\n * <EasyTable.Filter>\n * <FormCol span={12}><Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item></FormCol>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * }}\n * </EasyTable.Filter>\n *2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n *3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n *4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * ```\n */\n Table: EasyTableTable,\n\n /**\n * @deprecated 已过去,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n});\n"],"names":["_createCtx","_createCtx2","useEasyTableCtx","EasyTableCtxProvider","defaultState","queryCondition","isInit","_EasyTableModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","easyTableModels","easyTableModel","key","Model","MiniSelect","props","_jsx","Select","size","placement","Option","EasyTable","forwardRef","ref","_props$initialPaginat","_useState","useState","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","_easyTableModel$useSt","modelKey","useStore","pageSize","initialPaginationParams","initRequest","undefined","_useState4","paginationStatus","setPaginationStatus","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","Promise","$return","$error","allState","_props$serviceConfig","requestParamsAdapter","onRequest","requestResultAdapter","paramsNew","respData","respDataNew","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","resolve","then","$await_2","cloneState","serviceConfig","$await_3","onDataSourceChange","_isArray","clearQueryCondition","values","$await_4","resetFields","setFieldsValue","getPaginationData","_pageSize","_ref","onResetRequest","$await_5","initialValues","getRequestParams","getFieldsValue","getEasyTableRef","useImperativeHandle","onSetPaginationStatus","status","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","useMemo","showSizeChanger","current","showTotal","pagination","onChange","page","_onInnerRequest","_props$pagination","value","tableList","tableTotal","foldKeys","children","_jsxs","Pagination","selectComponentClass","EasyTableFilter","queryButtonProps","resetButtonProps","filterOperate","_useEasyTableCtx","childrens","Children","toArray","openFold","setOpenFold","onReset","_extends2","$await_1","formRowChildren","formOperateColProps","rightList","hidden","ButtonWrapper","type","htmlType","text","onClick","leftList","length","changeFolditem","style","padding","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","map","item","index","find","keyItem","FormGrid","Col","filter","Boolean","concat","OperateCol","SimpleLayout","onFinish","isPure","Row","gutter","useEasyTable","ctx","resp","useRef","useEasyTablRef","EasyTableTable","rowKey","otherProps","_objectWithoutPropertiesLoose","_excluded","tablePaginationData","onChangePage","data","_onRequest","_len","arguments","Array","_key","apply","isUndefinedOrNull","getUuid","fbaHooks","useEffectCustom","hasPagination","isMacEnv","Table","scroll","x","bordered","TableScrollbar","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/model.ts","@flatbiz/antd/src/easy-table/select.tsx","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\nimport { FormInstance } from 'antd';\nimport { EasyTableRefApi } from './type';\n\nexport const [useEasyTableCtx, EasyTableCtxProvider] = createCtx<{\n modelKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableList: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initRequest: boolean;\n initialValues: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n paginationStatus: boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n}>();\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition: void;\n updateInitStatus: void;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n};\n\nconst _EasyTableModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: () => {\n return (state) => {\n state.queryCondition = defaultState.queryCondition;\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n },\n state: defaultState,\n};\n\nconst easyTableModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const easyTableModel = (key: string) => {\n if (!easyTableModels[key]) {\n easyTableModels[key] = Model(_EasyTableModel);\n }\n return easyTableModels[key];\n};\n","import { Select, SelectProps } from 'antd';\nimport * as React from 'react';\n\ntype CompoundedComponent = React.FC<SelectProps> & {\n Option: typeof Select.Option;\n};\n\n/**\n * 由于 antd 5.3.x 分页Pagination组件,存在点击分页选择框框时,一直朝下\n * issues:https://github.com/ant-design/ant-design/issues/36866\n * 为了兼容,在 Pagination 中添加了 selectComponentClass 属性,后期antd 官方优化了bug,可取消 配置selectComponentClass\n * @param props\n * @returns\n */\nexport const MiniSelect: CompoundedComponent = (props) => (\n <Select {...props} size=\"small\" placement=\"topLeft\" />\n);\n\nMiniSelect.Option = Select.Option;\n","import { isArray, isUndefined } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Pagination, PaginationProps } from 'antd';\nimport { forwardRef, ReactElement, useImperativeHandle, useMemo, useState } from 'react';\nimport { EasyTableCtxProvider } from './context';\nimport { easyTableModel } from './model';\nimport { MiniSelect } from './select';\nimport './style.less';\nimport { EasyTableRefApi } from './type';\n\ntype EasyTableServiceConfig = {\n /** 接口配置 */\n onRequest: (params?: TPlainObject) => Promise<TPlainObject | TPlainObject[]>;\n /** 请求参数处理 */\n requestParamsAdapter?: (params: TPlainObject) => TPlainObject;\n /**\n * 接口相应数据处理\n * @param params\n * ```\n * 返回数据为对象,包含两个字段\n * 1. 表格列表数据 - Array\n * 2. 表格条数总数 - Number\n * 其中 字段key 命名会通过 fieldNames 进行转义\n * ```\n */\n requestResultAdapter?: (params: TAny) => TPlainObject;\n};\n\nexport type EasyTableProps = {\n children: ReactElement | ReactElement[];\n /** EasyTable唯一值,可用于缓存查询条件 */\n modelKey: string;\n /** 接口数据配置 */\n serviceConfig: EasyTableServiceConfig;\n /**\n * 1. 查询条件Form initialValues\n * 2. 接口其他参数,例如常量类型\n */\n initialValues?: TPlainObject;\n /**\n * 分页初始化参数,默认值: pageSize = 10\n * @deprecated 使用 pageSize 赋值\n */\n initialPaginationParams?: { pageSize?: number };\n /** 分页单页条数,默认值:10 */\n pageSize?: number;\n /** 字段映射 */\n fieldNames?: { list?: string; total?: string; pageNo?: string; pageSize?: string; uid?: string };\n /** 初始化是否请求,默认值:true */\n initRequest?: boolean;\n onDataSourceChange?: (dataSource: TAny) => void;\n /** 如果自定义查询按钮,可设置 Form onFinish */\n onFormFinish?: (values?: TPlainObject) => void;\n /** 在父节点高度下,上下铺满;默认值:true */\n isFull?: boolean;\n /** 查询条件固定,不随滚动条滚动 */\n filterFixed?: boolean;\n /** 分页区域固定,不随滚动条滚动 */\n paginationFixed?: boolean;\n /**\n * 1. 配合paginationFixed=true一起使用有效果\n * 2. 当使用Table内的pagination时,在EasyTable.Table中配置分页属性\n */\n pagination?: PaginationProps;\n /**\n * 查询条件展开、收起,被收起key数组;数组内容为EasyTable.Filter 子节点key值\n */\n foldKeys?: string[];\n};\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props: EasyTableProps, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>([]);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const [state, actions] = easyTableModel(props.modelKey).useStore();\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const [paginationStatus, setPaginationStatus] = useState(false);\n\n const fieldNames = {\n list: 'list',\n total: 'tatal',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm();\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n setLoading(true);\n const allState = await actions.updateFilterCondition(params);\n const queryCondition = cloneState(allState.queryCondition || {});\n const { requestParamsAdapter, onRequest, requestResultAdapter } = props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(queryCondition) : queryCondition;\n const respData = (await onRequest(paramsNew)) || {};\n props.onDataSourceChange?.(respData);\n const respDataNew = requestResultAdapter ? requestResultAdapter(respData) : respData;\n const respList = respDataNew[fieldNames.list];\n setDataSource(isArray(respList) ? respList : []);\n setTotal(respDataNew[fieldNames.total]);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n void message.error(error.message);\n }\n });\n\n const clearQueryCondition = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (values) {\n void actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n }\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (paginationStatus) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {};\n }\n };\n\n const onResetRequest = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n void onInnerRequest({\n ...getPaginationData(1, pageSize),\n ...props.initialValues,\n ...values,\n });\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...state.queryCondition,\n ...form.getFieldsValue(),\n };\n });\n\n const getEasyTableRef = () => {\n return {\n onRequest: onInnerRequest,\n clearQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n setPaginationStatus(status);\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({ ...values, ...getPaginationData(1, state.queryCondition.pageSize) });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, state.queryCondition.pageSize),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames('fba-easy-table', {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n });\n\n const paginationData = useMemo(() => {\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, fieldNames.pageSize, pageSize, props.pagination, state.queryCondition, total]);\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n void onInnerRequest({ [fieldNames.pageSize]: pageSize, [fieldNames.pageNo]: page });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n return (\n <EasyTableCtxProvider\n value={{\n getEasyTableRef,\n modelKey: props.modelKey,\n onRequest: onInnerRequest,\n tableList: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n initRequest,\n initialValues: props.initialValues || {},\n onSetPaginationStatus,\n paginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n }}\n >\n {props.paginationFixed ? (\n <div className=\"fba-easy-table-wrapper\">\n <div className={className}>{props.children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <Pagination\n size=\"small\"\n {...paginationData}\n onChange={onChange}\n selectComponentClass={MiniSelect}\n />\n </div>\n )}\n </div>\n ) : (\n <div className={className}>{props.children}</div>\n )}\n </EasyTableCtxProvider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Form, FormInstance } from 'antd';\nimport { Children, ReactElement, useMemo, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { SimpleLayout } from '../simple-layout';\nimport { useEasyTableCtx } from './context';\nimport { easyTableModel } from './model';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n // 查询按钮配置\n queryButtonProps?: Omit<ButtonProps, 'onClick'> & { text?: string };\n // 重置按钮配置\n resetButtonProps?: Omit<ButtonProps, 'onClick'> & { text?: string };\n};\n\n/**\n * 过滤条件\n * @param props\n * @returns\n *\n *```\n *1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 Form.Item\n * <EasyTableFilter>\n * <FormCol span={12}><Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item></FormCol>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * }}\n * </EasyTableFilter>\n *2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n *3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n *4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const { queryButtonProps, resetButtonProps, filterOperate } = props;\n const {\n modelKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n paginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = useEasyTableCtx();\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n const childrens = Children.toArray(children) as ReactElement[];\n\n const [openFold, setOpenFold] = useState(false);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\n\n const onReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (paginationStatus) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n });\n\n const formRowChildren = useMemo(() => {\n const formOperateColProps = {\n rightList: [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ],\n leftList: [],\n ...filterOperate?.(form),\n };\n\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n const { rightList, leftList } = formOperateColProps;\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.type['domTypeName'] === 'FormCol') {\n return item;\n }\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(<FormGrid.OperateCol key={999} {...formOperateColProps} />);\n }, [childrens, filterOperate, foldKeys, form, onReset, openFold, queryButtonProps, resetButtonProps]);\n\n return (\n <SimpleLayout className=\"easy-table-filter\">\n <Form\n form={form}\n onFinish={onFormFinish}\n initialValues={{\n ...initialValues,\n ...state.queryCondition,\n }}\n >\n {props.isPure ? children : <FormGrid.Row gutter={[15, 0]}>{formRowChildren}</FormGrid.Row>}\n </Form>\n </SimpleLayout>\n );\n};\n","import { useRef } from 'react';\nimport { useEasyTableCtx } from './context';\nimport { EasyTableRefApi } from './type';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useEasyTableCtx();\n const resp = useRef(ctx.getEasyTableRef());\n return resp.current;\n};\n\n/**\n *\n * @deprecated 已过去,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const { getEasyTableRef } = useEasyTableCtx();\n const ref = useRef<EasyTableRefApi>(getEasyTableRef());\n return ref;\n};\n","import { getUuid, isMacEnv, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Table, TableProps } from 'antd';\nimport { ReactElement, useMemo } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { SimpleLayout } from '../simple-layout';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { useEasyTableCtx } from './context';\nimport { easyTableModel } from './model';\nimport { MiniSelect } from './select';\n\nexport type EasyTableTableProps = Omit<TableProps<TAny>, 'dataSource' | 'loading' | 'rowKey'> & {\n children?: ReactElement | ReactElement[];\n /** 表格行 key 的取值 */\n rowKey: string;\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * ```\n */\nexport const EasyTableTable = (props: EasyTableTableProps) => {\n const { children, rowKey, pagination, ...otherProps } = props;\n\n const {\n modelKey,\n fieldNames,\n onRequest,\n tableList,\n initRequest,\n pageSize,\n tableTotal,\n loading,\n initialValues,\n paginationFixed,\n onSetPaginationStatus,\n } = useEasyTableCtx();\n const [state, actions] = easyTableModel(modelKey).useStore();\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n selectComponentClass: MiniSelect,\n };\n }, [\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n state.queryCondition,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (data, ...otherProps) => {\n if (tablePaginationData) {\n onRequest({ [fieldNames.pageSize]: data.pageSize, [fieldNames.pageNo]: data.current });\n }\n props.onChange?.(data, ...otherProps);\n };\n\n const dataSource = useMemo(() => {\n if (tableList.length === 0) {\n return [];\n }\n if (isUndefinedOrNull(tableList[0][rowKey])) {\n return tableList.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableList;\n }, [tableList, rowKey]);\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = paginationFixed || tablePaginationData !== false;\n onSetPaginationStatus(hasPagination);\n if (initRequest !== false || !state.isInit) {\n if (hasPagination) {\n void onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n void onRequest(initialValues);\n }\n } else {\n void actions.updateFilterCondition(initialValues);\n }\n void actions.updateInitStatus();\n }, []);\n\n return (\n <SimpleLayout className=\"easy-table-table\">\n {children}\n {isMacEnv() ? (\n <Table\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n ) : (\n <TableScrollbar>\n <Table\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n )}\n </SimpleLayout>\n );\n};\n","import { attachPropertiesToComponent } from '../_utils/attach-properties-to-component';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * 1. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 2. 可通过属性 initRequest 设置初始化是否请求数据\n * 3. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 4. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 5. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 6. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 7. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 8. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提示高windows下table左右滚动体验\n *\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n * ```\n */\nexport const EasyTable = attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n * @param props\n * @returns\n *\n *```\n *1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 Form.Item\n * <EasyTable.Filter>\n * <FormCol span={12}><Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item></FormCol>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <Form.Item name=\"field1\" label=\"条件1\">xxx</Form.Item>\n * }}\n * </EasyTable.Filter>\n *2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n *3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n *4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * ```\n */\n Table: EasyTableTable,\n\n /**\n * @deprecated 已过去,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n});\n"],"names":["_createCtx","_createCtx2","useEasyTableCtx","EasyTableCtxProvider","defaultState","queryCondition","isInit","_EasyTableModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","easyTableModels","easyTableModel","key","Model","MiniSelect","props","_jsx","Select","size","placement","Option","EasyTable","forwardRef","ref","_props$initialPaginat","_useState","useState","dataSource","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","_easyTableModel$useSt","modelKey","useStore","pageSize","initialPaginationParams","initRequest","undefined","_useState4","paginationStatus","setPaginationStatus","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","_hooks","useCallbackRef","Promise","$return","$error","allState","_props$serviceConfig","requestParamsAdapter","onRequest","requestResultAdapter","paramsNew","respData","respDataNew","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","resolve","then","$await_2","cloneState","serviceConfig","$await_3","onDataSourceChange","_isArray","clearQueryCondition","values","$await_4","resetFields","setFieldsValue","getPaginationData","_pageSize","_ref","onResetRequest","$await_5","initialValues","getRequestParams","getFieldsValue","getEasyTableRef","useImperativeHandle","onSetPaginationStatus","status","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","useMemo","showSizeChanger","current","showTotal","pagination","onChange","page","_onInnerRequest","_props$pagination","value","tableList","tableTotal","foldKeys","children","_jsxs","Pagination","selectComponentClass","EasyTableFilter","queryButtonProps","resetButtonProps","filterOperate","_useEasyTableCtx","childrens","Children","toArray","openFold","setOpenFold","onReset","_extends2","$await_1","formRowChildren","formOperateColProps","rightList","hidden","ButtonWrapper","type","htmlType","text","onClick","leftList","length","changeFolditem","style","padding","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","map","item","index","find","keyItem","FormGrid","Col","filter","Boolean","concat","OperateCol","SimpleLayout","onFinish","isPure","Row","gutter","useEasyTable","ctx","resp","useRef","useEasyTablRef","EasyTableTable","rowKey","otherProps","_objectWithoutPropertiesLoose","_excluded","tablePaginationData","onChangePage","data","_onRequest","_len","arguments","Array","_key","apply","isUndefinedOrNull","getUuid","fbaHooks","useEffectCustom","hasPagination","isMacEnv","Table","scroll","x","bordered","TableScrollbar","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{Editor as e}from"@wove/react/cjs/editor";import{a as t}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{hooks as r}from"@wove/react/cjs/hooks";import{useKeyPress as n}from"ahooks";import{useRef as a}from"react";import{jsx as o}from"react/jsx-runtime";var i=function i(l){var c=a(null);var u=r.useCallbackRef((function(e,t){var r=t.getContent();var n=r?r:undefined;l.onChange==null?void 0:l.onChange(n)}));var s=r.useCallbackRef((function(e,t,r){return new Promise((function(n,a){var o;var i=function(){try{return n()}catch(e){return a(e)}};var c=function(e){try{r(e.message);return i()}catch(e){return a(e)}};try{return Promise.resolve(l.onUploadImage==null?void 0:l.onUploadImage(e.blob())).then((function(e){try{o=e;t(o);return i()}catch(e){return c(e)}}),c)}catch(e){c(e)}}))}));n((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var t;var r=(t=c.current)==null?void 0:t.editorContainer.classList.contains("tox-fullscreen");if(r){var n;(n=c.current)==null?void 0:n.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});return o("div",{className:"v-editor-wrapper",children:o(e,t({value:l.value,cdnTinyMce:"https://file.40017.cn/tcsk/tinymce/tinymce.min.js",init:t({paste_data_images:!!l.onUploadImage,images_upload_handler:s,height:l.height||300,menubar:true,language:"zh_CN",paste_retain_style_properties:"all",table_default_styles:{width:"100%"},plugins:"advlist lists image charmap preview visualblocks code hr print media table paste help template fullscreen",toolbar:["undo redo fullscreen preview","formatselect bold italic backcolor bullist numlist","outdent indent alignleft aligncenter alignright alignjustify","textmark untextmark code preview","template link image help"].join("|"),fontsize_formats:"8px 10px 12px 14px 16px 18px 24px 36px 48px",autoresize_bottom_margin:50},l.editorInitParams,{setup:function e(t){var r;c.current=t;(r=l.editorInitParams)==null?void 0:r.setup(t)}})},l.editorProps,{onKeyDown:function e(t){var r;try{if(t.keyCode==27){var n;var a=(n=c.current)==null?void 0:n.editorContainer.classList.contains("tox-fullscreen");if(a){var o;(o=c.current)==null?void 0:o.editorCommands.execCommand("mceFullScreen")}}}catch(e){}(r=l.editorProps)==null?void 0:r.onKeyDown(t)},onEditorChange:u}))})};export{i as EditorWrapper};
4
+ import{Editor as e}from"@wove/react/cjs/editor";import{a as r}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{hooks as n}from"@wove/react/cjs/hooks";import{useKeyPress as o}from"ahooks";import{useRef as a}from"react";import{jsx as i}from"react/jsx-runtime";var l=function l(s){var u=a(null);var c=n.useCallbackRef((function(e,r){var t=r.getContent();var n=t?t:undefined;s.onChange==null?void 0:s.onChange(n)}));var m=n.useCallbackRef((function(e,r,t){return new Promise((function(n,o){var a;var i=function(){try{return n()}catch(e){return o(e)}};var l=function(e){try{t(e.message);return i()}catch(e){return o(e)}};try{return Promise.resolve(s.onUploadImage==null?void 0:s.onUploadImage(e.blob())).then((function(e){try{a=e;r(a);return i()}catch(e){return l(e)}}),l)}catch(e){l(e)}}))}));o((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var r;var t=(r=u.current)==null?void 0:r.editorContainer.classList.contains("tox-fullscreen");if(t){var n;(n=u.current)==null?void 0:n.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});var d=n.useCallbackRef((function(e){var r;try{if(e.keyCode==27){var t;var n=(t=u.current)==null?void 0:t.editorContainer.classList.contains("tox-fullscreen");if(n){var o;(o=u.current)==null?void 0:o.editorCommands.execCommand("mceFullScreen")}}}catch(e){}(r=s.editorProps)==null?void 0:r.onKeyDown==null?void 0:r.onKeyDown(e)}));return i("div",{className:t("v-editor-wrapper",s.className),children:i(e,r({value:s.value,cdnTinyMce:"https://file.40017.cn/tcsk/tinymce/tinymce.min.js",init:r({paste_data_images:!!s.onUploadImage,images_upload_handler:m,height:s.height||500,menubar:true,resize:true,language:"zh_CN",paste_retain_style_properties:"all",table_default_styles:{width:"100%"},plugins:"paste lists link image advlist charmap preview fullscreen code table help",toolbar:"undo redo fullscreen preview | bold italic underline strikethrough |"+"fontsizeselect formatselect |"+"alignleft aligncenter alignright alignjustify |"+"outdent indent | numlist bullist advlist |"+"forecolor backcolor removeformat |"+"code image link",fontsize_formats:"8px 10px 12px 14px 16px 18px 24px 36px 48px",autoresize_bottom_margin:50},s.editorInitParams,{setup:function e(r){var t;u.current=r;(t=s.editorInitParams)==null?void 0:t.setup==null?void 0:t.setup(r)}})},s.editorProps,{onKeyDown:d,onEditorChange:c}))})};export{l as EditorWrapper};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editor-wrapper/editor-wrapper.tsx"],"sourcesContent":["import { TAny, TPlainObject } from '@flatbiz/utils';\nimport { Editor, hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { useRef } from 'react';\nimport './style.less';\n\nexport type EditorWrapperProps = {\n onChange?: (data?: string) => void;\n value?: string;\n editorInitParams?: TPlainObject;\n editorProps?: TPlainObject;\n // varStyle?: Record<varStyles, CSSProperties['color']>;\n height?: number | string;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n};\n\n/**\n * 富文本编辑器,配置参考tinymce\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 如果不需要粘贴上传图片,可配置 editorInitParams.paste_data_images = false\n * 3. 获取富文本实例,通过editorInitParams.setup(editor)函数获取\n *\n * ```\n */\nexport const EditorWrapper = (props: EditorWrapperProps) => {\n const editorRef = useRef<TAny>(null);\n\n const onChange = hooks.useCallbackRef((_, editor) => {\n const content = editor.getContent();\n const respValue = content ? content : undefined;\n props.onChange?.(respValue);\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 const images_upload_handler = hooks.useCallbackRef(async (blobInfo, success, failure) => {\n try {\n const respData = await props.onUploadImage?.(blobInfo.blob());\n success(respData);\n } catch (error) {\n failure(error.message);\n }\n });\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 return (\n <div className=\"v-editor-wrapper\">\n <Editor\n value={props.value}\n cdnTinyMce=\"https://file.40017.cn/tcsk/tinymce/tinymce.min.js\"\n init={{\n paste_data_images: !!props.onUploadImage,\n images_upload_handler,\n height: props.height || 300,\n menubar: true,\n language: 'zh_CN',\n paste_retain_style_properties: 'all',\n table_default_styles: {\n width: '100%',\n },\n plugins:\n 'advlist lists image charmap preview visualblocks code hr print media table paste help template fullscreen',\n toolbar: [\n 'undo redo fullscreen preview',\n 'formatselect bold italic backcolor bullist numlist',\n 'outdent indent alignleft aligncenter alignright alignjustify',\n 'textmark untextmark code preview',\n 'template link image help',\n ].join('|'),\n fontsize_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n autoresize_bottom_margin: 50,\n // templates: [\n // editorTemplates.block,\n // editorTemplates.primary_p,\n // editorTemplates.secondary_p,\n // editorTemplates.warning_p,\n // editorTemplates.danger_p,\n // editorTemplates.success_p,\n // editorTemplates.p,\n // ],\n // template_replace_values: {\n // varStyle: varStyleString,\n // },\n // template_preview_replace_values: {\n // varStyle: varStyleString,\n // },\n ...props.editorInitParams,\n setup: (editor) => {\n editorRef.current = editor;\n props.editorInitParams?.setup(editor);\n },\n }}\n {...props.editorProps}\n onKeyDown={(event) => {\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.editorProps?.onKeyDown(event);\n }}\n onEditorChange={onChange}\n />\n </div>\n );\n};\n\n/**\n * undo redo\n * codesample\n * fontselect fontsizeselect formatselect\n * image media link anchor\n * preview save print\n * emoticons(表情)\n */\n"],"names":["EditorWrapper","props","editorRef","useRef","onChange","_hooks","useCallbackRef","_","editor","content","getContent","respValue","undefined","images_upload_handler","blobInfo","success","failure","Promise","$return","$error","respData","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","resolve","onUploadImage","blob","then","$await_4","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","events","_jsx","className","children","_Editor","_extends","value","cdnTinyMce","init","paste_data_images","height","menubar","language","paste_retain_style_properties","table_default_styles","width","plugins","toolbar","join","fontsize_formats","autoresize_bottom_margin","editorInitParams","setup","_props$editorInitPara","editorProps","onKeyDown","_props$editorProps","keyCode","_editorRef$current3","_editorRef$current4","onEditorChange"],"mappings":";2QA4BaA,EAAgB,SAAhBA,EAAiBC,GAC5B,IAAMC,EAAYC,EAAa,MAE/B,IAAMC,EAAWC,EAAMC,gBAAe,SAACC,EAAGC,GACxC,IAAMC,EAAUD,EAAOE,aACvB,IAAMC,EAAYF,EAAUA,EAAUG,UACtCX,EAAMG,UAANH,UAAAA,EAAAA,EAAMG,SAAWO,EACnB,IAWA,IAAME,EAAwBR,EAAMC,gBAAe,SAAOQ,EAAUC,EAASC,GAA1B,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IAEzCC,EAhDZ,IAAIC,aAAJ,IAAI,OAAAH,GAAK,CAAC,MAAAI,GAAW,OAAOH,EAAAG,EAAM,GAAlC,IAAIC,EAAA,SAkDSC,GAlDb,IAmDMR,EAAQQ,EAAMC,SAnDpB,OAAOJ,GAAE,CAAC,MAAAC,GAAW,OAAOH,EAAAG,EAAM,GA+C9B,IACmB,OAAAL,QAAAS,QAAMzB,EAAM0B,2BAAN1B,EAAM0B,cAAgBb,EAASc,SAArCC,eAA4CC,GAhDnE,IAgDYV,EAAWU,EACjBf,EAAQK,GAjDd,OAAOC,GAAE,CAAC,MAAAC,GAAW,OAAOC,EAAAD,EAAM,CAAC,GAAAC,EAkD9B,CAAC,MAAOC,GAAOD,EAAPC,EAET,CAAC,OAGHO,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,IACE,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,SAAU,CAAA,IAAAC,EACpD,IAAMC,GAAMD,EAAGjC,EAAUmC,UAAO,UAAA,EAAjBF,EAAmBG,gBAAgBC,UAAUC,SAAS,kBACrE,GAAIJ,EAAQ,CAAA,IAAAK,GACVA,EAAAvC,EAAUmC,UAAO,UAAA,EAAjBI,EAAmBC,eAAeC,YAAY,gBAChD,CACF,CACD,CAAC,MAAOnB,GACP,CAEJ,GACA,CACEoB,OAAQ,CAAC,UAAW,WAIxB,OACEC,EAAA,MAAA,CAAKC,UAAU,mBAAkBC,SAC/BF,EAAAG,EAAAC,EAAA,CACEC,MAAOjD,EAAMiD,MACbC,WAAW,oDACXC,KAAIH,EAAA,CACFI,oBAAqBpD,EAAM0B,cAC3Bd,sBAAAA,EACAyC,OAAQrD,EAAMqD,QAAU,IACxBC,QAAS,KACTC,SAAU,QACVC,8BAA+B,MAC/BC,qBAAsB,CACpBC,MAAO,QAETC,QACE,4GACFC,QAAS,CACP,+BACA,qDACA,+DACA,mCACA,4BACAC,KAAK,KACPC,iBAAkB,8CAClBC,yBAA0B,IAgBvB/D,EAAMgE,iBAAgB,CACzBC,MAAO,SAAAA,EAAC1D,GAAW,IAAA2D,EACjBjE,EAAUmC,QAAU7B,GACpB2D,EAAAlE,EAAMgE,mBAANE,UAAAA,EAAAA,EAAwBD,MAAM1D,EAChC,KAEEP,EAAMmE,YAAW,CACrBC,UAAW,SAAAA,EAACrC,GAAU,IAAAsC,EACpB,IACE,GAAItC,EAAMuC,SAAW,GAAI,CAAA,IAAAC,EACvB,IAAMpC,GAAMoC,EAAGtE,EAAUmC,UAAO,UAAA,EAAjBmC,EAAmBlC,gBAAgBC,UAAUC,SAAS,kBACrE,GAAIJ,EAAQ,CAAA,IAAAqC,GACVA,EAAAvE,EAAUmC,UAAO,UAAA,EAAjBoC,EAAmB/B,eAAeC,YAAY,gBAChD,CACF,CACD,CAAC,MAAOnB,GACP,EAEF8C,EAAArE,EAAMmE,cAANE,UAAAA,EAAAA,EAAmBD,UAAUrC,EAC7B,EACF0C,eAAgBtE,MAIxB"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editor-wrapper/editor-wrapper.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { Editor, hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { useRef } from 'react';\nimport './style.less';\n\nexport type EditorWrapperProps = {\n onChange?: (data?: string) => void;\n value?: string;\n editorInitParams?: TPlainObject;\n editorProps?: {\n disabled?: boolean;\n onKeyDown?: (event) => void;\n };\n // varStyle?: Record<varStyles, CSSProperties['color']>;\n height?: number | string;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n className?: string;\n};\n\n/**\n * 富文本编辑器,配置参考tinymce\n * @deprecated 已过时,请使用 RichTextEditor 组件\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 如果不需要粘贴上传图片,可配置 editorInitParams.paste_data_images = false\n * 3. 获取富文本实例,通过editorInitParams.setup(editor)函数获取\n * 4. 可在 editorInitParams 中自定义 plugins、toolbar\n * 5. 预览富文本数据,使用 EditorViewer 组件\n *\n * ```\n */\nexport const EditorWrapper = (props: EditorWrapperProps) => {\n const editorRef = useRef<TAny>(null);\n\n const onChange = hooks.useCallbackRef((_, editor) => {\n const content = editor.getContent();\n const respValue = content ? content : undefined;\n props.onChange?.(respValue);\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 const images_upload_handler = hooks.useCallbackRef(async (blobInfo, success, failure) => {\n try {\n const respData = await props.onUploadImage?.(blobInfo.blob());\n success(respData);\n } catch (error) {\n failure(error.message);\n }\n });\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) => {\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.editorProps?.onKeyDown?.(event);\n });\n\n return (\n <div className={classNames('v-editor-wrapper', props.className)}>\n <Editor\n value={props.value}\n cdnTinyMce=\"https://file.40017.cn/tcsk/tinymce/tinymce.min.js\"\n init={{\n paste_data_images: !!props.onUploadImage,\n images_upload_handler,\n height: props.height || 500,\n menubar: true,\n resize: true,\n language: 'zh_CN',\n paste_retain_style_properties: 'all',\n table_default_styles: {\n width: '100%',\n },\n plugins: 'paste lists link image advlist charmap preview fullscreen code table help',\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsizeselect formatselect |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent | numlist bullist advlist |' +\n 'forecolor backcolor removeformat |' +\n 'code image link',\n fontsize_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n autoresize_bottom_margin: 50,\n // templates: [\n // editorTemplates.block,\n // editorTemplates.primary_p,\n // editorTemplates.secondary_p,\n // editorTemplates.warning_p,\n // editorTemplates.danger_p,\n // editorTemplates.success_p,\n // editorTemplates.p,\n // ],\n // template_replace_values: {\n // varStyle: varStyleString,\n // },\n // template_preview_replace_values: {\n // varStyle: varStyleString,\n // },\n ...props.editorInitParams,\n setup: (editor) => {\n editorRef.current = editor;\n props.editorInitParams?.setup?.(editor);\n },\n }}\n {...props.editorProps}\n onKeyDown={onKeyDown}\n onEditorChange={onChange}\n />\n </div>\n );\n};\n\n/**\n * undo redo\n * codesample\n * fontselect fontsizeselect formatselect\n * image media link anchor\n * preview save print\n * emoticons(表情)\n */\n"],"names":["EditorWrapper","props","editorRef","useRef","onChange","_hooks","useCallbackRef","_","editor","content","getContent","respValue","undefined","images_upload_handler","blobInfo","success","failure","Promise","$return","$error","respData","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","resolve","onUploadImage","blob","then","$await_4","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","events","onKeyDown","_props$editorProps","keyCode","_editorRef$current3","_editorRef$current4","editorProps","_jsx","className","_classNames","children","_Editor","_extends","value","cdnTinyMce","init","paste_data_images","height","menubar","resize","language","paste_retain_style_properties","table_default_styles","width","plugins","toolbar","fontsize_formats","autoresize_bottom_margin","editorInitParams","setup","_props$editorInitPara","onEditorChange"],"mappings":";qUAoCaA,EAAgB,SAAhBA,EAAiBC,GAC5B,IAAMC,EAAYC,EAAa,MAE/B,IAAMC,EAAWC,EAAMC,gBAAe,SAACC,EAAGC,GACxC,IAAMC,EAAUD,EAAOE,aACvB,IAAMC,EAAYF,EAAUA,EAAUG,UACtCX,EAAMG,UAANH,UAAAA,EAAAA,EAAMG,SAAWO,EACnB,IAWA,IAAME,EAAwBR,EAAMC,gBAAe,SAAOQ,EAAUC,EAASC,GAA1B,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IAEzCC,EAxDZ,IAAIC,aAAJ,IAAI,OAAAH,GAAK,CAAC,MAAAI,GAAW,OAAOH,EAAAG,EAAM,GAAlC,IAAIC,EAAA,SA0DSC,GA1Db,IA2DMR,EAAQQ,EAAMC,SA3DpB,OAAOJ,GAAE,CAAC,MAAAC,GAAW,OAAOH,EAAAG,EAAM,GAuD9B,IACmB,OAAAL,QAAAS,QAAMzB,EAAM0B,2BAAN1B,EAAM0B,cAAgBb,EAASc,SAArCC,eAA4CC,GAxDnE,IAwDYV,EAAWU,EACjBf,EAAQK,GAzDd,OAAOC,GAAE,CAAC,MAAAC,GAAW,OAAOC,EAAAD,EAAM,CAAC,GAAAC,EA0D9B,CAAC,MAAOC,GAAOD,EAAPC,EAET,CAAC,OAGHO,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,IACE,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,SAAU,CAAA,IAAAC,EACpD,IAAMC,GAAMD,EAAGjC,EAAUmC,UAAO,UAAA,EAAjBF,EAAmBG,gBAAgBC,UAAUC,SAAS,kBACrE,GAAIJ,EAAQ,CAAA,IAAAK,GACVA,EAAAvC,EAAUmC,UAAO,UAAA,EAAjBI,EAAmBC,eAAeC,YAAY,gBAChD,CACF,CACD,CAAC,MAAOnB,GACP,CAEJ,GACA,CACEoB,OAAQ,CAAC,UAAW,WAIxB,IAAMC,EAAYxC,EAAMC,gBAAe,SAAC0B,GAAU,IAAAc,EAChD,IACE,GAAId,EAAMe,SAAW,GAAI,CAAA,IAAAC,EACvB,IAAMZ,GAAMY,EAAG9C,EAAUmC,UAAO,UAAA,EAAjBW,EAAmBV,gBAAgBC,UAAUC,SAAS,kBACrE,GAAIJ,EAAQ,CAAA,IAAAa,GACVA,EAAA/C,EAAUmC,UAAO,UAAA,EAAjBY,EAAmBP,eAAeC,YAAY,gBAChD,CACF,CACD,CAAC,MAAOnB,GACP,EAEFsB,EAAA7C,EAAMiD,cAANJ,UAAAA,EAAAA,EAAmBD,uBAAnBC,EAAmBD,UAAYb,EACjC,IAEA,OACEmB,EAAA,MAAA,CAAKC,UAAWC,EAAW,mBAAoBpD,EAAMmD,WAAWE,SAC9DH,EAAAI,EAAAC,EAAA,CACEC,MAAOxD,EAAMwD,MACbC,WAAW,oDACXC,KAAIH,EAAA,CACFI,oBAAqB3D,EAAM0B,cAC3Bd,sBAAAA,EACAgD,OAAQ5D,EAAM4D,QAAU,IACxBC,QAAS,KACTC,OAAQ,KACRC,SAAU,QACVC,8BAA+B,MAC/BC,qBAAsB,CACpBC,MAAO,QAETC,QAAS,4EACTC,QACE,uEACA,gCACA,kDACA,6CACA,qCACA,kBACFC,iBAAkB,8CAClBC,yBAA0B,IAgBvBtE,EAAMuE,iBAAgB,CACzBC,MAAO,SAAAA,EAACjE,GAAW,IAAAkE,EACjBxE,EAAUmC,QAAU7B,GACpBkE,EAAAzE,EAAMuE,mBAANE,UAAAA,EAAAA,EAAwBD,mBAAxBC,EAAwBD,MAAQjE,EAClC,KAEEP,EAAMiD,YAAW,CACrBL,UAAWA,EACX8B,eAAgBvE,MAIxB"}
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
3
3
  import './../flex-layout/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import{a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{fbaHooks as t}from"../fba-hooks/index.js";import{jsxs as i,jsx as o}from"react/jsx-runtime";import{Form as l}from"antd";import{useMemo as a,isValidElement as n,cloneElement as s}from"react";import{F as m}from"../flex-layout-8d2b668b.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"@flatbiz/utils";var f=function l(a){var n;var s="form-item-group-card";var m=t.useThemeToken();var f={"--form-item-group-colorPrimary":m.colorPrimary};return i("div",{className:r(s,a.className),style:e({},f,a.style),children:[a.title?o("div",{className:r(s+"-title",(n={},n[s+"-title-sign"]=a.titleSign===true,n)),children:a.title}):null,a.children]})};f.defaultProps={titleSign:true};var u=function t(i){var f=a((function(){var r=[];var t=[];i.groupConfigList.forEach((function(i){if(i.before){t.push(n(i.before)?i.before:o("div",{className:"union-before-text",children:i.before}))}if(i.width){t.push(s(i.mainItem,{style:e({width:i.width},i.mainItem.props.style)}))}else{r.push(t.length);t.push(i.mainItem)}if(i.after){t.push(n(i.after)?i.after:o("div",{className:"union-after-text",children:i.after}))}}));return{flexElementList:t,fullIndex:r}}),[i.groupConfigList]);return o(l.Item,{label:i.label,className:r("form-item-group-horizontal-union",i.className),style:i.style,hidden:i.hidden,required:i.required,colon:i.colon,children:o(m,{direction:"horizontal",gap:i.gap===undefined?15:i.gap,fullIndex:f.fullIndex,style:i.flexLayoutStyle,children:f.flexElementList.map((function(e,r){return s(e,{key:r})}))})})};var c={HorizontalUnion:u,Card:f};export{c as FormItemGroup};
6
+ import{a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{fbaHooks as t}from"../fba-hooks/index.js";import{jsxs as i,jsx as o}from"react/jsx-runtime";import{Form as l}from"antd";import{useMemo as a,isValidElement as n,cloneElement as s}from"react";import{F as m}from"../flex-layout-8d2b668b.js";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"@flatbiz/utils";var f=function l(a){var n;var s="form-item-group-card";var m=t.useThemeToken();var f={"--form-item-group-colorPrimary":m.colorPrimary};return i("div",{className:r(s,a.className),style:e({},f,a.style),children:[a.title?o("div",{className:r(s+"-title",(n={},n[s+"-title-sign"]=a.titleSign===true,n)),children:a.title}):null,a.children]})};f.defaultProps={titleSign:true};var u=function t(i){var f=a((function(){var r=[];var t=[];i.groupConfigList.forEach((function(i){if(i.before){t.push(n(i.before)?i.before:o("div",{className:"union-before-text",children:i.before}))}if(i.width){t.push(s(i.mainItem,{style:e({width:i.width},i.mainItem.props.style)}))}else{r.push(t.length);t.push(i.mainItem)}if(i.after){t.push(n(i.after)?i.after:o("div",{className:"union-after-text",children:i.after}))}}));return{flexElementList:t,fullIndex:r}}),[i.groupConfigList]);return o(l.Item,{label:i.label,className:r("form-item-group-horizontal-union",i.className),style:i.style,hidden:i.hidden,required:i.required,colon:i.colon,children:o(m,{direction:"horizontal",gap:i.gap===undefined?15:i.gap,fullIndex:f.fullIndex,style:i.flexLayoutStyle,children:f.flexElementList.map((function(e,r){return s(e,{key:r})}))})})};var p={HorizontalUnion:u,Card:f};export{p as FormItemGroup};
7
7
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ .pic-preview{background-color:#00000073;display:none;height:100%;inset:0;position:fixed;z-index:1000}.pic-preview.show{display:block}.pic-preview .pic{align-items:center;display:flex;inset:0;justify-content:center;overflow:hidden;position:fixed}.pic-preview .pic img{max-height:100%;max-width:100%}.pic-preview .fn{align-items:center;background:rgba(0,0,0,.1);bottom:0;color:#ffffffd9;display:flex;font-size:26px;height:64px;justify-content:center;position:absolute;width:100%}.pic-preview .fn .anticon-close{cursor:pointer;line-height:64px;width:64px}.preview-image-popup .ant-image-preview-img-wrapper{left:100px;right:100px}.preview-image-popup-close{bottom:50px;color:#fff;font-size:50px;overflow:hidden;position:fixed;right:50px;transform:rotate(45deg);z-index:99999}.v-editor-wrapper{height:100%;width:100%}
@@ -0,0 +1,6 @@
1
+ /* eslint-disable */
2
+ import './../dynamic-node/index.css';
3
+ import './index.css';
4
+ /*! @flatjs/forge MIT @flatbiz/antd */
5
+ export{R as RichTextEditor}from"../rich-text-editor-9d582ee2.js";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@tinymce/tinymce-react";import"ahooks";import"react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"antd";import"packages/antd";import"../dynamic-node-577ef8fd.js";import"react-dom";import"../dom-4d04aa64.js";import"react/jsx-runtime";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,3 @@
1
+ /*! @flatjs/forge MIT @flatbiz/antd */
2
+ import{_ as e,a as n}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{Editor as o}from"@tinymce/tinymce-react";import{useKeyPress as i}from"ahooks";import{Fragment as a,useRef as l,useState as c}from"react";import s from"@ant-design/icons/es/icons/PlusCircleOutlined";import{Image as u}from"antd";import{fbaHooks as m}from"packages/antd";import{d}from"./dynamic-node-577ef8fd.js";import{jsx as f,Fragment as v,jsxs as p}from"react/jsx-runtime";var g=function e(n){var r=n.visible,t=n.url;m.useEffectCustom((function(){if(r){d.append({content:f(s,{onClick:n.close,className:"preview-image-popup-close",twoToneColor:"#1890ff"})})}else{d.remove()}}),[r]);if(!t)return f(v,{});return f(a,{children:f(u,{style:{left:"100px"},preview:{className:"preview-image-popup",maskStyle:{backgroundColor:"rgba(0,0,0,0.85)"},visible:r,src:t,onVisibleChange:function e(){n.close()}}},t)})};var h=["onUploadImage","onChange","className"];var y=function a(s){var u=s.onUploadImage,m=s.onChange,d=s.className,v=e(s,h);var y=l(null);var k=c(""),C=k[0],b=k[1];i((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var n;var r=(n=y.current)==null?void 0:n.editorContainer.classList.contains("tox-fullscreen");if(r){var t;(t=y.current)==null?void 0:t.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});var w=t.useCallbackRef((function(e,n){try{if(e.keyCode==27){var r;var t=(r=y.current)==null?void 0:r.editorContainer.classList.contains("tox-fullscreen");if(t){var o;(o=y.current)==null?void 0:o.editorCommands.execCommand("mceFullScreen")}}}catch(e){}s.onKeyDown==null?void 0:s.onKeyDown(e,n)}));var _=t.useCallbackRef((function(e,n){y.current=n;try{var r,t;(r=n.iframeElement)==null?void 0:(t=r.contentDocument)==null?void 0:t.addEventListener("click",(function(e){var n;if(s.imgPreview&&((n=e.target)==null?void 0:n["tagName"])==="IMG"){b(e.target["src"])}}),true)}catch(e){}v.onInit==null?void 0:v.onInit(e,n)}));var j=t.useCallbackRef((function(e,n){y.current=n;v.onEditorChange==null?void 0:v.onEditorChange(e,n);m==null?void 0:m(e)}));var x="https://file.40017.cn/tcsk/tinymce@6.4.1";return p("div",{className:r("v-editor-wrapper",d),children:[f(o,n({tinymceScriptSrc:x+"/tinymce.min.js"},v,{onInit:_,onKeyDown:w,onEditorChange:j,init:n({promotion:false,language:"zh-Hans",height:500,paste_data_images:u?true:false,autosave_ask_before_unload:false,base_url:x,images_upload_handler:function e(n){return new Promise((function(e,r){var t,o,i;var a=function(n){try{return e(Promise.reject((n==null?void 0:n.message)||"图片上传异常"))}catch(e){return r(e)}};try{t=n.blob();o=new File([t],t.name,{type:t.type});return Promise.resolve(u==null?void 0:u(o)).then((function(n){try{i=n;return e(Promise.resolve(i))}catch(e){return a(e)}}),a)}catch(e){a(e)}}))},content_style:"img {max-width:100%;} table{width:100%}",plugins:"lists link image advlist charmap preview fullscreen code table help",toolbar:"undo redo fullscreen preview | bold italic underline strikethrough |"+"fontsizeselect formatselect |"+"alignleft aligncenter alignright alignjustify |"+"outdent indent | numlist bullist advlist |"+"forecolor backcolor removeformat |"+"preview code | image link"},s.init)})),f(g,{visible:!!C,url:C,close:function e(){b("")}})]})};export{y as R};
3
+ //# sourceMappingURL=rich-text-editor-9d582ee2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-editor-9d582ee2.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 { fbaHooks } from 'packages/antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\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 { TAny } from '@flatbiz/utils';\nimport { Editor, IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange'> {\n onChange?: (data?: string) => void;\n // value?: string;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n className?: string;\n /** 图片点击预览 */\n imgPreview?: boolean;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 如果不需要粘贴上传图片,可配置 editorInitParams.paste_data_images = false\n * 3. 获取富文本实例,通过editorInitParams.setup(editor)函数获取\n * 4. 可在 editorInitParams 中自定义 plugins、toolbar\n * 5. 预览富文本数据,使用 EditorViewer 组件\n *\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\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 // const images_upload_handler = hooks.useCallbackRef(async (blobInfo: BlobInfo, progress: ProgressFn) => {\n // try {\n // const respData = await props.onUploadImage?.(blobInfo.blob());\n // success(respData);\n // } catch (error) {\n // failure(error.message);\n // }\n // });\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 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 return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n // apiKey=\"ds6j8so4g3d2cycidbhgkds36q0phy1uqd9jd8bot91sfe5l\"\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: 500,\n paste_data_images: onUploadImage ? true : false,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\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) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n content_style: 'img {max-width:100%;} table{width:100%}',\n plugins: 'lists link image advlist charmap preview fullscreen code table help',\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsizeselect formatselect |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent | numlist bullist advlist |' +\n 'forecolor backcolor removeformat |' +\n 'preview code | image link',\n ...props.init,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n\n/**\n * undo redo\n * codesample\n * fontselect fontsizeselect formatselect\n * image media link anchor\n * preview save print\n * emoticons(表情)\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","onUploadImage","onChange","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","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","_","_editor$iframeElement","_editor$iframeElement2","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","init","promotion","language","height","paste_data_images","autosave_ask_before_unload","base_url","images_upload_handler","blobInfo","Promise","$return","$error","blob","_file","respData","$Try_4_Catch","reject","message","$boundEx","file","File","name","resolve","then","$await_5","content_style","plugins","toolbar"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .fba-editor-viewer{position:relative}.fba-editor-viewer .tox-tinymce{border:none}.fba-editor-viewer .v-editor-wrapper{overflow-y:auto}.fba-editor-viewer .tox-editor-header{display:none!important}.fba-editor-viewer-icon{background-color:#f0f0f0;border-radius:5px;position:absolute;right:15px;top:10px;z-index:100}.fba-editor-viewer-icon .icon-wrapper{margin:0;padding:6px}.fba-editor-viewer-inner{height:100%}.fba-editor-viewer-fixed{background-color:#fff;bottom:0;left:0;position:fixed;right:0;top:0;z-index:99}.fba-editor-viewer-fixed .fba-editor-viewer-icon{background-color:#c8c8c8}
@@ -0,0 +1,7 @@
1
+ /* eslint-disable */
2
+ import './../rich-text-editor/index.css';
3
+ import './../dynamic-node/index.css';
4
+ import './index.css';
5
+ /*! @flatjs/forge MIT @flatbiz/antd */
6
+ 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{IconWrapper as t}from"@flatbiz/antd";import{useKeyPress as o}from"ahooks";import{useState as n}from"react";import{R as a}from"../rich-text-editor-9d582ee2.js";import{jsxs as s,jsx as l}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@tinymce/tinymce-react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"antd";import"packages/antd";import"../dynamic-node-577ef8fd.js";import"react-dom";import"../dom-4d04aa64.js";var c=function c(m){var u=n(false),f=u[0],d=u[1];o((function(){return true}),(function(e){if(e.type==="keyup"&&e.key==="Escape"&&f){d(false)}}),{events:["keydown","keyup"]});var p=r.useCallbackRef((function(){d(!f)}));var v=r.useCallbackRef((function(e,i){m.onInit==null?void 0:m.onInit(i)}));return s("div",{className:i("fba-editor-viewer",{"fba-editor-viewer-fixed":f},m.className),style:m.style,children:[m.children,m.fullscreen&&m.data&&l("div",{className:"fba-editor-viewer-icon",children:l(t,{hoverTips:m.fullscreenIconTips,icon:l(e,{}),onClick:p})}),l(a,{value:m.data,onInit:v,init:{readonly:true,plugins:"autoresize",menubar:false,toolbar:"",statusbar:false}})]})};export{c as RichTextViewer};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 { IconWrapper } from '@flatbiz/antd';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { RichTextEditor } from '../rich-text-editor';\n\nimport './style.less';\n\ntype RichTextViewerProps = {\n data: string;\n className?: string;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n style?: CSSProperties;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\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) => {\n props.onInit?.(editor);\n });\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.data && (\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.data}\n onInit={onInit}\n init={{\n readonly: true,\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","_jsxs","className","_classNames","style","children","fullscreen","data","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","value","init","readonly","plugins","menubar","toolbar","statusbar"],"mappings":";2nBA0BaA,EAAiB,SAAjBA,EAAkBC,GAC7B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAE1BI,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,UAAYL,EAAS,CAC/DC,EAAW,MACb,CACF,GACA,CAAEK,OAAQ,CAAC,UAAW,WAGxB,IAAMC,EAAgBC,EAAMC,gBAAe,WACzCR,GAAYD,EACd,IACA,IAAMU,EAASF,EAAMC,gBAAe,SAACE,EAAGC,GACtCf,EAAMa,QAANb,UAAAA,EAAAA,EAAMa,OAASE,EACjB,IAEA,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,oBAAqB,CAAE,0BAA2Bf,GAAWH,EAAMiB,WACzFE,MAAOnB,EAAMmB,MAAMC,SAElBpB,CAAAA,EAAMoB,SACNpB,EAAMqB,YAAcrB,EAAMsB,MACzBC,EAAA,MAAA,CAAKN,UAAU,yBAAwBG,SACrCG,EAACC,EAAW,CACVC,UAAWzB,EAAM0B,mBACjBC,KAAMJ,EAAAK,EAAuB,IAC7BC,QAASnB,MAIfa,EAACO,EAAc,CACbC,MAAO/B,EAAMsB,KACbT,OAAQA,EACRmB,KAAM,CACJC,SAAU,KACVC,QAAS,aACTC,QAAS,MACTC,QAAS,GACTC,UAAW,WAKrB"}
package/index.d.ts CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  import { API, ModelType } from '@dimjs/model';
5
5
  import { DateFormatType, TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils';
6
+ import { IAllProps } from '@tinymce/tinymce-react';
6
7
  import { ButtonProps, CascaderProps, CheckboxProps, DrawerProps, DropdownProps, FormInstance, FormItemProps, InputNumberProps, InputProps, ModalProps, PaginationProps, PopconfirmProps, RadioGroupProps, RowProps, SelectProps, SpaceProps, SwitchProps, TableProps, TabsProps, TimePickerProps, TimeRangePickerProps, TooltipProps, TreeProps, TreeSelectProps, UploadProps } from 'antd';
7
8
  import { ConfigProviderProps } from 'antd/es/config-provider';
8
9
  import { PickerDateProps } from 'antd/es/date-picker/generatePicker';
@@ -16,6 +17,7 @@ import { UploadFile } from 'antd/lib/upload/interface';
16
17
  import dayjs from 'dayjs';
17
18
  import { Dayjs } from 'dayjs';
18
19
  import { CSSProperties, DependencyList, FC, ReactElement, ReactNode } from 'react';
20
+ import { Editor as TinyMCEEditor } from 'tinymce';
19
21
 
20
22
  export type ButtonWrapperProps = Omit<ButtonProps, "onClick" | "loading"> & {
21
23
  onClick?: (e: React.MouseEvent<HTMLElement>) => Promise<TAny> | void;
@@ -693,6 +695,7 @@ export type EasyTableTableProps = Omit<TableProps<TAny>, "dataSource" | "loading
693
695
  * 5. filterFixed=true,设置查询条件固定,不随滚动条滚动
694
696
  * 6. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动
695
697
  * 7. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值
698
+ * 8. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提示高windows下table左右滚动体验
696
699
  *
697
700
  * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table
698
701
  * ```
@@ -1095,19 +1098,26 @@ export type EditorWrapperProps = {
1095
1098
  onChange?: (data?: string) => void;
1096
1099
  value?: string;
1097
1100
  editorInitParams?: TPlainObject;
1098
- editorProps?: TPlainObject;
1101
+ editorProps?: {
1102
+ disabled?: boolean;
1103
+ onKeyDown?: (event: any) => void;
1104
+ };
1099
1105
  height?: number | string;
1100
1106
  /** 上传图片服务 */
1101
1107
  onUploadImage?: (file: File) => Promise<string>;
1108
+ className?: string;
1102
1109
  };
1103
1110
  /**
1104
1111
  * 富文本编辑器,配置参考tinymce
1112
+ * @deprecated 已过时,请使用 RichTextEditor 组件
1105
1113
  * @param props
1106
1114
  * @returns
1107
1115
  * ```
1108
1116
  * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口
1109
1117
  * 2. 如果不需要粘贴上传图片,可配置 editorInitParams.paste_data_images = false
1110
1118
  * 3. 获取富文本实例,通过editorInitParams.setup(editor)函数获取
1119
+ * 4. 可在 editorInitParams 中自定义 plugins、toolbar
1120
+ * 5. 预览富文本数据,使用 EditorViewer 组件
1111
1121
  *
1112
1122
  * ```
1113
1123
  */
@@ -1598,6 +1608,43 @@ export type TRelationTreeOperate = {
1598
1608
  onChange: (name: string, value: TAny) => void;
1599
1609
  };
1600
1610
  export declare const RelationTree: (props: RelationTreeProps) => JSX.Element;
1611
+ export interface RichTextEditorProps extends Omit<IAllProps, "onChange"> {
1612
+ onChange?: (data?: string) => void;
1613
+ /** 上传图片服务 */
1614
+ onUploadImage?: (file: File) => Promise<string>;
1615
+ className?: string;
1616
+ /** 图片点击预览 */
1617
+ imgPreview?: boolean;
1618
+ }
1619
+ /**
1620
+ * 富文本编辑器,配置参考tinymce
1621
+ * @param props
1622
+ * @returns
1623
+ * ```
1624
+ * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口
1625
+ * 2. 如果不需要粘贴上传图片,可配置 editorInitParams.paste_data_images = false
1626
+ * 3. 获取富文本实例,通过editorInitParams.setup(editor)函数获取
1627
+ * 4. 可在 editorInitParams 中自定义 plugins、toolbar
1628
+ * 5. 预览富文本数据,使用 EditorViewer 组件
1629
+ *
1630
+ * ```
1631
+ */
1632
+ export declare const RichTextEditor: (props: RichTextEditorProps) => JSX.Element;
1633
+ export type RichTextViewerProps = {
1634
+ data: string;
1635
+ className?: string;
1636
+ fullscreen?: boolean;
1637
+ onInit?: (editor: TinyMCEEditor) => void;
1638
+ children?: ReactElement;
1639
+ style?: CSSProperties;
1640
+ fullscreenIconTips?: string;
1641
+ };
1642
+ /**
1643
+ * 预览 RichTextEditor 生成的富文本数据
1644
+ * @param props
1645
+ * @returns
1646
+ */
1647
+ export declare const RichTextViewer: (props: RichTextViewerProps) => JSX.Element;
1601
1648
  export type RollLocationCenterProps = {
1602
1649
  renderList: {
1603
1650
  activeKey: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.2.18",
3
+ "version": "4.2.19",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -56,7 +56,8 @@
56
56
  },
57
57
  "dependencies": {
58
58
  "dequal": "^2.0.3",
59
- "pubsub-js": "^1.9.4"
59
+ "pubsub-js": "^1.9.4",
60
+ "@tinymce/tinymce-react": "^4.3.0"
60
61
  },
61
62
  "gitHead": "4378d433b73ee28fd7cb4c64bed8571f993eb5a9"
62
63
  }