@foblex/flow 1.1.8 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,10 +79,10 @@ export class NodeOnPointerDown {
79
79
  return itemsToDrag;
80
80
  }
81
81
  getInputsForNode(node) {
82
- return this.fFlow.inputs.toArray().filter((x) => node.isContains(x.hostElement));
82
+ return this.fFlow.inputs.filter((x) => node.isContains(x.hostElement));
83
83
  }
84
84
  getOutputsForNode(node) {
85
- return this.fFlow.outputs.toArray().filter((x) => node.isContains(x.hostElement));
85
+ return this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));
86
86
  }
87
87
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5vbi1wb2ludGVyLWRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvbm9kZS9ub2RlLW9uLXBvaW50ZXItZG93bi9ub2RlLm9uLXBvaW50ZXItZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBT3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2xCLE1BQU0seUJBQXlCLENBQUM7QUFHakMsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixJQUFZLHFCQUFxQjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQVksZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUNZLGNBQW1ELEVBQ25ELEtBQWdCLEVBQ2hCLFdBQTBCO1FBRjFCLG1CQUFjLEdBQWQsY0FBYyxDQUFxQztRQUNuRCxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO0lBRXRDLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBaUM7UUFDN0MsSUFBSSxNQUFnQyxDQUFDO1FBRXJDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEUsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FB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QUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3FCQUN0RjtpQkFDRjtxQkFBTTtvQkFDTCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksNEJBQTRCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQzVGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCx3RUFBd0U7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBZTtRQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBZTtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSGFuZGxlciwgUG9pbnQgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgTm9kZU9uUG9pbnRlckRvd25SZXF1ZXN0IH0gZnJvbSAnLi9ub2RlLW9uLXBvaW50ZXItZG93bi5yZXF1ZXN0JztcbmltcG9ydCB7IEZGbG93QmFzZSwgaXNOb2RlRHJhZ0hhbmRsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSURyYWdIYW5kbGVyIH0gZnJvbSAnLi4vLi4vaS1kcmFnLWhhbmRsZXInO1xuaW1wb3J0IHsgRk5vZGVzQ29udGFpbmVyQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29udGFpbmVycyc7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbnNDb250YWluZXJCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb250YWluZXJzJztcbmltcG9ydCB7IEZOb2RlSW5wdXRCYXNlLCBGTm9kZU91dHB1dEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi8uLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IEVEcmFnZ2FibGVUeXBlIH0gZnJvbSAnLi4vLi4vZS1kcmFnZ2FibGUtdHlwZSc7XG5pbXBvcnQge1xuICBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyLFxuICBGQ29ubmVjdGlvblNvdXJjZURyYWdIYW5kbGVyLFxuICBGQ29ubmVjdGlvblRhcmdldERyYWdIYW5kbGVyLFxuICBOb2RlT25Qb2ludGVyTW92ZVxufSBmcm9tICcuLi9ub2RlLW9uLXBvaW50ZXItbW92ZSc7XG5pbXBvcnQgeyBGTGluZUFsaWdubWVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2YtbGluZS1hbGlnbm1lbnQnO1xuXG5leHBvcnQgY2xhc3MgTm9kZU9uUG9pbnRlckRvd25cbiAgICBpbXBsZW1lbnRzIElIYW5kbGVyPE5vZGVPblBvaW50ZXJEb3duUmVxdWVzdCwgSURyYWdIYW5kbGVyIHwgdW5kZWZpbmVkPiB7XG5cbiAgcHJpdmF0ZSBnZXQgZkNvbm5lY3Rpb25zQ29udGFpbmVyKCk6IEZDb25uZWN0aW9uc0NvbnRhaW5lckJhc2Uge1xuICAgIHJldHVybiB0aGlzLmZGbG93LmZDb25uZWN0aW9uc0NvbnRhaW5lcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZOb2Rlc0NvbnRhaW5lcigpOiBGTm9kZXNDb250YWluZXJCYXNlIHtcbiAgICByZXR1cm4gdGhpcy5mRmxvdy5mTm9kZXNDb250YWluZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZkxpbmVBbGlnbm1lbnQ6IEZMaW5lQWxpZ25tZW50RGlyZWN0aXZlIHwgdW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZSBmRmxvdzogRkZsb3dCYXNlLFxuICAgICAgcHJpdmF0ZSBob3N0RWxlbWVudDogU1ZHU1ZHRWxlbWVudFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocGF5bG9hZDogTm9kZU9uUG9pbnRlckRvd25SZXF1ZXN0KTogSURyYWdIYW5kbGVyIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzdWx0OiBJRHJhZ0hhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBub2RlID0gdGhpcy5mTm9kZXNDb250YWluZXIuZmluZE5vZGUocGF5bG9hZC5ldmVudC50YXJnZXRFbGVtZW50KTtcbiAgICBjb25zdCBwb2ludGVyUG9zaXRpb25JbkNhbnZhcyA9IFBvaW50LmZyb21Qb2ludChwYXlsb2FkLmV2ZW50LmdldFBvc2l0aW9uKCkpLm1hdHJpeFRyYW5zZm9ybSh0aGlzLmhvc3RFbGVtZW50KTtcblxuICAgIGlmIChub2RlKSB7XG4gICAgICBpZiAoaXNOb2RlRHJhZ0hhbmRsZShwYXlsb2FkLmV2ZW50LnRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgIGlmICghcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKG5vZGUpICYmIHBheWxvYWQuaXNNb3ZlQ3VycmVudE5vZGUpIHtcbiAgICAgICAgICBwYXlsb2FkLnNlbGVjdGVkSXRlbXMucHVzaChub2RlKTtcbiAgICAgICAgICBub2RlLnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZk5vZGVzQ29udGFpbmVyLnNldE5vZGVUb1RvcExheWVyKG5vZGUhKTtcbiAgICAgICAgY29uc3QgaXRlbXNUb0RyYWc6IElEcmFnZ2FibGVJdGVtW10gPSB0aGlzLmNhbGN1bGF0ZURyYWdnYWJsZUNvbm5lY3Rpb25zQW5kTm9kZXMocGF5bG9hZCk7XG5cbiAgICAgICAgY29uc3QgZHJhZ2dlZE5vZGVzID0gaXRlbXNUb0RyYWcuZmlsdGVyKCh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHgudHlwZSA9PT0gRURyYWdnYWJsZVR5cGUuTk9ERTtcbiAgICAgICAgfSkubWFwKCh4KSA9PiAoeCBhcyBOb2RlT25Qb2ludGVyTW92ZSkuZk5vZGUpO1xuXG4gICAgICAgIHRoaXMuZkxpbmVBbGlnbm1lbnQ/LmluaXRpYWxpemUodGhpcy5mTm9kZXNDb250YWluZXIuZk5vZGVzLnRvQXJyYXkoKSwgZHJhZ2dlZE5vZGVzKTtcblxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgb25Qb2ludGVyRG93blNjYWxlOiBwYXlsb2FkLnRyYW5zZm9ybS5zY2FsZSxcbiAgICAgICAgICBvblBvaW50ZXJEb3duUG9zaXRpb246IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzLmRpdihwYXlsb2FkLnRyYW5zZm9ybS5zY2FsZSksXG4gICAgICAgICAgZHJhZ2dhYmxlSXRlbXM6IGl0ZW1zVG9EcmFnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEcmFnZ2FibGVDb25uZWN0aW9uc0FuZE5vZGVzKHBheWxvYWQ6IE5vZGVPblBvaW50ZXJEb3duUmVxdWVzdCk6IElEcmFnZ2FibGVJdGVtW10ge1xuICAgIGxldCBpdGVtc1RvRHJhZzogSURyYWdnYWJsZUl0ZW1bXSA9IFtdO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlcyA9IHBheWxvYWQuc2VsZWN0ZWRJdGVtcy5tYXAoKHgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZOb2Rlc0NvbnRhaW5lci5maW5kTm9kZSh4Lmhvc3RFbGVtZW50KTtcbiAgICB9KS5maWx0ZXIoKHgpID0+ICEheCkgYXMgRk5vZGVCYXNlW107XG5cbiAgICBjb25zdCBub2RlRHJhZ0hhbmRsZXJzID0gc2VsZWN0ZWROb2Rlcy5tYXAoKHgpID0+IG5ldyBOb2RlT25Qb2ludGVyTW92ZSh0aGlzLmZMaW5lQWxpZ25tZW50LCB4KSk7XG4gICAgaXRlbXNUb0RyYWcgPSBub2RlRHJhZ0hhbmRsZXJzO1xuXG4gICAgY29uc3QgYWxsT3V0cHV0czogRk5vZGVPdXRwdXRCYXNlW10gPSBzZWxlY3RlZE5vZGVzLnJlZHVjZSgocmVzdWx0OiBGTm9kZU91dHB1dEJhc2VbXSwgeDogRk5vZGVCYXNlKSA9PiB7XG4gICAgICByZXR1cm4gcmVzdWx0LmNvbmNhdCh0aGlzLmdldE91dHB1dHNGb3JOb2RlKHgpKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBhbGxJbnB1dHM6IEZOb2RlSW5wdXRCYXNlW10gPSBzZWxlY3RlZE5vZGVzLnJlZHVjZSgocmVzdWx0OiBGTm9kZUlucHV0QmFzZVtdLCB4OiBGTm9kZUJhc2UpID0+IHtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KHRoaXMuZ2V0SW5wdXRzRm9yTm9kZSh4KSk7XG4gICAgfSwgW10pO1xuXG4gICAgbm9kZURyYWdIYW5kbGVycy5mb3JFYWNoKChub2RlSGFuZGxlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0Q29ubmVjdGlvbnMgPSB0aGlzLmZDb25uZWN0aW9uc0NvbnRhaW5lci5maW5kT3V0Z29pbmdDb25uZWN0aW9ucyh0aGlzLmdldE91dHB1dHNGb3JOb2RlKG5vZGVIYW5kbGVyLmZOb2RlKSk7XG4gICAgICBvdXRwdXRDb25uZWN0aW9ucy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmIChhbGxJbnB1dHMuaW5jbHVkZXMoYy5mcm9tVG8hLmlucHV0ISkpIHtcbiAgICAgICAgICBpdGVtc1RvRHJhZy5wdXNoKG5ldyBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyKGMsIHBheWxvYWQudHJhbnNmb3JtLCB0aGlzLmhvc3RFbGVtZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXNUb0RyYWcucHVzaChuZXcgRkNvbm5lY3Rpb25Tb3VyY2VEcmFnSGFuZGxlcihjLCBwYXlsb2FkLnRyYW5zZm9ybSwgdGhpcy5ob3N0RWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGlucHV0Q29ubmVjdGlvbnMgPSB0aGlzLmZDb25uZWN0aW9uc0NvbnRhaW5lci5maW5kSW5jb21pbmdDb25uZWN0aW9ucyh0aGlzLmdldElucHV0c0Zvck5vZGUobm9kZUhhbmRsZXIuZk5vZGUpKTtcbiAgICAgIGlucHV0Q29ubmVjdGlvbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBpZiAoYWxsT3V0cHV0cy5pbmNsdWRlcyhjLmZyb21UbyEub3V0cHV0ISBhcyBGTm9kZU91dHB1dEJhc2UpKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtc1RvRHJhZy5maW5kSW5kZXgoKHgpID0+IHgudHlwZSA9PT0gRURyYWdnYWJsZVR5cGUuQ09OTkVDVElPTiAmJiAoeCBhcyBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyKS5jb25uZWN0aW9uLmlkID09PSBjLmlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBpdGVtc1RvRHJhZy5wdXNoKG5ldyBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyKGMsIHBheWxvYWQudHJhbnNmb3JtLCB0aGlzLmhvc3RFbGVtZW50KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1zVG9EcmFnLnB1c2gobmV3IEZDb25uZWN0aW9uVGFyZ2V0RHJhZ0hhbmRsZXIoYywgcGF5bG9hZC50cmFuc2Zvcm0sIHRoaXMuaG9zdEVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvL2l0ZW1zVG9EcmFnLnB1c2gobmV3IE5vZGVPblBvaW50ZXJNb3ZlKHRoaXMuZkxpbmVBbGlnbm1lbnQsIHguZk5vZGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXNUb0RyYWc7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0c0Zvck5vZGUobm9kZTogRk5vZGVCYXNlKTogRk5vZGVJbnB1dEJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZkZsb3cuaW5wdXRzLnRvQXJyYXkoKS5maWx0ZXIoKHgpID0+IG5vZGUuaXNDb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICBwcml2YXRlIGdldE91dHB1dHNGb3JOb2RlKG5vZGU6IEZOb2RlQmFzZSk6IEZOb2RlT3V0cHV0QmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5mRmxvdy5vdXRwdXRzLnRvQXJyYXkoKS5maWx0ZXIoKHgpID0+IG5vZGUuaXNDb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5vbi1wb2ludGVyLWRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvbm9kZS9ub2RlLW9uLXBvaW50ZXItZG93bi9ub2RlLm9uLXBvaW50ZXItZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBT3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2xCLE1BQU0seUJBQXlCLENBQUM7QUFHakMsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixJQUFZLHFCQUFxQjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQVksZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUNZLGNBQW1ELEVBQ25ELEtBQWdCLEVBQ2hCLFdBQTBCO1FBRjFCLG1CQUFjLEdBQWQsY0FBYyxDQUFxQztRQUNuRCxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO0lBRXRDLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBaUM7UUFDN0MsSUFBSSxNQUFnQyxDQUFDO1FBRXJDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEUsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FB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QUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3FCQUN0RjtpQkFDRjtxQkFBTTtvQkFDTCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksNEJBQTRCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQzVGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCx3RUFBd0U7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBZTtRQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBZTtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSGFuZGxlciwgUG9pbnQgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgTm9kZU9uUG9pbnRlckRvd25SZXF1ZXN0IH0gZnJvbSAnLi9ub2RlLW9uLXBvaW50ZXItZG93bi5yZXF1ZXN0JztcbmltcG9ydCB7IEZGbG93QmFzZSwgaXNOb2RlRHJhZ0hhbmRsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSURyYWdIYW5kbGVyIH0gZnJvbSAnLi4vLi4vaS1kcmFnLWhhbmRsZXInO1xuaW1wb3J0IHsgRk5vZGVzQ29udGFpbmVyQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29udGFpbmVycyc7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbnNDb250YWluZXJCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb250YWluZXJzJztcbmltcG9ydCB7IEZOb2RlSW5wdXRCYXNlLCBGTm9kZU91dHB1dEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi8uLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IEVEcmFnZ2FibGVUeXBlIH0gZnJvbSAnLi4vLi4vZS1kcmFnZ2FibGUtdHlwZSc7XG5pbXBvcnQge1xuICBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyLFxuICBGQ29ubmVjdGlvblNvdXJjZURyYWdIYW5kbGVyLFxuICBGQ29ubmVjdGlvblRhcmdldERyYWdIYW5kbGVyLFxuICBOb2RlT25Qb2ludGVyTW92ZVxufSBmcm9tICcuLi9ub2RlLW9uLXBvaW50ZXItbW92ZSc7XG5pbXBvcnQgeyBGTGluZUFsaWdubWVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2YtbGluZS1hbGlnbm1lbnQnO1xuXG5leHBvcnQgY2xhc3MgTm9kZU9uUG9pbnRlckRvd25cbiAgICBpbXBsZW1lbnRzIElIYW5kbGVyPE5vZGVPblBvaW50ZXJEb3duUmVxdWVzdCwgSURyYWdIYW5kbGVyIHwgdW5kZWZpbmVkPiB7XG5cbiAgcHJpdmF0ZSBnZXQgZkNvbm5lY3Rpb25zQ29udGFpbmVyKCk6IEZDb25uZWN0aW9uc0NvbnRhaW5lckJhc2Uge1xuICAgIHJldHVybiB0aGlzLmZGbG93LmZDb25uZWN0aW9uc0NvbnRhaW5lcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZOb2Rlc0NvbnRhaW5lcigpOiBGTm9kZXNDb250YWluZXJCYXNlIHtcbiAgICByZXR1cm4gdGhpcy5mRmxvdy5mTm9kZXNDb250YWluZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZkxpbmVBbGlnbm1lbnQ6IEZMaW5lQWxpZ25tZW50RGlyZWN0aXZlIHwgdW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZSBmRmxvdzogRkZsb3dCYXNlLFxuICAgICAgcHJpdmF0ZSBob3N0RWxlbWVudDogU1ZHU1ZHRWxlbWVudFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocGF5bG9hZDogTm9kZU9uUG9pbnRlckRvd25SZXF1ZXN0KTogSURyYWdIYW5kbGVyIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzdWx0OiBJRHJhZ0hhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBub2RlID0gdGhpcy5mTm9kZXNDb250YWluZXIuZmluZE5vZGUocGF5bG9hZC5ldmVudC50YXJnZXRFbGVtZW50KTtcbiAgICBjb25zdCBwb2ludGVyUG9zaXRpb25JbkNhbnZhcyA9IFBvaW50LmZyb21Qb2ludChwYXlsb2FkLmV2ZW50LmdldFBvc2l0aW9uKCkpLm1hdHJpeFRyYW5zZm9ybSh0aGlzLmhvc3RFbGVtZW50KTtcblxuICAgIGlmIChub2RlKSB7XG4gICAgICBpZiAoaXNOb2RlRHJhZ0hhbmRsZShwYXlsb2FkLmV2ZW50LnRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgIGlmICghcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKG5vZGUpICYmIHBheWxvYWQuaXNNb3ZlQ3VycmVudE5vZGUpIHtcbiAgICAgICAgICBwYXlsb2FkLnNlbGVjdGVkSXRlbXMucHVzaChub2RlKTtcbiAgICAgICAgICBub2RlLnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZk5vZGVzQ29udGFpbmVyLnNldE5vZGVUb1RvcExheWVyKG5vZGUhKTtcbiAgICAgICAgY29uc3QgaXRlbXNUb0RyYWc6IElEcmFnZ2FibGVJdGVtW10gPSB0aGlzLmNhbGN1bGF0ZURyYWdnYWJsZUNvbm5lY3Rpb25zQW5kTm9kZXMocGF5bG9hZCk7XG5cbiAgICAgICAgY29uc3QgZHJhZ2dlZE5vZGVzID0gaXRlbXNUb0RyYWcuZmlsdGVyKCh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHgudHlwZSA9PT0gRURyYWdnYWJsZVR5cGUuTk9ERTtcbiAgICAgICAgfSkubWFwKCh4KSA9PiAoeCBhcyBOb2RlT25Qb2ludGVyTW92ZSkuZk5vZGUpO1xuXG4gICAgICAgIHRoaXMuZkxpbmVBbGlnbm1lbnQ/LmluaXRpYWxpemUodGhpcy5mTm9kZXNDb250YWluZXIuZk5vZGVzLnRvQXJyYXkoKSwgZHJhZ2dlZE5vZGVzKTtcblxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgb25Qb2ludGVyRG93blNjYWxlOiBwYXlsb2FkLnRyYW5zZm9ybS5zY2FsZSxcbiAgICAgICAgICBvblBvaW50ZXJEb3duUG9zaXRpb246IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzLmRpdihwYXlsb2FkLnRyYW5zZm9ybS5zY2FsZSksXG4gICAgICAgICAgZHJhZ2dhYmxlSXRlbXM6IGl0ZW1zVG9EcmFnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEcmFnZ2FibGVDb25uZWN0aW9uc0FuZE5vZGVzKHBheWxvYWQ6IE5vZGVPblBvaW50ZXJEb3duUmVxdWVzdCk6IElEcmFnZ2FibGVJdGVtW10ge1xuICAgIGxldCBpdGVtc1RvRHJhZzogSURyYWdnYWJsZUl0ZW1bXSA9IFtdO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlcyA9IHBheWxvYWQuc2VsZWN0ZWRJdGVtcy5tYXAoKHgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZOb2Rlc0NvbnRhaW5lci5maW5kTm9kZSh4Lmhvc3RFbGVtZW50KTtcbiAgICB9KS5maWx0ZXIoKHgpID0+ICEheCkgYXMgRk5vZGVCYXNlW107XG5cbiAgICBjb25zdCBub2RlRHJhZ0hhbmRsZXJzID0gc2VsZWN0ZWROb2Rlcy5tYXAoKHgpID0+IG5ldyBOb2RlT25Qb2ludGVyTW92ZSh0aGlzLmZMaW5lQWxpZ25tZW50LCB4KSk7XG4gICAgaXRlbXNUb0RyYWcgPSBub2RlRHJhZ0hhbmRsZXJzO1xuXG4gICAgY29uc3QgYWxsT3V0cHV0czogRk5vZGVPdXRwdXRCYXNlW10gPSBzZWxlY3RlZE5vZGVzLnJlZHVjZSgocmVzdWx0OiBGTm9kZU91dHB1dEJhc2VbXSwgeDogRk5vZGVCYXNlKSA9PiB7XG4gICAgICByZXR1cm4gcmVzdWx0LmNvbmNhdCh0aGlzLmdldE91dHB1dHNGb3JOb2RlKHgpKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBhbGxJbnB1dHM6IEZOb2RlSW5wdXRCYXNlW10gPSBzZWxlY3RlZE5vZGVzLnJlZHVjZSgocmVzdWx0OiBGTm9kZUlucHV0QmFzZVtdLCB4OiBGTm9kZUJhc2UpID0+IHtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KHRoaXMuZ2V0SW5wdXRzRm9yTm9kZSh4KSk7XG4gICAgfSwgW10pO1xuXG4gICAgbm9kZURyYWdIYW5kbGVycy5mb3JFYWNoKChub2RlSGFuZGxlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0Q29ubmVjdGlvbnMgPSB0aGlzLmZDb25uZWN0aW9uc0NvbnRhaW5lci5maW5kT3V0Z29pbmdDb25uZWN0aW9ucyh0aGlzLmdldE91dHB1dHNGb3JOb2RlKG5vZGVIYW5kbGVyLmZOb2RlKSk7XG4gICAgICBvdXRwdXRDb25uZWN0aW9ucy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmIChhbGxJbnB1dHMuaW5jbHVkZXMoYy5mcm9tVG8hLmlucHV0ISkpIHtcbiAgICAgICAgICBpdGVtc1RvRHJhZy5wdXNoKG5ldyBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyKGMsIHBheWxvYWQudHJhbnNmb3JtLCB0aGlzLmhvc3RFbGVtZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXNUb0RyYWcucHVzaChuZXcgRkNvbm5lY3Rpb25Tb3VyY2VEcmFnSGFuZGxlcihjLCBwYXlsb2FkLnRyYW5zZm9ybSwgdGhpcy5ob3N0RWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGlucHV0Q29ubmVjdGlvbnMgPSB0aGlzLmZDb25uZWN0aW9uc0NvbnRhaW5lci5maW5kSW5jb21pbmdDb25uZWN0aW9ucyh0aGlzLmdldElucHV0c0Zvck5vZGUobm9kZUhhbmRsZXIuZk5vZGUpKTtcbiAgICAgIGlucHV0Q29ubmVjdGlvbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBpZiAoYWxsT3V0cHV0cy5pbmNsdWRlcyhjLmZyb21UbyEub3V0cHV0ISBhcyBGTm9kZU91dHB1dEJhc2UpKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtc1RvRHJhZy5maW5kSW5kZXgoKHgpID0+IHgudHlwZSA9PT0gRURyYWdnYWJsZVR5cGUuQ09OTkVDVElPTiAmJiAoeCBhcyBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyKS5jb25uZWN0aW9uLmlkID09PSBjLmlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBpdGVtc1RvRHJhZy5wdXNoKG5ldyBGQ29ubmVjdGlvbkRyYWdIYW5kbGVyKGMsIHBheWxvYWQudHJhbnNmb3JtLCB0aGlzLmhvc3RFbGVtZW50KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1zVG9EcmFnLnB1c2gobmV3IEZDb25uZWN0aW9uVGFyZ2V0RHJhZ0hhbmRsZXIoYywgcGF5bG9hZC50cmFuc2Zvcm0sIHRoaXMuaG9zdEVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvL2l0ZW1zVG9EcmFnLnB1c2gobmV3IE5vZGVPblBvaW50ZXJNb3ZlKHRoaXMuZkxpbmVBbGlnbm1lbnQsIHguZk5vZGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXNUb0RyYWc7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0c0Zvck5vZGUobm9kZTogRk5vZGVCYXNlKTogRk5vZGVJbnB1dEJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZkZsb3cuaW5wdXRzLmZpbHRlcigoeCkgPT4gbm9kZS5pc0NvbnRhaW5zKHguaG9zdEVsZW1lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3V0cHV0c0Zvck5vZGUobm9kZTogRk5vZGVCYXNlKTogRk5vZGVPdXRwdXRCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLmZGbG93Lm91dHB1dHMuZmlsdGVyKCh4KSA9PiBub2RlLmlzQ29udGFpbnMoeC5ob3N0RWxlbWVudCkpO1xuICB9XG59XG4iXX0=
@@ -560,6 +560,8 @@ function isNodeInput(element) {
560
560
  return !!element.closest('[fNodeInput]');
561
561
  }
