UNPKG

material-motion

Version:

Makes it easy to add rich, interactive motion to your application.

51 lines 2.45 kB
/** @license * Copyright 2016 - present The Material Motion Authors. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ import * as tslib_1 from "tslib"; import { isDefined, isDimensions, isPoint2D, } from '../../typeGuards'; export function withMathOperator(superclass) { return class extends superclass { /** * Applies the operation to each dimension and emits the result. */ _mathOperator(_a) { var { operation, value$ } = _a, reactiveMapOptions = tslib_1.__rest(_a, ["operation", "value$"]); return this._reactiveMap(Object.assign({ transform: ({ upstream, value }) => { if (isPoint2D(upstream)) { return { x: operation(upstream.x, isDefined(value) ? value.x : undefined), y: operation(upstream.y, isDefined(value) ? value.y : undefined), }; // This block is just copy/pasted from the isPoint2D block. It may // eventually be worth making this smart enough to handle arbitrarily- // shaped objects, but for now, we can cover most cases with just // these two shapes. } else if (isDimensions(upstream)) { return { width: operation(upstream.width, isDefined(value) ? value.width : undefined), height: operation(upstream.height, isDefined(value) ? value.height : undefined), }; } else { return operation(upstream, value); } }, inputs: { value: value$, } }, reactiveMapOptions)); } }; } //# sourceMappingURL=_mathOperator.js.map