Allow more derived State classes to provide a generic type

This commit is contained in:
Sam Jeeves
2023-12-16 14:55:13 +01:00
parent a457385a8c
commit 8c2577703f
5 changed files with 8 additions and 5 deletions

View File

@ -1,3 +1,4 @@
import { CanvasEngine } from '../CanvasEngine';
import { AbstractDisplacementState, AbstractDisplacementStateEvent } from '../core-state/AbstractDisplacementState';
import { State } from '../core-state/State';
@ -8,7 +9,7 @@ export interface DragCanvasStateOptions {
allowDrag?: boolean;
}
export class DragCanvasState extends AbstractDisplacementState {
export class DragCanvasState<E extends CanvasEngine = CanvasEngine> extends AbstractDisplacementState<E> {
// store this as we drag the canvas
initialCanvasX: number;
initialCanvasY: number;

View File

@ -2,8 +2,9 @@ import { State } from '../core-state/State';
import { Action, ActionEvent, InputType } from '../core-actions/Action';
import { SelectionBoxState } from './SelectionBoxState';
import { MouseEvent } from 'react';
import { CanvasEngine } from '../CanvasEngine';
export class SelectingState extends State {
export class SelectingState<E extends CanvasEngine = CanvasEngine> extends State<E> {
constructor() {
super({
name: 'selecting'

View File

@ -4,6 +4,7 @@ import { SelectionLayerModel } from '../entities/selection/SelectionLayerModel';
import { Point, Rectangle } from '@projectstorm/geometry';
import { BasePositionModel } from '../core-models/BasePositionModel';
import { ModelGeometryInterface } from '../core/ModelGeometryInterface';
import { CanvasEngine } from '../CanvasEngine';
export interface SimpleClientRect {
left: number;
@ -14,7 +15,7 @@ export interface SimpleClientRect {
bottom: number;
}
export class SelectionBoxState extends AbstractDisplacementState {
export class SelectionBoxState<E extends CanvasEngine = CanvasEngine> extends AbstractDisplacementState<E> {
layer: SelectionLayerModel;
constructor() {

View File

@ -6,7 +6,7 @@ import { PortModel } from '../entities/port/PortModel';
import { MouseEvent } from 'react';
import { LinkModel } from '../entities/link/LinkModel';
export class DragDiagramItemsState extends MoveItemsState<DiagramEngine> {
export class DragDiagramItemsState<E extends DiagramEngine = DiagramEngine> extends MoveItemsState<E> {
constructor() {
super();
this.registerAction(

View File

@ -22,7 +22,7 @@ export interface DragNewLinkStateOptions {
allowLinksFromLockedPorts?: boolean;
}
export class DragNewLinkState extends AbstractDisplacementState<DiagramEngine> {
export class DragNewLinkState<E extends DiagramEngine = DiagramEngine> extends AbstractDisplacementState<E> {
port: PortModel;
link: LinkModel;
config: DragNewLinkStateOptions;