/
levkin_s
/
ui-kit-ce
Обзор
Документация
Войти
/
levkin_s
/
ui-kit-ce
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/input-number/src/utils/createList.ts
54 строки
1 KB
Denis Svyatovets
v1.10.0
27 мар 2024, 13:48
27 мар 2024, 13:48
c9029ae
Код
Авторство
О чём код?
export interface Item { /** * Наличие каретки слева от символа. */ hasCaret?: boolean /** * Значение элемента списка. */ value: string /** * Ссылка на соседа слева, если нет соседа, значит элемент первый в списке. */ neighborLeft?: Item | null /** * Ссылка на соседа справа, если нет соседа, значит элемент последний в списке. */ neighborRight?: Item | null } const initialItem: Item = { value: '', hasCaret: false, neighborLeft: null, neighborRight: null, } /** * * @param items * @param caretPosition */ export const createList = ( items: string[], caretPosition: number | null ): Item[] => { return items.reduce((data: Item[], value: string, index: number) => { const prevIndex: number = index - 1 const hasCaret: boolean = caretPosition === index const previousItem: Item = data[prevIndex] const item: Item = { ...initialItem, hasCaret, value, } if (previousItem) { item.neighborLeft = previousItem previousItem.neighborRight = item } return data.push(item), data }, []) }