562
562
 
563
+ const F_FLOW_CONNECTOR_PARENT = new InjectionToken('F_FLOW_CONNECTOR_PARENT');
564
+
563
565
  let uniqueId$7 = 0;
564
566
  class FNodeInputDirective extends FNodeInputBase {
565
567
  get color() {
@@ -578,14 +580,19 @@ class FNodeInputDirective extends FNodeInputBase {
578
580
  get hostElement() {
579
581
  return this.elementReference.nativeElement;
580
582
  }
581
- constructor(elementReference) {
583
+ constructor(elementReference, _parentFlow) {
582
584
  super();
583
585
  this.elementReference = elementReference;
586
+ this._parentFlow = _parentFlow;
584
587
  this.id = `f-node-input-${uniqueId$7++}`;
585
588
  this.multiple = true;
586
589
  this.isDisabled = false;
590
+ this._parentFlow?.addConnector(this);
591
+ }
592
+ ngOnDestroy() {
593
+ this._parentFlow?.removeConnector(this);
587
594
  }
588
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeInputDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeInputDirective, deps: [{ token: i0.ElementRef }, { token: F_FLOW_CONNECTOR_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
589
596
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: FNodeInputDirective, selector: "[fNodeInput]", inputs: { id: "id", fNodeInputColor: "fNodeInputColor", multiple: ["fNodeInputMultiple", "multiple"], disabled: ["fNodeInputDisabled", "disabled"] }, host: { properties: { "attr.id": "id", "class.f-node-input-multiple": "multiple", "class.f-node-input-disabled": "disabled", "class.f-node-input-not-connectable": "!canBeConnected" }, classAttribute: "f-component f-node-input" }, providers: [{ provide: F_NODE_INPUT_DIRECTIVE, useExisting: FNodeInputDirective }], usesInheritance: true, ngImport: i0 }); }
590
597
  }
591
598
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeInputDirective, decorators: [{
@@ -601,7 +608,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
601
608
  },
602
609
  providers: [{ provide: F_NODE_INPUT_DIRECTIVE, useExisting: FNodeInputDirective }],
603
610
  }]
604
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { id: [{
611
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
612
+ type: Inject,
613
+ args: [F_FLOW_CONNECTOR_PARENT]
614
+ }, {
615
+ type: Optional
616
+ }, {
617
+ type: SkipSelf
618
+ }] }]; }, propDecorators: { id: [{
605
619
  type: Input
606
620
  }], fNodeInputColor: [{
607
621
  type: Input,
@@ -655,16 +669,21 @@ class FNodeOutletDirective extends FNodeOutletBase {
655
669
  get hostElement() {
656
670
  return this.elementReference.nativeElement;
657
671
  }
658
- constructor(elementReference) {
672
+ constructor(elementReference, _parentFlow) {
659
673
  super();
660
674
  this.elementReference = elementReference;
675
+ this._parentFlow = _parentFlow;
661
676
  this.id = `f-node-outlet-${uniqueId$6++}`;
662
677
  this.color = 'black';
663
678
  this.name = '';
664
679
  this.isDisabled = false;
665
680
  this.isConnectionFromOutlet = false;
681
+ this._parentFlow?.addConnector(this);
666
682
  }
667
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeOutletDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
683
+ ngOnDestroy() {
684
+ this._parentFlow?.removeConnector(this);
685
+ }
686
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeOutletDirective, deps: [{ token: i0.ElementRef }, { token: F_FLOW_CONNECTOR_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
668
687
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { id: "id", color: ["fNodeOutletColor", "color"], name: "name", disabled: ["fNodeOutletDisabled", "disabled"], isConnectionFromOutlet: "isConnectionFromOutlet" }, host: { properties: { "attr.id": "id", "class.f-node-outlet-disabled": "disabled" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET_DIRECTIVE, useExisting: FNodeOutletDirective }], usesInheritance: true, ngImport: i0 }); }
669
688
  }
670
689
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeOutletDirective, decorators: [{
@@ -678,7 +697,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
678
697
  },
679
698
  providers: [{ provide: F_NODE_OUTLET_DIRECTIVE, useExisting: FNodeOutletDirective }],
680
699
  }]
681
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { id: [{
700
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
701
+ type: Inject,
702
+ args: [F_FLOW_CONNECTOR_PARENT]
703
+ }, {
704
+ type: Optional
705
+ }, {
706
+ type: SkipSelf
707
+ }] }]; }, propDecorators: { id: [{
682
708
  type: Input
683
709
  }], color: [{
684
710
  type: Input,
@@ -727,15 +753,20 @@ class FNodeOutputDirective extends FNodeOutputBase {
727
753
  get hostElement() {
728
754
  return this.elementReference.nativeElement;
729
755
  }
730
- constructor(elementReference) {
756
+ constructor(elementReference, _parentFlow) {
731
757
  super();
732
758
  this.elementReference = elementReference;
759
+ this._parentFlow = _parentFlow;
733
760
  this.id = `f-node-output-${uniqueId$5++}`;
734
761
  this.color = 'black';
735
762
  this.name = '';
736
763
  this.isDisabled = false;
764
+ this._parentFlow?.addConnector(this);
737
765
  }
738
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeOutputDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
766
+ ngOnDestroy() {
767
+ this._parentFlow?.removeConnector(this);
768
+ }
769
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeOutputDirective, deps: [{ token: i0.ElementRef }, { token: F_FLOW_CONNECTOR_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
739
770
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: FNodeOutputDirective, selector: "[fNodeOutput]", inputs: { id: "id", color: ["fNodeOutputColor", "color"], name: "name", disabled: ["fNodeOutputDisabled", "disabled"] }, host: { properties: { "attr.id": "id", "class.f-node-output-disabled": "disabled", "class.f-node-output-connected": "isConnected" }, classAttribute: "f-component f-node-output" }, providers: [{ provide: F_NODE_OUTPUT_DIRECTIVE, useExisting: FNodeOutputDirective }], usesInheritance: true, ngImport: i0 }); }
740
771
  }
741
772
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FNodeOutputDirective, decorators: [{
@@ -750,7 +781,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
750
781
  },
751
782
  providers: [{ provide: F_NODE_OUTPUT_DIRECTIVE, useExisting: FNodeOutputDirective }],
752
783
  }]
753
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { id: [{
784
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
785
+ type: Inject,
786
+ args: [F_FLOW_CONNECTOR_PARENT]
787
+ }, {
788
+ type: Optional
789
+ }, {
790
+ type: SkipSelf
791
+ }] }]; }, propDecorators: { id: [{
754
792
  type: Input
755
793
  }], color: [{
756
794
  type: Input,
@@ -2050,10 +2088,10 @@ class NodeOnPointerDown {
2050
2088
  return itemsToDrag;
2051
2089
  }
2052
2090
  getInputsForNode(node) {
2053
- return this.fFlow.inputs.toArray().filter((x) => node.isContains(x.hostElement));
2091
+ return this.fFlow.inputs.filter((x) => node.isContains(x.hostElement));
2054
2092
  }
2055
2093
  getOutputsForNode(node) {
2056
- return this.fFlow.outputs.toArray().filter((x) => node.isContains(x.hostElement));
2094
+ return this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));
2057
2095
  }
2058
2096
  }
