1.0.74 • Published 5 months ago

prospective-canvas v1.0.74

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

Simple Prespective Canvas Package

This package contains some simple classes to draw svg component on prespective designer.

Requirements:

  • map your props into the following interface:
	export interface ComponentState {
	    name: string;
	    variant: string;
	    setup: any;                 // setup props
	    status: any;                // status props
	    clickEvent: any;            // component deselect props
	    deselectedEvent: any;       // component deselect props
	    information: any;           // information props to include in event
	}

  folow provided schemas for the above, except for information which is up to you to define
  • Implement props write like below and add to the props.json of your object
	// this must be implemented to provide access to props write
    writeStatus(isSelected: boolean, clickCounter: number): void {
        this.props.props.writeStatus(isSelected,clickCounter); 
    }
  • create an abstract class like below
	
	// this is the base component where all common functions and properties will be defined
	export abstract class BaseComponent<T extends object, U> extends Component<ComponentProps<T>, U> {
	    perspectiveComponent = new PrespectiveComponent(this.refreshFigure.bind(this),this.writeStatus.bind(this));
	    canvasRef: React.RefObject<SVGSVGElement> = React.createRef();

	    componentDidMount() { 
	        // pass canvas reference for drawing
	        this.mapProps();
	        this.perspectiveComponent.className = "your-component";
	        this.perspectiveComponent.canvasRef = this.canvasRef;        
	        this.perspectiveComponent.componentDidMount();        
	    }

	    componentWillUnmount() {
	        this.perspectiveComponent.componentWillUnmount();        
	    }

	    componentDidUpdate() {  
	        this.mapProps(); 
	        const refreshRequired = this.componentDidUpdateTasks();      
	        this.perspectiveComponent.componentDidUpdate(refreshRequired);
	    }

	    // refreshFigure to be implemented in actual class
	    abstract refreshFigure(): void;
	    abstract writeStatus(isSelected: boolean, clickCounter: number): void;
	    protected abstract mapProps(): void;
	    abstract componentDidUpdateTasks(): boolean;      // any thing to be dome before componentDidUpdate
	} 
  • your component will extend BaseComponent:
	class YourComponent extends BaseComponent<ConveyorProps, ComponentState>
1.0.62

5 months ago

1.0.61

5 months ago

1.0.66

5 months ago

1.0.65

5 months ago

1.0.64

5 months ago

1.0.63

5 months ago

1.0.69

5 months ago

1.0.68

5 months ago

1.0.67

5 months ago

1.0.73

5 months ago

1.0.72

5 months ago

1.0.71

5 months ago

1.0.70

5 months ago

1.0.74

5 months ago

1.0.40

5 months ago

1.0.44

5 months ago

1.0.43

5 months ago

1.0.42

5 months ago

1.0.41

5 months ago

1.0.48

5 months ago

1.0.47

5 months ago

1.0.46

5 months ago

1.0.45

5 months ago

1.0.49

5 months ago

1.0.51

5 months ago

1.0.55

5 months ago

1.0.54

5 months ago

1.0.52

5 months ago

1.0.59

5 months ago

1.0.58

5 months ago

1.0.57

5 months ago

1.0.56

5 months ago

1.0.39

5 months ago

1.0.38

5 months ago

1.0.33

5 months ago

1.0.37

5 months ago

1.0.36

5 months ago

1.0.35

5 months ago

1.0.34

5 months ago

1.0.26

6 months ago

1.0.25

6 months ago

1.0.24

7 months ago

1.0.23

7 months ago

1.0.29

6 months ago

1.0.28

6 months ago

1.0.27

6 months ago

1.0.32

6 months ago

1.0.31

6 months ago

1.0.30

6 months ago

1.0.22

8 months ago

1.0.21

8 months ago

1.0.20

8 months ago

1.0.19

8 months ago

1.0.18

8 months ago

1.0.17

8 months ago

1.0.16

8 months ago

1.0.15

8 months ago

1.0.14

8 months ago

1.0.13

8 months ago

1.0.12

8 months ago

1.0.11

8 months ago

1.0.10

8 months ago

1.0.9

8 months ago

1.0.8

8 months ago

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago