Skip to content

Commit 78d10b8

Browse files
authored
Merge pull request #1021 from LynchyC/master
Update lodash imports to use individual functions
2 parents 5045968 + 80285fe commit 78d10b8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1628
-488
lines changed

.changeset/rude-hotels-buy.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@projectstorm/react-diagrams-gallery': patch
3+
'@projectstorm/geometry': patch
4+
'@projectstorm/react-canvas-core': patch
5+
'@projectstorm/react-diagrams-core': patch
6+
'@projectstorm/react-diagrams-defaults': patch
7+
'@projectstorm/react-diagrams-routing': patch
8+
---
9+
10+
refactor: update lodash imports to use individual functions

diagrams-demo-gallery/demos/demo-cloning/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import createEngine, { DiagramModel, DefaultNodeModel, LinkModel, NodeModel } from '@projectstorm/react-diagrams';
2-
import * as _ from 'lodash';
2+
import _forEach from 'lodash/forEach';
33
import * as React from 'react';
44
import { DemoButton, DemoWorkspaceWidget } from '../helpers/DemoWorkspaceWidget';
55
import { BaseModel, CanvasWidget } from '@projectstorm/react-canvas-core';
@@ -20,7 +20,7 @@ class CloneSelected extends React.Component<any, any> {
2020
let model = engine.getModel();
2121

2222
let itemMap = {};
23-
_.forEach(model.getSelectedEntities(), (item: BaseModel<any>) => {
23+
_forEach(model.getSelectedEntities(), (item: BaseModel<any>) => {
2424
let newItem = item.clone(itemMap);
2525

2626
// offset the nodes slightly

diagrams-demo-gallery/demos/demo-custom-action/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import * as _ from 'lodash';
2+
import _forEach from 'lodash/forEach';
33
import createEngine, { DiagramModel, DefaultNodeModel, DefaultLinkModel } from '@projectstorm/react-diagrams';
44
import { CanvasWidget, Action, ActionEvent, InputType } from '@projectstorm/react-canvas-core';
55
import { DemoCanvasWidget } from '../helpers/DemoCanvasWidget';
@@ -26,7 +26,7 @@ class CustomDeleteItemsAction extends Action {
2626
const confirm = window.confirm('Are you sure you want to delete?');
2727

2828
if (confirm) {
29-
_.forEach(selectedEntities, (model) => {
29+
_forEach(selectedEntities, (model) => {
3030
// only delete items which are not locked
3131
if (!model.isLocked()) {
3232
model.remove();

diagrams-demo-gallery/demos/demo-drag-and-drop/components/BodyWidget.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import * as _ from 'lodash';
2+
import _keys from 'lodash/keys';
33
import { TrayWidget } from './TrayWidget';
44
import { Application } from '../Application';
55
import { TrayItemWidget } from './TrayItemWidget';
@@ -57,7 +57,7 @@ export class BodyWidget extends React.Component<BodyWidgetProps> {
5757
<S.Layer
5858
onDrop={(event) => {
5959
var data = JSON.parse(event.dataTransfer.getData('storm-diagram-node'));
60-
var nodesCount = _.keys(this.props.app.getDiagramEngine().getModel().getNodes()).length;
60+
var nodesCount = _keys(this.props.app.getDiagramEngine().getModel().getNodes()).length;
6161

6262
var node: DefaultNodeModel = null;
6363
if (data.type === 'in') {

diagrams-demo-gallery/demos/demo-dynamic-ports/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import createEngine, { DiagramModel, DefaultNodeModel, DiagramEngine } from '@projectstorm/react-diagrams';
2-
import * as _ from 'lodash';
2+
import _values from 'lodash/values';
33
import * as React from 'react';
44
import { DemoButton, DemoWorkspaceWidget } from '../helpers/DemoWorkspaceWidget';
55
import { CanvasWidget } from '@projectstorm/react-canvas-core';
66
import { DemoCanvasWidget } from '../helpers/DemoCanvasWidget';
77

88
class CloneSelected extends React.Component<{ model: DiagramModel; engine: DiagramEngine }, any> {
99
addPorts = () => {
10-
const nodes: DefaultNodeModel[] = _.values(this.props.model.getNodes()) as DefaultNodeModel[];
10+
const nodes: DefaultNodeModel[] = _values(this.props.model.getNodes()) as DefaultNodeModel[];
1111
for (let node of nodes) {
1212
if (node.getOptions().name === 'Node 2') {
1313
node.addInPort(`in-${node.getInPorts().length + 1}`, false);

diagrams-demo-gallery/demos/demo-mutate-graph/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import createEngine, { DiagramModel, DefaultNodeModel, NodeModel } from '@projectstorm/react-diagrams';
22
import * as React from 'react';
3-
import * as _ from 'lodash';
3+
import _values from 'lodash/values';
44
import { DemoButton, DemoWorkspaceWidget } from '../helpers/DemoWorkspaceWidget';
55
import { CanvasWidget } from '@projectstorm/react-canvas-core';
66
import { DemoCanvasWidget } from '../helpers/DemoCanvasWidget';
@@ -30,7 +30,7 @@ class NodeDelayedPosition extends React.Component<any, any> {
3030
let str = JSON.stringify(model.serialize());
3131
let model2 = new DiagramModel();
3232
let obj: ReturnType<DiagramModel['serialize']> = JSON.parse(str);
33-
let node: ReturnType<NodeModel['serialize']> = _.values(obj.layers[1].models)[0] as any;
33+
let node: ReturnType<NodeModel['serialize']> = _values(obj.layers[1].models)[0] as any;
3434
node.x += 30;
3535
node.y += 30;
3636

diagrams-demo-gallery/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"@storybook/react-webpack5": "^7.4.4",
4646
"@storybook/storybook-deployer": "^2.8.16",
4747
"@storybook/theming": "^7.4.4",
48-
"@types/lodash": "^4.14.199",
48+
"@types/lodash": "^4.14.200",
4949
"@types/react": "^18.2.22",
5050
"@types/react-dom": "^18.2.7",
5151
"storybook": "^7.4.4"

diagrams-demo-gallery/tsconfig.json

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"compileOnSave": false,
33
"compilerOptions": {
44
"suppressExcessPropertyErrors": true,
5+
"esModuleInterop": true,
56
"declaration": true,
67
"composite": true,
78
"incremental": true,

packages/geometry/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@
3232
"lodash": "^4.17.21"
3333
},
3434
"devDependencies": {
35-
"@types/lodash": "^4.14.199"
35+
"@types/lodash": "^4.14.200"
3636
}
3737
}

packages/geometry/src/Polygon.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Point } from './Point';
2-
import * as _ from 'lodash';
2+
import _forEach from 'lodash/forEach';
3+
import _map from 'lodash/map';
34
import { Matrix } from './Matrix';
45
import { boundingBoxFromPoints } from './toolkit';
56
import { Bounds, BoundsCorner } from './Bounds';
@@ -12,26 +13,26 @@ export class Polygon {
1213
}
1314

1415
serialize() {
15-
return _.map(this.points, (point) => {
16+
return _map(this.points, (point) => {
1617
return [point.x, point.y];
1718
});
1819
}
1920

2021
deserialize(data: any) {
21-
this.points = _.map(data, (point) => {
22+
this.points = _map(data, (point) => {
2223
return new Point(point[0], point[1]);
2324
});
2425
}
2526

2627
scale(x, y, origin: Point) {
2728
let matrix = Matrix.createScaleMatrix(x, y, origin);
28-
_.forEach(this.points, (point) => {
29+
_forEach(this.points, (point) => {
2930
point.transform(matrix);
3031
});
3132
}
3233

3334
transform(matrix: Matrix) {
34-
_.forEach(this.points, (point) => {
35+
_forEach(this.points, (point) => {
3536
point.transform(matrix);
3637
});
3738
}
@@ -49,13 +50,13 @@ export class Polygon {
4950
}
5051

5152
translate(offsetX: number, offsetY: number) {
52-
_.forEach(this.points, (point) => {
53+
_forEach(this.points, (point) => {
5354
point.translate(offsetX, offsetY);
5455
});
5556
}
5657

5758
doClone(ob: this) {
58-
this.points = _.map(ob.points, (point) => {
59+
this.points = _map(ob.points, (point) => {
5960
return point.clone();
6061
});
6162
}

packages/geometry/src/toolkit.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Point } from './Point';
2-
import * as _ from 'lodash';
2+
import _flatMap from 'lodash/flatMap';
33
import { Polygon } from './Polygon';
44
import { Bounds, BoundsCorner, createEmptyBounds } from './Bounds';
55

@@ -38,7 +38,7 @@ export const boundingBoxFromPoints = (points: Point[]): Bounds => {
3838

3939
export const boundingBoxFromPolygons = (polygons: Polygon[]): Bounds => {
4040
return boundingBoxFromPoints(
41-
_.flatMap(polygons, (polygon) => {
41+
_flatMap(polygons, (polygon) => {
4242
return polygon.getPoints();
4343
})
4444
);

packages/geometry/tsconfig.json

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
{
22
"extends": "../../tsconfig.base.json",
33
"compilerOptions": {
4+
"allowSyntheticDefaultImports": true,
45
"outDir": "dist",
56
"rootDir": "src",
67
"sourceMap": true,
78
"declarationDir": "dist/@types",
89
"tsBuildInfoFile": "dist/tsconfig.tsbuildinfo"
910
},
10-
"include": [
11-
"./src"
12-
]
11+
"include": ["./src"]
1312
}

packages/react-canvas-core/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@
3737
},
3838
"devDependencies": {
3939
"@types/react": "^18.2.22",
40-
"@types/lodash": "^4.14.199"
40+
"@types/lodash": "^4.14.200"
4141
}
4242
}

packages/react-canvas-core/src/CanvasEngine.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { debounce } from 'lodash';
1+
import _debounce from 'lodash/debounce';
22
import { CanvasModel } from './entities/canvas/CanvasModel';
33
import { FactoryBank } from './core/FactoryBank';
44
import { AbstractReactFactory } from './core/AbstractReactFactory';
@@ -148,7 +148,7 @@ export class CanvasEngine<
148148
let repaintFn = repaint;
149149

150150
if (repaintDebounceMs > 0) {
151-
repaintFn = debounce(repaint, repaintDebounceMs);
151+
repaintFn = _debounce(repaint, repaintDebounceMs);
152152
}
153153

154154
if (promise) {

packages/react-canvas-core/src/actions/DeleteItemsAction.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Action, ActionEvent, InputType } from '../core-actions/Action';
22
import { KeyboardEvent } from 'react';
3-
import * as _ from 'lodash';
3+
import _forEach from 'lodash/forEach';
4+
import _isEqual from 'lodash/isEqual';
45

56
export interface DeleteItemsActionOptions {
67
keyCodes?: number[];
@@ -31,8 +32,8 @@ export class DeleteItemsAction extends Action {
3132
fire: (event: ActionEvent<KeyboardEvent>) => {
3233
const { keyCode, ctrlKey, shiftKey, altKey, metaKey } = event.event;
3334

34-
if (keyCodes.indexOf(keyCode) !== -1 && _.isEqual({ ctrlKey, shiftKey, altKey, metaKey }, modifiers)) {
35-
_.forEach(this.engine.getModel().getSelectedEntities(), (model) => {
35+
if (keyCodes.indexOf(keyCode) !== -1 && _isEqual({ ctrlKey, shiftKey, altKey, metaKey }, modifiers)) {
36+
_forEach(this.engine.getModel().getSelectedEntities(), (model) => {
3637
// only delete items which are not locked
3738
if (!model.isLocked()) {
3839
model.remove();

packages/react-canvas-core/src/core-actions/ActionEventBus.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Action, ActionEvent, InputType } from './Action';
22
import { KeyboardEvent, MouseEvent } from 'react';
3-
import * as _ from 'lodash';
3+
import _filter from 'lodash/filter';
4+
import _keys from 'lodash/keys';
45
import { CanvasEngine } from '../CanvasEngine';
56
import { BaseModel } from '../core-models/BaseModel';
67

@@ -16,7 +17,7 @@ export class ActionEventBus {
1617
}
1718

1819
getKeys(): string[] {
19-
return _.keys(this.keys);
20+
return _keys(this.keys);
2021
}
2122

2223
registerAction(action: Action): () => void {
@@ -33,7 +34,7 @@ export class ActionEventBus {
3334
}
3435

3536
getActionsForType(type: InputType): Action[] {
36-
return _.filter(this.actions, (action) => {
37+
return _filter(this.actions, (action) => {
3738
return action.options.type === type;
3839
});
3940
}

packages/react-canvas-core/src/core-models/BaseEntity.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Toolkit } from '../Toolkit';
2-
import * as _ from 'lodash';
2+
import _cloneDeep from 'lodash/cloneDeep';
33
import { CanvasEngine } from '../CanvasEngine';
44
import { BaseEvent, BaseListener, BaseObserver } from '../core/BaseObserver';
55
import { BaseModel } from './BaseModel';
@@ -62,7 +62,7 @@ export class BaseEntity<T extends BaseEntityGenerics = BaseEntityGenerics> exten
6262
if (lookupTable[this.options.id]) {
6363
return lookupTable[this.options.id];
6464
}
65-
let clone = _.cloneDeep(this);
65+
let clone = _cloneDeep(this);
6666
clone.options = {
6767
...this.options,
6868
id: Toolkit.UID()

packages/react-canvas-core/src/core-state/State.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { CanvasEngine } from '../CanvasEngine';
22
import { Action, ActionEvent, InputType } from '../core-actions/Action';
33
import { SyntheticEvent } from 'react';
4-
import * as _ from 'lodash';
4+
import _intersection from 'lodash/intersection';
55

66
export interface StateOptions {
77
name: string;
@@ -73,7 +73,7 @@ export abstract class State<E extends CanvasEngine = CanvasEngine> {
7373
}
7474

7575
isKeysFullfilled(keys: string[]) {
76-
return _.intersection(this.keys, keys).length === this.keys.length;
76+
return _intersection(this.keys, keys).length === this.keys.length;
7777
}
7878

7979
activated(previous: State) {

packages/react-canvas-core/src/core-state/StateMachine.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { State } from './State';
2-
import * as _ from 'lodash';
2+
import _last from 'lodash/last';
33
import { CanvasEngine } from '../CanvasEngine';
44
import { BaseEvent, BaseListener, BaseObserver } from '../core/BaseObserver';
55

@@ -29,7 +29,7 @@ export class StateMachine extends BaseObserver<StateMachineListener> {
2929

3030
popState() {
3131
this.stateStack.pop();
32-
this.setState(_.last(this.stateStack));
32+
this.setState(_last(this.stateStack));
3333
}
3434

3535
setState(state: State) {

packages/react-canvas-core/src/core/FactoryBank.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { BaseEvent, BaseListener, BaseObserver } from './BaseObserver';
22
import { AbstractFactory } from './AbstractFactory';
3-
import * as _ from 'lodash';
3+
import _values from 'lodash/values';
44

55
export interface FactoryBankListener<F extends AbstractFactory = AbstractFactory> extends BaseListener {
66
/**
@@ -29,7 +29,7 @@ export class FactoryBank<
2929
}
3030

3131
getFactories(): F[] {
32-
return _.values(this.factories);
32+
return _values(this.factories);
3333
}
3434

3535
clearFactories() {

0 commit comments

Comments
 (0)