Page MenuHomeMTRNord's Forge

neoboardTypes.ts
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

neoboardTypes.ts

import z from 'zod';
const zPoint = z.object({
x: z.number(),
y: z.number(),
});
export const zShape = z.object({
type: z.literal('shape'),
kind: z.enum(['rectangle', 'circle', 'ellipse', 'triangle']),
position: zPoint,
width: z.number(),
height: z.number(),
fillColor: z.string(),
strokeColor: z.string().optional(),
strokeWidth: z.number().min(0).optional(),
borderRadius: z.number().optional(),
text: z.string(),
textAlignment: z.enum(['left', 'center', 'right']).optional(),
textColor: z.string().optional(),
textBold: z.boolean().optional(),
textItalic: z.boolean().optional(),
textSize: z.number().min(0).optional(),
});
export type Shape = z.infer<typeof zShape>;
export const zImage = z.object({
type: z.literal('image'),
mxc: z.string(),
fileName: z.string(),
mimeType: z.enum(['image/gif', 'image/jpeg', 'image/png', 'image/svg+xml']).optional(),
position: zPoint,
width: z.number().min(0),
height: z.number().min(0),
});
export type Image = z.infer<typeof zImage>;
export const zPath = z.object({
type: z.literal('path'),
kind: z.enum(['line', 'polyline']),
position: zPoint,
points: z.array(zPoint),
strokeColor: z.string(),
endMarker: z.enum(['arrow-head-line']).optional(),
});
export type Path = z.infer<typeof zPath>;
export const zSlide = z.object({
elements: z.array(z.discriminatedUnion('type', [
zShape,
zPath,
zImage,
])),
});
export type Slide = z.infer<typeof zSlide>;
export const zWhiteboard = z.object({
version: z.literal('net.nordeck.whiteboard@v1'),
whiteboard: z.object({
files: z.array(z.object({
mxc: z.string(),
data: z.string(),
})).optional(),
slides: z.array(zSlide),
}),
});
export type Whiteboard = z.infer<typeof zWhiteboard>;
export const neoboardWhiteboardWidth = 1920;
export const neoboardWhiteboardHeight = 1080;

File Metadata

Mime Type
application/javascript
Expires
Fri, Mar 20, 5:00 PM (1 d, 20 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33
Default Alt Text
neoboardTypes.ts (1 KB)

Event Timeline