ze-react-component-library
Version:
ZeroETP React Component Library
135 lines (107 loc) • 4.81 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.useInputCursor = void 0;
require("antd/lib/tag/style");
var _tag = _interopRequireDefault(require("antd/lib/tag"));
require("antd/lib/space/style");
var _space = _interopRequireDefault(require("antd/lib/space"));
require("antd/lib/typography/style");
var _typography = _interopRequireDefault(require("antd/lib/typography"));
var _react = _interopRequireWildcard(require("react"));
var _hooks = require("@umijs/hooks");
var _request = require("../request");
require("./index.less");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Title = _typography.default.Title;
var useInputCursor = function useInputCursor(_a) {
var _b = _a.text,
text = _b === void 0 ? "" : _b;
var _c = (0, _react.useState)({
start: 0,
end: 0
}),
_d = _c[0],
start = _d.start,
end = _d.end,
setPosition = _c[1];
var inputRef = (0, _react.useRef)(null);
var cursorText = text ? text.slice(0, end) : undefined;
var onCursorChange = function onCursorChange(e) {
var el = e.target;
setPosition({
start: el.selectionStart,
end: el.selectionEnd
});
};
var getNewWord = function getNewWord(w) {
var rest = text.slice(end);
var prefix = cursorText.slice(0, cursorText.length - w.replace.length);
var newWord = prefix + w.word + rest;
return newWord;
};
(0, _react.useEffect)(function () {
setPosition({
start: 0,
end: text.length
});
}, [text]);
return {
onCursorChange: onCursorChange,
cursorText: cursorText,
start: start,
end: end,
inputRef: inputRef,
getNewWord: getNewWord
};
};
exports.useInputCursor = useInputCursor;
var AutoKeywords = function AutoKeywords(_a) {
var _b;
var _onClick = _a.onClick,
question = _a.question;
var result = (0, _hooks.useRequest)(function () {
return question ? (0, _request.requestKeywords)(question) : Promise.resolve({
data: []
});
}, {
refreshDeps: [question],
throttleInterval: 200
}).data;
var keywords = ((_b = result === null || result === void 0 ? void 0 : result.data) === null || _b === void 0 ? void 0 : _b.filter(function (f) {
return !["func"].includes(f.t);
})) || [];
if (keywords.length === 0) {
return null;
}
return /*#__PURE__*/_react.default.createElement("div", {
className: "ze-auto-keywords"
}, /*#__PURE__*/_react.default.createElement(Title, {
level: 5,
style: {
marginBottom: 16,
fontSize: 14
}
}, "\u731C\u60A8\u60F3\u95EE\uFF1A"), /*#__PURE__*/_react.default.createElement(_space.default, {
wrap: true
}, keywords.map(function (i, index) {
return /*#__PURE__*/_react.default.createElement(_tag.default, {
className: "ze-tag",
key: i.n + index,
onClick: function onClick(e) {
e.preventDefault();
e.stopPropagation();
_onClick === null || _onClick === void 0 ? void 0 : _onClick({
word: i.n,
replace: result === null || result === void 0 ? void 0 : result.replace
});
}
}, i.n);
})));
};
var _default = AutoKeywords;
exports.default = _default;