Skip to content

Commit 58f6241

Browse files
authored
0.19.0. (#123)
1 parent b01321f commit 58f6241

Some content is hidden

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

50 files changed

+471
-289
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.19.0
2+
3+
* Added the `isSelectable` callback to the `StepsConfiguration` interface. Now it's possible to disable the selection of steps.
4+
* Deleted deprecated methods and interfaces.
5+
16
## 0.18.5
27

38
This version fixes a bug with unintended selection of HTML elements in Apple Vision Pro.

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,10 @@ Add the below code to your head section in HTML document.
9898
```html
9999
<head>
100100
...
101-
<link href="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.18.5/css/designer.css" rel="stylesheet">
102-
<link href="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.18.5/css/designer-light.css" rel="stylesheet">
103-
<link href="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.18.5/css/designer-dark.css" rel="stylesheet">
104-
<script src="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.18.5/dist/index.umd.js"></script>
101+
<link href="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.19.0/css/designer.css" rel="stylesheet">
102+
<link href="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.19.0/css/designer-light.css" rel="stylesheet">
103+
<link href="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.19.0/css/designer-dark.css" rel="stylesheet">
104+
<script src="https://cdn.jsdelivr.net/npm/sequential-workflow-designer@0.19.0/dist/index.umd.js"></script>
105105
```
106106

107107
Call the designer by:

angular/designer/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "sequential-workflow-designer-angular",
33
"description": "Angular wrapper for Sequential Workflow Designer component.",
4-
"version": "0.18.5",
4+
"version": "0.19.0",
55
"author": {
66
"name": "NoCode JS",
77
"url": "https://nocode-js.com/"
@@ -15,7 +15,7 @@
1515
"peerDependencies": {
1616
"@angular/common": "12 - 16",
1717
"@angular/core": "12 - 16",
18-
"sequential-workflow-designer": "^0.18.5"
18+
"sequential-workflow-designer": "^0.19.0"
1919
},
2020
"dependencies": {
2121
"tslib": "^2.3.0"

demos/angular-app/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
"@angular/platform-browser-dynamic": "^15.2.9",
2727
"@angular/router": "^15.2.9",
2828
"rxjs": "~7.8.0",
29-
"sequential-workflow-designer": "^0.18.5",
30-
"sequential-workflow-designer-angular": "^0.18.5",
29+
"sequential-workflow-designer": "^0.19.0",
30+
"sequential-workflow-designer-angular": "^0.19.0",
3131
"tslib": "^2.3.0",
3232
"zone.js": "~0.13.0"
3333
},

demos/angular-app/yarn.lock

+8-8
Original file line numberDiff line numberDiff line change
@@ -5956,17 +5956,17 @@ send@0.18.0:
59565956
range-parser "~1.2.1"
59575957
statuses "2.0.1"
59585958

5959-
sequential-workflow-designer-angular@^0.18.5:
5960-
version "0.18.5"
5961-
resolved "https://registry.yarnpkg.com/sequential-workflow-designer-angular/-/sequential-workflow-designer-angular-0.18.5.tgz#b7cf9bc43c747d49fc1f1aac0f36d317571aa0a2"
5962-
integrity sha512-IgFTYrLThzGX+4QO3GyHl0diNI2hTe9F5u2zoDRQxcuSYvO5L9OQ+y1TZnS3q1b5WLQSSx2tOXJrheDkWkOyGA==
5959+
sequential-workflow-designer-angular@^0.19.0:
5960+
version "0.19.0"
5961+
resolved "https://registry.yarnpkg.com/sequential-workflow-designer-angular/-/sequential-workflow-designer-angular-0.19.0.tgz#3ec9bd1584e69615ae293baa987560125e374751"
5962+
integrity sha512-nvUWQevPaS/FOzaDlDZk43pL4A+b0CjZOKGziMmdlBXzS1dBAhK3HlImM8sg7ZXfgDuvBn3FuLUJp/M24VmjhA==
59635963
dependencies:
59645964
tslib "^2.3.0"
59655965

5966-
sequential-workflow-designer@^0.18.5:
5967-
version "0.18.5"
5968-
resolved "https://registry.yarnpkg.com/sequential-workflow-designer/-/sequential-workflow-designer-0.18.5.tgz#5254e77c7a347e620b3b06fbb47e50bb48ec7245"
5969-
integrity sha512-Yk8jW6QICKdmFJNDUw6ynYjnKSTxXTi9yM6a8jP+B4I8I2Xq31R4BSPR6MVW5UiOZi0OwGo5ngajDO6iu3m90g==
5966+
sequential-workflow-designer@^0.19.0:
5967+
version "0.19.0"
5968+
resolved "https://registry.yarnpkg.com/sequential-workflow-designer/-/sequential-workflow-designer-0.19.0.tgz#988eac7b97ee7dedd23db4d3d324ee7e6366dbcb"
5969+
integrity sha512-p0Cipp+4URv8Fo4i4t/nscVbIoNO0NmxF6w/siv64eRe3Vm4+6Rewn+UApBiamnhYwmyqYl97U830f89+OfuqA==
59705970
dependencies:
59715971
sequential-workflow-model "^0.2.0"
59725972

demos/react-app/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"dependencies": {
77
"react": "^18.2.0",
88
"react-dom": "^18.2.0",
9-
"sequential-workflow-designer": "^0.18.5",
10-
"sequential-workflow-designer-react": "^0.18.5"
9+
"sequential-workflow-designer": "^0.19.0",
10+
"sequential-workflow-designer-react": "^0.19.0"
1111
},
1212
"devDependencies": {
1313
"@types/jest": "^29.2.5",

demos/svelte-app/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
"eslint": "eslint ./src --ext .ts"
1717
},
1818
"dependencies": {
19-
"sequential-workflow-designer": "^0.18.5",
20-
"sequential-workflow-designer-svelte": "^0.18.5"
19+
"sequential-workflow-designer": "^0.19.0",
20+
"sequential-workflow-designer-svelte": "^0.19.0"
2121
},
2222
"devDependencies": {
2323
"@sveltejs/adapter-static": "^2.0.3",

designer/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "sequential-workflow-designer",
33
"description": "Customizable no-code component for building flow-based programming applications.",
4-
"version": "0.18.5",
4+
"version": "0.19.0",
55
"type": "module",
66
"main": "./lib/esm/index.js",
77
"types": "./lib/index.d.ts",

designer/src/api/control-bar-api.ts

+6-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { SimpleEvent } from '../core';
2-
import { DefinitionModifier } from '../definition-modifier';
2+
import { StateModifier } from '../modifier/state-modifier';
33
import { DesignerState } from '../designer-state';
44
import { HistoryController } from '../history-controller';
55
import { ViewportApi } from './viewport-api';
@@ -8,10 +8,10 @@ export class ControlBarApi {
88
public static create(
99
state: DesignerState,
1010
historyController: HistoryController | undefined,
11-
definitionModifier: DefinitionModifier,
11+
stateModifier: StateModifier,
1212
viewportApi: ViewportApi
1313
): ControlBarApi {
14-
const api = new ControlBarApi(state, historyController, definitionModifier, viewportApi);
14+
const api = new ControlBarApi(state, historyController, stateModifier, viewportApi);
1515
state.onIsReadonlyChanged.subscribe(api.onStateChanged.forward);
1616
state.onSelectedStepIdChanged.subscribe(api.onStateChanged.forward);
1717
state.onIsDragDisabledChanged.subscribe(api.onStateChanged.forward);
@@ -24,19 +24,12 @@ export class ControlBarApi {
2424
private constructor(
2525
private readonly state: DesignerState,
2626
private readonly historyController: HistoryController | undefined,
27-
private readonly definitionModifier: DefinitionModifier,
27+
private readonly stateModifier: StateModifier,
2828
private readonly viewportApi: ViewportApi
2929
) {}
3030

3131
public readonly onStateChanged = new SimpleEvent<unknown>();
3232

33-
/**
34-
* @deprecated Don't use this method
35-
*/
36-
public subscribe(handler: () => void) {
37-
this.onStateChanged.subscribe(handler);
38-
}
39-
4033
public resetViewport() {
4134
this.viewportApi.resetViewport();
4235
}
@@ -87,7 +80,7 @@ export class ControlBarApi {
8780

8881
public tryDelete(): boolean {
8982
if (this.canDelete() && this.state.selectedStepId) {
90-
this.definitionModifier.tryDelete(this.state.selectedStepId);
83+
this.stateModifier.tryDelete(this.state.selectedStepId);
9184
return true;
9285
}
9386
return false;
@@ -98,7 +91,7 @@ export class ControlBarApi {
9891
!!this.state.selectedStepId &&
9992
!this.state.isReadonly &&
10093
!this.state.isDragging &&
101-
this.definitionModifier.isDeletable(this.state.selectedStepId)
94+
this.stateModifier.isDeletable(this.state.selectedStepId)
10295
);
10396
}
10497
}

designer/src/api/designer-api.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { ToolboxApi } from './toolbox-api';
66
import { ToolboxDataProvider } from '../toolbox/toolbox-data-provider';
77
import { ViewportApi } from './viewport-api';
88
import { WorkspaceApi } from './workspace-api';
9+
import { DefinitionWalker } from '../definition';
910

1011
export class DesignerApi {
1112
public static create(context: DesignerContext): DesignerApi {
@@ -15,12 +16,13 @@ export class DesignerApi {
1516
const toolboxDataProvider = new ToolboxDataProvider(context.componentContext.iconProvider, context.configuration.toolbox);
1617

1718
return new DesignerApi(
18-
ControlBarApi.create(context.state, context.historyController, context.definitionModifier, viewport),
19+
ControlBarApi.create(context.state, context.historyController, context.stateModifier, viewport),
1920
new ToolboxApi(context.state, context, context.behaviorController, toolboxDataProvider, context.configuration.uidGenerator),
20-
new EditorApi(context.state, context.definitionWalker, context.definitionModifier),
21+
new EditorApi(context.state, context.definitionWalker, context.stateModifier),
2122
workspace,
2223
viewport,
23-
new PathBarApi(context.state, context.definitionWalker)
24+
new PathBarApi(context.state, context.definitionWalker),
25+
context.definitionWalker
2426
);
2527
}
2628

@@ -30,6 +32,7 @@ export class DesignerApi {
3032
public readonly editor: EditorApi,
3133
public readonly workspace: WorkspaceApi,
3234
public readonly viewport: ViewportApi,
33-
public readonly pathBar: PathBarApi
35+
public readonly pathBar: PathBarApi,
36+
public readonly definitionWalker: DefinitionWalker
3437
) {}
3538
}

designer/src/api/editor-api.ts

+20-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
import { DesignerState } from '../designer-state';
2-
import { DefinitionModifier } from '../definition-modifier';
2+
import { StateModifier } from '../modifier/state-modifier';
33
import { DefinitionChangeType, RootEditorContext, StepEditorContext } from '../designer-configuration';
44
import { EditorRenderer, EditorRendererHandler } from './editor-renderer';
55
import { Definition, DefinitionWalker } from '../definition';
6-
import { SimpleEventListener } from '../core';
6+
import { SimpleEvent, SimpleEventListener } from '../core';
7+
import { StateModifierDependency } from '../modifier';
8+
9+
export interface SelectedStepIdProvider {
10+
onSelectedStepIdChanged: SimpleEvent<string | null>;
11+
selectedStepId: string | null;
12+
}
713

814
export class EditorApi {
915
public constructor(
1016
private readonly state: DesignerState,
1117
private readonly definitionWalker: DefinitionWalker,
12-
private readonly definitionModifier: DefinitionModifier
18+
private readonly stateModifier: StateModifier
1319
) {}
1420

1521
public isCollapsed(): boolean {
@@ -32,8 +38,16 @@ export class EditorApi {
3238
return this.state.definition;
3339
}
3440

35-
public runRenderer(rendererHandler: EditorRendererHandler): EditorRenderer {
36-
return EditorRenderer.create(this.state, this.definitionWalker, rendererHandler);
41+
public addDefinitionModifierDependency(dependency: StateModifierDependency) {
42+
this.stateModifier.addDependency(dependency);
43+
}
44+
45+
public runRenderer(
46+
rendererHandler: EditorRendererHandler,
47+
customSelectedStepIdProvider: SelectedStepIdProvider | null
48+
): EditorRenderer {
49+
const selectedStepIdProvider = customSelectedStepIdProvider || this.state;
50+
return EditorRenderer.create(this.state, selectedStepIdProvider, this.definitionWalker, rendererHandler);
3751
}
3852

3953
public createStepEditorContext(stepId: string): StepEditorContext {
@@ -49,7 +63,7 @@ export class EditorApi {
4963
},
5064
notifyChildrenChanged: () => {
5165
this.state.notifyDefinitionChanged(DefinitionChangeType.stepChildrenChanged, stepId);
52-
this.definitionModifier.updateDependantFields();
66+
this.stateModifier.updateDependencies();
5367
}
5468
};
5569
}

designer/src/api/editor-renderer.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('EditorRenderer', () => {
2828
});
2929

3030
function createRenderer() {
31-
return EditorRenderer.create(state, walker, callback);
31+
return EditorRenderer.create(state, state, walker, callback);
3232
}
3333

3434
it('calls callbacks with null if any step is not selected at start', () => {

designer/src/api/editor-renderer.ts

+14-7
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,31 @@ import { DefinitionWalker, Step } from '../definition';
22
import { SimpleEvent, race } from '../core';
33
import { DefinitionChangedEvent, DesignerState } from '../designer-state';
44
import { DefinitionChangeType } from '../designer-configuration';
5+
import { SelectedStepIdProvider } from './editor-api';
56

67
export type EditorRendererHandler = (step: Step | null) => void;
78

89
type RaceEventArgs = [(DefinitionChangedEvent | undefined)?, (string | null | undefined)?, (boolean | undefined)?];
910

1011
export class EditorRenderer {
11-
public static create(state: DesignerState, definitionWalker: DefinitionWalker, handler: EditorRendererHandler): EditorRenderer {
12-
const raceEvent = race(0, state.onDefinitionChanged, state.onSelectedStepIdChanged, state.onIsReadonlyChanged);
13-
const listener = new EditorRenderer(state, definitionWalker, handler, raceEvent);
12+
public static create(
13+
state: DesignerState,
14+
selectedStepIdProvider: SelectedStepIdProvider,
15+
definitionWalker: DefinitionWalker,
16+
handler: EditorRendererHandler
17+
): EditorRenderer {
18+
const raceEvent = race(0, state.onDefinitionChanged, selectedStepIdProvider.onSelectedStepIdChanged, state.onIsReadonlyChanged);
19+
const listener = new EditorRenderer(state, selectedStepIdProvider, definitionWalker, handler, raceEvent);
1420
raceEvent.subscribe(listener.raceEventHandler);
15-
listener.renderIfStepChanged(state.selectedStepId);
21+
listener.renderIfStepChanged(selectedStepIdProvider.selectedStepId);
1622
return listener;
1723
}
1824

1925
private currentStepId: string | null | undefined = undefined;
2026

2127
private constructor(
2228
private readonly state: DesignerState,
29+
private readonly selectedStepIdProvider: SelectedStepIdProvider,
2330
private readonly definitionWalker: DefinitionWalker,
2431
private readonly handler: EditorRendererHandler,
2532
private readonly raceEvent: SimpleEvent<RaceEventArgs>
@@ -43,12 +50,12 @@ export class EditorRenderer {
4350

4451
private readonly raceEventHandler = ([definitionChanged, selectedStepId, isReadonlyChanged]: RaceEventArgs) => {
4552
if (isReadonlyChanged !== undefined) {
46-
this.render(this.state.selectedStepId);
53+
this.render(this.selectedStepIdProvider.selectedStepId);
4754
} else if (definitionChanged) {
4855
if (definitionChanged.changeType === DefinitionChangeType.rootReplaced) {
49-
this.render(this.state.selectedStepId);
56+
this.render(this.selectedStepIdProvider.selectedStepId);
5057
} else {
51-
this.renderIfStepChanged(this.state.selectedStepId);
58+
this.renderIfStepChanged(this.selectedStepIdProvider.selectedStepId);
5259
}
5360
} else if (selectedStepId !== undefined) {
5461
this.renderIfStepChanged(selectedStepId);

designer/src/api/path-bar-api.ts

-7
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@ export class PathBarApi {
77

88
public readonly onStateChanged = race(0, this.state.onFolderPathChanged, this.state.onDefinitionChanged);
99

10-
/**
11-
* @deprecated Don't use this method
12-
*/
13-
public subscribe(handler: () => void) {
14-
this.onStateChanged.subscribe(handler);
15-
}
16-
1710
public setFolderPath(path: string[]) {
1811
this.state.setFolderPath(path);
1912
}

designer/src/behaviors/click-behavior-resolver.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { DesignerContext } from '../designer-context';
2-
import { DesignerState } from '../designer-state';
32
import { ClickCommand, ClickCommandType } from '../workspace';
43
import { Behavior } from './behavior';
54
import { MoveViewportBehavior } from './move-viewport-behavior';
@@ -10,27 +9,27 @@ import { OpenFolderPressingBehaviorHandler } from './pressing-behaviors/open-fol
109
import { TriggerCustomActionPressingBehaviorHandler } from './pressing-behaviors/trigger-custom-action-pressing-behavior-handler';
1110

1211
export class ClickBehaviorResolver {
13-
public constructor(private readonly designerContext: DesignerContext, private readonly state: DesignerState) {}
12+
public constructor(private readonly context: DesignerContext) {}
1413

1514
public resolve(commandOrNull: ClickCommand | null, element: Element, isMiddleButton: boolean): Behavior {
1615
if (!commandOrNull) {
17-
return MoveViewportBehavior.create(this.state, !isMiddleButton);
16+
return MoveViewportBehavior.create(!isMiddleButton, this.context);
1817
}
1918

2019
switch (commandOrNull.type) {
2120
case ClickCommandType.selectStep:
22-
return SelectStepBehavior.create(commandOrNull.component, isMiddleButton, this.designerContext);
21+
return SelectStepBehavior.create(commandOrNull.component, isMiddleButton, this.context);
2322

2423
case ClickCommandType.rerenderStep:
25-
return PressingBehavior.create(element, new RerenderStepPressingBehaviorHandler(this.designerContext));
24+
return PressingBehavior.create(element, new RerenderStepPressingBehaviorHandler(this.context));
2625

2726
case ClickCommandType.openFolder:
28-
return PressingBehavior.create(element, new OpenFolderPressingBehaviorHandler(commandOrNull, this.designerContext));
27+
return PressingBehavior.create(element, new OpenFolderPressingBehaviorHandler(commandOrNull, this.context));
2928

3029
case ClickCommandType.triggerCustomAction:
3130
return PressingBehavior.create(
3231
element,
33-
new TriggerCustomActionPressingBehaviorHandler(commandOrNull, this.designerContext)
32+
new TriggerCustomActionPressingBehaviorHandler(commandOrNull, this.context.customActionController)
3433
);
3534

3635
default:

0 commit comments

Comments
 (0)