UNPKG

react-photoswipe-gallery

Version:
34 lines 1.11 kB
import sortNodes from "./sort-nodes.js"; import ensureRefPassed from "./ensure-ref-passed.js"; import entryItemRefIsElement from "./entry-item-ref-is-element.js"; import itemToSlide from "./item-to-slide.js"; import { NoRefError } from "../no-ref-error.js"; const getSlidesAndIndexFromItemsRefs = (items, targetRef, targetId, itemIndex) => { const entries = Array.from(items.current); if (typeof itemIndex === 'number' && (entries[itemIndex] === undefined || !entryItemRefIsElement(entries[itemIndex]))) { throw new NoRefError(`Failed to open at index ${itemIndex}`); } const { slides, index } = entries.map(ensureRefPassed).sort(([{ current: a }], [{ current: b }]) => sortNodes(a, b)).reduce((acc, entry, i) => { const [ref, itemData] = entry; if (targetRef === ref || itemData.id !== undefined && String(itemData.id) === targetId) { acc.index = i; } acc.slides.push(itemToSlide(itemData, ref)); return acc; }, { slides: [], index: itemIndex || null }); return { slides, index }; }; export default getSlidesAndIndexFromItemsRefs;