2059
2097
 
@@ -2889,6 +2927,7 @@ class FFlowBase {
2889
2927
  this.changeDetectorRef = changeDetectorRef;
2890
2928
  this.ngZone = ngZone;
2891
2929
  this.onDestroy = new Subject();
2930
+ this.connectorChanges = new Subject();
2892
2931
  }
2893
2932
  ngAfterContentInit() {
2894
2933
  this.subscribeOnComponentsChanges();
@@ -2897,9 +2936,7 @@ class FFlowBase {
2897
2936
  const changes = [
2898
2937
  this.fNodesContainer.fNodes.changes,
2899
2938
  this.fConnectionsContainer.fConnections.changes,
2900
- this.outlets.changes,
2901
- this.outputs.changes,
2902
- this.inputs.changes
2939
+ this.connectorChanges
2903
2940
  ];
2904
2941
  merge(...changes).pipe(startWith(null), takeUntil(this.onDestroy)).subscribe(() => {
2905
2942
  const changedOrDestroyed = merge(...changes, this.onDestroy);
@@ -2941,9 +2978,39 @@ class FFlowComponent extends FFlowBase {
2941
2978
  this.CONNECTION_MARKER_START_SELECTED = CONNECTION_MARKER_START_SELECTED;
2942
2979
  this.CONNECTION_MARKER_END_SELECTED = CONNECTION_MARKER_END_SELECTED;
2943
2980
  this.id = `f-flow-${uniqueId$1++}`;
2981
+ this.outlets = [];
2982
+ this.outputs = [];
2983
+ this.inputs = [];
2984
+ }
2985
+ addConnector(connector) {
2986
+ if (connector instanceof FNodeOutletBase) {
2987
+ this.outlets.push(connector);
2988
+ }
2989
+ else if (connector instanceof FNodeInputBase) {
2990
+ this.inputs.push(connector);
2991
+ }
2992
+ else if (connector instanceof FNodeOutputBase) {
2993
+ this.outputs.push(connector);
2994
+ }
2995
+ this.connectorChanges.next();
2996
+ }
2997
+ removeConnector(connector) {
2998
+ if (connector instanceof FNodeOutletBase) {
2999
+ this.outlets = this.outlets.filter(x => x !== connector);
3000
+ }
3001
+ else if (connector instanceof FNodeInputBase) {
3002
+ this.inputs = this.inputs.filter(x => x !== connector);
3003
+ }
3004
+ else if (connector instanceof FNodeOutputBase) {
3005
+ this.outputs = this.outputs.filter(x => x !== connector);
3006
+ }
3007
+ this.connectorChanges.next();
2944
3008
  }
2945
3009
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FFlowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2946
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: FFlowComponent, selector: "svg[fFlow]", inputs: { id: "id" }, host: { properties: { "attr.id": "id" }, classAttribute: "f-component f-flow" }, providers: [{ provide: F_FLOW_COMPONENT, useExisting: FFlowComponent }], queries: [{ propertyName: "fNodesContainer", first: true, predicate: F_NODES_CONTAINER, descendants: true, static: true }, { propertyName: "fConnectionsContainer", first: true, predicate: F_CONNECTIONS_CONTAINER, descendants: true }, { propertyName: "fItemsContainer", first: true, predicate: F_ITEMS_CONTAINER, descendants: true, static: true }, { propertyName: "outlets", predicate: F_NODE_OUTLET_DIRECTIVE, descendants: true }, { propertyName: "outputs", predicate: F_NODE_OUTPUT_DIRECTIVE, descendants: true }, { propertyName: "inputs", predicate: F_NODE_INPUT_DIRECTIVE, descendants: true }], viewQueries: [{ propertyName: "fBackground", first: true, predicate: F_BACKGROUND, descendants: true, static: true }], usesInheritance: true, hostDirectives: [{ directive: FCanvasDirective }], ngImport: i0, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FBackgroundDirective, selector: "g[fBackground]" }] }); }
3010
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: FFlowComponent, selector: "svg[fFlow]", inputs: { id: "id" }, host: { properties: { "attr.id": "id" }, classAttribute: "f-component f-flow" }, providers: [
3011
+ { provide: F_FLOW_COMPONENT, useExisting: FFlowComponent },
3012
+ { provide: F_FLOW_CONNECTOR_PARENT, useExisting: FFlowComponent }
3013
+ ], queries: [{ propertyName: "fNodesContainer", first: true, predicate: F_NODES_CONTAINER, descendants: true, static: true }, { propertyName: "fConnectionsContainer", first: true, predicate: F_CONNECTIONS_CONTAINER, descendants: true }, { propertyName: "fItemsContainer", first: true, predicate: F_ITEMS_CONTAINER, descendants: true, static: true }], viewQueries: [{ propertyName: "fBackground", first: true, predicate: F_BACKGROUND, descendants: true, static: true }], usesInheritance: true, hostDirectives: [{ directive: FCanvasDirective }], ngImport: i0, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FBackgroundDirective, selector: "g[fBackground]" }] }); }
2947
3014
  }
