From 978e58086cffc69fb7c8b7031fc65814b549b337 Mon Sep 17 00:00:00 2001 From: Rizky Date: Mon, 23 Oct 2023 18:58:26 +0700 Subject: [PATCH] adding fuzzy tree search --- app/web/package.json | 1 + app/web/src/render/ed/logic/ed-global.ts | 3 + app/web/src/render/ed/panel/tree/body.tsx | 11 +- .../ed/panel/tree/node/item/indent-hook.ts | 2 +- .../render/ed/panel/tree/node/item/name.tsx | 2 +- .../src/render/ed/panel/tree/node/render.tsx | 1 + app/web/src/render/ed/panel/tree/search.tsx | 113 ++++++++++++++++++ app/web/src/render/ed/panel/tree/tree.tsx | 4 +- bun.lockb | Bin 245040 -> 245416 bytes 9 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 app/web/src/render/ed/panel/tree/search.tsx diff --git a/app/web/package.json b/app/web/package.json index 40aa1866..333ae73c 100644 --- a/app/web/package.json +++ b/app/web/package.json @@ -8,6 +8,7 @@ "dependencies": { "@babel/parser": "^7.23.0", "@floating-ui/react": "^0.26.0", + "@leeoniya/ufuzzy": "^1.0.11", "@minoru/react-dnd-treeview": "^3.4.4", "@monaco-editor/react": "^4.6.0", "@paralleldrive/cuid2": "2.2.2", diff --git a/app/web/src/render/ed/logic/ed-global.ts b/app/web/src/render/ed/logic/ed-global.ts index e73a3170..9fc2b31a 100644 --- a/app/web/src/render/ed/logic/ed-global.ts +++ b/app/web/src/render/ed/logic/ed-global.ts @@ -5,6 +5,7 @@ import { IItem, MItem } from "../../../utils/types/item"; import { DComp, DPage, IRoot } from "../../../utils/types/root"; import { ISection } from "../../../utils/types/section"; import { IText, MText } from "../../../utils/types/text"; +import { ReactElement } from "react"; const EmptySite = { id: "", @@ -55,6 +56,7 @@ export type EdMeta = { mitem: MItem; mcomp: MItem; }; + el?: ReactElement; }; export const EDGlobal = { @@ -83,6 +85,7 @@ export const EDGlobal = { }, ui: { tree: { + search: "", open: {} as Record, }, popup: { diff --git a/app/web/src/render/ed/panel/tree/body.tsx b/app/web/src/render/ed/panel/tree/body.tsx index 04daed5f..f77859f3 100644 --- a/app/web/src/render/ed/panel/tree/body.tsx +++ b/app/web/src/render/ed/panel/tree/body.tsx @@ -1,6 +1,7 @@ import { Tree as DNDTree, DragPreviewRender, + NodeModel, PlaceholderRender, TreeMethods, } from "@minoru/react-dnd-treeview"; @@ -11,6 +12,7 @@ import { canDrop, nodeOnDrop } from "./node/on-drop"; import { nodeRender } from "./node/render"; import { FC } from "react"; import { DEPTH_WIDTH } from "./node/item/indent"; +import { doTreeSearch } from "./search"; export const EdTreeBody = () => { const p = useGlobal(EDGlobal, "EDITOR"); @@ -19,10 +21,17 @@ export const EdTreeBody = () => { indentHook(p, local); + let tree: NodeModel[] = []; + if (p.ui.tree.search) { + tree = doTreeSearch(p); + } else { + tree = p.page.tree; + } + if (p.page.tree.length === 0) return
No Item
; return (
- {item.name} + {node.data?.el || item.name} {/*
{item.id}
*/}
diff --git a/app/web/src/render/ed/panel/tree/node/render.tsx b/app/web/src/render/ed/panel/tree/node/render.tsx index a698f8d3..6f2746aa 100644 --- a/app/web/src/render/ed/panel/tree/node/render.tsx +++ b/app/web/src/render/ed/panel/tree/node/render.tsx @@ -31,6 +31,7 @@ export const nodeRender: NodeRender = (node, prm) => { }} onClick={() => { active.item_id = item.id; + p.ui.tree.search = ""; p.render(); }} > diff --git a/app/web/src/render/ed/panel/tree/search.tsx b/app/web/src/render/ed/panel/tree/search.tsx new file mode 100644 index 00000000..aa84f5c5 --- /dev/null +++ b/app/web/src/render/ed/panel/tree/search.tsx @@ -0,0 +1,113 @@ +import { useGlobal, useLocal } from "web-utils"; +import { EDGlobal, EdMeta, PG } from "../../logic/ed-global"; +import { NodeModel } from "@minoru/react-dnd-treeview"; + +import uFuzzy from "@leeoniya/ufuzzy"; +import { useEffect, useState } from "react"; +const uf = new uFuzzy({}); + +export const EdTreeSearch = () => { + const p = useGlobal(EDGlobal, "EDITOR"); + const local = useLocal({ + sref: null as HTMLInputElement | null, + focus: false, + hover: false, + cursor: null as number | null, + }); + + useEffect(() => { + const input = local.sref; + if (input) input.setSelectionRange(local.cursor, local.cursor); + }, [local.sref, local.cursor, p.ui.tree.search]); + + return ( +
+ { + local.sref = ref; + }} + type="search" + autoComplete="off" + className={cx("flex-1 outline-none px-2 text-[13px] ")} + placeholder="Search..." + value={p.ui.tree.search} + spellCheck={false} + onInput={(e) => { + local.cursor = e.currentTarget.selectionStart; + p.ui.tree.search = e.currentTarget.value; + p.render(); + }} + onFocus={() => { + local.focus = true; + local.render(); + }} + onBlur={() => { + if (!local.hover && !p.ui.tree.search) { + local.focus = false; + local.render(); + } + }} + /> +
+ ); +}; + +export const doTreeSearch = (p: PG) => { + let tree: NodeModel[] = []; + const [idxs, info] = uf.search( + p.page.tree.map((e) => e.text), + p.ui.tree.search + ); + if (idxs && info) { + let i = 0; + for (const idx of idxs) { + const item = p.page.tree[idx]; + const range = info.ranges[i++]; + let text = ""; + + let cur = range.shift(); + let open = true; + for (let i = 0; i < item.text.length; i++) { + if (typeof cur === "number") { + if (i === cur) { + if (open) { + text += ``; + open = false; + } else { + text += ``; + open = true; + } + cur = range.shift(); + } + text += item.text[i]; + } else { + text += item.text[i]; + } + } + const el = ( +
+ ); + tree.push({ + ...item, + parent: "root", + data: item.data + ? { + ...item.data, + el, + } + : undefined, + }); + } + } + return tree; +}; diff --git a/app/web/src/render/ed/panel/tree/tree.tsx b/app/web/src/render/ed/panel/tree/tree.tsx index 20d46157..c18c348a 100644 --- a/app/web/src/render/ed/panel/tree/tree.tsx +++ b/app/web/src/render/ed/panel/tree/tree.tsx @@ -3,12 +3,12 @@ import { DndProvider } from "react-dnd"; import { useGlobal } from "web-utils"; import { EDGlobal } from "../../logic/ed-global"; import { EdTreeBody } from "./body"; +import { EdTreeSearch } from "./search"; export const EdTree = () => { - const p = useGlobal(EDGlobal, "EDITOR"); return (
-
+
diff --git a/bun.lockb b/bun.lockb index 4f5fd8bc0351b561088bc5c5cd5e040bf0eae9b7..f78c6f2924567ad236494ab4c2930524bc169ef3 100755 GIT binary patch delta 39550 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 z
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 PpjXpWH&OO&7x8}p72ElI