Skip to content

Commit 3b92e6e

Browse files
authored
Merge pull request #36 from retejs/expose-classic-actions
feat: expose classic action classes
2 parents 606ba0a + 2939916 commit 3b92e6e

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

src/presets/classic/actions/node.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { BaseSchemes, NodeEditor, NodeId } from 'rete'
2-
import { BaseArea, BaseAreaPlugin } from 'rete-area-plugin'
2+
import { BaseAreaPlugin } from 'rete-area-plugin'
33

44
import { Action } from '../../../types'
55

66
export type Position = { x: number, y: number }
77

8-
export class AddNodeAction<S extends BaseSchemes> implements Action {
8+
export class AddNodeAction<S extends BaseSchemes, AreaExtra> implements Action {
99
node?: S['Node']
1010
position?: Position
1111

12-
constructor(private editor: NodeEditor<S>, private area: BaseAreaPlugin<S, BaseArea<S>>, private nodeId: NodeId) { }
12+
constructor(private editor: NodeEditor<S>, private area: BaseAreaPlugin<S, AreaExtra>, private nodeId: NodeId) { }
1313

1414
async undo() {
1515
this.node = this.editor.getNode(this.nodeId)
@@ -23,10 +23,10 @@ export class AddNodeAction<S extends BaseSchemes> implements Action {
2323
}
2424
}
2525

26-
export class RemoveNodeAction<S extends BaseSchemes> implements Action {
26+
export class RemoveNodeAction<S extends BaseSchemes, AreaExtra> implements Action {
2727
constructor(
2828
private editor: NodeEditor<S>,
29-
private area: BaseAreaPlugin<S, BaseArea<S>>,
29+
private area: BaseAreaPlugin<S, AreaExtra>,
3030
private node: S['Node'],
3131
private position: Position
3232
) { }
@@ -41,11 +41,11 @@ export class RemoveNodeAction<S extends BaseSchemes> implements Action {
4141
}
4242
}
4343

44-
export class DragNodeAction<S extends BaseSchemes> implements Action {
44+
export class DragNodeAction<S extends BaseSchemes, AreaExtra> implements Action {
4545
prev!: Position
4646
new!: Position
4747

48-
constructor(private area: BaseAreaPlugin<S, BaseArea<S>>, public nodeId: NodeId, prev: Position) {
48+
constructor(private area: BaseAreaPlugin<S, AreaExtra>, public nodeId: NodeId, prev: Position) {
4949
const view = area.nodeViews.get(nodeId)
5050

5151
if (!view) return

src/presets/classic/index.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@ import { Preset } from '../types'
77
import { AddConnectionAction, RemoveConnectionAction } from './actions/connection'
88
import { AddNodeAction, DragNodeAction, Position, RemoveNodeAction } from './actions/node'
99

10+
export {
11+
AddConnectionAction,
12+
AddNodeAction,
13+
DragNodeAction,
14+
RemoveConnectionAction,
15+
RemoveNodeAction
16+
}
17+
1018
type NodeActions<S extends BaseSchemes> =
11-
| AddNodeAction<S>
12-
| RemoveNodeAction<S>
13-
| DragNodeAction<S>
19+
| AddNodeAction<S, BaseArea<S>>
20+
| RemoveNodeAction<S, BaseArea<S>>
21+
| DragNodeAction<S, BaseArea<S>>
1422

1523
type ConnectionActions<S extends BaseSchemes> =
1624
| AddConnectionAction<S>
@@ -30,7 +38,7 @@ function trackNodes<S extends BaseSchemes>(history: HistoryPlugin<S, NodeActions
3038
if (context.type === 'nodecreated') {
3139
const { id } = context.data
3240

33-
history.add(new AddNodeAction<S>(editor, area, id))
41+
history.add(new AddNodeAction(editor, area, id))
3442
nodes.set(id, editor.getNode(context.data.id))
3543
}
3644
if (context.type === 'noderemoved') {
@@ -40,7 +48,7 @@ function trackNodes<S extends BaseSchemes>(history: HistoryPlugin<S, NodeActions
4048

4149
if (!node) throw new Error('node')
4250
if (!position) throw new Error('position' + id)
43-
history.add(new RemoveNodeAction<S>(editor, area, node, position))
51+
history.add(new RemoveNodeAction(editor, area, node, position))
4452

4553
positions.delete(id)
4654
nodes.delete(id)
@@ -75,7 +83,7 @@ function trackNodes<S extends BaseSchemes>(history: HistoryPlugin<S, NodeActions
7583
if (context.type === 'nodetranslated') {
7684
const { id, position, previous } = context.data
7785
const recent = history.getRecent(timing)
78-
.filter((n): n is ({ time: number, action: DragNodeAction<S> }) => n.action instanceof DragNodeAction)
86+
.filter((n): n is ({ time: number, action: DragNodeAction<S, BaseArea<S>> }) => n.action instanceof DragNodeAction)
7987
.filter(n => n.action.nodeId === id)
8088

8189
if (recent.length > 1) throw new Error('> 1')
@@ -84,7 +92,7 @@ function trackNodes<S extends BaseSchemes>(history: HistoryPlugin<S, NodeActions
8492
recent[0].action.new = position
8593
recent[0].time = Date.now()
8694
} else {
87-
history.add(new DragNodeAction<S>(area, id, previous))
95+
history.add(new DragNodeAction(area, id, previous))
8896
}
8997
}
9098

0 commit comments

Comments
 (0)