2948
3015
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FFlowComponent, decorators: [{
2949
3016
  type: Component,
@@ -2954,7 +3021,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
2954
3021
  ], host: {
2955
3022
  '[attr.id]': 'id',
2956
3023
  class: "f-component f-flow"
2957
- }, providers: [{ provide: F_FLOW_COMPONENT, useExisting: FFlowComponent }], template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n" }]
3024
+ }, providers: [
3025
+ { provide: F_FLOW_COMPONENT, useExisting: FFlowComponent },
3026
+ { provide: F_FLOW_CONNECTOR_PARENT, useExisting: FFlowComponent }
3027
+ ], template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n" }]
2958
3028
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { id: [{
2959
3029
  type: Input
2960
3030
  }], fNodesContainer: [{
@@ -2969,15 +3039,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
2969
3039
  }], fBackground: [{
2970
3040
  type: ViewChild,
2971
3041
  args: [F_BACKGROUND, { static: true }]
2972
- }], outlets: [{
2973
- type: ContentChildren,
2974
- args: [F_NODE_OUTLET_DIRECTIVE, { descendants: true }]
2975
- }], outputs: [{
2976
- type: ContentChildren,
2977
- args: [F_NODE_OUTPUT_DIRECTIVE, { descendants: true }]
2978
- }], inputs: [{
2979
- type: ContentChildren,
2980
- args: [F_NODE_INPUT_DIRECTIVE, { descendants: true }]
2981
3042
  }] } });
2982
3043
 
2983
3044
  let uniqueId = 0;