UNPKG

@teambit/workspace

Version:
82 lines (80 loc) 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useWorkspaceAggregation = useWorkspaceAggregation; function _react() { const data = require("react"); _react = function () { return data; }; return data; } function _namespaceSort() { const data = require("./namespace-sort"); _namespaceSort = function () { return data; }; return data; } function _filterUtils() { const data = require("./filter-utils"); _filterUtils = function () { return data; }; return data; } function useWorkspaceAggregation(items, aggregation, filters) { const filtered = (0, _react().useMemo)(() => (0, _filterUtils().filterItems)(items, filters), [items, filters]); if (aggregation === 'none') { return { groups: [{ name: 'all', displayName: '', items: (0, _namespaceSort().sortItemsByNamespace)(filtered) }], groupType: 'none', availableAggregations: ['namespaces', 'scopes', 'none'], filteredCount: filtered.length }; } if (aggregation === 'namespaces') { const map = new Map(); for (const item of filtered) { const ns = item.component.id.namespace || '/'; if (!map.has(ns)) map.set(ns, []); map.get(ns).push(item); } const sortedKeys = (0, _namespaceSort().sortNamespacesAdvanced)([...map.keys()]); const groups = sortedKeys.map(ns => ({ name: ns, displayName: ns, items: (0, _namespaceSort().sortItemsByNamespace)(map.get(ns)) })); return { groups, groupType: 'namespaces', availableAggregations: ['namespaces', 'scopes', 'none'], filteredCount: filtered.length }; } const map = new Map(); for (const item of filtered) { const scope = item.component.id.scope; if (!map.has(scope)) map.set(scope, []); map.get(scope).push(item); } const sortedScopes = [...map.keys()].sort(); const groups = sortedScopes.map(sc => ({ name: sc, displayName: sc, items: (0, _namespaceSort().sortItemsByNamespace)(map.get(sc)) })); return { groups, groupType: 'scopes', availableAggregations: ['namespaces', 'scopes', 'none'], filteredCount: filtered.length }; } //# sourceMappingURL=use-workspace-aggregation.js.map