@flatbiz/antd
Version:
205 lines (193 loc) • 6.88 kB
JavaScript
/* eslint-disable */
import './index.css';
/*! @flatjs/forge MIT @flatbiz/antd */
import { c as _toConsumableArray, b as _objectSpread2, a as _slicedToArray } from '../_rollupPluginBabelHelpers-BYm17lo8.js';
import { hooks } from '@wove/react/hooks';
import { useRef, useEffect, useMemo, useState } from 'react';
import { toArray, trim } from '@flatbiz/utils';
import { u as useResponsivePoint } from '../use-responsive-point-Bp3D3lZT.js';
import { theme } from 'antd';
var useArrayChange = function useArrayChange(defautDataList) {
var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var changeListRef = useRef(defautDataList);
var update = hooks.useForceUpdate();
var arrayOperate = {
add: hooks.useCallbackRef(function (dataItem, isUnshift) {
if (isUnshift) {
var targetList = toArray(dataItem);
changeListRef.current = [].concat(_toConsumableArray(targetList), _toConsumableArray(changeListRef.current));
} else {
changeListRef.current = changeListRef.current.concat(dataItem);
}
if (forceUpdate) {
update();
}
}),
update: hooks.useCallbackRef(function (index, dataItem) {
var target = changeListRef.current[index];
if (target) {
changeListRef.current[index] = _objectSpread2(_objectSpread2({}, target), dataItem);
}
if (forceUpdate) {
update();
}
}),
delete: hooks.useCallbackRef(function (index) {
var deleteItem = changeListRef.current.splice(index, 1);
if (forceUpdate) {
update();
}
return deleteItem;
}),
resetList: hooks.useCallbackRef(function (dataList) {
changeListRef.current = dataList;
if (forceUpdate) {
update();
}
}),
getList: hooks.useCallbackRef(function () {
return changeListRef.current;
})
};
return [changeListRef.current, arrayOperate];
};
var useEffectCustom = function useEffectCustom(fn, deps) {
return useEffect(fn, deps);
};
var innerIgnoreClass = ['ace_editor', 'tox-tinymce', 'cancel-flatbiz-antd-copy'];
/**
* 移除复制文本中前后空格
* ```
* 1. target 设置监听复制范围,如果不设置则监听全局,例如
* export const Demo = () => {
* const ref = useRef<any>();
* useCopyRemoveSpace({
* target: () => ref.current,
* });
* return (
* <div ref={ref}>
* <QueryTable />
* </div>
* );
* };
* 2. 某些控件(例如:ace编辑器、富文本等)内部自定义处理copy逻辑,此处不能进行拦截,通过配置class属性来忽略
* 3. ignoreClass包括操作目标class、以及层层父节点class,通过目标节点层层父节点的class匹配成功后,取消后续copy文案处理逻辑
* 3. ignoreClass 内置有 ['ace_editor', 'tox-tinymce', 'cancel-flatbiz-antd-copy']
* ```
*/
var useCopyRemoveSpace = function useCopyRemoveSpace(props) {
var _props$target;
var ignoreClass = innerIgnoreClass.concat((props === null || props === void 0 ? void 0 : props.ignoreClass) || []);
var target = (props === null || props === void 0 || (_props$target = props.target) === null || _props$target === void 0 ? void 0 : _props$target.call(props)) || window.document;
useEffectCustom(function () {
var handle = function handle(oEvent) {
try {
var parentNode = oEvent.target;
var isIgnore = false;
while (parentNode != null) {
var _target = ignoreClass.find(function (item) {
var _parentNode$classList;
return (_parentNode$classList = parentNode.classList) === null || _parentNode$classList === void 0 ? void 0 : _parentNode$classList.contains(item);
});
if (_target) {
isIgnore = true;
break;
}
parentNode = parentNode.parentNode;
}
if (isIgnore) return;
var copyInfo = '';
// 获取复制信息
var _window = window;
try {
copyInfo = window['document']['selection'].createRange().text;
} catch (_ex) {
copyInfo = _window.getSelection().toString();
}
var clipboardData = _window.clipboardData; // for IE
if (!clipboardData) {
clipboardData = oEvent['clipboardData'];
}
var nextValue = trim(copyInfo, true);
// 修改剪贴板中的内容
clipboardData.setData('Text', nextValue);
// 必须禁用原copy方法才能生效
oEvent.preventDefault();
if (nextValue !== copyInfo) {
console.log('useCopyRemoveSpace 已操作移除复制文本中前后空格');
}
} catch (error) {
console.warn(error === null || error === void 0 ? void 0 : error.message);
}
};
target.addEventListener('copy', handle);
return function () {
target.removeEventListener('copy', handle);
};
}, [JSON.stringify(ignoreClass)]);
};
var useEffectCustomAsync = function useEffectCustomAsync(fn, deps) {
useEffect(function () {
function asyncFunction() {
return new Promise(function ($return, $error) {
return Promise.resolve(fn()).then(function ($await_1) {
try {
return $return();
} catch ($boundEx) {
return $error($boundEx);
}
}, $error);
});
}
void asyncFunction();
}, deps);
};
/**
* 自定义控制 useMemo 依赖
*/
var useMemoCustom = function useMemoCustom(fn, deps) {
return useMemo(fn, deps);
};
var defaultShouldUpdate = function defaultShouldUpdate(a, b) {
return !Object.is(a, b);
};
function usePrevious(state) {
var shouldUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultShouldUpdate;
var prevRef = useRef();
var curRef = useRef();
if (shouldUpdate(curRef.current, state)) {
prevRef.current = curRef.current;
curRef.current = state;
}
return prevRef.current;
}
var useSafeState = function useSafeState(initialState) {
var _useState = useState(initialState),
_useState2 = _slicedToArray(_useState, 2),
state = _useState2[0],
setState = _useState2[1];
var isMounted = hooks.useIsMounted();
return [state, function (value) {
if (isMounted.current) {
return setState(value);
}
}];
};
var useThemeToken = function useThemeToken() {
var _theme$useToken = theme.useToken(),
token = _theme$useToken.token;
return token;
};
var fbaHooks = {
useEffectCustom: useEffectCustom,
useEffectCustomAsync: useEffectCustomAsync,
useThemeToken: useThemeToken,
useArrayChange: useArrayChange,
usePrevious: usePrevious,
useResponsivePoint: useResponsivePoint,
useSafeState: useSafeState,
useMemoCustom: useMemoCustom,
useCopyRemoveSpace: useCopyRemoveSpace
};
export { fbaHooks };
//# sourceMappingURL=index.js.map