Skip to content

Commit df1c326

Browse files
author
Abdelrahman
authored
Merge pull request #14 from abdel-17/simplify
Simplify
2 parents edcd926 + fac2107 commit df1c326

File tree

16 files changed

+1058
-1248
lines changed

16 files changed

+1058
-1248
lines changed

packages/svelte-file-tree/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
"prepublishOnly": "pnpm run build",
1010
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
1111
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
12-
"format": "prettier --write .",
13-
"format:check": "prettier --check .",
1412
"lint": "biome check",
1513
"lint:fix": "biome check --fix",
1614
"lint:ci": "biome ci",

packages/svelte-file-tree/src/lib/components/Tree/Tree.svelte

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<script lang="ts">
2-
import type { FileTreeNode } from "$lib/tree.svelte.js";
2+
import type { FileTreeNode, FolderNode } from "$lib/tree.svelte.js";
33
import TreeItemProvider from "./TreeItemProvider.svelte";
4-
import { TreeState } from "./context.svelte.js";
5-
import type { TreeProps } from "./types.js";
4+
import type { TreeContext } from "./context.js";
5+
import { TreeState } from "./state.svelte.js";
6+
import type { TreeItemData, TreeProps } from "./types.js";
67
78
let {
89
tree,
@@ -17,8 +18,11 @@ let {
1718
...attributes
1819
}: TreeProps = $props();
1920
20-
const treeState = new TreeState({
21-
getElementId: () => id,
21+
const treeState = new TreeState();
22+
const treeContext: TreeContext = {
23+
treeState,
24+
getTree: () => tree,
25+
getTreeId: () => id,
2226
callbacks: {
2327
onMoveItems(nodes, start, count) {
2428
onMoveItems?.(nodes, start, count);
@@ -36,25 +40,27 @@ const treeState = new TreeState({
3640
onRenameError?.(node, error);
3741
},
3842
},
39-
});
43+
};
4044
</script>
4145

42-
{#snippet items(nodes: FileTreeNode[])}
46+
{#snippet items(nodes: FileTreeNode[], parent?: TreeItemData<FolderNode>, depth: number = 0)}
4347
{#each nodes as node, index (node.id)}
44-
<TreeItemProvider {treeState} {node} {index}>
45-
{#snippet children(context)}
48+
<TreeItemProvider {treeContext} {node} {index} {parent} {depth}>
49+
{#snippet children(itemState)}
4650
{@render item({
4751
node,
4852
index,
49-
editing: context.editing,
50-
dragged: treeState.draggedId === node.id,
51-
dropPosition: context.dropPosition,
53+
parent,
54+
depth,
55+
editing: itemState.editing,
56+
dragged: treeState.isDragged(node),
57+
dropPosition: itemState.dropPosition,
5258
})}
5359
{/snippet}
5460
</TreeItemProvider>
5561

5662
{#if node.type === "folder" && node.expanded}
57-
{@render items(node.children)}
63+
{@render items(node.children, { node, index, parent }, depth + 1)}
5864
{/if}
5965
{/each}
6066
{/snippet}
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,35 @@
11
<script lang="ts">
2-
import type { FileTreeNode } from "$lib/tree.svelte.js";
2+
import type { FileTreeNode, FolderNode } from "$lib/tree.svelte.js";
33
import type { Snippet } from "svelte";
4-
import { TreeItemContext, type TreeState } from "./context.svelte.js";
4+
import { type TreeContext, setTreeItemProviderContext } from "./context.js";
5+
import { TreeItemState } from "./state.svelte.js";
6+
import type { TreeItemData } from "./types.js";
57
68
const {
7-
treeState,
9+
treeContext,
810
node,
911
index,
12+
parent,
13+
depth,
1014
children,
1115
}: {
12-
treeState: TreeState;
16+
treeContext: TreeContext;
1317
node: FileTreeNode;
1418
index: number;
15-
children: Snippet<[context: TreeItemContext]>;
19+
parent: TreeItemData<FolderNode> | undefined;
20+
depth: number;
21+
children: Snippet<[itemState: TreeItemState]>;
1622
} = $props();
1723
18-
const context = TreeItemContext.set(treeState, {
24+
const itemState = new TreeItemState();
25+
setTreeItemProviderContext({
26+
treeContext,
27+
itemState,
1928
getNode: () => node,
2029
getIndex: () => index,
30+
getParent: () => parent,
31+
getDepth: () => depth,
2132
});
2233
</script>
2334

24-
{@render children(context)}
35+
{@render children(itemState)}

0 commit comments

Comments
 (0)