{"version":3,"file":"getCollectionEntries.cjs","sources":["../../../../../.yarn/__virtual__/react-json-tree-virtual-6a28170cd8/4/.yarn/berry/cache/react-json-tree-npm-0.19.0-c65c86bc20-10c0.zip/node_modules/react-json-tree/lib/getCollectionEntries.js"],"sourcesContent":["function getLength(type, collection) {\n    if (type === 'Object') {\n        // eslint-disable-next-line @typescript-eslint/ban-types\n        return Object.keys(collection).length;\n    }\n    else if (type === 'Array') {\n        return collection.length;\n    }\n    return Infinity;\n}\nfunction isIterableMap(collection) {\n    return typeof collection.set === 'function';\n}\nfunction getEntries(type, collection, sortObjectKeys, from = 0, to = Infinity) {\n    let res;\n    if (type === 'Object') {\n        let keys = Object.getOwnPropertyNames(collection);\n        if (sortObjectKeys) {\n            keys.sort(sortObjectKeys === true ? undefined : sortObjectKeys);\n        }\n        keys = keys.slice(from, to + 1);\n        res = {\n            entries: keys.map((key) => ({ key, value: collection[key] })),\n        };\n    }\n    else if (type === 'Array') {\n        res = {\n            entries: collection\n                .slice(from, to + 1)\n                .map((val, idx) => ({ key: idx + from, value: val })),\n        };\n    }\n    else {\n        let idx = 0;\n        const entries = [];\n        let done = true;\n        const isMap = isIterableMap(collection);\n        for (const item of collection) {\n            if (idx > to) {\n                done = false;\n                break;\n            }\n            if (from <= idx) {\n                if (isMap && Array.isArray(item)) {\n                    if (typeof item[0] === 'string' || typeof item[0] === 'number') {\n                        entries.push({ key: item[0], value: item[1] });\n                    }\n                    else {\n                        entries.push({\n                            key: `[entry ${idx}]`,\n                            value: {\n                                '[key]': item[0],\n                                '[value]': item[1],\n                            },\n                        });\n                    }\n                }\n                else {\n                    entries.push({ key: idx, value: item });\n                }\n            }\n            idx++;\n        }\n        res = {\n            hasMore: !done,\n            entries,\n        };\n    }\n    return res;\n}\nfunction getRanges(from, to, limit) {\n    const ranges = [];\n    while (to - from > limit * limit) {\n        limit = limit * limit;\n    }\n    for (let i = from; i <= to; i += limit) {\n        ranges.push({ from: i, to: Math.min(to, i + limit - 1) });\n    }\n    return ranges;\n}\nexport default function getCollectionEntries(type, collection, sortObjectKeys, limit, from = 0, to = Infinity) {\n    const getEntriesBound = getEntries.bind(null, type, collection, sortObjectKeys);\n    if (!limit) {\n        return getEntriesBound().entries;\n    }\n    const isSubset = to < Infinity;\n    const length = Math.min(to - from, getLength(type, collection));\n    if (type !== 'Iterable') {\n        if (length <= limit || limit < 7) {\n            return getEntriesBound(from, to).entries;\n        }\n    }\n    else {\n        if (length <= limit && !isSubset) {\n            return getEntriesBound(from, to).entries;\n        }\n    }\n    let limitedEntries;\n    if (type === 'Iterable') {\n        const { hasMore, entries } = getEntriesBound(from, from + limit - 1);\n        limitedEntries = hasMore\n            ? [...entries, ...getRanges(from + limit, from + 2 * limit - 1, limit)]\n            : entries;\n    }\n    else {\n        limitedEntries = isSubset\n            ? getRanges(from, to, limit)\n            : [\n                ...getEntriesBound(0, limit - 5).entries,\n                ...getRanges(limit - 4, length - 5, limit),\n                ...getEntriesBound(length - 4, length - 1).entries,\n            ];\n    }\n    return limitedEntries;\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}