Skip to content

Commit 9b4f4c3

Browse files
Updated types
1 parent 8c52bbd commit 9b4f4c3

File tree

3 files changed

+58
-71
lines changed

3 files changed

+58
-71
lines changed

src/@types/Canvas.d.ts

Lines changed: 43 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,21 @@
1-
import { TFile } from "obsidian"
1+
import { TFile, View } from "obsidian"
2+
3+
export interface Size {
4+
width: number
5+
height: number
6+
}
7+
8+
export interface Position {
9+
x: number
10+
y: number
11+
}
12+
13+
export interface BBox {
14+
minX: number
15+
maxX: number
16+
minY: number
17+
maxY: number
18+
}
219

320
export interface Canvas {
421
view: CanvasView
@@ -7,50 +24,49 @@ export interface Canvas {
724
getData(): CanvasData
825

926
nodes: Map<string, CanvasNode>
10-
menu: PopupMenu
11-
nodeInteractionLayer: NodeInteractionLayer
27+
edges: Map<string, CanvasEdge>
28+
getEdgesForNode(node: CanvasNode): CanvasEdge[]
1229

1330
wrapperEl: HTMLElement
31+
menu: PopupMenu
1432
cardMenuEl: HTMLElement
1533
canvasControlsEl: HTMLElement
1634
quickSettingsButton: HTMLElement
35+
nodeInteractionLayer: NodeInteractionLayer
1736

1837
canvasRect: DOMRect
38+
getViewportBBox(): BBox
39+
setViewport(tx: number, ty: number, tZoom: number): void
40+
markViewportChanged(): void
41+
1942
x: number
20-
tx: number
2143
y: number
22-
ty: number
2344
zoom: number
45+
46+
tx: number
47+
ty: number
2448
tZoom: number
2549

50+
zoomToBbox(bbox: BBox): void
51+
zoomToSelection(): void
52+
2653
readonly: boolean
2754
setReadonly(readonly: boolean): void
2855

2956
selection: Set<CanvasNode>
3057
getSelectionData(): SelectionData
3158
deselectAll(): void
3259

33-
getEdgesForNode(node: CanvasNode): CanvasEdge[]
34-
60+
dragTempNode(dragEvent: any, nodeSize: Size, onDropped: (position: Position) => void): void
3561
createTextNode(options: TextNodeOptions): CanvasNode
3662
createGroupNode(options: GroupNodeOptions): CanvasNode
3763
createFileNode(options: FileNodeOptions): CanvasNode
3864
removeNode(node: CanvasNode): void
3965

40-
dragTempNode(dragEvent: any, nodeSize: Size, onDropped: (position: Position) => void): void
41-
42-
setViewport(tx: number, ty: number, tZoom: number): void
43-
markViewportChanged(): void
44-
45-
getViewportBBox(): BBox
46-
zoomToBbox(bbox: BBox): void
47-
zoomToSelection(): void
48-
4966
undo(): void
5067
redo(): void
5168

5269
handlePaste(): void
53-
requestPushHistory(data: CanvasData): void
5470
requestSave(): void
5571

5672
// Custom
@@ -70,29 +86,10 @@ export interface CanvasConfig {
7086
defaultTextNodeDimensions: Size
7187
}
7288

73-
export interface CanvasView {
89+
export interface CanvasView extends View {
7490
file: TFile
7591
}
7692

77-
export interface Size {
78-
width: number
79-
height: number
80-
}
81-
82-
export interface Position {
83-
x: number
84-
y: number
85-
}
86-
87-
export interface BBox {
88-
minX: number
89-
maxX: number
90-
minY: number
91-
maxY: number
92-
}
93-
94-
type Side = 'top' | 'right' | 'bottom' | 'left'
95-
9693
export interface NodeOptions {
9794
pos: Position
9895
size: Size
@@ -114,10 +111,11 @@ export interface FileNodeOptions extends NodeOptions {
114111
}
115112

116113
export interface CanvasData {
117-
nodes: CanvasNode[]
118-
edges: CanvasEdge[]
114+
nodes: CanvasNodeData[]
115+
edges: CanvasEdgeData[]
119116
}
120117

118+
export type CanvasNodeType = 'text' | 'group' | 'file' | 'link'
121119
export interface CanvasNodeData {
122120
type: CanvasNodeType
123121
shape: string
@@ -129,28 +127,24 @@ export interface CanvasNodeData {
129127
export interface CanvasNode {
130128
canvas: Canvas
131129
nodeEl: HTMLElement
132-
bbox: BBox
133130
getBBox(): BBox
134-
text?: string
131+
135132
color: string
133+
134+
/** @deprecated Use `canvas.setNodeData` instead */
136135
setData(data: CanvasNodeData): void
137136
getData(): CanvasNodeData
138137
}
139138

140-
export interface CanvasNodeUnknownData {
141-
}
142-
143-
export type CanvasNodeType = 'text' | 'group' | 'file'
144-
139+
type Side = 'top' | 'right' | 'bottom' | 'left'
145140
export interface CanvasEdgeData {
141+
id: string
142+
146143
fromNode: string
147144
toNode: string
148145

149146
fromSide: Side
150147
toSide: Side
151-
152-
id: string
153-
label?: string
154148
}
155149

156150
export interface CanvasEdge {
@@ -172,11 +166,4 @@ export interface NodeInteractionLayer {
172166
export interface PopupMenu {
173167
menuEl: HTMLElement
174168
render(): void
175-
}
176-
177-
export interface BBox {
178-
minX: number
179-
minY: number
180-
maxX: number
181-
maxY: number
182169
}

src/@types/Obsidian.d.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,28 @@ export * from "obsidian"
33
declare module "obsidian" {
44
export default interface App {
55
/** @public */
6-
keymap: Keymap;
6+
keymap: Keymap
77
/** @public */
8-
scope: Scope;
9-
8+
scope: Scope
109
/** @public */
11-
vault: Vault;
10+
vault: Vault
1211
/** @public */
13-
metadataCache: MetadataCache;
14-
12+
metadataCache: MetadataCache
1513
/** @public */
16-
fileManager: FileManager;
17-
14+
fileManager: FileManager
1815
/**
1916
* The last known user interaction event, to help commands find out what modifier keys are pressed.
2017
* @public
2118
*/
22-
lastEvent: UserEvent | null;
19+
lastEvent: UserEvent | null
2320

21+
// Custom
2422
/** @public */
25-
workspace: Workspace & {
26-
on(name: string, callback: (...args: any) => void): EventRef
27-
}
23+
workspace: Workspace & ExtendedWorkspace
24+
}
25+
26+
export interface ExtendedWorkspace {
27+
on(name: string, callback: (...args: any) => void): EventRef
2828
}
2929

3030
export interface EventRef {

src/canvas-extensions/presentation-canvas-extension.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,20 +146,20 @@ export default class PresentationCanvasExtension {
146146
if (animationDurationMs > 0 && fromNode) {
147147
const animationIntensity = this.plugin.settingsManager.getSetting('slideTransitionAnimationIntensity')
148148

149-
const currentNodeBBoxEnlarged = CanvasHelper.scaleBBox(fromNode.bbox, animationIntensity)
149+
const currentNodeBBoxEnlarged = CanvasHelper.scaleBBox(fromNode.getBBox(), animationIntensity)
150150
if (useCustomZoomFunction) CanvasHelper.zoomToBBox(canvas, currentNodeBBoxEnlarged)
151151
else canvas.zoomToBbox(currentNodeBBoxEnlarged)
152152

153153
await delay(animationDurationMs / 2)
154154

155-
const nextNodeBBoxEnlarged = CanvasHelper.scaleBBox(toNode.bbox, animationIntensity)
155+
const nextNodeBBoxEnlarged = CanvasHelper.scaleBBox(toNode.getBBox(), animationIntensity)
156156
if (useCustomZoomFunction) CanvasHelper.zoomToBBox(canvas, nextNodeBBoxEnlarged)
157157
else canvas.zoomToBbox(nextNodeBBoxEnlarged)
158158

159159
await delay(animationDurationMs / 2)
160160
}
161161

162-
let nodeBBox = toNode.bbox
162+
let nodeBBox = toNode.getBBox()
163163
if (useCustomZoomFunction) CanvasHelper.zoomToBBox(canvas, nodeBBox)
164164
else canvas.zoomToBbox(nodeBBox)
165165
}

0 commit comments

Comments
 (0)