From a291bad9d448532aa17bbab48c3f2898f45637c0 Mon Sep 17 00:00:00 2001 From: MoonLyss Date: Sat, 7 Sep 2024 16:49:18 +0200 Subject: [PATCH] Fix make tree --- package.json | 2 +- src/lib/components/tree/tree.ts | 10 ++++++---- src/lib/type.ts | 3 +++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c53d3cf..f299881 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@selenite/commons", - "version": "0.28.1", + "version": "0.28.2", "repository": "github:ShaitanLyss/selenite-commons", "license": "MIT", "keywords": [ diff --git a/src/lib/components/tree/tree.ts b/src/lib/components/tree/tree.ts index db4e84d..5697ba3 100644 --- a/src/lib/components/tree/tree.ts +++ b/src/lib/components/tree/tree.ts @@ -7,19 +7,21 @@ export function isForest( export { default as TreeComponent } from './Tree.svelte' type TreeCollector = { leaves: T[]; forest: Map> }; -export function makeTree({ + + +export function makeTree({ items, pathKey, sort }: { - items: (T & { [k in K]: string[] })[]; + items: T[]; pathKey: K; sort?: (a: T, b: T) => number; }): Tree { const collector: TreeCollector = { leaves: [], forest: new Map() }; for (const item of items) { let current = collector; - for (const parent of item[pathKey]) { + for (const parent of item[pathKey] ?? []) { if (!current.forest.has(parent)) { current.forest.set(parent, { leaves: [], forest: new Map() }); } @@ -28,7 +30,7 @@ export function makeTree({ current.leaves.push(item); } - console.log('collector', collector); + // console.debug('collector', collector); const res: Tree = []; function rec(current: Tree, currentCollector: TreeCollector) { diff --git a/src/lib/type.ts b/src/lib/type.ts index 5bc5b49..9688569 100644 --- a/src/lib/type.ts +++ b/src/lib/type.ts @@ -15,3 +15,6 @@ export type PartialBy = Omit & Partial>; * @typeParam T - The object type. */ export type SaveData unknown }> = ReturnType; + + +export type ArrayKeys = { [K in keyof T]: T[K] extends unknown[] ? K : never }[keyof T]; \ No newline at end of file