Progressing on CanvasEditor

This commit is contained in:
2025-01-07 17:49:53 +01:00
parent 6f305397a8
commit e7412f6768
15 changed files with 395 additions and 139 deletions

67
types/content.d.ts vendored
View File

@@ -1,11 +1,52 @@
import { explorerContentTable } from "~/db/schema";
import type { CanvasContent } from "./canvas";
import type { CanvasContent as Canvas } from "./canvas";
import type { MapContent as Map } from "./map";
export type FileType = typeof explorerContentTable.$inferSelect.type;
export type Overview = Omit<typeof explorerContentTable.$inferSelect, 'content'>;
export type Content = { content: string };
export type ExploreContent= Overview & Partial<Content>;
export type TreeItem = ExploreContent & { children?: TreeItem[] };
export type FileType = keyof ContentMap;
export interface Overview {
path: string;
owner: number;
title: string;
timestamp: Date;
navigable: boolean;
private: boolean;
order: number;
visit: number;
}
export interface CanvasContent extends Overview {
type: 'canvas';
content?: string;
}
export interface MapContent extends Overview {
type: 'map';
content?: string;
}
export interface MarkdownContent extends Overview {
type: 'markdown';
content?: string;
}
export interface FileContent extends Overview {
type: 'file';
content?: string;
}
export interface FolderContent extends Overview {
type: 'folder';
content?: null;
}
export interface ContentMap
{
markdown: MarkdownContent;
file: FileContent;
canvas: CanvasContent;
map: MapContent;
folder: FolderContent;
}
export type ExploreContent = ContentMap[FileType];
export type TreeItem = ExploreContent & {
children?: TreeItem[];
}
export interface ContentComposable {
content: Ref<ExploreContent[]>
@@ -18,16 +59,4 @@ export interface ContentComposable {
* Get the given content from the server.
*/
get: (path: string) => Promise<void>
}
export type MarkdownContent = string;
export type FileContent = any;
export type FolderContent = null;
export interface ContentTypeMap
{
markdown: MarkdownContent;
canvas: CanvasContent;
file: FileContent;
folder: FolderContent;
}

17
types/map.d.ts vendored Normal file
View File

@@ -0,0 +1,17 @@
export interface MapContent
{
bg: string;
interests: MapInterest[];
}
export interface MapInterest
{
id: string;
x: number;
y: number;
text: string;
width?: number;
height?: number;
color?: CanvasColor;
valign?: 'start' | 'center' | 'end';
halign?: 'start' | 'center' | 'end';
}