Merge pull request #1047 from Braun-IT-Solutions/react-19

Update for React 19
This commit is contained in:
Dylan Vorster
2025-04-03 11:32:39 -06:00
committed by GitHub
31 changed files with 6431 additions and 10297 deletions

View File

@@ -0,0 +1,11 @@
---
'@projectstorm/react-diagrams-defaults': patch
'@projectstorm/react-diagrams-routing': patch
'@projectstorm/react-diagrams-core': patch
'@projectstorm/react-canvas-core': patch
'@projectstorm/react-diagrams-gallery': patch
'@projectstorm/react-diagrams-demo': patch
'@projectstorm/geometry': patch
---
Updated packages to support React v19

View File

@@ -1,8 +1,5 @@
module.exports = {
stories: ['../demos/*.stories.tsx'],
addons: ['@storybook/addon-actions'],
framework: {
name: '@storybook/react-webpack5',
options: {}
}
addons: ['@storybook/addon-actions', '@storybook/addon-webpack5-compiler-babel'],
framework: '@storybook/react-webpack5'
};

View File

@@ -1,4 +1,4 @@
import { addons } from '@storybook/addons';
import { addons } from '@storybook/manager-api';
import diagramsTheme from './theme';

View File

@@ -4,6 +4,7 @@ import { DiagramEngine } from '@projectstorm/react-diagrams';
import { EditableLabelModel } from './EditableLabelModel';
import { EditableLabelWidget } from './EditableLabelWidget';
import { JSX } from 'react';
export class EditableLabelFactory extends AbstractReactFactory<EditableLabelModel, DiagramEngine> {
constructor() {

View File

@@ -10,7 +10,7 @@ import { LinkWidget, PointModel } from '@projectstorm/react-diagrams-core';
import * as React from 'react';
import { CanvasWidget } from '@projectstorm/react-canvas-core';
import { DemoCanvasWidget } from '../helpers/DemoCanvasWidget';
import { MouseEvent } from 'react';
import { JSX, MouseEvent } from 'react';
import { DefaultLinkPointWidget, DefaultLinkSegmentWidget } from '@projectstorm/react-diagrams-defaults/dist';
import { DiagramEngine } from '@projectstorm/react-diagrams-core/dist';

View File

@@ -3,6 +3,7 @@ import { DiamondNodeModel } from './DiamondNodeModel';
import * as React from 'react';
import { AbstractReactFactory } from '@projectstorm/react-canvas-core';
import { DiagramEngine } from '@projectstorm/react-diagrams-core';
import { JSX } from 'react';
export class DiamondNodeFactory extends AbstractReactFactory<DiamondNodeModel, DiagramEngine> {
constructor() {

View File

@@ -31,23 +31,24 @@
"gsap": "^3.12.2",
"json-beautify": "^1.1.1",
"lodash": "^4.17.21",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@babel/preset-env": "^7.22.20",
"@babel/preset-react": "^7.22.15",
"@babel/preset-typescript": "^7.22.15",
"@storybook/addon-actions": "^7.4.4",
"@storybook/addon-options": "^5.3.21",
"@storybook/addons": "^7.4.4",
"@storybook/react": "^7.4.4",
"@storybook/react-webpack5": "^7.4.4",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.27.0",
"@storybook/addon-actions": "^8.6.9",
"@storybook/addon-webpack5-compiler-babel": "^3.0.5",
"@storybook/manager-api": "^8.6.10",
"@storybook/preview-api": "^8.6.10",
"@storybook/react": "^8.6.9",
"@storybook/react-webpack5": "^8.6.9",
"@storybook/storybook-deployer": "^2.8.16",
"@storybook/theming": "^7.4.4",
"@storybook/theming": "^8.6.9",
"@types/lodash": "^4.14.200",
"@types/react": "^18.2.22",
"@types/react-dom": "^18.2.7",
"storybook": "^7.4.4"
"@types/react": "^19.0.12",
"@types/react-dom": "^19.0.4",
"storybook": "^8.6.9"
}
}

View File

@@ -1,7 +1,6 @@
{
"compileOnSave": false,
"compilerOptions": {
"suppressExcessPropertyErrors": true,
"esModuleInterop": true,
"declaration": true,
"composite": true,

View File

@@ -26,18 +26,18 @@
"typings": "./dist/@types/index",
"dependencies": {
"@projectstorm/react-diagrams": "workspace:*",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"source-map-loader": "^4.0.1",
"html-webpack-plugin": "^5.5.3",
"@babel/core": "^7.22.20",
"@babel/preset-react": "^7.22.15",
"@types/react": "^18.2.22",
"@types/react-dom": "^18.2.7",
"@babel/core": "^7.26.10",
"@babel/preset-react": "^7.26.3",
"@types/react": "^19.0.12",
"@types/react-dom": "^19.0.4",
"babel-loader": "^9.1.3",
"css-loader": "^6.8.1",
"html-webpack-plugin": "^5.5.3",
"source-map-loader": "^4.0.1",
"style-loader": "^3.3.3",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.4",

View File

@@ -3,6 +3,7 @@ import { TSCustomNodeModel } from './TSCustomNodeModel';
import { TSCustomNodeWidget } from './TSCustomNodeWidget';
import { AbstractReactFactory } from '@projectstorm/react-diagrams';
import { DiagramEngine } from '@projectstorm/react-diagrams';
import { JSX } from 'react';
export class TSCustomNodeFactory extends AbstractReactFactory<TSCustomNodeModel, DiagramEngine> {
constructor() {

View File

@@ -18,23 +18,23 @@
"nodes"
],
"scripts": {
"ncu": "ncu -u && pnpm recursive exec -- ncu -u",
"format": "prettier --write \"**/*.{ts,tsx,js,jsx}\"",
"clean": "rm -rf packages/*/dist",
"test": "pnpm run -r test",
"build": "tsc --build && pnpm run -r build",
"build:prod": "NODE_ENV=production pnpm build",
"release": "pnpm build:prod && pnpm changeset publish",
"release:storybook": "tsc --build && cd diagrams-demo-gallery && pnpm storybook:build && ./node_modules/.bin/storybook-to-ghpages --existing-output-dir .out"
"ncu": "ncu -u && pnpm recursive exec -- ncu -u",
"format": "prettier --write \"**/*.{ts,tsx,js,jsx}\"",
"clean": "rm -rf packages/*/dist",
"test": "pnpm run -r test",
"build": "tsc --build && pnpm run -r build",
"build:prod": "NODE_ENV=production pnpm build",
"release": "pnpm build:prod && pnpm changeset publish",
"release:storybook": "tsc --build && cd diagrams-demo-gallery && pnpm storybook:build && ./node_modules/.bin/storybook-to-ghpages --existing-output-dir .out"
},
"devDependencies": {
"@changesets/cli": "^2.26.2",
"@changesets/cli": "^2.26.2",
"@types/jest": "^29.5.5",
"@types/node": "^20.6.3",
"jest": "^29.7.0",
"jest-cli": "^29.7.0",
"prettier": "^3.0.3",
"rimraf": "^5.0.1",
"rimraf": "^5.0.1",
"source-map-loader": "^4.0.1",
"terser-webpack-plugin": "^5.3.9",
"ts-jest": "^29.1.1",
@@ -44,5 +44,10 @@
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1",
"webpack-node-externals": "^3.0.0"
},
"pnpm": {
"overrides": {
"react": "^19.0.0"
}
}
}

View File

@@ -29,14 +29,14 @@
"module": "./dist/index.js",
"typings": "./dist/@types/index",
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.11.0",
"@projectstorm/geometry": "workspace:*",
"react": "^18.2.0",
"lodash": "^4.17.21"
"lodash": "^4.17.21",
"react": "^19.0.0"
},
"devDependencies": {
"@types/react": "^18.2.22",
"@types/lodash": "^4.14.200"
"@types/lodash": "^4.14.200",
"@types/react": "^19.0.12"
}
}

View File

@@ -1,6 +1,7 @@
import { BaseModel } from '../core-models/BaseModel';
import { AbstractModelFactory } from './AbstractModelFactory';
import { CanvasEngine } from '../CanvasEngine';
import { JSX } from 'react';
export interface GenerateWidgetEvent<T extends BaseModel> {
model: T;

View File

@@ -3,6 +3,7 @@ import { AbstractReactFactory, GenerateWidgetEvent } from '../../core/AbstractRe
import { SelectionLayerModel } from './SelectionLayerModel';
import { GenerateModelEvent } from '../../core/AbstractModelFactory';
import { SelectionBoxWidget } from './SelectionBoxWidget';
import { JSX } from 'react';
export class SelectionBoxLayerFactory extends AbstractReactFactory<SelectionLayerModel> {
constructor() {

View File

@@ -1,6 +1,7 @@
import * as React from 'react';
import _isEqual from 'lodash/isEqual';
import { BaseModel } from '../core-models/BaseModel';
import { JSX } from 'react';
export interface PeformanceWidgetProps {
children: () => JSX.Element;

View File

@@ -35,11 +35,11 @@
"@projectstorm/geometry": "workspace:*",
"@projectstorm/react-canvas-core": "workspace:*",
"lodash": "^4.17.21",
"react": "^18.2.0",
"react": "^19.0.0",
"resize-observer-polyfill": "^1.5.1"
},
"devDependencies": {
"@types/react": "^18.2.22",
"@types/lodash": "^4.14.200"
"@types/lodash": "^4.14.200",
"@types/react": "^19.0.12"
}
}

View File

@@ -3,7 +3,7 @@ import { PortModel } from './entities/port/PortModel';
import { LinkModel } from './entities/link/LinkModel';
import { LabelModel } from './entities/label/LabelModel';
import { boundingBoxFromPolygons, Point, Rectangle } from '@projectstorm/geometry';
import { MouseEvent } from 'react';
import { JSX, MouseEvent } from 'react';
import {
AbstractModelFactory,
AbstractReactFactory,
@@ -123,9 +123,9 @@ export class DiagramEngine extends CanvasEngine<CanvasEngineListener, DiagramMod
getFactoryForLabel<F extends AbstractReactFactory<LabelModel, DiagramEngine>>(label: LabelModel) {
if (typeof label === 'string') {
return this.labelFactories.getFactory(label);
return this.labelFactories.getFactory<F>(label);
}
return this.labelFactories.getFactory(label.getType());
return this.labelFactories.getFactory<F>(label.getType());
}
getFactoryForPort<F extends AbstractModelFactory<PortModel, DiagramEngine>>(port: PortModel) {

View File

@@ -3,6 +3,7 @@ import { AbstractReactFactory, GenerateModelEvent, GenerateWidgetEvent } from '@
import { DiagramEngine } from '../../DiagramEngine';
import { LinkLayerModel } from './LinkLayerModel';
import { LinkLayerWidget } from './LinkLayerWidget';
import { JSX } from 'react';
export class LinkLayerFactory extends AbstractReactFactory<LinkLayerModel, DiagramEngine> {
constructor() {

View File

@@ -3,6 +3,7 @@ import { AbstractReactFactory, GenerateModelEvent, GenerateWidgetEvent } from '@
import { DiagramEngine } from '../../DiagramEngine';
import { NodeLayerModel } from './NodeLayerModel';
import { NodeLayerWidget } from './NodeLayerWidget';
import { JSX } from 'react';
export class NodeLayerFactory extends AbstractReactFactory<NodeLayerModel, DiagramEngine> {
constructor() {

View File

@@ -29,16 +29,16 @@
"module": "./dist/index.js",
"typings": "./dist/@types/index",
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.*",
"@projectstorm/geometry": "workspace:*",
"@projectstorm/react-canvas-core": "workspace:*",
"@projectstorm/react-diagrams-core": "workspace:*",
"lodash": "^4.17.21",
"react": "^18.2.0"
"react": "^19.0.0"
},
"devDependencies": {
"@types/lodash": "^4.14.200",
"@types/react": "^18.2.22"
"@types/react": "^19.0.12"
}
}

View File

@@ -3,6 +3,7 @@ import { DefaultLabelModel } from './DefaultLabelModel';
import { DefaultLabelWidget } from './DefaultLabelWidget';
import { AbstractReactFactory } from '@projectstorm/react-canvas-core';
import { DiagramEngine } from '@projectstorm/react-diagrams-core';
import { JSX } from 'react';
/**
* @author Dylan Vorster

View File

@@ -5,6 +5,7 @@ import styled from '@emotion/styled';
import { AbstractReactFactory } from '@projectstorm/react-canvas-core';
import { DiagramEngine } from '@projectstorm/react-diagrams-core';
import { css, keyframes } from '@emotion/react';
import { JSX } from 'react';
namespace S {
export const Keyframes = keyframes`

View File

@@ -7,7 +7,7 @@ export interface DefaultLinkSegmentWidgetProps {
path: string;
link: DefaultLinkModel;
selected: boolean;
forwardRef: React.RefObject<SVGPathElement>;
forwardRef: React.RefObject<SVGPathElement | null>;
factory: DefaultLinkFactory;
diagramEngine: DiagramEngine;
onSelection: (selected: boolean) => any;

View File

@@ -1,6 +1,6 @@
import { DiagramEngine, LinkWidget, PointModel } from '@projectstorm/react-diagrams-core';
import * as React from 'react';
import { MouseEvent, useEffect, useRef } from 'react';
import { JSX, MouseEvent, useEffect, useRef } from 'react';
import { DefaultLinkModel } from './DefaultLinkModel';
import { DefaultLinkPointWidget } from './DefaultLinkPointWidget';
import { DefaultLinkSegmentWidget } from './DefaultLinkSegmentWidget';

View File

@@ -3,6 +3,7 @@ import { DefaultNodeModel } from './DefaultNodeModel';
import { DefaultNodeWidget } from './DefaultNodeWidget';
import { AbstractReactFactory } from '@projectstorm/react-canvas-core';
import { DiagramEngine } from '@projectstorm/react-diagrams-core';
import { JSX } from 'react';
export class DefaultNodeFactory extends AbstractReactFactory<DefaultNodeModel, DiagramEngine> {
constructor() {

View File

@@ -38,11 +38,11 @@
"lodash": "^4.17.21",
"pathfinding": "^0.4.18",
"paths-js": "^0.4.11",
"react": "^18.2.0"
"react": "^19.0.0"
},
"devDependencies": {
"@types/dagre": "^0.7.50",
"@types/lodash": "^4.14.200",
"@types/react": "^18.2.22"
"@types/react": "^19.0.12"
}
}

View File

@@ -22,6 +22,7 @@ import {
InputType,
ListenerHandle
} from '@projectstorm/react-canvas-core';
import { JSX } from 'react';
export class PathFindingLinkFactory extends DefaultLinkFactory<PathFindingLinkModel> {
ROUTING_SCALING_FACTOR: number = 5;

View File

@@ -6,6 +6,7 @@ import { PathFinding } from '../engine/PathFinding';
import { PathFindingLinkFactory } from './PathFindingLinkFactory';
import { PathFindingLinkModel } from './PathFindingLinkModel';
import { DefaultLinkSegmentWidget } from '@projectstorm/react-diagrams-defaults';
import { JSX } from 'react';
export interface PathFindingLinkWidgetProps {
color?: string;

View File

@@ -2,6 +2,7 @@ import * as React from 'react';
import { RightAngleLinkWidget } from './RightAngleLinkWidget';
import { DefaultLinkFactory } from '@projectstorm/react-diagrams-defaults';
import { RightAngleLinkModel } from './RightAngleLinkModel';
import { JSX } from 'react';
/**
* @author Daniel Lazar

View File

@@ -3,7 +3,7 @@ import { DiagramEngine, LinkWidget, PointModel } from '@projectstorm/react-diagr
import { RightAngleLinkFactory } from './RightAngleLinkFactory';
import { DefaultLinkModel, DefaultLinkSegmentWidget } from '@projectstorm/react-diagrams-defaults';
import { Point } from '@projectstorm/geometry';
import { MouseEvent } from 'react';
import { JSX, MouseEvent } from 'react';
import { RightAngleLinkModel } from './RightAngleLinkModel';
export interface RightAngleLinkProps {

16583
pnpm-lock.yaml generated
View File

File diff suppressed because it is too large Load Diff