Canvas overview
Added in v1.0.0
Table of contents
- accessors
- commands
- models
- BBox (interface)
- Canvas (interface)
- CanvasEdge (interface)
- CanvasFileNode (interface)
- CanvasGroupNode (interface)
- CanvasInteractionLayer (interface)
- CanvasLinkNode (interface)
- CanvasMenu (interface)
- CanvasNode (interface)
- CanvasNodeUnknownData (interface)
- CanvasSelection (interface)
- CanvasTextNode (interface)
- Size (interface)
- ops
- tags
accessors
get
Signature
export declare const get: Effect.Effect<Option.Option<Canvas>, never, Plugin.Plugin>
Added in v1.0.0
prop
Signature
export declare const prop: <K extends keyof Canvas>(key: K) => Effect.Effect<Canvas[K], never, Canvas>
Added in v1.0.0
commands
addCommand
Signature
export declare const addCommand: <R, E>(
command: Plugin.Command<R, E>
) => Effect.Effect<void, never, Plugin.Plugin | Scope.Scope | Exclude<R, Canvas>>
Added in v1.0.0
models
BBox (interface)
Signature
export interface BBox {
maxX: number
maxY: number
minX: number
minY: number
}
Added in v1.0.0
Canvas (interface)
Signature
export interface Canvas {
readonly _: unique symbol
readonly getData: () => CanvasData
readonly createTextNode: (args: {
pos: Obsidian.Point
text?: string
size?: Size
focus?: boolean
}) => CanvasTextNode
readonly: boolean
view: Obsidian.MarkdownView
x: number
y: number
nodes: Map<string, CanvasNode>
edges: Map<string, CanvasEdge>
nodeInteractionLayer: CanvasInteractionLayer
selection: Set<CanvasNode>
menu: CanvasMenu
wrapperEl: HTMLElement
history: any
requestPushHistory: any
nodeIndex: any
deselectAll(): void
getContainingNodes(coords: BBox): Array<CanvasNode>
getEdgesForNode(node: CanvasNode): Array<CanvasEdge>
getViewportNodes(): Array<CanvasNode>
importData(data: CanvasData): void
panTo(x: number, y: number): void
panIntoView(bbox: BBox): void
requestFrame(): void
requestSave(save?: boolean, triggerBySelf?: boolean): void
select(nodes: CanvasNode): void
selectOnly(nodes: CanvasNode): void
showQuickSettingsMenu(menu: Obsidian.Menu): void
zoomToSelection(): void
}
Added in v1.0.0
CanvasEdge (interface)
Signature
export interface CanvasEdge {
id: string
label: string | undefined
lineStartGroupEl: SVGGElement
lineEndGroupEl: SVGGElement
lineGroupEl: SVGGElement
path: {
display: SVGPathElement
interaction: SVGPathElement
}
from: {
side: "left" | "right" | "top" | "bottom"
node: CanvasNode
}
to: {
side: "left" | "right" | "top" | "bottom"
node: CanvasNode
}
canvas: Canvas
bbox: BBox
unknownData: CanvasNodeUnknownData
}
Added in v1.0.0
CanvasFileNode (interface)
Signature
export interface CanvasFileNode extends CanvasNode {
file: Obsidian.TFile
}
Added in v1.0.0
CanvasGroupNode (interface)
Signature
export interface CanvasGroupNode extends CanvasNode {
label: string
}
Added in v1.0.0
CanvasInteractionLayer (interface)
Signature
export interface CanvasInteractionLayer {
interactionEl: HTMLElement
canvas: Canvas
target: CanvasNode | null
render(): void
setTarget(target: CanvasNode | null): void
}
Added in v1.0.0
CanvasLinkNode (interface)
Signature
export interface CanvasLinkNode extends CanvasNode {
url: string
}
Added in v1.0.0
CanvasMenu (interface)
Signature
export interface CanvasMenu {
containerEl: HTMLElement
menuEl: HTMLElement
canvas: Canvas
selection: CanvasSelection
render(): void
updateZIndex(): void
}
Added in v1.0.0
CanvasNode (interface)
Signature
export interface CanvasNode {
id: string
x: number
y: number
width: number
height: number
zIndex: number
bbox: BBox
unknownData: CanvasNodeUnknownData
renderedZIndex: number
color: string
headerComponent: Obsidian.Component
nodeEl: HTMLElement
labelEl: HTMLElement
contentEl: HTMLElement
containerEl: HTMLElement
canvas: Canvas
app: Obsidian.App
getBBox(containing?: boolean): BBox
getData: () => AllCanvasNodeData
moveTo({ x, y }: { x: number; y: number }): void
setColor: (color: string) => void
render(): void
readonly [key: string]: any
}
Added in v1.0.0
CanvasNodeUnknownData (interface)
Signature
export interface CanvasNodeUnknownData {
id: string
collapsed: boolean
[key: string]: any
}
Added in v1.0.0
CanvasSelection (interface)
Signature
export interface CanvasSelection {
selectionEl: HTMLElement
resizerEls: HTMLElement
canvas: Canvas
bbox: BBox | undefined
render(): void
hide(): void
onResizePointerDown(e: PointerEvent, direction: CanvasDirection): void
update(bbox: BBox): void
}
Added in v1.0.0
CanvasTextNode (interface)
Signature
export interface CanvasTextNode extends CanvasNode {
text: string
child: any
}
Added in v1.0.0
Size (interface)
Signature
export interface Size {
readonly height: number
readonly width: number
}
Added in v1.0.0
ops
createEdge
Signature
export declare const createEdge: (options: {
readonly from: CanvasNode
readonly fromSide?: NodeSide
readonly to: CanvasNode
readonly toSide?: NodeSide
}) => Effect.Effect<void, never, Canvas>
Added in v1.0.0
nodeChanges
Signature
export declare const nodeChanges: (canvas: Canvas) => Stream.Stream<number>
Added in v1.0.0
onActive
Signature
export declare const onActive: <R, E>(
effect: Effect.Effect<void, E, R>
) => Effect.Effect<void, never, Plugin.Plugin | Scope.Scope | Exclude<Exclude<R, Scope.Scope>, Canvas>>
Added in v1.0.0
onNodeChanges
Signature
export declare const onNodeChanges: <R, E>(
effect: Effect.Effect<void, E, R>
) => Effect.Effect<void, never, Plugin.Plugin | Scope.Scope | Exclude<R, Canvas>>
Added in v1.0.0
selectedNode
Signature
export declare const selectedNode: Effect.Effect<Option.Option<CanvasNode>, never, Canvas>
Added in v1.0.0
tags
Canvas
Signature
export declare const Canvas: Context.Tag<Canvas, Canvas>
Added in v1.0.0