feat: fetch root files at build step and handle double click on mobile
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { DEFAULT_ICON } from "~/utils/icons";
|
||||
import { type Child } from "~/utils/tree";
|
||||
|
||||
@@ -10,12 +11,26 @@ export const NvimTreeChild = (props: {
|
||||
onOpen: (file: Child) => void;
|
||||
}) => {
|
||||
const icon = props.child.icon ?? DEFAULT_ICON;
|
||||
const [lastClick, setLastClick] = useState<number>();
|
||||
|
||||
const handleClick = () => {
|
||||
props.onSelect(props.y);
|
||||
|
||||
if (lastClick) {
|
||||
if (Date.now() - lastClick <= 500) {
|
||||
props.onOpen(props.child);
|
||||
}
|
||||
|
||||
setLastClick(undefined);
|
||||
} else {
|
||||
setLastClick(Date.now());
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<li
|
||||
style={{ background: props.selected ? "#504651" : "" }}
|
||||
onMouseDown={() => props.onSelect(props.y)}
|
||||
onDoubleClick={() => props.onOpen(props.child)}
|
||||
onMouseDown={handleClick}
|
||||
>
|
||||
{" "}
|
||||
{props.inDirectory && (
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { type Folder } from "~/utils/tree";
|
||||
|
||||
export const NvimTreeDirectory = (props: {
|
||||
@@ -6,20 +7,37 @@ export const NvimTreeDirectory = (props: {
|
||||
selected: boolean;
|
||||
onSelect: (y: number) => void;
|
||||
onOpen: (directory: Folder) => void;
|
||||
}) => (
|
||||
<li
|
||||
className="text-[#a0b6ee]"
|
||||
style={{ background: props.selected ? "#504651" : "" }}
|
||||
onMouseDown={() => props.onSelect(props.y)}
|
||||
onDoubleClick={() => props.onOpen(props.directory)}
|
||||
>
|
||||
{props.directory.opened ? (
|
||||
<> </>
|
||||
) : (
|
||||
<>
|
||||
<span className="text-[#716471]"> </span>{" "}
|
||||
</>
|
||||
)}
|
||||
{props.directory.name}
|
||||
</li>
|
||||
);
|
||||
}) => {
|
||||
const [lastClick, setLastClick] = useState<number>();
|
||||
|
||||
const handleClick = () => {
|
||||
props.onSelect(props.y);
|
||||
|
||||
if (lastClick) {
|
||||
if (Date.now() - lastClick <= 500) {
|
||||
props.onOpen(props.directory);
|
||||
}
|
||||
|
||||
setLastClick(undefined);
|
||||
} else {
|
||||
setLastClick(Date.now());
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<li
|
||||
className="text-[#a0b6ee]"
|
||||
style={{ background: props.selected ? "#504651" : "" }}
|
||||
onMouseDown={handleClick}
|
||||
>
|
||||
{props.directory.opened ? (
|
||||
<> </>
|
||||
) : (
|
||||
<>
|
||||
<span className="text-[#716471]"> </span>{" "}
|
||||
</>
|
||||
)}
|
||||
{props.directory.name}
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -28,7 +28,7 @@ const buildTree = () =>
|
||||
project(p.name, p.content, p.url, p.language, p.private),
|
||||
),
|
||||
),
|
||||
file("README.md", "hey", getIcon("README.md")),
|
||||
...assets.files.map((f) => file(f.name, f.content)),
|
||||
]);
|
||||
|
||||
export const NvimTree = (
|
||||
|
||||
@@ -43,7 +43,6 @@ const InnerNvimTree = (props: InnerKittyProps<typeof Nvim>) => {
|
||||
<NvimTree {...props} onOpen={handleOpenChild} />
|
||||
</div>
|
||||
<div
|
||||
className="overflow-y-auto break-all"
|
||||
style={{
|
||||
gridArea: "1 / 2 / 1 / 3",
|
||||
overflowY: "auto",
|
||||
|
||||
@@ -16,7 +16,6 @@ import { WaybarPowerWidget } from "./Widgets/WaybarPowerWidget";
|
||||
import { WaybarTrayWidget } from "./Widgets/WaybarTrayWidget";
|
||||
import { WaybarToggleThemeWidget } from "./Widgets/WaybarToggleThemeWidget";
|
||||
import { WaybarWeatherWidget } from "./Widgets/WaybarWeatherWidget";
|
||||
import { Responsive } from "../Responsive";
|
||||
import { cn, hideIf } from "~/utils/react";
|
||||
import { useApp } from "~/hooks/useApp";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user