UNPKG

@ant-design/x

Version:

Craft AI-driven interfaces effortlessly

43 lines (40 loc) 1.45 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useDisplayData; var _rcUtil = require("rc-util"); var _react = _interopRequireDefault(require("react")); function useDisplayData(items) { const [displayCount, setDisplayCount] = _react.default.useState(items.length); const displayList = _react.default.useMemo(() => items.slice(0, displayCount), [items, displayCount]); const displayListLastKey = _react.default.useMemo(() => { const lastItem = displayList[displayList.length - 1]; return lastItem ? lastItem.key : null; }, [displayList]); // When `items` changed, we replaced with latest one _react.default.useEffect(() => { if (displayList.length && displayList.every((item, index) => item.key === items[index]?.key)) { return; } if (displayList.length === 0) { setDisplayCount(1); } else { // Find diff index for (let i = 0; i < displayList.length; i += 1) { if (displayList[i].key !== items[i]?.key) { setDisplayCount(i); break; } } } }, [items]); // Continue to show if last one finished typing const onTypingComplete = (0, _rcUtil.useEvent)(key => { if (key === displayListLastKey) { setDisplayCount(displayCount + 1); } }); return [displayList, onTypingComplete]; }