@foblex/flow-animator
Version:
Animation library for @foblex/flow.
58 lines • 8.72 kB
JavaScript
export class GetAllAnimatedElementsHandler {
constructor(document) {
this.document = document;
this.allNodes = [];
this.allConnections = [];
}
handle(request) {
if (!request.flowId) {
throw new Error('Flow id is required');
}
const flowElement = this.getFlowElement(request.flowId);
this.allNodes = this.getAllNodes(flowElement);
this.allConnections = this.getAllConnections(flowElement);
const result = request.items.map((row) => {
return row.map((item) => {
return {
element: item.isConnection ? this.getConnectionElement(item.id) : this.getNodeElement(item.id),
duration: item.duration
};
});
});
return result;
}
getAllNodes(flowElement) {
const result = Array.from(flowElement.querySelectorAll('[fNode]'));
return result;
}
getAllConnections(flowElement) {
const result = Array.from(flowElement.getElementsByTagName('f-connection'));
return result;
}
getFlowElement(flowId) {
const flowElement = this.document.getElementById(flowId);
if (!flowElement) {
throw new Error(`FFlowComponent with id ${flowId} not found`);
}
return flowElement;
}
getNodeElement(nodeId) {
const nodeElement = this.allNodes.find((x) => x.dataset['fNodeId'] === nodeId);
if (!nodeElement) {
throw new Error(`FNodeDirective with id ${nodeId} not found`);
}
return nodeElement;
}
getConnectionElement(connectionId) {
const connectionElement = this.allConnections.find((connection) => connection.id === connectionId);
if (!connectionElement) {
throw new Error(`FConnectionComponent with id ${connectionId} not found`);
}
const path = connectionElement.querySelector('.f-connection-path');
if (!path) {
throw new Error(`FConnectionComponent with id ${connectionId} has no path element`);
}
return path;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFsbC1hbmltYXRlZC1lbGVtZW50cy5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93LWFuaW1hdG9yL3NyYy9saWIvZ2V0LWFsbC1hbmltYXRlZC1lbGVtZW50cy9nZXQtYWxsLWFuaW1hdGVkLWVsZW1lbnRzLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLDZCQUE2QjtJQUt4QyxZQUNZLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFKdEIsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFDN0IsbUJBQWMsR0FBa0IsRUFBRSxDQUFDO0lBSzNDLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBc0M7UUFFbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxXQUFXLEdBQWdCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRTtZQUMxRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFxQixFQUFFLEVBQUU7Z0JBQ3ZDLE9BQU87b0JBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDOUYsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUNGLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFHTyxXQUFXLENBQUMsV0FBd0I7UUFDMUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQWtCLENBQUM7UUFDcEYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFdBQXdCO1FBQ2hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFrQixDQUFDO1FBQzdGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBVztRQUNoQyxNQUFNLFdBQVcsR0FBdUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEyQixNQUFPLFlBQVksQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjO1FBQ25DLE1BQU0sV0FBVyxHQUE0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUNySCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTJCLE1BQU8sWUFBWSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sb0JBQW9CLENBQUMsWUFBaUI7UUFDNUMsTUFBTSxpQkFBaUIsR0FBNEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUF1QixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQ3pJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFpQyxZQUFhLFlBQVksQ0FBQyxDQUFDO1NBQzdFO1FBRUQsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFtQixDQUFDO1FBQ3JGLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFpQyxZQUFhLHNCQUFzQixDQUFDLENBQUM7U0FDdkY7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdldEFsbEFuaW1hdGVkRWxlbWVudHNSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtYWxsLWFuaW1hdGVkLWVsZW1lbnRzLXJlcXVlc3QnO1xuaW1wb3J0IHsgSUZBbmltYXRpb25JdGVtIH0gZnJvbSAnLi4vaS1mLWFuaW1hdGlvbi1pdGVtJztcbmltcG9ydCB7IElGRWxlbWVudFRvQW5pbWF0ZSB9IGZyb20gJy4uL2ktZi1lbGVtZW50LXRvLWFuaW1hdGUnO1xuXG5leHBvcnQgY2xhc3MgR2V0QWxsQW5pbWF0ZWRFbGVtZW50c0hhbmRsZXIge1xuXG4gIHByaXZhdGUgYWxsTm9kZXM6IEhUTUxFbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBhbGxDb25uZWN0aW9uczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBHZXRBbGxBbmltYXRlZEVsZW1lbnRzUmVxdWVzdCk6IElGRWxlbWVudFRvQW5pbWF0ZVtdW10ge1xuXG4gICAgaWYgKCFyZXF1ZXN0LmZsb3dJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGbG93IGlkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmxvd0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5nZXRGbG93RWxlbWVudChyZXF1ZXN0LmZsb3dJZCk7XG5cbiAgICB0aGlzLmFsbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcyhmbG93RWxlbWVudCk7XG5cbiAgICB0aGlzLmFsbENvbm5lY3Rpb25zID0gdGhpcy5nZXRBbGxDb25uZWN0aW9ucyhmbG93RWxlbWVudCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSByZXF1ZXN0Lml0ZW1zLm1hcCgocm93OiBJRkFuaW1hdGlvbkl0ZW1bXSkgPT4ge1xuICAgICAgcmV0dXJuIHJvdy5tYXAoKGl0ZW06IElGQW5pbWF0aW9uSXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVsZW1lbnQ6IGl0ZW0uaXNDb25uZWN0aW9uID8gdGhpcy5nZXRDb25uZWN0aW9uRWxlbWVudChpdGVtLmlkKSA6IHRoaXMuZ2V0Tm9kZUVsZW1lbnQoaXRlbS5pZCksXG4gICAgICAgICAgZHVyYXRpb246IGl0ZW0uZHVyYXRpb25cbiAgICAgICAgfSBhcyBJRkVsZW1lbnRUb0FuaW1hdGU7XG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZXRBbGxOb2RlcyhmbG93RWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBBcnJheS5mcm9tKGZsb3dFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tmTm9kZV0nKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxDb25uZWN0aW9ucyhmbG93RWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBBcnJheS5mcm9tKGZsb3dFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmLWNvbm5lY3Rpb24nKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbG93RWxlbWVudChmbG93SWQ6IGFueSk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBmbG93RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChmbG93SWQpO1xuICAgIGlmICghZmxvd0VsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRkZsb3dDb21wb25lbnQgd2l0aCBpZCAkeyBmbG93SWQgfSBub3QgZm91bmRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZsb3dFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROb2RlRWxlbWVudChub2RlSWQ6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBub2RlRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB0aGlzLmFsbE5vZGVzLmZpbmQoKHg6IEhUTUxFbGVtZW50KSA9PiB4LmRhdGFzZXRbJ2ZOb2RlSWQnXSA9PT0gbm9kZUlkKTtcbiAgICBpZiAoIW5vZGVFbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZOb2RlRGlyZWN0aXZlIHdpdGggaWQgJHsgbm9kZUlkIH0gbm90IGZvdW5kYCk7XG4gICAgfVxuICAgIHJldHVybiBub2RlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29ubmVjdGlvbkVsZW1lbnQoY29ubmVjdGlvbklkOiBhbnkpOiBTVkdQYXRoRWxlbWVudCB7XG4gICAgY29uc3QgY29ubmVjdGlvbkVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdGhpcy5hbGxDb25uZWN0aW9ucy5maW5kKChjb25uZWN0aW9uOiBIVE1MRWxlbWVudCkgPT4gY29ubmVjdGlvbi5pZCA9PT0gY29ubmVjdGlvbklkKTtcbiAgICBpZiAoIWNvbm5lY3Rpb25FbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZDb25uZWN0aW9uQ29tcG9uZW50IHdpdGggaWQgJHsgY29ubmVjdGlvbklkIH0gbm90IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGNvbm5lY3Rpb25FbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mLWNvbm5lY3Rpb24tcGF0aCcpIGFzIFNWR1BhdGhFbGVtZW50O1xuICAgIGlmICghcGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGQ29ubmVjdGlvbkNvbXBvbmVudCB3aXRoIGlkICR7IGNvbm5lY3Rpb25JZCB9IGhhcyBubyBwYXRoIGVsZW1lbnRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufVxuIl19