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

View File

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

View File

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

View File

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

View File

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