@foblex/flow-animator
Version:
Animation library for @foblex/flow.
40 lines • 6.36 kB
JavaScript
import { AnimateConnectionOverlayHandler } from '../animate-connection-overlay/animate-connection-overlay.handler';
import { AnimateConnectionOverlayRequest } from '../animate-connection-overlay/animate-connection-overlay-request';
import { AnimateNodeOverlayHandler } from '../animate-node-overlay/animate-node-overlay.handler';
import { AnimateNodeOverlayRequest } from '../animate-node-overlay/animate-node-overlay-request';
/**
* Handler for processing animation requests for individual elements.
*/
export class AnimateElementHandler {
/**
* Creates an instance of AnimateElementHandler.
* @param {AnimationBuilder} animationBuilder - The AnimationBuilder service for creating animations.
*/
constructor(animationBuilder) {
this.animationBuilder = animationBuilder;
}
/**
* Handles the provided animation request and returns an Observable for the animation process.
* @param {AnimateElementRequest} request - The animation request to be handled.
* @return {Observable<HTMLElement | SVGPathElement>} An Observable emitting the animated element.
*/
handle(request) {
let result;
if (request.element instanceof SVGPathElement) {
result = this.animateConnection(request);
}
else {
result = this.animateNode(request);
}
return result;
}
animateConnection(request) {
const result = new AnimateConnectionOverlayHandler(this.animationBuilder).handle(new AnimateConnectionOverlayRequest(request.element, request.duration));
return result;
}
animateNode(request) {
const result = new AnimateNodeOverlayHandler(this.animationBuilder).handle(new AnimateNodeOverlayRequest(request.element, request.duration));
return result;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZS1lbGVtZW50LmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3ctYW5pbWF0b3Ivc3JjL2xpYi9hbmltYXRlLWVsZW1lbnQvYW5pbWF0ZS1lbGVtZW50LmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbkgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDbkgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFakc7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDOzs7T0FHRztJQUNILFlBQ1ksZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFFOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBOEI7UUFDMUMsSUFBSSxNQUFnRCxDQUFDO1FBRXJELElBQUksT0FBTyxDQUFDLE9BQU8sWUFBWSxjQUFjLEVBQUU7WUFDN0MsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBOEI7UUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQzVFLElBQUksK0JBQStCLENBQUMsT0FBTyxDQUFDLE9BQXlCLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUMzRixDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUE4QjtRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FDdEUsSUFBSSx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsT0FBc0IsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ2xGLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRlRWxlbWVudFJlcXVlc3QgfSBmcm9tICcuL2FuaW1hdGUtZWxlbWVudC1yZXF1ZXN0JztcbmltcG9ydCB7IEFuaW1hdGlvbkJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuaW1hdGVDb25uZWN0aW9uT3ZlcmxheUhhbmRsZXIgfSBmcm9tICcuLi9hbmltYXRlLWNvbm5lY3Rpb24tb3ZlcmxheS9hbmltYXRlLWNvbm5lY3Rpb24tb3ZlcmxheS5oYW5kbGVyJztcbmltcG9ydCB7IEFuaW1hdGVDb25uZWN0aW9uT3ZlcmxheVJlcXVlc3QgfSBmcm9tICcuLi9hbmltYXRlLWNvbm5lY3Rpb24tb3ZlcmxheS9hbmltYXRlLWNvbm5lY3Rpb24tb3ZlcmxheS1yZXF1ZXN0JztcbmltcG9ydCB7IEFuaW1hdGVOb2RlT3ZlcmxheUhhbmRsZXIgfSBmcm9tICcuLi9hbmltYXRlLW5vZGUtb3ZlcmxheS9hbmltYXRlLW5vZGUtb3ZlcmxheS5oYW5kbGVyJztcbmltcG9ydCB7IEFuaW1hdGVOb2RlT3ZlcmxheVJlcXVlc3QgfSBmcm9tICcuLi9hbmltYXRlLW5vZGUtb3ZlcmxheS9hbmltYXRlLW5vZGUtb3ZlcmxheS1yZXF1ZXN0JztcblxuLyoqXG4gKiBIYW5kbGVyIGZvciBwcm9jZXNzaW5nIGFuaW1hdGlvbiByZXF1ZXN0cyBmb3IgaW5kaXZpZHVhbCBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFuaW1hdGVFbGVtZW50SGFuZGxlciB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQW5pbWF0ZUVsZW1lbnRIYW5kbGVyLlxuICAgKiBAcGFyYW0ge0FuaW1hdGlvbkJ1aWxkZXJ9IGFuaW1hdGlvbkJ1aWxkZXIgLSBUaGUgQW5pbWF0aW9uQnVpbGRlciBzZXJ2aWNlIGZvciBjcmVhdGluZyBhbmltYXRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGFuaW1hdGlvbkJ1aWxkZXI6IEFuaW1hdGlvbkJ1aWxkZXIsXG4gICkge1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHByb3ZpZGVkIGFuaW1hdGlvbiByZXF1ZXN0IGFuZCByZXR1cm5zIGFuIE9ic2VydmFibGUgZm9yIHRoZSBhbmltYXRpb24gcHJvY2Vzcy5cbiAgICogQHBhcmFtIHtBbmltYXRlRWxlbWVudFJlcXVlc3R9IHJlcXVlc3QgLSBUaGUgYW5pbWF0aW9uIHJlcXVlc3QgdG8gYmUgaGFuZGxlZC5cbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFNWR1BhdGhFbGVtZW50Pn0gQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgYW5pbWF0ZWQgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogQW5pbWF0ZUVsZW1lbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFNWR1BhdGhFbGVtZW50PiB7XG4gICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFNWR1BhdGhFbGVtZW50PjtcblxuICAgIGlmIChyZXF1ZXN0LmVsZW1lbnQgaW5zdGFuY2VvZiBTVkdQYXRoRWxlbWVudCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5hbmltYXRlQ29ubmVjdGlvbihyZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5hbmltYXRlTm9kZShyZXF1ZXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBhbmltYXRlQ29ubmVjdGlvbihyZXF1ZXN0OiBBbmltYXRlRWxlbWVudFJlcXVlc3QpOiBPYnNlcnZhYmxlPFNWR1BhdGhFbGVtZW50PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFuaW1hdGVDb25uZWN0aW9uT3ZlcmxheUhhbmRsZXIodGhpcy5hbmltYXRpb25CdWlsZGVyKS5oYW5kbGUoXG4gICAgICAgIG5ldyBBbmltYXRlQ29ubmVjdGlvbk92ZXJsYXlSZXF1ZXN0KHJlcXVlc3QuZWxlbWVudCBhcyBTVkdQYXRoRWxlbWVudCwgcmVxdWVzdC5kdXJhdGlvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZU5vZGUocmVxdWVzdDogQW5pbWF0ZUVsZW1lbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBbmltYXRlTm9kZU92ZXJsYXlIYW5kbGVyKHRoaXMuYW5pbWF0aW9uQnVpbGRlcikuaGFuZGxlKFxuICAgICAgICBuZXcgQW5pbWF0ZU5vZGVPdmVybGF5UmVxdWVzdChyZXF1ZXN0LmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsIHJlcXVlc3QuZHVyYXRpb24pXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==