{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../../src/math/MathUtil.js","../../src/math/Span.js","../../src/utils/WebGLUtil.js","../../src/utils/DomUtil.js","../../src/utils/ImgUtil.js","../../src/utils/Util.js","../../src/utils/Puid.js","../../src/core/Pool.js","../../src/debug/Stats.js","../../src/events/EventDispatcher.js","../../src/math/Integration.js","../../src/core/Proton.js","../../src/utils/Rgb.js","../../src/math/ease.js","../../src/math/Vector2D.js","../../src/core/Particle.js","../../src/utils/ColorUtil.js","../../src/math/Polar2D.js","../../src/math/Mat3.js","../../src/math/ArraySpan.js","../../src/math/Rectangle.js","../../src/initialize/Rate.js","../../src/initialize/Initialize.js","../../src/initialize/Life.js","../../src/zone/Zone.js","../../src/zone/PointZone.js","../../src/initialize/Position.js","../../src/initialize/Velocity.js","../../src/initialize/Mass.js","../../src/initialize/Radius.js","../../src/initialize/Body.js","../../src/behaviour/Behaviour.js","../../src/behaviour/Force.js","../../src/behaviour/Attraction.js","../../src/behaviour/RandomDrift.js","../../src/behaviour/Gravity.js","../../src/behaviour/Collision.js","../../src/behaviour/CrossZone.js","../../src/behaviour/Alpha.js","../../src/behaviour/Scale.js","../../src/behaviour/Rotate.js","../../src/behaviour/Color.js","../../src/behaviour/Cyclone.js","../../src/behaviour/Repulsion.js","../../src/behaviour/GravityWell.js","../../src/initialize/InitializeUtil.js","../../src/emitter/Emitter.js","../../src/emitter/BehaviourEmitter.js","../../src/emitter/FollowEmitter.js","../../src/render/BaseRenderer.js","../../src/render/CanvasRenderer.js","../../src/render/DomRenderer.js","../../src/render/EaselRenderer.js","../../src/render/PixelRenderer.js","../../src/render/PixiRenderer.js","../../src/utils/MStack.js","../../src/render/WebGLRenderer.js","../../src/render/CustomRenderer.js","../../src/zone/LineZone.js","../../src/zone/CircleZone.js","../../src/zone/RectZone.js","../../src/zone/ImageZone.js","../../src/debug/Debug.js","../../src/index.js","../node_modules/react/index.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../../modules/createNameContext.js","../../modules/HistoryContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../../src/RAFManager.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","../../src/utils/Rand.js","../../src/particles/Canvas.jsx","../../src/utils/Color.js","../../src/particles/Ball.jsx","../../src/particles/Color.jsx","../../src/particles/Custom.jsx","../../src/particles/Lines.jsx","../../src/particles/Thick.jsx","../../src/particles/Square.jsx","../../src/particles/Cobweb.jsx","../../src/particles/Circle.jsx","../../src/particles/Tadpole.jsx","../../src/particles/Polygon.jsx","../../src/particles/Fountain.jsx","../node_modules/react-reveal/dist/Reveal.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js","../node_modules/prop-types/index.js","../node_modules/aos/dist/aos.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","../node_modules/object-assign/index.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js","../node_modules/path-to-regexp/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js","../node_modules/babel-runtime/helpers/typeof.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js","../node_modules/react-dom/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/typewriter-effect/dist/react.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/webpack/buildin/global.js","../node_modules/isarray/index.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/process/browser.js","../node_modules/babel-runtime/helpers/extends.js","../node_modules/babel-runtime/core-js/object/assign.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/babel-runtime/helpers/objectWithoutProperties.js","../node_modules/babel-runtime/core-js/object/get-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/get-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js","../node_modules/babel-runtime/helpers/classCallCheck.js","../node_modules/babel-runtime/helpers/createClass.js","../node_modules/babel-runtime/core-js/object/define-property.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/define-property.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.define-property.js","../node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-runtime/core-js/symbol/iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js","../node_modules/babel-runtime/core-js/symbol.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/babel-runtime/helpers/inherits.js","../node_modules/babel-runtime/core-js/object/set-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-proto.js","../node_modules/babel-runtime/core-js/object/create.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.create.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/tslib/tslib.es6.js","../node_modules/framer-motion/dist/es/motion/features/definitions.js","../node_modules/framer-motion/dist/es/context/LazyContext.js","../node_modules/framer-motion/dist/es/motion/features/use-features.js","../node_modules/framer-motion/dist/es/context/MotionConfigContext.js","../node_modules/framer-motion/dist/es/context/MotionContext/index.js","../node_modules/framer-motion/dist/es/context/PresenceContext.js","../node_modules/framer-motion/dist/es/utils/use-constant.js","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.js","../node_modules/framer-motion/dist/es/utils/is-browser.js","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js","../node_modules/framer-motion/dist/es/utils/is-ref-object.js","../node_modules/framer-motion/dist/es/render/utils/variants.js","../node_modules/framer-motion/dist/es/context/MotionContext/create.js","../node_modules/framer-motion/dist/es/context/MotionContext/utils.js","../node_modules/framer-motion/dist/es/motion/index.js","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.js","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js","../node_modules/framer-motion/dist/es/render/dom/projection/scale-correction.js","../node_modules/framer-motion/dist/es/render/html/utils/transform.js","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.js","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.js","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.js","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.js","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.js","../node_modules/style-value-types/dist/es/utils.js","../node_modules/style-value-types/dist/es/numbers/units.js","../node_modules/style-value-types/dist/es/numbers/index.js","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.js","../node_modules/framer-motion/dist/es/render/dom/value-types/number.js","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.js","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js","../node_modules/framer-motion/dist/es/render/html/use-props.js","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.js","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.js","../node_modules/framer-motion/dist/es/render/svg/utils/path.js","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.js","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js","../node_modules/framer-motion/dist/es/render/svg/use-props.js","../node_modules/framer-motion/dist/es/render/dom/use-render.js","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.js","../node_modules/framer-motion/dist/es/render/html/utils/render.js","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.js","../node_modules/framer-motion/dist/es/render/svg/utils/render.js","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.js","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.js","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.js","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.js","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.js","../node_modules/framer-motion/dist/es/utils/resolve-value.js","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js","../node_modules/framer-motion/dist/es/render/svg/config-motion.js","../node_modules/framer-motion/dist/es/render/html/config-motion.js","../node_modules/framer-motion/dist/es/render/utils/types.js","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.js","../node_modules/framer-motion/dist/es/events/use-dom-event.js","../node_modules/framer-motion/dist/es/gestures/utils/event-type.js","../node_modules/framer-motion/dist/es/events/event-info.js","../node_modules/framer-motion/dist/es/events/use-pointer-event.js","../node_modules/framer-motion/dist/es/events/utils.js","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.js","../node_modules/framer-motion/dist/es/gestures/use-hover-gesture.js","../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.js","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.js","../node_modules/popmotion/dist/es/utils/pipe.js","../node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.js","../node_modules/framer-motion/dist/es/motion/features/gestures.js","../node_modules/framer-motion/dist/es/gestures/use-tap-gesture.js","../node_modules/framer-motion/dist/es/gestures/use-focus-gesture.js","../node_modules/framer-motion/dist/es/utils/shallow-compare.js","../node_modules/popmotion/dist/es/utils/clamp.js","../node_modules/popmotion/dist/es/animations/utils/find-spring.js","../node_modules/popmotion/dist/es/animations/generators/spring.js","../node_modules/popmotion/dist/es/utils/progress.js","../node_modules/popmotion/dist/es/utils/mix.js","../node_modules/style-value-types/dist/es/color/utils.js","../node_modules/style-value-types/dist/es/color/rgba.js","../node_modules/style-value-types/dist/es/color/hex.js","../node_modules/style-value-types/dist/es/color/hsla.js","../node_modules/popmotion/dist/es/utils/mix-color.js","../node_modules/style-value-types/dist/es/color/index.js","../node_modules/style-value-types/dist/es/complex/index.js","../node_modules/popmotion/dist/es/utils/inc.js","../node_modules/popmotion/dist/es/utils/mix-complex.js","../node_modules/popmotion/dist/es/utils/interpolate.js","../node_modules/popmotion/dist/es/easing/utils.js","../node_modules/popmotion/dist/es/easing/index.js","../node_modules/popmotion/dist/es/animations/generators/keyframes.js","../node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.js","../node_modules/popmotion/dist/es/animations/generators/decay.js","../node_modules/framesync/dist/es/on-next-frame.js","../node_modules/framesync/dist/es/index.js","../node_modules/framesync/dist/es/create-render-step.js","../node_modules/popmotion/dist/es/animations/utils/elapsed.js","../node_modules/popmotion/dist/es/animations/index.js","../node_modules/popmotion/dist/es/utils/velocity-per-second.js","../node_modules/framer-motion/dist/es/utils/time-conversion.js","../node_modules/popmotion/dist/es/easing/cubic-bezier.js","../node_modules/framer-motion/dist/es/animation/utils/easing.js","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.js","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.js","../node_modules/style-value-types/dist/es/complex/filter.js","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.js","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.js","../node_modules/framer-motion/dist/es/animation/utils/transitions.js","../node_modules/popmotion/dist/es/animations/inertia.js","../node_modules/framer-motion/dist/es/utils/array.js","../node_modules/framer-motion/dist/es/utils/subscription-manager.js","../node_modules/framer-motion/dist/es/value/index.js","../node_modules/framer-motion/dist/es/render/dom/value-types/test.js","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.js","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.js","../node_modules/framer-motion/dist/es/render/dom/value-types/find.js","../node_modules/framer-motion/dist/es/render/utils/setters.js","../node_modules/framer-motion/dist/es/render/utils/animation.js","../node_modules/framer-motion/dist/es/render/utils/animation-state.js","../node_modules/framer-motion/dist/es/motion/features/animations.js","../node_modules/popmotion/dist/es/utils/is-point.js","../node_modules/popmotion/dist/es/utils/is-point-3d.js","../node_modules/popmotion/dist/es/utils/distance.js","../node_modules/framer-motion/dist/es/gestures/PanSession.js","../node_modules/framer-motion/dist/es/utils/noop.js","../node_modules/framer-motion/dist/es/utils/geometry/index.js","../node_modules/framer-motion/dist/es/utils/each-axis.js","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js","../node_modules/framer-motion/dist/es/render/dom/projection/measure.js","../node_modules/framer-motion/dist/es/utils/geometry/delta-calc.js","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.js","../node_modules/framer-motion/dist/es/render/dom/projection/utils.js","../node_modules/framer-motion/dist/es/motion/features/layout/utils.js","../node_modules/framer-motion/dist/es/render/utils/is-draggable.js","../node_modules/framer-motion/dist/es/utils/geometry/delta-apply.js","../node_modules/framer-motion/dist/es/render/dom/utils/batch-layout.js","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js","../node_modules/framer-motion/dist/es/render/dom/projection/convert-to-relative.js","../node_modules/framer-motion/dist/es/motion/features/drag.js","../node_modules/framer-motion/dist/es/components/AnimateSharedLayout/types.js","../node_modules/framer-motion/dist/es/gestures/use-pan-gesture.js","../node_modules/framer-motion/dist/es/gestures/drag/use-drag.js","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.js","../node_modules/framer-motion/dist/es/render/dom/projection/default-scale-correctors.js","../node_modules/framer-motion/dist/es/motion/features/layout/Animate.js","../node_modules/framer-motion/dist/es/components/AnimateSharedLayout/utils/batcher.js","../node_modules/framer-motion/dist/es/context/SharedLayoutContext.js","../node_modules/framer-motion/dist/es/motion/features/layout/Measure.js","../node_modules/framer-motion/dist/es/motion/features/layout/index.js","../node_modules/framer-motion/dist/es/render/utils/state.js","../node_modules/framer-motion/dist/es/render/html/utils/build-projection-transform.js","../node_modules/framer-motion/dist/es/render/utils/lifecycles.js","../node_modules/framer-motion/dist/es/render/utils/projection.js","../node_modules/framer-motion/dist/es/render/utils/flat-tree.js","../node_modules/framer-motion/dist/es/render/index.js","../node_modules/framer-motion/dist/es/render/utils/motion-values.js","../node_modules/framer-motion/dist/es/render/dom/projection/relative-set.js","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.js","../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.js","../node_modules/framer-motion/dist/es/render/html/visual-element.js","../node_modules/framer-motion/dist/es/utils/is-numerical-string.js","../node_modules/framer-motion/dist/es/render/svg/visual-element.js","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.js","../node_modules/framer-motion/dist/es/render/dom/motion.js"],"names":["module","exports","require","PI","MathUtil","num","this","Infinity","a","b","Math","floor","random","center","f","isInt","randomAToB","toString","slice","k","digits","pow","Span","isArray","Util","getRandFromArray","randomFloating","c","pan","getValue","initValue","length","i","tx","ty","angleInRadians","cos","s","sin","sx","sy","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","id","width","height","position","dom","document","createElement","style","opacity","transform","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","WebGLUtil","DomUtil","createCanvas","getContext","value","defaults","Object","prototype","call","arr","obj","ignore","indexOf","constructor","args","bind","apply","concat","particle","conf","hasProp","p","v","copy","props","prop","hasOwnProperty","getSpanValue","ImgUtil","destroy","source","assign","idsMap","Puid","type","uid","getIdFromCache","_index","_cache","isBody","isInner","Pool","params","__puid","getId","cache","pop","createOrClone","getCache","push","total","create","classApply","clone","count","Stats","body","add","emitter","getEmitter","renderer","getRenderer","str","proton","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","getCount","pool","container","innerHTML","cssText","join","addEventListener","_this","bg","color","parentNode","appendChild","emitterIndex","renderers","rendererIndex","result","cpool","round","EventDispatcher","listener","_listeners","removeEventListener","splice","listeners","handler","dispatchEvent","hasEventListener","removeAllEventListeners","Integration","particles","time","damping","eulerIntegrate","sleep","old","multiplyScalar","mass","clear","Proton","render","init","index","remove","parent","EMITTER_ADDED","EMITTER_REMOVED","_fps","PROTON_UPDATE","USE_CLOCK","then","Date","getTime","now","elapsed","amendChangeTabsBug","emittersUpdate","DEFAULT_INTERVAL","PROTON_UPDATE_AFTER","_interval","update","destroyAll","destroyOther","getAllParticles","fps","integrationType","stats","EULER","integrator","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","PI_2","sqrt","ease","easeLinear","Vector2D","atan2","w","addVectors","subVectors","set","divideScalar","distanceToSquared","tha","dx","dy","alpha","Particle","N180_PI","life","age","dead","sprite","energy","radius","rotation","easing","rgb","reset","emptyObject","data","removeAllBehaviours","applyBehaviours","max","applyBehaviour","behaviour","parents","initialize","addBehaviour","emptyArray","setProp","h","hex16","substring","parseInt","rbg","Number","Polar2D","getX","getY","abs","Mat3","mat3","mat","Float32Array","mat1","mat2","m","vec","ArraySpan","_arr","randomColor","toArray","Rectangle","right","bottom","Rate","startTime","nextTime","timePan","numPan","numpan","timepan","setSpanValue","Initialize","Life","lifePan","Zone","vector","crossType","alert","PointZone","error","Position","zone","getPosition","Velocity","rpan","thapan","rPan","thaPan","vr","polar2d","normalizeVelocity","PI_180","Mass","massPan","Radius","oldRadius","Body","imageTarget","Behaviour","getEasing","force","removeBehaviour","Force","fx","fy","normalizeForce","calculate","Attraction","targetPosition","normalizeValue","radiusSq","attractionForce","lengthSq","sub","normalize","RandomDrift","driftX","driftY","delay","panFoce","addXY","Gravity","Collision","collisionPool","delta","overlap","totalMass","averageMass1","averageMass2","distance","newPool","otherParticle","CrossZone","crossing","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","rotationA","rotationB","getDirection","influence","Color","createArraySpan","colorA","ColorUtil","hexToRgb","colorB","CHANGING","Cyclone","angle","span","String","toLowerCase","setAngleAndForce","cangle","cyclone","gradient","getGradient","Repulsion","GravityWell","centerPoint","distanceVec","factor","distanceSq","bindEmitter","setVectorVal","degreeTransform","Emitter","totalTime","stoped","emitTime","isNaN","rate","oldStoped","oldEmitTime","oldTotalTime","initAll","rest","initializer","arguments","emitting","integrate","dispatch","expire","event","bindEvent","createParticle","get","setupParticle","addBehaviours","stop","removeAllInitializers","removeEmitter","t","BehaviourEmitter","selfBehaviours","FollowEmitter","mousemoveHandler","_this2","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","mouseTarget","_allowEmitting","layerX","layerY","offsetX","offsetY","babelHelpers.get","window","initEventHandler","BaseRenderer","thinkness","stroke","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","element","circleConf","isCircle","initHandler","CanvasRenderer","addImg2Body","drawCircle","bufContext","buffer","createBuffer","globalAlpha","globalCompositeOperation","fillStyle","rgbToHex","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","bufferCache","DomRenderer","bodyReady","transform3d","backgroundColor","removeChild","babelHelpers.typeof","createCircle","createSprite","createDiv","borderRadius","borderColor","borderWidth","url","backgroundImage","createBody","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","elementwidth","PIXIClass","PixiRenderer","PIXI","Sprite","createFromImage","from","fromImage","blendMode","setColor","tint","getHex16FromParticle","anchor","endFill","setPIXI","MStack","mats","multiply","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","CustomRenderer","umat","smat","mstack","viewport","circleCanvasURL","texturebuffers","A","B","fs","VERTEX_SHADER","shader","createShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","getShader","getFragmentShader","vertexShader","getVertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","drawImg2Canvas","updateMatrix","uniform3f","uniformMatrix3fv","top","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","inverse","LineZone","x1","y1","dot","xxyy","tha2","oldx","oldy","maxx","minx","maxy","miny","direction","rangeOut","getDistance","getSymmetric","x2","y2","min","getLength","CircleZone","PIx2","randomRadius","d","distanceTo","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","negate","func","getStyle","moveTo","lineTo","drawRect","Vector","Polar","getSpan","Init","L","P","V","M","R","F","RD","G","S","WebGlRenderer","Debug","BrowserRouter","history","createHistory","children","React","Component","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","C","forwardRef","LinkAnchor","innerRef","navigate","onClick","ex","isModifiedEvent","forwardedRef","Link","component","replace","RouterContext","location","href","isDuplicateNavigation","createPath","method","ariaCurrent","activeClassName","activeStyle","classNameProp","className","exact","isActiveProp","isActive","locationProp","sensitive","strict","styleProp","toLocation","path","escapedPath","match","matchPath","classnames","joinClassnames","createNamedContext","createContext","historyContext","Router","computeRootMatch","isExact","pathname","componentDidMount","_pendingLocation","componentWillUnmount","state","staticContext","HistoryContext","cacheCount","options","Array","matched","cacheKey","pathCache","keys","regexp","pathToRegexp","compilePath","end","values","memo","Route","isEmptyChildren","addLeadingSlash","stripBasename","basename","base","createURL","staticHandler","methodName","invariant","noop","Switch","child","computedMatch","vendors","requestAnimationFrame","cancelAnimationFrame","aniData","n","animations","start","getIndex","deleteMap","tick","timer","_extends","isAbsolute","spliceOne","list","resolvePathname","undefined","hasTrailingSlash","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","valueOf","valueEqual","every","item","aValue","bValue","stripLeadingSlash","prefix","hasBasename","stripTrailingSlash","search","hash","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","fn","filter","notifyListeners","_len","_key","forEach","canUseDOM","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","map","entry","nextIndex","nextEntries","canGo","condition","Error","_setPrototypeOf","o","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","core","version","__e","Rand","probability","Canvas","setTimeout","onCanvasDidMount","setCanvasSize","canvasRef","setInterval","onResize","current","onMouseDown","handleMouseDown","getColor","hex","exec","Ball","customDeadBehaviour","emit","miniEmitter","onCanvasInited","defaultVal","config","getProp","rps","getArrProp","cross","emitterV","pos","crossZoneBehaviour","createRenderer","onUpdate","Lines","mouseObj","attractionBehaviour","Thick","hue","Square","Cobweb","pointZone","pA","pB","dis","Circle","Tadpole","mouseInfo","fillPointsData","drawTadpoleHead","drawTadpoleTail","l","linearEvaluation","COLOR","Polygon","drawPolygon","mainEmitter","once","gravity","radiusInit","Fountain","ParticlesBg","getRandom","_interopRequireDefault","__esModule","default","defineProperty","Zoom","Flip","Fade","_extends3","_objectWithoutProperties3","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","_react2","_propTypes2","propTypes","effect","oneOfType","string","object","duration","number","wave","bool","tag","ssr","fraction","onReveal","Reveal","revealTimeout","isHidden","isMounted","handleReveal","pageYOffset","innerHeight","refs","el","offsetHeight","getTop","revealThrottler","transition","u","_","visibility","ref","Children","cloneElement","lorem","offsetTop","offsetParent","defaultProps","left","down","big","transformOrigin","global","self","Function","__g","ctx","hide","has","$export","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","virtual","U","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","Attributes","TypeError","it","_objectWithoutPropertiesLoose","excluded","sourceKeys","createDesc","IObject","defined","store","Symbol","USE_SYMBOL","loaded","offset","disable","startEvent","throttleDelay","debounceDelay","disableMutationObserver","node","removeAttribute","mobile","phone","tablet","all","atob","isSupported","console","info","setAttribute","readyState","ready","refresh","refreshHard","clearTimeout","leading","maxWait","trailing","cancel","flush","test","iterator","NaN","dataset","aos","MutationObserver","WebKitMutationObserver","MozMutationObserver","observe","documentElement","childList","subtree","removedNodes","addedNodes","vendor","opera","enumerable","configurable","writable","classList","anchorPlacement","querySelectorAll","offsetLeft","tagName","scrollLeft","scrollTop","isObject","bitmap","$keys","enumBugKeys","px","propertyIsEnumerable","getOwnPropertySymbols","propIsEnumerable","toObject","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","err","shouldUseNative","symbols","ceil","shared","SHARED","mode","copyright","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","write","lt","close","Properties","def","TAG","stat","LIBRARY","wksExt","$Symbol","isarray","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","defaultDelimiter","delimiter","escaped","next","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","charCodeAt","matches","flags","opts","encode","pretty","encodeURIComponent","token","segment","JSON","stringify","attachKeys","re","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","_defineProperty","aFunction","that","is","toIObject","arrayIndexOf","names","cof","ObjectProto","getPrototypeOf","_iterator2","_symbol2","_typeof","redefine","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","KEYS","VALUES","returnThis","Base","NAME","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","hiddenKeys","pIE","gOPD","getOwnPropertyDescriptor","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_classCallCheck","instance","_defineProperties","descriptor","_createClass","protoProps","staticProps","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","createEventEmitter","handlers","on","off","newValue","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","Provider","_Component","_proto","getChildContext","componentWillReceiveProps","nextProps","oldValue","childContextTypes","PropTypes","isRequired","Consumer","_Component2","observedBits","_proto2","contextTypes","reactIs","REACT_STATICS","contextType","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","T","childNodes","getOwnPropertyDescriptors","defineProperties","E","cursorAnimation","lastFrameTime","pauseUntil","eventQueue","eventLoop","eventLoopPaused","reverseCalledEvents","calledEvents","visibleNodes","initialOptions","elements","wrapper","cursor","strings","pauseFor","deleteSpeed","loop","autoStart","devMode","skipAddStyles","wrapperClassName","cursorClassName","stringSplitter","onCreateTextNode","onRemoveNode","runEventLoop","addEventToQueue","ms","typeString","deleteAll","typeOutHTMLString","typeCharacters","character","nodeType","pasteString","textContent","speed","cb","thisArg","addEventToStateProperty","eventName","eventArgs","shift","logInDevMode","currentEvent","createTextNode","removingCharacterNode","N","D","temp","z","I","Q","H","q","setupWrapperElement","___TYPEWRITER_JS_STYLES_ADDED___","head","typeOutAllStrings","log","delete","__data__","Uint8Array","toStringTag","byteLength","byteOffset","ArrayBuffer","resolve","nmd","process","types","binding","Buffer","isBuffer","isTypedArray","performance","hrtime","uptime","resetWarningCache","array","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","checkPropTypes","cancelled","handle","polyfill","paths","ReferenceError","Reflect","construct","sham","Proxy","Boolean","typewriter","onInit","root","factory","svgNS","locationHref","initialDefaultFrame","_useWebWorker","subframeEnabled","idPrefix","expressionsPlugin","isSafari","cachedColors","bmRnd","bmPow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface","propertyNames","len","absArr","createSizedArray","defaultCurveSegments","degToRads","roundCorner","roundValues","flag","styleDiv","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","colorMap","BaseEvent","triggerEvent","_cbs","callbacks","createTypedArray","createRegularArray","Uint8ClampedArray","Int16Array","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","dynamicProperties","_isAnimated","iterateDynamicProperties","_mdf","initDynamicPropertyContainer","getBlendMode","blendModeEnums","lineCapEnum","lineJoinEnum","Matrix","_cos","_sin","_tan","tan","_rnd","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","skew","ax","ay","skewFromAxis","sz","setTransform","tz","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","math","startdenom","significance","overflow","mask","ARC4","keylen","me","flatten","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","double","pass","is_math_call","BezierFactory","ob","nm","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x3","y3","det1","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","point","lastPoint","lengthData","bezierLengthPool","newElement","percents","lengths","BezierData","segmentLength","PointData","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","segmentsLengthPool","closed","pathV","pathO","pathI","_length","totalLength","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","lastTime","currTime","timeToCall","bez","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","setupWorker","Worker","Blob","blob","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","__used","ks","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","pathData","__converted","checkPathProperties","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","singleShape","moduleOb","__complete","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","errorCallback","XMLHttpRequest","onreadystatechange","status","send","completeData","payload","animation","onComplete","onError","createProcess","loadAnimation","processId","origin","loadData","completeAnimation","anim","getFontProperties","fontData","styles","fStyle","fWeight","weight","FontManager","emptyChar","combinedCharacters","surrogateModifiers","zeroWidthJoiner","setUpNode","font","family","fontFamily","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","createHelper","tHelper","fontProps","fFamily","fClass","Font","fonts","typekitLoaded","isLoaded","_warned","initTime","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","isCombinedCharacter","char","fontPrototype","addChars","found","ch","addFonts","defs","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","monoCase","sansCase","fPath","fOrigin","rel","sc","helper","getCharData","warn","getFontByName","fName","measureText","fontName","doubleSize","getComputedTextLength","singleSize","loadedCount","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quat","qx","qy","qz","qw","heading","attitude","asin","bank","quaternionToEuler","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","slerp","createQuaternion","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","rx","ry","rz","or","sk","sa","_isDirty","applyToMatrix","forceRender","precalculateMatrix","frameRate","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","shapePool","releaseShapes","addShape","ShapeProperty","shapeCollectionPool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","ir","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segments","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","rd","processPath","clonedPath","currentV","currentI","currentO","closerV","newPosPerc","amount","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","elemsData","_currentCopies","_elements","_groups","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","transformData","op","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","comparePoints","buildShapeString","pathNodes","_o","_i","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","intervalId","getBBox","_imageLoaded","clearInterval","createFootageData","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","featureSupport","maskType","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","sw","fc","fh","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","rot","atan","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","shouldCombine","newLineFlag","charData","fontManager","anchorGrouping","currentSize","currentPos","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","poolFactory","initialLength","_create","_release","pooling","cloned","shapeCollection","markerParser","parsePayloadLines","lines","keysCount","trim","_markers","markers","_marker","markerData","tm","dr","cm","__","SVGRenderer","animationItem","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","contentVisibility","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","focusable","filterSize","pendingElements","destroyed","rendererType","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","viewData","solidPath","expansor","feMorph","properties","currentMasks","layerId","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","cO","actionFlag","cArrPos","duplicate","saved","savedOp","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","par","fillType","clip","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","svg","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","opFill","lc","lj","ml","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","dist","createRenderFunction","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","_placeholder","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","createFilter","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","sigma","dimensions","sigmaX","sigmaY","edgeMode","groupPath","elemChildren","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","newLength","currentSavedOp","createElements","hideElement","showElement","forceRealStack","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","bezierCurveTo","transformHelper","dashResetter","preTransforms","co","wi","da","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","lastFill","lastStroke","lastStrokeW","checkBlendMode","tg","transformedElementStyle","matrixValue","addEffects","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","yMax","tempBoundingBox","p3","b2ac","t2","calculateF","calculateBoundingBox","currentBoxContains","box","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","imageElem","perspectiveStyle","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","addPlayingCount","activate","nowTime","elapsedTime","advanceTime","first","setParams","setSpeed","setDirection","togglePause","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","getElementsByTagName","goToAndStop","isFrame","freeze","unfreeze","getRegisteredAnimations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","autoplay","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","onSetupError","onSegmentComplete","animType","rendererSettings","autoloadSegments","initialSegment","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","frameModifier","goToAndPlay","playSegments","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getDuration","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","fetch","frames","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","iKey","lenKey","nearestKey","obKey","framesToTime","timeToFrames","seedRandom","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","getSpeedAtTime","_cachingAtTime","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","skewAxis","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","propertyIndex","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","propertyGetShapeProp","trims","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","ShapePathInterface","view","interfaceFunction","_propertyGroup","propertyGroupFactory","PropertyInterface","_name","mn","parentPropertyGroup","propertyName","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","contentsInterfaceFactory","np","ExpressionPropertyInterface","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_prevValue","_sourceText","_thisLayerFunction","sourceText","stringValue","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","anchorPointDescriptor","TransformExpressionInterface","anchor_point","MaskManagerInterface","effects","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","createGroupInterface","groupInterface","createValueInterface","enabled","en","expressionProperty","effectsData","MaskInterface","_mask","_data","_masksInterfaces","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TextExpressionSelectorPropFactory","getValueProxy","propertyGetTextProp","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","eff","lottie","setLocationHref","setSubframeRendering","setIDPrefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","__getFactory","scripts","myScript","define","_getPrototypeOf","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_arrayLikeToArray","_slicedToArray","_n","_d","_e","done","minLen","_inherits","Fragment","StrictMode","Profiler","Suspense","for","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","J","$$typeof","_owner","escape","K","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","isValidElement","lazy","_payload","_init","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","aa","ba","Set","ca","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","xlinkHref","ra","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","stack","Oa","Pa","prepareStackTrace","Qa","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","ownerDocument","eb","db","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","rb","sb","tb","setProperty","ub","menuitem","area","br","embed","hr","input","keygen","link","meta","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","gc","hc","ic","jc","kc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","uc","jd","kd","ld","md","nd","od","keyCode","pd","qd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","password","range","tel","week","oe","qe","se","te","ue","ve","we","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","passive","Nb","ff","parentWindow","hf","je","ke","jf","lf","mf","autoFocus","nf","__html","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","pending","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","gh","hh","ih","memoizedProps","revealOrder","jh","kh","mh","nh","oh","pendingProps","ph","qh","rh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ii","ji","ki","li","mi","baseLanes","ni","oi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","extend","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","uk","hk","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","jsx","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","Item","nextTick","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","_assign","_assign2","DESCRIPTORS","getKeys","gOPS","$assign","aLen","getSymbols","isEnum","toLength","toAbsoluteIndex","IS_INCLUDES","$this","toInteger","$getPrototypeOf","fails","KEY","exp","_defineProperty2","$Object","desc","_typeof2","_typeof3","$at","iterated","TO_STRING","TO_STRING_TAG","DOMIterables","Collection","addToUnscopables","step","_k","Arguments","META","$fails","wks","wksDefine","enumKeys","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperty","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","NEED","fastKey","getWeak","onFreeze","arg","windowNames","getWindowNames","_setPrototypeOf2","_create2","check","buggy","memoize","reactPropsRegex","extendStatics","__extends","__assign","__rest","__read","ar","__spreadArray","pack","createDefinition","propNames","isEnabled","some","featureDefinitions","measureLayout","exit","drag","hover","tap","layoutAnimation","LazyContext","featureNames","numFeatures","MotionConfigContext","transformPagePoint","isStatic","MotionContext","PresenceContext","useConstant","usePresence","isPresent","onExitComplete","register","useUniqueId","counter","incrementId","LayoutGroupContext","isBrowser","useIsomorphicLayoutEffect","useVisualElement","visualState","createVisualElement","lazyContext","visualElement","presenceContext","layoutId","_a","layoutGroupId","useLayoutId","visualElementRef","presenceId","blockInitialAnimation","initial","setProps","isPresenceRoot","syncRender","animationState","animateChanges","notifyUnmount","isRefObject","isVariantLabels","isVariantLabel","resolveVariantFromProps","definition","custom","currentValues","currentVelocity","variants","resolveVariant","getProps","forEachValue","getCurrent","getVelocity","checkIfControllingVariants","animate","whileHover","whileDrag","whileTap","whileFocus","checkIfVariantNode","useCreateMotionContext","inherit","getCurrentTreeVariants","variantLabelsAsDependency","createMotionComponent","preloadedFeatures","useRender","useVisualState","features","loadFeatures","externalRef","name_1","useFeatures","mount","useMotionRef","createMotionProxy","createConfig","customMotionComponentConfig","componentCache","_target","lowercaseSVGElements","isSVGComponent","includes","valueScaleCorrection","transformAxes","transformProps","sortTransformProps","operationKey","axesKey","transformPropSet","isTransformProp","transformOriginProps","isTransformOriginProp","isForcedMotionValue","layout","isMotionValue","translateAlias","transformPerspective","isCSSVariable","startsWith","getValueAsType","sanitize","toFixed","floatRegex","colorRegex","singleColorRegex","isString","createUnitType","unit","endsWith","parseFloat","degrees","vw","progressPercentage","int","numberValueTypes","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxWidth","maxHeight","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","marginRight","marginBottom","scaleZ","skewX","skewY","translateX","translateY","translateZ","originX","originY","originZ","numOctaves","buildHTMLStyles","latestValues","projection","layoutState","transformTemplate","buildProjectionTransform","buildProjectionTransformOrigin","transformKeys","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","isHydrated","correctedValue","applyTo","deltaFinal","treeScale","_b","transformIsDefault","_c","enableHardwareAcceleration","allowTransformNone","transformString","sort","transformHasZ","numTransformKeys","buildTransform","buildTransformOrigin","createHtmlRenderState","copyRawValuesOnly","useStyle","useInitialMotionValues","transformValues","useHTMLProps","htmlProps","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","validMotionProps","isValidMotionProp","shouldForward","emotionIsPropValid_1","calcOrigin","progressToPixels","progress","dashKeys","camelKeys","buildSVGAttrs","attrX","attrY","pathSpacing","pathOffset","attrs","totalPathLength","calcSVGTransformOrigin","spacing","useDashCase","buildSVGPath","createSvgRenderState","useSVGProps","visualProps","rawStyles","createUseRender","forwardMotionProps","filteredProps","isDom","filterProps","elementProps","CAMEL_CASE_PATTERN","camelToDash","renderHTML","camelCaseAttributes","renderSVG","renderState","scrapeMotionValuesFromProps","newValues","scrapeMotionValuesFromProps$1","isAnimationControls","isKeyframesTarget","resolveMotionValue","unwrappedValue","mix","toValue","makeState","createRenderState","onMount","makeLatestValues","makeUseVisualState","scrapeMotionValues","motionValues","isControllingVariants","isVariantNode","variantToSet","resolved","transitionEnd","svgMotionConfig","getBoundingClientRect","AnimationType","htmlMotionConfig","createDomMotionConfig","baseConfig","addDomEvent","useDomEvent","isMouseEvent","PointerEvent","MouseEvent","isTouchEvent","defaultPagePoint","pointFromTouch","pointType","pointFromMouse","extractEventInfo","wrapHandler","shouldFilterPrimaryPointer","eventHandler","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","onpointerdown","ontouchstart","onmousedown","addPointerEvent","usePointerEvent","createLock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal_1","openVertical_1","isDragActive","openGestureLock","createHoverEvent","setActive","Hover","isNodeOrChild","parentElement","useUnmountEffect","combineFunctions","pipe","reduce","makeRenderlessComponent","hook","gestureAnimations","onTap","onTapStart","onTapCancel","hasPressListeners","isPressing","cancelPointerEndListeners","removePointerEndListener","checkPointerEnd","Tap","onPointerUp","getInstance","onPointerCancel","Focus","onHoverStart","onHoverEnd","shallowCompare","prev","prevLength","safeMin","findSpring","envelope","derivative","bounce","dampingRatio","undampedFreq","exponentialDecay","calcAngularFreq","initialGuess","approximateRoot","stiffness","durationKeys","physicsKeys","isSpringType","spring","restSpeed","restDelta","springOptions","isResolvedFromDuration","derived","getSpringOptions","resolveSpring","zero","resolveVelocity","createSpring","initialVelocity","initialDelta","undampedAngularFreq","angularFreq_1","dampedAngularFreq_1","freqForT","sinh","cosh","isBelowVelocityThreshold","isBelowDisplacementThreshold","flipTarget","needsInterpolation","toFromDifference","isColorString","testProp","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","hsla","saturation","lightness","mixLinearColor","fromExpo","toExpo","colorTypes","getColorType","find","notAnimatable","mixColor","fromColorType","toColorType","fromColor","toColor","blended","mixFunc","colorToken","numberToken","analyse","numColors","colors","numbers","tokenised","createTransformer","numValues","output","convertNumbersToZero","complex","getAnimatableNone","parsed","transformer","isNum","getMixer","mixComplex","mixArray","blendValue","fromThis","mixObject","numNumbers","numRGB","numHSL","template","originStats","targetStats","mixNumber","createMixers","customMixer","mixers","mixerFactory","numMixers","mixer","easingFunction","interpolate","isClamp","inputLength","interpolator","fastInterpolate","lastInputIndex","mixerIndex","foundMixerIndex","progressInRange","slowInterpolate","power","reverseEasing","mirrorEasing","createBackIn","easeInOut","circIn","circOut","circInOut","backIn","backOut","backInOut","anticipate","backEasing","createAnticipate","bounceOut","bounceIn","defaultEasing","times","convertOffsetToTimes","defaultOffset","createInterpolator","decay","timeConstant","_f","modifyTarget","amplitude","ideal","defaultTimestep","getCurrentTime","onNextFrame","useDefaultElapsed","runNextFrame","isProcessing","frame","timestamp","stepsOrder","steps","acc","toRun","toRunNextFrame","numToRun","toKeepAlive","schedule","keepAlive","immediate","addToCurrentFrame","frameData","createRenderStep","sync","startLoop","cancelSync","processStep","stepId","processFrame","getFrameData","loopElapsed","framesync","passTimestamp","driverControls","latest","interpolateFromNumber","driver","_g","repeatMax","repeatType","_j","repeatDelay","onPlay","onStop","onRepeat","repeatCount","computedDuration","isComplete","isForwardPlayback","animator","detectAnimationFromOptions","reverseElapsed","hasRepeatDelayElapsed","velocityPerSecond","secondsToMilliseconds","seconds","cubicBezier","sampleValues","getTForX","easingLookup","bounceInOut","easingDefinitionToFunction","isAnimatable","underDampedSpring","criticallyDampedSpring","linearTween","defaultTransitions","maxDefaults","applyDefaultFilter","functionRegex","functions","defaultValueTypes","outlineColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","defaultValueType","convertTransitionToAnimationOptions","yoyo","flip","isEasingArray","getPopmotionAnimationOptions","hydrateKeyframes","when","delayChildren","staggerChildren","staggerDirection","isTransitionDefined","valueKey","transitionFactory","getDefaultTransition","getAnimation","valueTransition","getValueTransition","isTargetAnimatable","isZero","getZeroUnit","isOriginAnimatable","currentAnimation","bounceStiffness","bounceDamping","isOutOfBounds","boundaryNearest","startAnimation","startSpring","prev_1","current_1","boundary_1","heading_1","inertia","potentialUnitType","delayTimer","controls","getDelayFromTransition","addUniqueItem","removeItem","SubscriptionManager","subscriptions","notify","numSubscriptions","getSize","MotionValue","timeDelta","lastUpdated","updateSubscribers","velocityUpdateSubscribers","renderSubscribers","canTrackVelocity","updateAndNotify","postRender","scheduleVelocityCheck","velocityCheck","hasAnimated","onChange","subscription","clearListeners","onRenderRequest","attach","passiveEffect","getPrevious","Promise","stopAnimation","clearAnimation","isAnimating","motionValue","testValueType","dimensionValueTypes","findDimensionValueType","valueTypes","findValueType","setMotionValue","hasValue","addValue","setTarget","makeTargetAnimatable","getOriginFromTransition","animateVariant","variant","transitionOverride","animateTarget","getChildAnimations","variantChildren","forwardDelay","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","notifyAnimationComplete","animateChildren","animationTypeState","getState","valueTarget","shouldBlockAnimation","sortNodePosition","protectedKeys","needsAnimating","shouldBlock","variantPriorityOrder","Animate","Drag","Exit","reversePriorityOrder","numAnimationTypes","animateList","notifyAnimationStart","resolvedDefinition","animateVisualElement","createAnimationState","createTypeState","createState","allAnimatedKeys","isInitialRender","buildResolvedTypeValues","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","_loop_1","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","shouldAnimateType","variantsHaveChanged","definitionList","resolvedValues","prevResolvedValues","markToAnimate","fallbackAnimation_1","fallbackTarget","getBaseTarget","shouldAnimate","isAnimated","setAnimateFunction","makeAnimator","isPoint","isPoint3D","distance1D","xDelta","yDelta","zDelta","PanSession","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","isPanStarted","isDistancePastThreshold","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","onEnd","onSessionEnd","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","startDevicePoint","timestampedPoint","convertBoundingBoxToAxisBox","zeroDelta","originPoint","eachAxis","applyConstraints","elastic","calcRelativeAxisConstraints","axis","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","getBoundingBox","topLeft","bottomRight","transformBoundingBox","isNear","maxDistance","calcLength","sourceLength","targetLength","updateAxisDelta","updateBoxDelta","defaultOrigin","calcRelativeAxis","relative","compareByDepth","isProjecting","shouldResetTransform","collectProjectingAncestors","ancestors","updateLayoutMeasurement","getLayoutState","notifyBeforeLayoutMeasure","measureViewportBox","layoutCorrected","notifyLayoutMeasure","prevViewportBox","rebaseProjectionTarget","calcRelativeOffsetAxis","calcRelativeOffset","checkIfParentHasChanged","prevId","getLayoutId","nextId","isDraggable","_dragX","resetAxis","originAxis","scalePoint","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","applyAxisTransforms","final","scaleKey","originKey","axisOrigin","xKeys","yKeys","applyBoxTransforms","finalBox","removePointDelta","removeAxisTransforms","removeAxisDelta","removeBoxTransforms","unresolvedJobs","pushJob","job","pointer","batchLayout","flushLayout","reads","writes","setRead","setWrite","numStacks","executeJob","lastPointerEvent","elementDragControls","VisualElementDragControls","isDragging","currentDirection","constraints","hasMutatedConstraints","cursorProgress","openGlobalLock","panSession","enableLayoutProjection","originEvent","snapToCursor","stopMotion","initialPoint","getViewportPointFromEvent","cancelLayout","read","collectProjectingChildren","tree","hasManuallySetCursorOrigin","isLayoutDrag","lockProjectionTarget","resetTransform","restoreTransform","getAxisMotionValue","isExternalDrag","scheduleUpdateLayoutProjection","axisValue","preRender","resolveDragConstraints","dragPropagation","onDragStart","dragDirectionLock","lockThreshold","getCurrentDirection","onDirectionLock","updateAxis","onDrag","dragConstraints","resolveRefConstraints","layoutBox","calcRelativeConstraints","resolveDragElastic","relativeConstraints","rebaseAxisConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measuredConstraints","calcViewportConstraints","userConstraints","convertAxisBoxToBoundingBox","cancelDrag","unlockProjectionTarget","animateDragEnd","onDragEnd","shouldDrag","length_1","updateAxisMotionValue","updateVisualElementAxis","axisLayout","axisLength","axisProgress","calcConstrainedMinPoint","setProjectionTargetAxis","dragMomentum","remainingProps","dragKey","_dragY","dragTransition","isRelative","projectionParent","getProjectionParent","getLatestValues","convertToRelativeProjection","relativeConstraints_1","targetFinal","momentumAnimations","startAxisValueAnimation","startLayoutAnimation","onDragTransitionEnd","stopLayoutAnimation","boxProgress","updateConstraints","calcPositionFromProgress","onReady","stopPointerListener","dragListener","stopResizeListener","stopLayoutUpdateListener","onLayoutUpdate","prevDragCursor","Presence","VisibilityAction","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","groupDragControls","dragControls","cssVariableRegex","getVariableValue","parseCSSVariable","getComputedStyle","getPropertyValue","pixelsToPercent","pixels","varToken","borderCorrectionDefinition","_layoutState","defaultScaleCorrectors","boxShadow","original","containsCSSVariables","cssVariables","shadow","xScale","yScale","averageScale","i_1","cssVariable","_super","frameTarget","currentAnimationTarget","stopAxisAnimation","isAnimatingTree","originBox","targetBox","visibilityAction","shouldStackAnimate","prevParent","safeToRemove","prevParentViewportBox","parentLayout","isProvidedCorrectDataForRelativeSharedLayout","boxHasMoved","hasMoved","isTargetLocked","animateAxis","setVisibility","Show","notifyLayoutAnimationComplete","animateMotionValue","unsubLayoutReady","layoutSafeToRemove","correctors","addScaleCorrection","axisIsEqual","layoutProgress","getProjectionAnimationProgress","tweenAxis","unsubscribeProgress","layoutTransition","defaultLayoutTransition","isZeroBox","zeroAxis","defaultHandler","layoutReady","notifyLayoutReady","createBatcher","presence","Present","assignProjectionToSnapshot","SharedLayoutContext","FramerTreeLayoutContext","isSharedLayout","Measure","syncLayout","framerSyncLayout","onUnmount","syncUpdate","snapshotViewportBox","React__default","layoutAnimations","createLayoutState","deltaTransform","zeroLayout","buildLayoutProjectionTransform","latestTransform","identityProjection","buildLayoutProjectionTransformOrigin","updateLayoutDeltas","treePath","treeLength","applyTreeDeltas","FlatTree","isDirty","treeType","build","renderInstance","readValueFromInstance","removeValueFromRenderState","unsubscribeFromLeadVisualElement","crossfader","projectionTargetProgress","removeFromVariantTree","lifecycles","managers","propSubscriptions","clearAllListeners","manager","updatePropListeners","propListener","createLifecycles","leadProjection","leadLatestValues","hasViewportBoxUpdated","valueSubscriptions","prevMotionValues","baseTarget","isProjectionReady","triggerBuild","valuesToRender","crossfadedValues","getCrossfadeState","notifyUpdate","updateTreeLayoutProjection","layoutTree","fireUpdateLayoutProjection","initialMotionValues","newInstance","pointTo","addVariantChild","updateLayoutProjection","closestVariantNode","getClosestVariantNode","other","getStaticValue","setStaticValue","scheduleRender","canMutate","removeValue","removeOnChange","latestValue","removeOnRenderRequest","bindToMotionValue","readValue","setBaseTarget","newProps","prevValue","existingValue","updateMotionValuesFromProps","getVariant","startAtParent","context_1","numVariantProps","variantProps","setCrossfader","newCrossfader","relativeTarget","withTransform","viewportBox","notifySetAxisTarget","shouldRebase","relativeOffset","setCurrentViewportBox","notifyLayoutUpdate","prevTreeScaleX","prevTreeScaleY","prevDeltaTransform","notifyViewportBoxUpdate","fireResolveRelativeTargetBox","foundParent","ancestor","resolveRelativeTargetBox","relativeParent","parentProjection","calcRelativeBox","_layoutResetTransform","newLead","onSetAxisTarget","onLayoutAnimationComplete","Entering","BoundingBoxDimension","positionalKeys","isPositionalKey","setAndResetVelocity","isNumOrPxType","getPosFromMatrix","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","positionalValues","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","removedTransforms","removeNonTranslationalTransform","convertedTarget","changedKeys","originBbox","elementComputedStyle","originComputedStyle","targetBbox","convertChangedValueTypes","unitConversion","hasPositionalKey","parseDomVariant","HTMLElement","resolveCSSVariables","htmlConfig","domElement","defaultType","computedStyle","mutableState","getOrigin","newValueKeys","numNewValues","targetValue","checkTargetForNewValues","isProjectionTranform","htmlVisualElement","svgVisualElement","_element","createDomVisualElement","featureBundle","motion"],"mappings":"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","file":"static/js/2.3c447a6c.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return Math.floor(Math.random() * (b - a)) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return (\n \"#\" +\n (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6)\n );\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Span {\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object\n *\n * @memberof Proton#Proton.Util\n * @method setSpanValue\n *\n * @todo a, b and c should be 'Mixed' or 'Number'?\n *\n * @param {Mixed | Span} a\n * @param {Mixed} b\n * @param {Mixed} c\n *\n * @return {Span}\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter\n *\n * @memberof Proton#Proton.Util\n * @method getValue\n *\n * @param {Mixed | Span} pan\n *\n * @return {Mixed} the value of Span OR the parameter if it is not a Span\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(\n rect.x,\n rect.y,\n rect.width,\n rect.height\n );\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(\n `proton_canvas_cache_${++canvasId}`,\n width,\n height\n );\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import Span from \"../math/Span\";\nimport ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(\n constructor,\n [null].concat(args)\n );\n return new FactoryFunc();\n }\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n },\n\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return (\n typeof obj === \"object\" &&\n typeof target === \"object\" &&\n obj.isInner &&\n target.isInner\n );\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter)\n str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str +=\n '' +\n this.concatArr(emitter.initializes) +\n \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter)\n str +=\n '' +\n this.concatArr(emitter.behaviours) +\n \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n\n target.prototype.hasEventListener =\n EventDispatcher.prototype.hasEventListener;\n\n target.prototype.addEventListener =\n EventDispatcher.prototype.addEventListener;\n\n target.prototype.removeEventListener =\n EventDispatcher.prototype.removeEventListener;\n\n target.prototype.removeAllEventListeners =\n EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo proParticleCount is not in use\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number} [proParticleCount] not in use?\n * @param {Number} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n set fps(fps) {\n this._fps = fps;\n this._interval =\n fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1)\n return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n setX(x) {\n this.x = x;\n return this;\n }\n\n setY(y) {\n this.y = y;\n return this;\n }\n\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n negate() {\n return this.multiplyScalar(-1);\n }\n\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n normalize() {\n return this.divideScalar(this.length());\n }\n\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","/** @typedef {import('../behaviour/Behaviour')} Behaviour */\n/** @typedef {import('../math/Vector2D')} Vector2D */\n/** @typedef {import('../utils/Rgb')} Rgb */\nimport Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Particle {\n /** @type string */\n id = ''\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} */\n old = {}\n\n /** @type {object} */\n data = {}\n\n /** @type {Behaviour[]} */\n behaviours = []\n\n /** @type {Vector2D} */\n p = []\n\n /** @type {Vector2D} */\n v = []\n\n /** @type {Vector2D} */\n a = []\n\n /** @type {Rgb} */\n rgb = {}\n\n /**\n * the Particle class\n *\n * @class Proton.Particle\n * @constructor\n * @param {Object} pObj the parameters object;\n * for example {life:3,dead:false}\n */\n constructor(conf) {\n /**\n * The particle's id;\n * @property id\n * @type {string}\n */\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && Util.setProp(this, conf);\n }\n\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] &&\n this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * @param {Behaviour} behaviour\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * @param {Behaviour[]} behaviours\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destory this particle\n * @method destroy\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\nexport default class ArraySpan extends Span {\n constructor(color) {\n super();\n this._arr = Util.toArray(color);\n }\n\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Make sure that the color is an instance of Proton.ArraySpan, if not it makes a new instance\n *\n * @method setSpanValue\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y)\n return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\nexport default class Rate {\n /**\n * The number of particles per second emission (a [particle]/b [s]);\n * @namespace\n * @memberof! Proton#\n * @constructor\n * @alias Rate\n *\n * @param {Array | Number | Span} numpan the number of each emission;\n * @param {Array | Number | Span} timepan the time of each emission;\n * for example: new Rate(new Span(10, 20), new Span(.1, .25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Life extends Initialize {\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n}\n","import Zone from \"./Zone\";\n\nexport default class PointZone extends Zone {\n constructor(x, y) {\n super();\n\n this.x = x;\n this.y = y;\n }\n\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\nexport default class Position extends Initialize {\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Velocity extends Initialize {\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Mass extends Initialize {\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Radius extends Initialize {\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n\n this.name = \"Radius\";\n }\n\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\nexport default class Body extends Initialize {\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from '../core/Proton';\nimport Util from '../utils/Util';\nimport ease from '../math/ease';\n\nexport default class Behaviour {\n static id = 0;\n\n /**\n * The Behaviour class is the base for the other Behaviour\n *\n * @memberof! -\n * @interface\n * @alias Proton.Behaviour\n *\n * @param {Number} life \tthe behaviours life\n * @param {String} easing \tThe behaviour's decaying trend, for example ease.easeOutQuart\n *\n * @property {String} id \t\tThe behaviours id\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n * @property {Number} age=0 \tHow long the particle should be 'alife'\n * @property {Number} energy=1\n * @property {Boolean} dead=false The particle is dead at first\n * @property {Array} parents \tThe behaviour's parents array\n * @property {String} name \tThe behaviour name\n */\n constructor(life, easing) {\n\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n\n this.age = 0;\n this.energy = 1;\n this.dead = false;\n this.parents = [];\n\n this.id = `Behaviour_${Behaviour.id++}`;\n this.name = 'Behaviour';\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100;\n *\n * @method normalizeForce\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Vector2D} force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100;\n *\n * @method normalizeValue\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Number} value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Destory this behaviour\n *\n * @method destroy\n * @memberof Proton.Behaviour\n * @instance\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from '../math/Vector2D';\nimport Behaviour from './Behaviour';\n\nexport default class Force extends Behaviour {\n\n\t/**\n\t * @memberof! Proton#\n\t * @augments Proton.Behaviour\n\t * @constructor\n\t * @alias Proton.Force\n\t *\n\t * @param {Number} fx\n\t * @param {Number} fy\n\t * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t *\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(fx, fy, life, easing) {\n\t\tsuper(life, easing);\n\n\t\tthis.force = this.normalizeForce(new Vector2D(fx, fy));\n\t\tthis.name = 'Force';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @method reset\n\t * @memberof Proton#Proton.Force\n\t * @instance\n\t *\n\t * @param {Number} fx\n\t * @param {Number} fy\n\t * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t */\n\treset(fx, fy, life, easing) {\n\t\tthis.force = this.normalizeForce(new Vector2D(fx, fy));\n\n\t\tlife && super.reset(life, easing);\n\t}\n\n\t/**\n\t * Apply this behaviour for all particles every time\n\t *\n\t * @method applyBehaviour\n\t * @memberof Proton#Proton.Force\n\t * @instance\n\t *\n\t * @param {Proton.Particle} particle\n\t * @param {Number} the integrate time 1/ms\n\t * @param {Int} the particle index\n\t */\n\tapplyBehaviour(particle, time, index) {\n\t\tthis.calculate(particle, time, index);\n\t\tparticle.a.add(this.force);\n\t}\n}","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Attraction extends Behaviour {\n /**\n * This behaviour let the particles follow one specific Proton.Vector2D\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Attraction\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {Proton.Vector2D} targetPosition\n * @property {Number} radius\n * @property {Number} force\n * @property {Number} radiusSq\n * @property {Proton.Vector2D} attractionForce\n * @property {Number} lengthSq\n * @property {String} name The Behaviour name\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n this.name = \"Attraction\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Attraction\n * @instance\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Attraction\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from './Force';\n\nexport default class Gravity extends Force {\n\n\t/**\n\t * @memberof! Proton#\n\t * @augments Proton#Proton.Force\n\t * @constructor\n\t * @alias Proton.Gravity\n\t *\n\t * @param {Number} g \t\t\t\t\t\t\tGravity\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t *\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(g, life, easing) {\n\t\tsuper(0, g, life, easing);\n\t\tthis.name = 'Gravity';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @method reset\n\t * @memberof Proton#Proton.Gravity\n\t * @instance\n\t *\n\t * @param {Number} g \t\t\t\t\t\t\tGravity\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t */\n\treset(g, life, easing) {\n\t\tsuper.reset(0, g, life, easing);\n\t}\n}","import Util from '../utils/Util';\nimport Vector2D from '../math/Vector2D';\nimport Behaviour from './Behaviour';\n\nexport default class Collision extends Behaviour {\n\n\t/**\n\t * The callback after collision\n\t *\n\t * @callback Callback\n\t *\n\t * @param {Proton.Particle} particle\n\t * @param {Proton.Paritcle} otherParticle\n\t */\n\t/**\n\t * @memberof! Proton#\n\t * @augments Proton.Behaviour\n\t * @constructor\n\t * @alias Proton.Collision\n\t *\n\t * @todo add description to mass\n\t *\n\t * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n\t * @param {Boolean} \t\t[mass=true]\n\t * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t *\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(emitter, mass, callback, life, easing) {\n\t\tsuper(life, easing);\n\n\t\tthis.reset(emitter, mass, callback);\n\t\tthis.name = 'Collision';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @memberof Proton#Proton.Collision\n\t * @method reset\n\t * @instance\n\t *\n\t * @todo add description to mass\n\t *\n\t * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n\t * @param {Boolean} \t\t[mass=true]\n\t * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n\t * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t */\n\treset(emitter, mass, callback, life, easing) {\n\t\tthis.emitter = Util.initValue(emitter, null);\n\t\tthis.mass = Util.initValue(mass, true);\n\t\tthis.callback = Util.initValue(callback, null);\n\n\t\tthis.collisionPool = [];\n\t\tthis.delta = new Vector2D();\n\n\t\tlife && super.reset(life, easing);\n\t}\n\n\t/**\n\t * Apply this behaviour for all particles every time\n\t *\n\t * @memberof Proton#Proton.Collision\n\t * @method applyBehaviour\n\t * @instance\n\t *\n\t * @param {Proton.Particle} particle\n\t * @param {Number} \t\t\ttime the integrate time 1/ms\n\t * @param {Int} \t\t\tindex the particle index\n\t */\n\tapplyBehaviour(particle, time, index) {\n\t\tconst newPool = this.emitter ? this.emitter.particles.slice(index) : this.pool.slice(index);\n\t\tconst length = newPool.length;\n\n\t\tlet otherParticle;\n\t\tlet lengthSq;\n\t\tlet overlap;\n\t\tlet totalMass;\n\t\tlet averageMass1, averageMass2;\n\t\tlet i;\n\n\t\tfor (i = 0; i < length; i++) {\n\t\t\totherParticle = newPool[i];\n\n\t\t\tif (otherParticle !== particle) {\n\t\t\t\tthis.delta.copy(otherParticle.p);\n\t\t\t\tthis.delta.sub(particle.p);\n\n\t\t\t\tlengthSq = this.delta.lengthSq();\n\t\t\t\tconst distance = particle.radius + otherParticle.radius;\n\n\t\t\t\tif (lengthSq <= distance * distance) {\n\t\t\t\t\toverlap = distance - Math.sqrt(lengthSq);\n\t\t\t\t\toverlap += 0.5;\n\n\t\t\t\t\ttotalMass = particle.mass + otherParticle.mass;\n\t\t\t\t\taverageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n\t\t\t\t\taverageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n\t\t\t\t\tparticle.p.add(this.delta.clone().normalize().multiplyScalar(overlap * -averageMass1));\n\t\t\t\t\totherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n\t\t\t\t\tthis.callback && this.callback(particle, otherParticle);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","import Util from '../utils/Util';\nimport Behaviour from './Behaviour';\n\nexport default class CrossZone extends Behaviour {\n\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = 'CrossZone';\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, 'dead');\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n };\n}","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Alpha extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Alpha\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Sets the new alpha value of the particle\n *\n * @method initialize\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @param {Proton.Particle} particle A single Proton generated particle\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * @method applyBehaviour\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha =\n particle.data.alphaB +\n (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from '../utils/Util';\nimport Behaviour from './Behaviour';\n\nexport default class Scale extends Behaviour {\n\n\t/**\n\t * @memberof! Proton#\n\t * @augments Proton.Behaviour\n\t * @constructor\n\t * @alias Proton.Scale\n\t *\n\t * @todo add description for 'a' and 'b'\n\t *\n\t * @param {Number} a\n\t * @param {String} b\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t *\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(a, b, life, easing) {\n\t\tsuper(life, easing);\n\n\t\tthis.reset(a, b);\n\t\tthis.name = 'Scale';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @method reset\n\t * @memberof Proton#Proton.Scale\n\t * @instance\n\t *\n\t * @param {Number} a\n\t * @param {String} b\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t */\n\treset(a, b, life, easing) {\n\t\tthis.same = b === null || b === undefined ? true : false;\n\t\tthis.a = Span.setSpanValue(Util.initValue(a, 1));\n\t\tthis.b = Span.setSpanValue(b);\n\n\t\tlife && super.reset(life, easing);\n\t}\n\n\t/**\n\t * Initialize the behaviour's parameters for all particles\n\t *\n\t * @method initialize\n\t * @memberof Proton#Proton.Scale\n\t * @instance\n\t *\n\t * @param {Proton.Particle} particle\n\t */\n\tinitialize(particle) {\n\t\tparticle.data.scaleA = this.a.getValue();\n\t\tparticle.data.oldRadius = particle.radius;\n\t\tparticle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n\t};\n\n\t/**\n\t * Apply this behaviour for all particles every time\n\t *\n\t * @method applyBehaviour\n\t * @memberof Proton#Proton.Scale\n\t * @instance\n\t *\n\t * @param {Proton.Particle} particle\n\t * @param {Number} \t\t\ttime the integrate time 1/ms\n\t * @param {Int} \t\t\tindex the particle index\n\t */\n\tapplyBehaviour(particle, time, index) {\n\t\tthis.calculate(particle, time, index);\n\t\tparticle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n\t\tif (particle.scale < 0.0001) particle.scale = 0;\n\t\tparticle.radius = particle.data.oldRadius * particle.scale;\n\t}\n}","import Span from \"../math/Span\";\nimport Util from '../utils/Util';\nimport Behaviour from './Behaviour';\n\nexport default class Rotate extends Behaviour {\n\n\t/**\n\t * @memberof! Proton#\n\t * @augments Proton.Behaviour\n\t * @constructor\n\t * @alias Proton.Rotate\n\t *\n\t * @todo add description for 'a', 'b' and 'style'\n\t *\n\t * @param {String} [influence=Velocity] The rotation's influence\n\t * @param {String} b\n\t * @param {String} [style=to]\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t *\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(influence, b, style, life, easing) {\n\t\tsuper(life, easing);\n\n\t\tthis.reset(influence, b, style);\n\t\tthis.name = 'Rotate';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @method reset\n\t * @memberof Proton#Proton.Rotate\n\t * @instance\n\t *\n\t * @todo add description for 'a', 'b' and 'style'\n\t *\n\t * @param {String} a\n\t * @param {String} b\n\t * @param {String} [style=to]\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t */\n\treset(a, b, style, life, easing) {\n\t\tthis.same = b === null || b === undefined ? true : false;\n\n\t\tthis.a = Span.setSpanValue(Util.initValue(a, 'Velocity'));\n\t\tthis.b = Span.setSpanValue(Util.initValue(b, 0));\n\t\tthis.style = Util.initValue(style, 'to');\n\n\t\tlife && super.reset(life, easing);\n\t}\n\n\t/**\n\t * Initialize the behaviour's parameters for all particles\n\t *\n\t * @method initialize\n\t * @memberof Proton#Proton.Rotate\n\t * @instance\n\t *\n\t * @param {Proton.Particle} particle\n\t */\n\tinitialize(particle) {\n\t\tparticle.rotation = this.a.getValue();\n\t\tparticle.data.rotationA = this.a.getValue();\n\n\t\tif (!this.same) particle.data.rotationB = this.b.getValue();\n\t};\n\n\t/**\n\t * Apply this behaviour for all particles every time\n\t *\n\t * @method applyBehaviour\n\t * @memberof Proton#Proton.Rotate\n\t * @instance\n\t *\n\t * @param {Proton.Particle} particle\n\t * @param {Number} \t\t\ttime the integrate time 1/ms\n\t * @param {Int} \t\t\tindex the particle index\n\t */\n\tapplyBehaviour(particle, time, index) {\n\t\tthis.calculate(particle, time, index);\n\n\t\tif (!this.same) {\n\t\t\tif (this.style === 'to' || this.style === 'TO' || this.style === '_') {\n\t\t\t\tparticle.rotation += particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy\n\t\t\t} else {\n\t\t\t\tparticle.rotation += particle.data.rotationB;\n\t\t\t}\n\t\t} else if (this.a.a === 'V' || this.a.a === 'Velocity' || this.a.a === 'v') {\n\t\t\t// beta...\n\t\t\tparticle.rotation = particle.getDirection();\n\t\t}\n\t}\n\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r =\n particle.data.colorB.r +\n (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g =\n particle.data.colorB.g +\n (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b =\n particle.data.colorB.b +\n (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = Math.floor(particle.rgb.r);\n particle.rgb.g = Math.floor(particle.rgb.g);\n particle.rgb.b = Math.floor(particle.rgb.b);\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from './Attraction';\n\nexport default class Repulsion extends Attraction {\n\n\t/**\n\t * The oppisite of Proton.Attraction - turns the force\n\t *\n\t * @memberof! Proton#\n\t * @augments Proton#Proton.Attraction\n\t * @constructor\n\t * @alias Proton.Repulsion\n\t *\n\t * @todo add description for 'force' and 'radius'\n\t *\n\t * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n\t * @param {Number} [force=100]\n\t * @param {Number} [radius=1000]\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t *\n\t * @property {Number} force\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(targetPosition, force, radius, life, easing) {\n\t\tsuper(targetPosition, force, radius, life, easing);\n\n\t\tthis.force *= -1;\n\t\tthis.name = 'Repulsion';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @method reset\n\t * @memberof Proton#Proton.Repulsion\n\t * @instance\n\t *\n\t * @todo add description for 'force' and 'radius'\n\t *\n\t * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n\t * @param {Number} [force=100]\n\t * @param {Number} [radius=1000]\n\t * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n\t * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n\t */\n\treset(targetPosition, force, radius, life, easing) {\n\t\tsuper.reset(targetPosition, force, radius, life, easing);\n\t\tthis.force *= -1;\n\t}\n}\n","import Util from '../utils/Util';\nimport Vector2D from '../math/Vector2D';\nimport Behaviour from './Behaviour';\n\nexport default class GravityWell extends Behaviour {\n\n\t/**\n\t * @memberof! Proton#\n\t * @augments Behaviour\n\t * @constructor\n\t * @alias GravityWell\n\t *\n\t * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n\t * @param {Number} [force=100]\t\t\t\t\tThe force\n\t * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n\t * @param {String} [easing=easeLinear]\tthis behaviour's easing\n\t *\n\t * @property {String} name The Behaviour name\n\t */\n\tconstructor(centerPoint, force, life, easing) {\n\t\tsuper(life, easing);\n\n\t\tthis.distanceVec = new Vector2D();\n\t\tthis.centerPoint = Util.initValue(centerPoint, new Vector2D);\n\t\tthis.force = Util.initValue(this.normalizeValue(force), 100);\n\n\t\tthis.name = 'GravityWell';\n\t}\n\n\t/**\n\t * Reset this behaviour's parameters\n\t *\n\t * @method reset\n\t * @memberof Proton#GravityWell\n\t * @instance\n\t *\n\t * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n\t * @param {Number} [force=100]\t\t\t\t\tThe force\n\t * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n\t * @param {String} [easing=easeLinear]\tthis behaviour's easing\n\t */\n\treset(centerPoint, force, life, easing) {\n\t\tthis.distanceVec = new Vector2D();\n\t\tthis.centerPoint = Util.initValue(centerPoint, new Vector2D);\n\t\tthis.force = Util.initValue(this.normalizeValue(force), 100);\n\n\t\tlife && super.reset(life, easing);\n\t};\n\n\t/**\n\t * @inheritdoc\n\t */\n\tinitialize(particle) {\n\t};\n\n\t/**\n\t * Apply this behaviour for all particles every time\n\t *\n\t * @method applyBehaviour\n\t * @memberof Proton#GravityWell\n\t * @instance\n\t *\n\t * @param {Particle} particle\n\t * @param {Number} the integrate time 1/ms\n\t * @param {Int} the particle index\n\t */\n\tapplyBehaviour(particle, time, index) {\n\t\tthis.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n\t\tconst distanceSq = this.distanceVec.lengthSq();\n\n\t\tif (distanceSq !== 0) {\n\t\t\tconst distance = this.distanceVec.length();\n\t\t\tconst factor = (this.force * time) / (distanceSq * distance);\n\n\t\t\tparticle.v.x += factor * this.distanceVec.x;\n\t\t\tparticle.v.y += factor * this.distanceVec.y;\n\t\t}\n\t}\n}","import Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n Util.setProp(particle, initialize);\n Util.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number} emitTime begin emit time;\n * @param {String} life the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n let i = this.particles.length;\n while (i--) this.particles[i].dead = true;\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) this.destroy();\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n const length = this.particles.length;\n let i, particle;\n\n for (i = length - 1; i >= 0; i--) {\n particle = this.particles[i];\n\n // particle update\n particle.update(time, i);\n this.parent.integrator.calculate(particle, time, damping);\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n\n // check dead\n if (particle.dead) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n\n this.parent.pool.expire(particle);\n this.particles.splice(i, 1);\n }\n }\n }\n\n dispatch(event, target) {\n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.totalTime === \"once\") {\n let i;\n const length = this.rate.getValue(99999);\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n this.totalTime = \"none\";\n } else {\n this.emitTime += time;\n\n if (this.emitTime < this.totalTime) {\n const length = this.rate.getValue(time);\n let i;\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n }\n }\n }\n\n /**\n * create single particle;\n *\n * can use emit({x:10},new Gravity(10),{'particleUpdate',fun}) or emit([{x:10},new Initialize],new Gravity(10),{'particleUpdate',fun})\n * @method removeAllParticles\n */\n createParticle(initialize, behaviour) {\n const particle = this.parent.pool.get(Particle);\n this.setupParticle(particle, initialize, behaviour);\n this.dispatch(\"PARTICLE_CREATED\", particle);\n\n return particle;\n }\n\n setupParticle(particle, initialize, behaviour) {\n let initializes = this.initializes;\n let behaviours = this.behaviours;\n\n if (initialize) initializes = Util.toArray(initialize);\n if (behaviour) behaviours = Util.toArray(behaviour);\n\n particle.reset();\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n this.particles.push(particle);\n }\n\n remove() {\n this.stop();\n Util.destroyAll(this.particles);\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n\n this.mouseTarget.addEventListener(\n \"mousemove\",\n this.mousemoveHandler,\n false\n );\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\n \"mousemove\",\n this.mousemoveHandler,\n false\n );\n }\n}\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\n \"PROTON_UPDATE_AFTER\",\n this._protonUpdateAfterHandler\n );\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\n \"PARTICLE_CREATED\",\n this._particleCreatedHandler\n );\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n }\n\n remove(proton) {\n this.parent.removeEventListener(\n \"PROTON_UPDATE\",\n this._protonUpdateHandler\n );\n this.parent.removeEventListener(\n \"PROTON_UPDATE_AFTER\",\n this._protonUpdateAfterHandler\n );\n\n this.parent.removeEventListener(\n \"EMITTER_ADDED\",\n this._emitterAddedHandler\n );\n this.parent.removeEventListener(\n \"EMITTER_REMOVED\",\n this._emitterRemovedHandler\n );\n\n this.parent.removeEventListener(\n \"PARTICLE_CREATED\",\n this._particleCreatedHandler\n );\n this.parent.removeEventListener(\n \"PARTICLE_UPDATE\",\n this._particleUpdateHandler\n );\n this.parent.removeEventListener(\n \"PARTICLE_DEAD\",\n this._particleDeadHandler\n );\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class CanvasRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n if (particle.body instanceof Image) this.drawImage(particle);\n } else {\n this.drawCircle(particle);\n }\n }\n\n onParticleDead(particle) {\n particle.body = null;\n }\n\n // private\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n // private drawCircle\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"])\n particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height\n );\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height\n );\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(\n particle.body,\n 0,\n 0,\n particle.body.width,\n particle.body.height,\n x,\n y,\n w,\n h\n );\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n // private drawCircle --\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n // draw circle\n this.context.beginPath();\n this.context.arc(\n particle.p.x,\n particle.p.y,\n particle.radius,\n 0,\n Math.PI * 2,\n true\n );\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n // private createBuffer\n createBuffer(image) {\n if (image instanceof Image) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class DomRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.transform3d = false;\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d)\n DomUtil.transform3d(\n particle.body,\n particle.p.x,\n particle.p.y,\n particle.scale,\n particle.rotation\n );\n else\n DomUtil.transform(\n particle.body,\n particle.p.x,\n particle.p.y,\n particle.scale,\n particle.rotation\n );\n\n particle.body.style.opacity = particle.alpha;\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return (\n typeof particle.body === \"object\" &&\n particle.body &&\n !particle.body.isInner\n );\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body, particle);\n }\n\n // private --\n createCircle(particle) {\n const dom = DomUtil.createDiv(\n `${particle.id}_dom`,\n 2 * particle.radius,\n 2 * particle.radius\n );\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(\n `${particle.id}_dom`,\n body.width,\n body.height\n );\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(createjs.Graphics);\n\n if (this.stroke) {\n if (this.stroke instanceof String) graphics.beginStroke(this.stroke);\n else graphics.beginStroke(\"#000000\");\n }\n graphics\n .beginFill(particle.color || \"#ff0000\")\n .drawCircle(0, 0, particle.radius);\n\n const shape = this.pool.get(createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class PixelRenderer extends BaseRenderer {\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle\n ? rectangle\n : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(\n this.rectangle.width,\n this.rectangle.height\n );\n this.context.putImageData(\n this.imageData,\n this.rectangle.x,\n this.rectangle.y\n );\n }\n\n onProtonUpdate() {\n this.context.clearRect(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(\n this.imageData,\n this.rectangle.x,\n this.rectangle.y\n );\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n Math.floor(particle.p.x - this.rectangle.x),\n Math.floor(particle.p.y - this.rectangle.y),\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.elementwidth)\n return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nlet PIXIClass;\nexport default class PixiRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage =\n PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n if (particle.body) {\n particle.body = this.pool.get(particle.body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n destroy(particles) {\n super.destroy();\n this.pool.destroy();\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n }\n }\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n // using cached version of MathUtil.PI_180 for slight performance increase.\n target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner\n ? this.createFromImage(body.src)\n : new PIXIClass.Sprite(body);\n\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n\n if (this.stroke) {\n const stroke = this.stroke instanceof String ? this.stroke : 0x000000;\n graphics.beginStroke(stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++)\n this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from '../math/Mat3';\nimport BaseRenderer from './BaseRenderer';\n\nimport Util from '../utils/Util';\nimport ImgUtil from '../utils/ImgUtil';\nimport MStack from '../utils/MStack';\nimport DomUtil from '../utils/DomUtil';\nimport WebGLUtil from '../utils/WebGLUtil';\nimport MathUtil from '../math/MathUtil';\n\nexport default class WebGLRenderer extends BaseRenderer {\n\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext('experimental-webgl', { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert('Sorry your browser do not suppest WebGL!');\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = 'WebGLRenderer';\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = ['uniform vec2 viewport;', 'attribute vec2 aVertexPosition;', 'attribute vec2 aTextureCoord;', 'uniform mat3 tMat;', 'varying vec2 vTextureCoord;', 'varying float alpha;', 'void main() {', 'vec3 v = tMat * vec3(aVertexPosition, 1.0);', 'gl_Position = vec4(v.x, v.y, 0, 1);', 'vTextureCoord = aTextureCoord;', 'alpha = tMat[0][2];', '}'].join('\\n');\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = ['precision mediump float;', 'varying vec2 vTextureCoord;', 'varying float alpha;', 'uniform sampler2D uSampler;', 'uniform vec4 color;', 'uniform bool useTexture;', 'uniform vec3 uColor;', 'void main() {', 'vec4 textureColor = texture2D(uSampler, vTextureCoord);', 'gl_FragColor = textureColor * vec4(uColor, 1.0);', 'gl_FragColor.w *= alpha;', '}'].join('\\n');\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS))\n alert('Could not initialise shaders');\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, 'aVertexPosition');\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, 'aTextureCoord');\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, 'tMat');\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, 'uSampler');\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, 'useTexture');\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, 'uColor');\n this.gl.uniform1i(this.sprogram.useTex, 1);\n };\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n };\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas('circle_canvas', this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext('2d');\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = '#FFF';\n context.fill();\n\n return canvas.toDataURL();\n };\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [this.gl.createTexture(), this.gl.createBuffer(), this.gl.createBuffer()];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]), this.gl.STATIC_DRAW);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]), this.gl.STATIC_DRAW);\n\n const context = particle.data.canvas.getContext('2d');\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) { }\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(-particle.data.textureWidth / 2, -particle.data.textureHeight / 2);\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * (MathUtil.PI_180);\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n}","import BaseRenderer from \"./BaseRenderer\";\n\nexport default class CustomRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class LineZone extends Zone {\n constructor(x1, y1, x2, y2, direction) {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n getPosition() {\n this.random = Math.random();\n\n this.vector.x =\n this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y =\n this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (\n this.direction === \">\" ||\n this.direction === \"R\" ||\n this.direction === \"right\" ||\n this.direction === \"down\"\n ) {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y))\n particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class CircleZone extends Zone {\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n\n this.angle = 0;\n this.center = { x, y };\n }\n\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n getSymmetric(particle) {\n let tha2 = particle.v.getGradient();\n let tha1 = this.getGradient(particle);\n\n let tha = 2 * (tha1 - tha2);\n let oldx = particle.v.x;\n let oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n getGradient(particle) {\n return (\n -MathUtil.PI_2 +\n Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x)\n );\n }\n}\n","import Zone from \"./Zone\";\n\nexport default class RectZone extends Zone {\n constructor(x, y, width, height) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n\n return this.vector;\n }\n\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width)\n particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height)\n particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0)\n particle.p.x = this.x + this.width + particle.radius;\n else if (\n particle.p.x - particle.radius > this.x + this.width &&\n particle.v.x >= 0\n )\n particle.p.x = this.x - particle.radius;\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0)\n particle.p.y = this.y + this.height + particle.radius;\n else if (\n particle.p.y - particle.radius > this.y + this.height &&\n particle.v.y >= 0\n )\n particle.p.y = this.y - particle.radius;\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\nexport default class ImageZone extends Zone {\n constructor(imageData, x, y, d) {\n super();\n\n this.reset(imageData, x, y, d);\n }\n\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n getBound(x, y) {\n var index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n if (this.imageData.data[index + 3] > 0) return true;\n else return false;\n }\n\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n var i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.getBound(particle.p.x - this.x, particle.p.y - this.y))\n particle.dead = true;\n else particle.dead = false;\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y))\n particle.v.negate();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n","import React, { Component } from \"react\";\nimport Rand from \"./utils/Rand.js\";\nimport Ball from \"./particles/Ball.jsx\";\nimport Color from \"./particles/Color.jsx\";\nimport Custom from \"./particles/Custom.jsx\";\nimport Lines from \"./particles/Lines.jsx\";\nimport Thick from \"./particles/Thick.jsx\";\nimport Square from \"./particles/Square.jsx\";\nimport Cobweb from \"./particles/Cobweb.jsx\";\nimport Circle from \"./particles/Circle.jsx\";\nimport Tadpole from \"./particles/Tadpole.jsx\";\nimport Polygon from \"./particles/Polygon.jsx\";\nimport Fountain from \"./particles/Fountain.jsx\";\n\nexport default class ParticlesBg extends Component {\n\n constructor(props) {\n super(props);\n }\n\n getRandom() {\n const { num, bg, color } = this.props;\n\n // Code source from here, thanks author\n // https://github.com/drawcall/Proton/blob/gh-pages/source/src/utils/Rand.js\n if (!this.random) {\n this.random = new Rand();\n this.random.set(0.25, );\n this.random.set(0.2, );\n this.random.set(0.2, );\n this.random.set(0.16, );\n this.random.set(0.18, );\n this.random.set(0.04, );\n this.random.set(0.1, );\n this.random.set(0.08, );\n this.random.set(0.18, );\n this.random.set(0.15, );\n }\n return this.random.getResult();\n }\n\n getBgParticles() {\n const { type, num, bg, color, config } = this.props;\n\n let particles;\n switch (String(type).toLowerCase()) {\n case \"color\":\n particles = ;\n break;\n case \"ball\":\n particles = ;\n break;\n case \"lines\":\n particles = ;\n break;\n case \"thick\":\n particles = ;\n break;\n case \"circle\":\n particles = ;\n break;\n case \"cobweb\":\n particles = ;\n break;\n case \"polygon\":\n particles = ;\n break;\n case \"square\":\n particles = ;\n break;\n case \"tadpole\":\n particles = ;\n break;\n case \"fountain\":\n particles = ;\n break;\n case \"custom\":\n particles = ;\n break;\n case \"random\":\n particles = this.getRandom(num);\n break;\n\n default:\n particles = ;\n break;\n }\n\n return particles;\n }\n\n render() {\n const particles = this.getBgParticles();\n return {particles};\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","/**\n * RAFManager requestAnimationFrame Manager\n * \n * Simple package\n * \n * CODE:\n * \n * \t\t// Add to\n * \t-- RAFManager.add(func);\n * \n * \t// Add and carry parameters\n * \t-- const func = data =>{ console.log(data) };\n * \t-- RAFManager.add(func, 25, { msg:'hello world!' }); \n * \t\t\n * \t\t// remove\n * \t-- RAFManager.remove(func);\n * \t-- RAFManager.stop();\t\n*/\n\n// simple polyfill by https://gist.github.com/paulirish/1579671\n(function () {\n\tlet lastTime = 0;\n\tlet vendors = ['ms', 'moz', 'webkit', 'o'];\n\tfor (let x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n\t\twindow.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n\t\twindow.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame']\n\t\t\t|| window[vendors[x] + 'CancelRequestAnimationFrame'];\n\t}\n}());\n\nconst RAFManager = {\n\ttimer: 0,\n\tstate: 'stop',\n\tanimations: [],\n\n\tadd(callback, fps = 60, param = null) {\n\t\tconst n = 60 / fps;\n\t\tconst aniData = { callback, fps, n, param, i: 0 };\n\t\tthis.animations.push(aniData);\n\t\tif (this.animations.length >= 1) this.start();\n\n\t\treturn this;\n\t},\n\n\tgetIndex(callback) {\n\t\tfor (let i = 0; i < this.animations.length; i++) {\n\t\t\tconst aniData = this.animations[i];\n\t\t\tif (aniData.callback === callback) return i;\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tremove(callback) {\n\t\tconst index = this.getIndex(callback);\n\t\tif (index < 0) return;\n\n\t\tthis.deleteMap(callback);\n\t\tif (this.animations.length === 0) this.stop();\n\n\t\treturn this;\n\t},\n\n\tdeleteMap(callback) {\n\t\tconst index = this.getIndex(callback);\n\t\tconst aniData = this.animations[index];\n\t\tfor (let key in aniData) delete aniData[key];\n\n\t\tthis.animations.splice(index, 1);\n\t},\n\n\tstart() {\n\t\tif (this.state === 'start') return;\n\n\t\tthis.state = 'start';\n\t\tthis.tick();\n\t\treturn this;\n\t},\n\n\tstop() {\n\t\tif (this.state === 'stop') return;\n\n\t\tthis.state = 'stop';\n\t\tcancelAnimationFrame(this.timer);\n\t\treturn this;\n\t},\n\n\ttick() {\n\t\tthis.timer = requestAnimationFrame(() => { this.tick(); });\n\n\t\tfor (let i = 0; i < this.animations.length; i++) {\n\t\t\tconst aniData = this.animations[i];\n\t\t\tconst callback = aniData.callback;\n\t\t\tconst param = aniData.param;\n\n\t\t\taniData.i++;\n\t\t\tif (aniData.i >= aniData.n) {\n\t\t\t\tcallback(param);\n\t\t\t\taniData.i = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport default RAFManager;","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Code source from here, thanks author\n// https://github.com/drawcall/Proton/blob/gh-pages/source/src/utils/Rand.js\nclass Rand {\n\n constructor() {\n this.list = [];\n }\n\n set(probability, target) {\n this.list.push({\n probability,\n target,\n a: 0,\n b: 1\n });\n\n this.calculation();\n }\n\n calculation() {\n let total = 0;\n for (let i = 0; i < this.list.length; i++) {\n total += this.list[i].probability;\n }\n\n for (let i = 0; i < this.list.length; i++) {\n const obj = this.list[i];\n const val = obj.probability / total;\n\n obj.a = i === 0 ? 0 : this.list[i - 1].b;\n obj.b = obj.a + val;\n }\n }\n\n getResult() {\n const val = Math.random();\n for (let i = 0; i < this.list.length; i++) {\n const obj = this.list[i];\n\n if (val <= obj.b && val > obj.a) {\n return obj.target;\n }\n }\n\n return this.list[0].target;\n }\n};\n\nexport default Rand;\n","import React from \"react\";\nimport RAFManager from \"raf-manager\";\nexport default class Canvas extends React.Component {\n constructor(props) {\n super(props);\n\n this._iid = 0;\n this._oid = 0;\n this.size = { width: 0, height: 0 };\n this.canvasRef = React.createRef();\n }\n\n componentDidMount() {\n this._oid = setTimeout(() => {\n this.initCanvas();\n this.resize = this.resize.bind(this);\n window.addEventListener(\"resize\", this.resize);\n }, 100);\n\n const canvas = this.getCanvas();\n this.props.onCanvasDidMount && this.props.onCanvasDidMount(canvas);\n }\n\n initCanvas() {\n const canvas = this.getCanvas();\n\n if (this.props.globalCompositeOperation) {\n const context = canvas.getContext(\"2d\");\n context.globalCompositeOperation = this.props.globalCompositeOperation;\n }\n\n const { width, height } = this.setCanvasSize(canvas);\n this.heartbeatDetectionCanvasSize(canvas);\n this.props.onCanvasInited(canvas, width, height);\n }\n\n getCanvas(){\n const canvas = this.canvasRef.current;\n return canvas;\n }\n\n heartbeatDetectionCanvasSize(canvas) {\n this._iid = setInterval(() => {\n if(this.canvasRef.current){\n const newHeight = this.canvasRef.current.clientHeight;\n if (newHeight !== this.size.height) {\n const { width, height } = this.setCanvasSize(canvas);\n this.props.onResize && this.props.onResize(width, height);\n }\n }\n }, 1000 / 10);\n }\n\n componentWillUnmount() {\n try{\n window.removeEventListener(\"resize\", this.resize);\n clearInterval(this._iid);\n clearTimeout(this._oid);\n }catch(e){\n }\n }\n\n resize() {\n const canvas = this.getCanvas();\n const { width, height } = this.setCanvasSize(canvas);\n this.props.onResize && this.props.onResize(width, height);\n }\n\n setCanvasSize(canvas) {\n const width = this.canvasRef.current.clientWidth;\n const height = this.canvasRef.current.clientHeight;\n\n this.size.width = width;\n this.size.height = height;\n canvas.width = width;\n canvas.height = height;\n return { width, height };\n }\n\n handleWaypointEnter() {\n RAFManager.start();\n }\n\n handleWaypointLeave() {\n RAFManager.stop();\n }\n\n getStyle() {\n const { bg } = this.props;\n let style = { width: \"100%\", height: \"100%\" };\n\n if (bg === true) {\n style = Object.assign(style, {\n position: \"absolute\",\n zIndex: -1,\n top: 0,\n left: 0\n });\n } else if(bg && typeof bg === \"object\") {\n style = Object.assign(style, bg);\n }\n\n return style;\n }\n\n handleMouseDown(e) {\n this.props.onMouseDown && this.props.onMouseDown(e);\n }\n\n render() {\n return (\n \n );\n }\n}\n","\nfunction hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : {};\n}\n\nfunction getColor(color, a) {\n let c;\n if (color) {\n c = hexToRgb(color);\n return `rgba(${c.r},${c.g},${c.b}, ${a})`;\n } else {\n return null;\n }\n}\n\n\nexport { hexToRgb, getColor };","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\nimport { getColor } from \"../utils/Color\";\n\nexport default class Ball extends React.Component {\n constructor(props) {\n super(props);\n this.renderProton = this.renderProton.bind(this);\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n this.createMiniEmitter(canvas);\n RAFManager.add(this.renderProton);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) { }\n }\n\n onResize() { }\n\n createProton(canvas, width, height) {\n const context = canvas.getContext(\"2d\");\n this.proton = new Proton();\n\n const emitter = new Proton.Emitter();\n emitter.rate = new Proton.Rate(\n this.props.num ? new Proton.Span(this.props.num) : new Proton.Span(4, 9),\n new Proton.Span(0.8, 1.3)\n );\n\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(1, 50));\n emitter.addInitialize(new Proton.Life(5, 6));\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(5, 8),\n new Proton.Span(30, 70),\n \"polar\"\n )\n );\n\n emitter.addBehaviour(new Proton.Alpha(1, 0));\n emitter.addBehaviour(\n new Proton.Color([\"#36aaf3\", \"#fd769c\", \"#94ff22\", \"#ffa545\", \"#ffffff\"])\n );\n emitter.addBehaviour(new Proton.Scale(0.7, 1));\n emitter.addBehaviour(new Proton.Gravity(3));\n emitter.addBehaviour(new Proton.Collision(emitter));\n emitter.addBehaviour(this.customDeadBehaviour(canvas));\n emitter.addBehaviour(\n new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n \"bound\"\n )\n );\n\n emitter.p.x = Math.min(500, Math.max(canvas.width / 2 - 400, 50));\n emitter.p.y = canvas.height / 2 + 50;\n emitter.emit();\n this.proton.addEmitter(emitter);\n\n const renderer = new Proton.CanvasRenderer(canvas);\n renderer.onProtonUpdate = ()=> {\n context.fillStyle = getColor(this.props.color, 0.2) || \"rgba(255, 255, 255, 0.2)\";\n context.fillRect(0, 0, canvas.width, canvas.height);\n };\n this.proton.addRenderer(renderer);\n }\n\n customDeadBehaviour(canvas) {\n return {\n initialize: function (particle) { },\n applyBehaviour: particle => {\n if (particle.p.y + particle.radius >= canvas.height) {\n if (particle.radius > 9) {\n this.miniEmitteing(particle);\n particle.dead = true;\n }\n }\n }\n };\n }\n\n createMiniEmitter(canvas) {\n const miniEmitter = new Proton.Emitter();\n miniEmitter.rate = new Proton.Rate(\n new Proton.Span(3, 6),\n new Proton.Span(1, 2)\n );\n\n miniEmitter.addInitialize(new Proton.Mass(1));\n miniEmitter.radiusInitialize = new Proton.Radius();\n miniEmitter.addInitialize(miniEmitter.radiusInitialize);\n miniEmitter.addInitialize(new Proton.Life(0.5, 1));\n miniEmitter.addInitialize(\n new Proton.V(\n new Proton.Span(1.5, 3),\n new Proton.Span(0, 70, true),\n \"polar\"\n )\n );\n\n miniEmitter.colorBehaviour = new Proton.Color(\"#ffffff\");\n miniEmitter.addBehaviour(new Proton.Alpha(1, 0));\n miniEmitter.addBehaviour(miniEmitter.colorBehaviour);\n miniEmitter.addBehaviour(new Proton.Gravity(4));\n miniEmitter.addBehaviour(new Proton.Collision(miniEmitter));\n miniEmitter.addBehaviour(\n new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n \"bound\"\n )\n );\n this.proton.addEmitter(miniEmitter);\n\n this.miniEmitter = miniEmitter;\n }\n\n miniEmitteing(particle) {\n const miniEmitter = this.miniEmitter;\n miniEmitter.radiusInitialize.reset(\n particle.radius * 0.05,\n particle.radius * 0.2\n );\n miniEmitter.colorBehaviour.reset(particle.color);\n miniEmitter.p.x = particle.p.x;\n miniEmitter.p.y = particle.p.y;\n miniEmitter.emit(\"once\");\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nexport default class Color extends React.Component {\n constructor(props) {\n super(props);\n\n this.colors = [\n \"#529B88\",\n \"#CDD180\",\n \"#FFFA32\",\n \"#FB6255\",\n \"#FB4A53\",\n \"#FF4E50\",\n \"#F9D423\"\n ];\n this.renderProton = this.renderProton.bind(this);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) {}\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize() {}\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n const emitter = new Proton.Emitter();\n emitter.rate = new Proton.Rate(\n this.props.num ? new Proton.Span(this.props.num) : new Proton.Span(5, 8),\n new Proton.Span(0.1, 0.25)\n );\n\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(20, 200));\n emitter.addInitialize(new Proton.Life(2, 4));\n emitter.addInitialize(\n new Proton.Position(new Proton.RectZone(0, 0, width, height))\n );\n\n emitter.addBehaviour(new Proton.Alpha(0, 1, Infinity, Proton.easeOutCubic));\n emitter.addBehaviour(new Proton.Scale(1, 0, Infinity, Proton.easeOutCubic));\n emitter.addBehaviour(new Proton.Color(this.colors, \"random\"));\n\n emitter.emit();\n this.proton.addEmitter(emitter);\n\n const renderer = new Proton.CanvasRenderer(canvas);\n this.proton.addRenderer(renderer);\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nexport default class Color extends React.Component {\n constructor(props) {\n super(props);\n\n this.colors = [\n \"#529B88\",\n \"#CDD180\",\n \"#FFFA32\",\n \"#FB6255\",\n \"#FB4A53\",\n \"#FF4E50\",\n \"#F9D423\"\n ];\n this.renderProton = this.renderProton.bind(this);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) { }\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize(width, height) {\n this.crossZoneBehaviour.zone.width = width;\n this.crossZoneBehaviour.zone.height = height;\n this.proton.renderers[0].resize(width, height);;\n }\n\n getProp(key, defaultVal) {\n const config = this.props.config || {};\n const val = config[key] || defaultVal;\n if (Array.isArray(val)) {\n return new Proton.Span(val[0], val[1]);\n } else {\n return val;\n }\n }\n\n getArrProp(key, defaultVal) {\n const config = this.props.config || {};\n const val = config[key] || defaultVal;\n if (!val) return null;\n\n if (Array.isArray(val)) {\n return val;\n } else {\n return [val, val];\n }\n }\n\n createProton(canvas, width, height) {\n const num = this.getProp(\"num\", [5, 8]);\n const rps = this.getProp(\"rps\", [0.1, 0.2]);\n const mass = this.getProp(\"mass\", 1);\n const radius = this.getProp(\"radius\", [10, 30]);\n const life = this.getProp(\"life\", [2, 3]);\n const body = this.getProp(\"body\");\n const position = this.getProp(\"position\");\n const v = this.getProp(\"v\", [2, 3]);\n const tha = this.getProp(\"tha\", [-15, 15]);\n const alpha = this.getArrProp(\"alpha\");\n const scale = this.getArrProp(\"scale\");\n const color = this.getArrProp(\"color\");\n const cross = this.getProp(\"cross\", \"dead\");\n const random = this.getProp(\"random\");\n const rotate = this.getArrProp(\"rotate\");\n const g = this.getProp(\"g\");\n const f = this.getArrProp(\"f\");\n const emitterV = this.getProp(\"emitter\");\n\n this.proton = new Proton();\n let emitter;\n if (emitterV === \"follow\") {\n emitter = new Proton.FollowEmitter();\n } else {\n emitter = new Proton.Emitter();\n }\n emitter.rate = new Proton.Rate(num, rps);\n\n emitter.addInitialize(new Proton.Mass(mass));\n emitter.addInitialize(new Proton.Radius(radius));\n emitter.addInitialize(new Proton.Life(life));\n emitter.addInitialize(new Proton.Velocity(v, tha, \"polar\"));\n if (body) emitter.addInitialize(new Proton.Body(body));\n\n let pos;\n if (position === \"all\" || position === \"screen\") {\n pos = new Proton.Position(new Proton.RectZone(0, 0, canvas.width, canvas.height))\n } else if (typeof position === \"object\") {\n pos = new Proton.Position(new Proton.RectZone(position.x, position.y, position.width, position.height))\n } else {\n emitter.p.x = canvas.width / 2;\n emitter.p.y = canvas.height / 2;\n }\n\n emitter.addInitialize(pos);\n\n /// behaviour\n const alphaB = alpha ? new Proton.Alpha(alpha[0], alpha[1]) : new Proton.Alpha(0, 1);\n const scaleB = scale ? new Proton.Scale(scale[0], scale[1]) : new Proton.Scale(1, 0.2);\n const colorB = color ? new Proton.Color(color[0], color[1]) : new Proton.Color(this.colors);\n\n emitter.addBehaviour(alphaB);\n emitter.addBehaviour(scaleB);\n if(!body) emitter.addBehaviour(colorB);\n\n if(rotate){\n if(rotate[0]===true||rotate[0]===\"rotate\"){\n emitter.addBehaviour(new Proton.Rotate());\n }else{\n emitter.addBehaviour(new Proton.Rotate(rotate[0], rotate[1]));\n }\n }\n\n const zone = new Proton.RectZone(0, 0, canvas.width, canvas.height)\n const crossZoneBehaviour = new Proton.CrossZone(zone, cross);\n emitter.addBehaviour(crossZoneBehaviour);\n\n random && emitter.addBehaviour(new Proton.RandomDrift(random, random, 0.05));\n g && emitter.addBehaviour(new Proton.G(g));\n f && emitter.addBehaviour(new Proton.F(f[0], f[1]));\n\n emitter.emit();\n this.proton.addEmitter(emitter);\n\n const renderer = this.createRenderer(canvas);\n this.proton.addRenderer(renderer);\n\n this.emitter = emitter;\n this.crossZoneBehaviour = crossZoneBehaviour;\n }\n\n createRenderer(canvas) {\n const width = canvas.width;\n const height = canvas.height;\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CanvasRenderer(canvas);\n\n const onUpdate = this.getProp(\"onUpdate\");\n if (onUpdate) {\n renderer.onProtonUpdate = () => {\n onUpdate(context, width, height);\n };\n }\n\n const onParticleCreated = this.getProp(\"onParticleCreated\");\n if (onParticleCreated) {\n renderer.onParticleCreated = (particle) => {\n onParticleCreated(context, particle);\n };\n }\n\n const onParticleUpdate = this.getProp(\"onParticleUpdate\");\n if (onParticleUpdate) {\n renderer.onParticleUpdate = (particle) => {\n onParticleUpdate(context, particle);\n };\n }\n\n return renderer;\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n handleMouseDown(e) {\n const onMouseDown = this.getProp(\"onMouseDown\");\n if (onMouseDown) {\n onMouseDown(e);\n }\n }\n\n render() {\n const globalCompositeOperation = this.props.globalCompositeOperation || this.props.operation || \"source-over\";\n\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\nimport { getColor } from \"../utils/Color\";\n\nexport default class Lines extends React.Component {\n constructor(props) {\n super(props);\n this.renderProton = this.renderProton.bind(this);\n }\n\n onCanvasDidMount(canvas){\n if(this.props.color){\n canvas.style.backgroundColor = this.props.color;\n }\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) { }\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize(width, height) {\n this.crossZoneBehaviour.zone.width = width;\n this.crossZoneBehaviour.zone.height = height;\n this.proton.renderers[0].resize(width, height);\n }\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n\n const emitter = new Proton.Emitter();\n emitter.damping = 0.008;\n emitter.rate = new Proton.Rate(this.props.num ? this.props.num : 250);\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(4));\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(1.5),\n new Proton.Span(0, 360),\n \"polar\"\n )\n );\n const mouseObj = {\n x: width / 2,\n y: height / 2\n };\n\n const attractionBehaviour = new Proton.Attraction(mouseObj, 0, 0);\n const crossZoneBehaviour = new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n \"cross\"\n );\n emitter.addBehaviour(new Proton.Color(\"random\"));\n emitter.addBehaviour(attractionBehaviour, crossZoneBehaviour);\n emitter.addBehaviour(new Proton.RandomDrift(10, 10, 0.05));\n emitter.p.x = canvas.width / 2;\n emitter.p.y = canvas.height / 2;\n emitter.emit(\"once\");\n\n this.proton.addEmitter(emitter);\n this.proton.addRenderer(this.createRenderer(canvas));\n this.crossZoneBehaviour = crossZoneBehaviour;\n }\n\n createRenderer(canvas) {\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CanvasRenderer(canvas);\n renderer.onProtonUpdate = () => {\n context.fillStyle = getColor(this.props.color, 0.02) || \"rgba(0, 0, 0, 0.02)\";\n context.fillRect(0, 0, canvas.width, canvas.height);\n };\n\n renderer.onParticleUpdate = function (particle) {\n context.beginPath();\n context.strokeStyle = particle.color;\n context.lineWidth = 1;\n context.moveTo(particle.old.p.x, particle.old.p.y);\n context.lineTo(particle.p.x, particle.p.y);\n context.closePath();\n context.stroke();\n };\n\n return renderer;\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\nimport { getColor } from \"../utils/Color\";\n\nexport default class Thick extends React.Component {\n constructor(props) {\n super(props);\n this.hue = 0;\n this.index = 0;\n this.colorTemplate = `hsla(hue,80%,50%, 0.75)`;\n this.renderProton = this.renderProton.bind(this);\n }\n\n onCanvasDidMount(canvas){\n if(this.props.color){\n canvas.style.backgroundColor = this.props.color;\n }\n }\n\n onCanvasInited(canvas, width, height) {\n this.canvas = canvas;\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize(width, height) {\n this.crossZoneBehaviour.zone.width = width;\n this.crossZoneBehaviour.zone.height = height;\n this.proton.renderers[0].resize(width, height);\n }\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n\n const emitter = new Proton.Emitter();\n emitter.damping = 0.008;\n emitter.rate = new Proton.Rate(this.props.num ? this.props.num : 150);\n\n // Initialize\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(8));\n emitter.addInitialize(\n new Proton.V(new Proton.Span(0.1, 0.5), new Proton.Span(0, 360), \"polar\")\n );\n emitter.addInitialize(\n new Proton.Position(\n new Proton.CircleZone(canvas.width / 2, canvas.height / 2, 100)\n )\n );\n\n // Behaviour\n const crossZoneBehaviour = new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n \"cross\"\n );\n emitter.addBehaviour(crossZoneBehaviour);\n this.repulsion = new Proton.Repulsion(\n {\n x: canvas.width / 2,\n y: canvas.height / 2 - 100\n },\n 3,\n 300\n );\n\n this.attraction = new Proton.Attraction(\n {\n x: canvas.width / 2,\n y: canvas.height / 2\n },\n 3,\n 200\n );\n emitter.addBehaviour(this.attraction, this.repulsion);\n emitter.addBehaviour(new Proton.Color(\"random\"));\n emitter.addBehaviour(new Proton.RandomDrift(20, 15, 0.15));\n\n emitter.emit(\"once\");\n this.proton.addEmitter(emitter);\n this.proton.addRenderer(this.createRenderer(canvas));\n this.crossZoneBehaviour = crossZoneBehaviour;\n }\n\n createRenderer(canvas) {\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CanvasRenderer(canvas);\n\n renderer.onProtonUpdate = () => {\n this.hue += 1;\n context.fillStyle = getColor(this.props.color, 0.02) || \"rgba(0, 0, 0, 0.02)\";\n context.fillRect(0, 0, canvas.width, canvas.height);\n };\n\n renderer.onParticleCreated = particle => {\n particle.data.begin = Proton.MathUtil.randomAToB(1, 120);\n particle.data.tha = Proton.MathUtil.randomAToB(0, Math.PI * 2);\n };\n\n renderer.onParticleUpdate = particle => {\n const hue = particle.data.begin + this.hue;\n particle.color = this.colorTemplate.replace(\"hue\", hue % 360);\n\n const ratio = 3 / 4;\n const radius =\n particle.radius * (1 - ratio) * Math.cos((particle.data.tha += 0.01)) +\n particle.radius * ratio;\n\n context.beginPath();\n context.fillStyle = particle.color;\n context.arc(particle.p.x, particle.p.y, radius, 0, Math.PI * 2, true);\n context.closePath();\n context.fill();\n };\n\n return renderer;\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) {}\n }\n\n renderProton() {\n const canvas = this.canvas;\n this.proton.update();\n if (this.index % 200 === 0) {\n this.attraction.targetPosition.x = Math.random() * canvas.width;\n this.attraction.targetPosition.y = Math.random() * canvas.height;\n\n this.repulsion.targetPosition.x = Math.random() * canvas.width;\n this.repulsion.targetPosition.y = Math.random() * canvas.height;\n }\n\n this.index++;\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nexport default class Square extends React.Component {\n constructor(props) {\n super(props);\n\n this.colors = [\n \"#fad390\",\n \"#81ecec\",\n \"#ffffff\",\n \"#badc58\",\n \"#f9ca24\",\n \"#FEA47F\"\n ];\n this.renderProton = this.renderProton.bind(this);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) {}\n }\n\n onCanvasDidMount(canvas) {\n \n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize(width, height) {\n const dis = 150;\n this.crossZoneBehaviour.zone.width = width + 2 * dis;\n this.crossZoneBehaviour.zone.height = height + 2 * dis;\n this.proton.renderers[0].resize(width, height);\n }\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n const emitter = new Proton.Emitter();\n emitter.rate = new Proton.Rate(this.props.num ? this.props.num : 50);\n emitter.damping = 0;\n\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(4, 70));\n emitter.addInitialize(\n new Proton.Velocity(new Proton.Span(2, 10), new Proton.Span(0), \"polar\")\n );\n emitter.addInitialize(\n new Proton.Position(\n new Proton.LineZone(0, canvas.height, canvas.width, canvas.height)\n )\n );\n\n const dis = 150;\n const crossZoneBehaviour = new Proton.CrossZone(\n new Proton.RectZone(\n 0 - dis,\n 0 - dis,\n canvas.width + 2 * dis,\n canvas.height + 2 * dis\n ),\n \"cross\"\n );\n emitter.addBehaviour(crossZoneBehaviour);\n emitter.addBehaviour(new Proton.Alpha(Proton.getSpan(0.1, 0.55)));\n emitter.addBehaviour(new Proton.Color(this.colors));\n\n emitter.emit(\"once\");\n this.proton.addEmitter(emitter);\n const renderer = this.createRenderer(canvas);\n this.proton.addRenderer(renderer);\n\n this.crossZoneBehaviour = crossZoneBehaviour;\n emitter.preEmit(2);\n }\n\n createRenderer(canvas) {\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CustomRenderer();\n\n renderer.onProtonUpdate = () => {\n context.clearRect(0, 0, canvas.width, canvas.height);\n };\n\n renderer.onParticleCreated = particle => {\n const w = particle.radius || 60;\n const h = Proton.MathUtil.randomAToB(100, 200, \"int\");\n particle.data.w = w;\n particle.data.h = h;\n };\n\n renderer.onParticleUpdate = particle => {\n const w = particle.data.w;\n const h = particle.data.h;\n context.save();\n context.globalAlpha = particle.alpha;\n context.fillStyle = particle.color;\n\n context.translate(particle.p.x, particle.p.y);\n context.rotate(Proton.MathUtil.degreeTransform(particle.rotation));\n context.translate(-particle.p.x, -particle.p.y);\n\n context.beginPath();\n context.rect(particle.p.x - w / 2, particle.p.y - h / 2, w, h);\n\n context.closePath();\n context.fill();\n context.globalAlpha = 1;\n context.restore();\n };\n\n return renderer;\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\nimport { getColor } from \"../utils/Color\";\n\nexport default class Cobweb extends React.Component {\n constructor(props) {\n super(props);\n this.renderProton = this.renderProton.bind(this);\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) {}\n }\n\n onResize(width, height) {\n this.crossZoneBehaviour.zone.width = width;\n this.crossZoneBehaviour.zone.height = height;\n this.proton.renderers[0].resize(width, height);\n }\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n\n const emitter = new Proton.Emitter();\n emitter.rate = new Proton.Rate(\n this.props.num ? new Proton.Span(this.props.num) : new Proton.Span(100),\n new Proton.Span(0.05, 0.2)\n );\n\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(1, 4));\n emitter.addInitialize(new Proton.Life(Infinity));\n\n const pointZone = new Proton.Position(\n new Proton.RectZone(0, 0, width, height)\n );\n emitter.addInitialize(pointZone);\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(0.3, 0.6),\n new Proton.Span(0, 360),\n \"polar\"\n )\n );\n\n emitter.addBehaviour(new Proton.Alpha(Proton.getSpan(0.2, 0.9)));\n emitter.addBehaviour(new Proton.Color(this.props.color || \"#333\"));\n this.crossZoneBehaviour = new Proton.CrossZone(\n new Proton.RectZone(0, 0, width, height),\n \"cross\"\n );\n emitter.addBehaviour(this.crossZoneBehaviour);\n\n emitter.emit(\"once\");\n emitter.damping = 0;\n this.proton.addEmitter(emitter);\n this.proton.addRenderer(this.createRenderer(canvas, emitter));\n }\n\n createRenderer(canvas, emitter) {\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CanvasRenderer(canvas);\n const R = 140;\n\n renderer.onProtonUpdateAfter = ()=> {\n let particles = emitter.particles;\n\n for (let i = 0; i < particles.length; i++) {\n for (let j = i + 1; j < particles.length; j++) {\n let pA = particles[i];\n let pB = particles[j];\n let dis = pA.p.distanceTo(pB.p);\n\n if (dis < R) {\n let alpha = (1 - dis / R) * 0.5;\n context.strokeStyle = getColor(this.props.color, alpha) || `rgba(3, 3, 3, ${alpha})`;\n context.beginPath();\n context.moveTo(pA.p.x, pA.p.y);\n context.lineTo(pB.p.x, pB.p.y);\n context.closePath();\n context.stroke();\n }\n }\n }\n };\n\n return renderer;\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nexport default class Circle extends React.Component {\n constructor(props) {\n super(props);\n\n this.colors = [\n \"#74b9ff\",\n \"#e84393\",\n \"#6c5ce7\",\n \"#00b894\",\n \"#fdcb6e\",\n \"#006266\",\n \"#1B1464\"\n ];\n\n this.renderProton = this.renderProton.bind(this);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) { }\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize(width, height) {\n this.crossZoneBehaviour.zone.width = width;\n this.crossZoneBehaviour.zone.height = height;\n this.proton.renderers[0].resize(width, height);\n }\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n\n const emitter = new Proton.Emitter();\n emitter.rate = new Proton.Rate(this.props.num || 20);\n emitter.damping = 0.008;\n\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(30, 600));\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(0.5),\n new Proton.Span(0, 360),\n \"polar\"\n )\n );\n emitter.addInitialize(\n new Proton.Position(\n new Proton.RectZone(0, 0, canvas.width, canvas.height)\n )\n );\n\n const crossZoneBehaviour = new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n \"cross\"\n );\n emitter.addBehaviour(crossZoneBehaviour);\n emitter.addBehaviour(new Proton.Alpha(Proton.getSpan(0.35, 0.55)));\n emitter.addBehaviour(new Proton.Color(this.getColor()));\n emitter.addBehaviour(new Proton.RandomDrift(50, 50, 0.5));\n\n emitter.emit(\"once\");\n this.proton.addEmitter(emitter);\n\n const renderer = new Proton.CanvasRenderer(canvas);\n this.proton.addRenderer(renderer);\n\n this.crossZoneBehaviour = crossZoneBehaviour;\n }\n\n getColor() {\n let c = this.colors;\n if (this.props.color) {\n if(Array.isArray(this.props.color)){\n c = this.props.color;\n }else{\n c = [this.props.color];\n }\n }\n\n return c;\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nexport default class Tadpole extends React.Component {\n constructor(props) {\n super(props);\n this.renderProton = this.renderProton.bind(this);\n }\n\n onCanvasDidMount(canvas) {\n\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n this.renderProton();\n }\n\n onResize(width, height) {\n this.crossZoneBehaviour.zone.width = width;\n this.crossZoneBehaviour.zone.height = height;\n this.proton.renderers[0].resize(width, height);\n }\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n\n const emitter = new Proton.Emitter();\n emitter.damping = 0.008;\n emitter.rate = new Proton.Rate(this.props.num ? this.props.num : 50);\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(5, 9));\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(1.5),\n new Proton.Span(0, 360),\n \"polar\"\n )\n );\n emitter.addInitialize(\n new Proton.Position(new Proton.RectZone(0, 0, width, height))\n );\n\n const mouseInfo = {\n x: width / 2,\n y: height / 2\n };\n\n const attractionBehaviour = new Proton.Attraction(mouseInfo, 0, 0);\n const crossZoneBehaviour = new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n \"bound\"\n );\n emitter.addBehaviour(new Proton.Color(this.props.color || \"#bbb\"));\n //emitter.addBehaviour(new Proton.Alpha(new Proton.Span(0.5, 1)));\n emitter.addBehaviour(attractionBehaviour, crossZoneBehaviour);\n emitter.addBehaviour(new Proton.RandomDrift(15, 15, 0.05));\n emitter.emit(\"once\");\n\n this.proton.addEmitter(emitter);\n this.proton.addRenderer(this.createRenderer(canvas));\n this.crossZoneBehaviour = crossZoneBehaviour;\n }\n\n createRenderer(canvas) {\n const jointCount = 10;\n const delayTime = 8;\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CanvasRenderer(canvas);\n\n renderer.onProtonUpdate = function () {\n context.clearRect(0, 0, canvas.width, canvas.height);\n };\n\n renderer.onParticleCreated = particle => {\n particle.data.points = [];\n particle.data.index = 0;\n };\n\n renderer.onParticleUpdate = function (particle) {\n drawTadpoleTail(particle);\n if (particle.data.index % delayTime === 0) fillPointsData(particle);\n drawTadpoleHead(particle);\n particle.data.index++;\n };\n\n const fillPointsData = particle => {\n particle.data.points.unshift(particle.p.y);\n particle.data.points.unshift(particle.p.x);\n\n if (particle.data.points.length > jointCount) {\n particle.data.points.pop();\n particle.data.points.pop();\n }\n };\n\n const drawTadpoleHead = particle => {\n context.fillStyle = particle.color;\n context.beginPath();\n context.arc(\n particle.p.x,\n particle.p.y,\n particle.radius,\n 0,\n Math.PI * 2,\n true\n );\n context.closePath();\n context.fill();\n };\n\n const drawTadpoleTail = particle => {\n context.beginPath();\n context.strokeStyle = particle.color;\n\n context.moveTo(particle.p.x, particle.p.y);\n\n const l = particle.data.points.length;\n for (let i = 0; i < l; i += 2) {\n const x = particle.data.points[i];\n const y = particle.data.points[i + 1];\n\n context.lineWidth = linearEvaluation(i, l);\n context.lineTo(x, y);\n context.stroke();\n }\n };\n\n const linearEvaluation = (i, l) => {\n if (l <= 2) return 1;\n\n const max = 6;\n const A = (max - 1) / (2 / l - 1);\n const B = 1 - A;\n const X = (i + 2) / l;\n let val = A * X + B;\n val = val >> 0;\n\n return val;\n };\n\n return renderer;\n }\n\n renderProton() {\n RAFManager.add(() => {\n this.proton.update();\n //this.proton.stats.update();\n });\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nconst COLOR = [\n \"#f6b93b\",\n \"#18dcff\",\n \"#cd84f1\",\n \"#ED4C67\",\n \"#ffffff\",\n \"#b71540\",\n \"#32ff7e\",\n \"#ff3838\"\n];\n\nexport default class Polygon extends React.Component {\n constructor(props) {\n super(props);\n this.renderProton = this.renderProton.bind(this);\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas);\n this.createEmitter({\n canvas,\n x: width / 2,\n y: height / 2,\n mainEmitter: true,\n zone: \"bound\"\n });\n\n RAFManager.add(this.renderProton);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) {}\n }\n\n onResize() {}\n\n createProton(canvas) {\n this.proton = new Proton();\n const renderer = this.createRenderer(canvas);\n this.proton.addRenderer(renderer);\n }\n\n createRenderer(canvas) {\n const context = canvas.getContext(\"2d\");\n const renderer = new Proton.CustomRenderer();\n\n renderer.onProtonUpdate = () => {\n context.clearRect(0, 0, canvas.width, canvas.height);\n };\n\n renderer.onParticleCreated = particle => {\n particle.data.count = Proton.MathUtil.randomAToB(3, 10, true);\n };\n\n renderer.onParticleUpdate = particle => {\n context.save();\n context.globalAlpha = particle.alpha;\n context.fillStyle = particle.color;\n\n context.translate(particle.p.x, particle.p.y);\n context.rotate(Proton.MathUtil.degreeTransform(particle.rotation));\n context.translate(-particle.p.x, -particle.p.y);\n\n context.beginPath();\n drawPolygon(particle, particle.data.count);\n\n context.closePath();\n context.fill();\n context.globalAlpha = 1;\n context.restore();\n };\n\n renderer.onParticleDead = particle => {};\n\n const drawPolygon = (particle, count) => {\n if (count >= 7) {\n context.arc(\n particle.p.x,\n particle.p.y,\n particle.radius,\n 0,\n Math.PI * 2,\n true\n );\n } else {\n const radius = particle.radius;\n\n for (let i = 0; i <= count; i++) {\n let x =\n particle.p.x +\n radius * Math.cos((((Math.PI / 180) * 360) / count) * i);\n let y =\n particle.p.y +\n radius * Math.sin((((Math.PI / 180) * 360) / count) * i);\n\n if (i === 0) context.moveTo(x, y);\n else context.lineTo(x, y);\n }\n }\n };\n\n return renderer;\n }\n\n createEmitter({\n mainEmitter,\n canvas,\n x,\n y,\n radius,\n color = COLOR,\n zone = \"dead\",\n once = \"all\",\n alpha = 0.85,\n gravity = 3.5\n }) {\n const emitter = this.proton.pool.get(Proton.Emitter);\n\n if (!emitter.completed) {\n emitter.rate = new Proton.Rate(\n this.props.num ? new Proton.Span(this.props.num) : new Proton.Span(4, 9),\n new Proton.Span(1.6, 2.2)\n );\n\n const radiusInit = mainEmitter\n ? new Proton.Radius(10, 110)\n : new Proton.Radius(3, radius);\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(radiusInit);\n emitter.addInitialize(new Proton.Life(3, 6));\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(4, 6),\n new Proton.Span(-90, 90),\n \"polar\"\n )\n );\n\n emitter.addBehaviour(new Proton.Alpha(alpha, 0.2));\n emitter.addBehaviour(new Proton.Color(color));\n emitter.addBehaviour(new Proton.Scale(1, 0.3));\n emitter.addBehaviour(new Proton.Rotate());\n emitter.addBehaviour(new Proton.Gravity(gravity));\n\n emitter.addBehaviour(this.customDeadBehaviour(canvas));\n emitter.addBehaviour(\n new Proton.CrossZone(\n new Proton.RectZone(0, 0, canvas.width, canvas.height),\n zone\n )\n );\n }\n\n emitter.p.x = x;\n emitter.p.y = y;\n if (once === \"once\") emitter.emit(\"once\");\n else emitter.emit();\n\n this.proton.addEmitter(emitter);\n //this.expireEmitter(emitter);\n }\n\n expireEmitter(emitter) {\n setTimeout(() => {\n emitter.completed = true;\n this.proton.pool.expire(emitter);\n this.proton.removeEmitter(emitter);\n }, 500);\n }\n\n customDeadBehaviour(canvas) {\n return {\n initialize: particle => {\n particle.data = particle.data || {};\n particle.data.oldRadius = particle.radius;\n particle.data.emitterCount = 0;\n },\n applyBehaviour: particle => {\n if (particle.radius < 5) return;\n if (particle.data.emitterCount >= 2) return;\n\n if (particle.radius <= (1 / 3) * particle.data.oldRadius) {\n particle.data.emitterCount++;\n this.createEmitter({\n canvas,\n x: particle.p.x,\n y: particle.p.y,\n radius: particle.radius * (1 / 2),\n alpha: 0.5,\n gravity: 5,\n color: particle.color,\n once: \"once\"\n });\n }\n }\n };\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport Proton from \"proton-engine\";\nimport RAFManager from \"raf-manager\";\nimport Canvas from \"./Canvas.jsx\";\n\nexport default class Fountain extends React.Component {\n constructor(props) {\n super(props);\n\n this.colors = [\n \"#529B88\",\n \"#CDD180\",\n \"#FFFA32\",\n \"#FB6255\",\n \"#FB4A53\",\n \"#FF4E50\",\n \"#F9D423\"\n ];\n this.renderProton = this.renderProton.bind(this);\n }\n\n componentWillUnmount() {\n try {\n RAFManager.remove(this.renderProton);\n this.proton.destroy();\n } catch (e) {}\n }\n\n onCanvasInited(canvas, width, height) {\n this.createProton(canvas, width, height);\n RAFManager.add(this.renderProton);\n }\n\n onResize() {}\n\n createProton(canvas, width, height) {\n this.proton = new Proton();\n const emitter = new Proton.Emitter();\n emitter.rate = new Proton.Rate(\n this.props.num ? new Proton.Span(this.props.num) : new Proton.Span(4, 8),\n new Proton.Span(0.1, 0.25)\n );\n\n emitter.addInitialize(new Proton.Mass(1));\n emitter.addInitialize(new Proton.Radius(20, 200));\n emitter.addInitialize(new Proton.Life(2, 4));\n emitter.addInitialize(\n new Proton.Velocity(\n new Proton.Span(4, 7),\n new Proton.Span(0, 360),\n \"polar\"\n )\n );\n emitter.addInitialize(\n new Proton.Position(new Proton.CircleZone(width / 2, height / 2, 100))\n );\n\n emitter.addBehaviour(new Proton.Alpha(1, 0));\n emitter.addBehaviour(new Proton.Scale(0.2, 1));\n emitter.addBehaviour(this.createCustomBehaviour());\n emitter.addBehaviour(new Proton.Color(this.colors, \"random\"));\n emitter.emit();\n this.proton.addEmitter(emitter);\n\n const renderer = new Proton.CanvasRenderer(canvas);\n this.proton.addRenderer(renderer);\n }\n\n createCustomBehaviour() {\n const f = 10 * 100;\n return {\n initialize: function(particle) {\n particle.f = new Proton.Vector2D(0, 0);\n },\n applyBehaviour: particle => {\n let length = particle.v.length() / 1000;\n let gradient = particle.v.getGradient();\n gradient += 3.14 / 2;\n\n particle.f.x = f * length * Math.cos(gradient);\n particle.f.y = f * length * Math.sin(gradient);\n particle.a.add(particle.f);\n }\n };\n }\n\n renderProton() {\n this.proton && this.proton.update();\n }\n\n render() {\n return (\n \n );\n }\n}\n","\"use strict\";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.Zoom=exports.Rotate=exports.Flip=exports.Fade=void 0;var _extends2=require(\"babel-runtime/helpers/extends\"),_extends3=_interopRequireDefault(_extends2),_objectWithoutProperties2=require(\"babel-runtime/helpers/objectWithoutProperties\"),_objectWithoutProperties3=_interopRequireDefault(_objectWithoutProperties2),_getPrototypeOf=require(\"babel-runtime/core-js/object/get-prototype-of\"),_getPrototypeOf2=_interopRequireDefault(_getPrototypeOf),_classCallCheck2=require(\"babel-runtime/helpers/classCallCheck\"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require(\"babel-runtime/helpers/createClass\"),_createClass3=_interopRequireDefault(_createClass2),_possibleConstructorReturn2=require(\"babel-runtime/helpers/possibleConstructorReturn\"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require(\"babel-runtime/helpers/inherits\"),_inherits3=_interopRequireDefault(_inherits2),_react=require(\"react\"),_react2=_interopRequireDefault(_react),_propTypes=require(\"prop-types\"),_propTypes2=_interopRequireDefault(_propTypes),propTypes={effect:_propTypes2.default.oneOfType([_propTypes2.default.string,_propTypes2.default.object]),duration:_propTypes2.default.number,delay:_propTypes2.default.number,easing:_propTypes2.default.string,wave:_propTypes2.default.oneOfType([_propTypes2.default.bool,_propTypes2.default.number]),tag:_propTypes2.default.string,className:_propTypes2.default.string,style:_propTypes2.default.object,ssr:_propTypes2.default.bool,fraction:_propTypes2.default.number,onReveal:_propTypes2.default.func},defaultProps={duration:1e3,easing:\"ease\",delay:66,fraction:.2,tag:\"div\"},Reveal=function(e){function t(){var e,r,o,a;(0,_classCallCheck3.default)(this,t);for(var s=arguments.length,n=Array(s),i=0;it.getTop(o.refs.el)&&(o.setState({isHidden:!1}),o.componentWillUnmount(),\"function\"==typeof o.props.onReveal&&o.props.onReveal())},o.revealThrottler=function(){o.revealTimeout||(o.revealTimeout=window.setTimeout(o.handleReveal,o.props.delay))},a=r,(0,_possibleConstructorReturn3.default)(o,a)}return(0,_inherits3.default)(t,e),(0,_createClass3.default)(t,[{key:\"componentWillUnmount\",value:function(){window.removeEventListener(\"scroll\",this.revealThrottler),window.removeEventListener(\"resize\",this.revealThrottler,!1)}},{key:\"componentDidMount\",value:function(){if(this.props.ssr&&window.pageYOffset+window.innerHeight>t.getTop(this.refs.el))return void this.setState({isHidden:!1,isMounted:!1});this.setState({isHidden:!0,isMounted:!0}),this.revealThrottler(),window.addEventListener(\"scroll\",this.revealThrottler),window.addEventListener(\"resize\",this.revealThrottler,!1)}},{key:\"render\",value:function(){var e=this.props,r=e.transition,o=e.tag,a=e.children,s=e.wave,n=e.duration,i=(e.delay,e.easing),l=e.effect,p=e.style,u=e.className,f=(e.ssr,e.onReveal,e.fraction,(0,_objectWithoutProperties3.default)(e,[\"transition\",\"tag\",\"children\",\"wave\",\"duration\",\"delay\",\"easing\",\"effect\",\"style\",\"className\",\"ssr\",\"onReveal\",\"fraction\"])),d=o,c={},_=u,h=!(\"string\"==typeof l||l instanceof String);if(this.state.isHidden?c=(0,_extends3.default)({visibility:\"hidden\",opacity:0},h?l:{}):this.state.isMounted&&(h?c={opacity:1,transition:r||\"all \"+n+\"ms \"+i+\" 0s\"}:_=u?u+\" \"+this.props.effect:this.props.effect),s&&h){var v=0,y=\"boolean\"==typeof s?200:s;return _react2.default.createElement(d,(0,_extends3.default)({},f,{style:p,className:u,ref:\"el\"}),_react2.default.Children.map(a,function(e){return c.transition&&(c.transition=\"all \"+n+\"ms \"+i+\" \"+(v+=y)+\"ms\"),_react2.default.cloneElement(e,{style:(0,_extends3.default)({},e.props.style,c)})}))}return _react2.default.createElement(d,(0,_extends3.default)({},f,{children:a||t.lorem(),style:(0,_extends3.default)({},p,c),className:_,ref:\"el\"}))}}],[{key:\"getTop\",value:function(e){var r=e.offsetTop,o=e.offsetParent;return r+(o&&t.getTop(o))}},{key:\"lorem\",value:function(){for(var e=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. \",t=0;t<4;t++)e+=e;return _react2.default.createElement(\"p\",null,e)}}]),t}(_react2.default.Component);Reveal.propTypes=propTypes,Reveal.defaultProps=defaultProps,exports.default=Reveal;var Fade=function(e){var t=e.left,r=e.right,o=e.up,a=e.down,s=e.big,n=(0,_objectWithoutProperties3.default)(e,[\"left\",\"right\",\"up\",\"down\",\"big\"]),i=s?\"2000px\":\"100%\";return _react2.default.createElement(Reveal,(0,_extends3.default)({},n,{effect:{transform:\"translate3d(\"+(t?\"-\"+i:r?i:\"0\")+\", \"+(a?\"-\"+i:o?i:\"0\")+\", 0)\"}}))},Flip=function(e){var t=e.x,r=e.y,o=(0,_objectWithoutProperties3.default)(e,[\"x\",\"y\"]);return _react2.default.createElement(Reveal,(0,_extends3.default)({},o,{effect:{transform:\"perspective(400px) rotate3d(\"+(t?\"1\":\"0\")+\", \"+(t?\"0\":\"1\")+\", 0, \"+(t||r?\"90deg\":\"-360deg\")+\")\"}}))},Rotate=function(e){var t=e.left,r=e.right,o=e.up,a=e.down,s=(0,_objectWithoutProperties3.default)(e,[\"left\",\"right\",\"up\",\"down\"]),n=\"-200deg\",i=\"center\";return a&&t&&(n=\"-45deg\"),(a&&r||o&&t)&&(n=\"45deg\"),o&&r&&(n=\"-90deg\"),(t||r)&&(i=(t?\"left\":\"right\")+\" bottom\"),_react2.default.createElement(Reveal,(0,_extends3.default)({},s,{effect:{transform:\"rotate3d(0, 0, 1, \"+n+\")\",transformOrigin:i}}))},Zoom=function(e){return _react2.default.createElement(Reveal,(0,_extends3.default)({},e,{effect:{transform:\"scale3d(.3, .3, .3)\"}}))};exports.Fade=Fade,exports.Flip=Flip,exports.Rotate=Rotate,exports.Zoom=Zoom;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = {};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = require('./_hide');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"Typewriter\",[\"react\"],t):\"object\"==typeof exports?exports.Typewriter=t(require(\"react\")):e.Typewriter=t(e.react)}(\"undefined\"!=typeof self?self:this,(function(e){return(()=>{var t={7403:(e,t,r)=>{\"use strict\";r.d(t,{default:()=>T});var n=r(4087),o=r.n(n);const a=function(e){return new RegExp(/<[a-z][\\s\\S]*>/i).test(e)},i=function(e){var t=document.createElement(\"div\");return t.innerHTML=e,t.childNodes},s=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var u=\"TYPE_CHARACTER\",c=\"REMOVE_CHARACTER\",p=\"REMOVE_ALL\",l=\"REMOVE_LAST_VISIBLE_NODE\",f=\"PAUSE_FOR\",v=\"CALL_FUNCTION\",d=\"ADD_HTML_TAG_ELEMENT\",h=\"CHANGE_DELETE_SPEED\",y=\"CHANGE_DELAY\",b=\"CHANGE_CURSOR\",_=\"PASTE_STRING\",m=\"HTML_TAG\";function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:null;if(a(e))return g.typeOutHTMLString(e,t);if(e){var r=g.options||{},n=r.stringSplitter,o=\"function\"==typeof n?n(e):e.split(\"\");g.typeCharacters(o,t)}return g})),O(this,\"pasteString\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return a(e)?g.typeOutHTMLString(e,t,!0):(e&&g.addEventToQueue(_,{character:e,node:t}),g)})),O(this,\"typeOutHTMLString\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0,n=i(e);if(n.length>0)for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:\"natural\";return g.addEventToQueue(p,{speed:e}),g})),O(this,\"changeDeleteSpeed\",(function(e){if(!e)throw new Error(\"Must provide new delete speed\");return g.addEventToQueue(h,{speed:e}),g})),O(this,\"changeDelay\",(function(e){if(!e)throw new Error(\"Must provide new delay\");return g.addEventToQueue(y,{delay:e}),g})),O(this,\"changeCursor\",(function(e){if(!e)throw new Error(\"Must provide new cursor\");return g.addEventToQueue(b,{cursor:e}),g})),O(this,\"deleteChars\",(function(e){if(!e)throw new Error(\"Must provide amount of characters to delete\");for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:null;if(!e||!Array.isArray(e))throw new Error(\"Characters must be an array\");return e.forEach((function(e){g.addEventToQueue(u,{character:e,node:t})})),g})),O(this,\"removeCharacters\",(function(e){if(!e||!Array.isArray(e))throw new Error(\"Characters must be an array\");return e.forEach((function(){g.addEventToQueue(c)})),g})),O(this,\"addEventToQueue\",(function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return g.addEventToStateProperty(e,t,r,\"eventQueue\")})),O(this,\"addReverseCalledEvent\",(function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=g.options.loop;return n?g.addEventToStateProperty(e,t,r,\"reverseCalledEvents\"):g})),O(this,\"addEventToStateProperty\",(function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0,o={eventName:e,eventArgs:t||{}};return g.state[n]=r?[o].concat(x(g.state[n])):[].concat(x(g.state[n]),[o]),g})),O(this,\"runEventLoop\",(function(){g.state.lastFrameTime||(g.state.lastFrameTime=Date.now());var e=Date.now(),t=e-g.state.lastFrameTime;if(!g.state.eventQueue.length){if(!g.options.loop)return;g.state.eventQueue=x(g.state.calledEvents),g.state.calledEvents=[],g.options=w({},g.state.initialOptions)}if(g.state.eventLoop=o()(g.runEventLoop),!g.state.eventLoopPaused){if(g.state.pauseUntil){if(e{var n=r(852)(r(5639),\"DataView\");e.exports=n},1989:(e,t,r)=>{var n=r(1789),o=r(401),a=r(7667),i=r(1327),s=r(1866);function u(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var n=r(7040),o=r(4125),a=r(2117),i=r(7518),s=r(4705);function u(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var n=r(852)(r(5639),\"Map\");e.exports=n},3369:(e,t,r)=>{var n=r(4785),o=r(1285),a=r(6e3),i=r(9916),s=r(5265);function u(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var n=r(852)(r(5639),\"Promise\");e.exports=n},8525:(e,t,r)=>{var n=r(852)(r(5639),\"Set\");e.exports=n},8668:(e,t,r)=>{var n=r(3369),o=r(619),a=r(2385);function i(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new n;++t{var n=r(8407),o=r(7465),a=r(3779),i=r(7599),s=r(4758),u=r(4309);function c(e){var t=this.__data__=new n(e);this.size=t.size}c.prototype.clear=o,c.prototype.delete=a,c.prototype.get=i,c.prototype.has=s,c.prototype.set=u,e.exports=c},2705:(e,t,r)=>{var n=r(5639).Symbol;e.exports=n},1149:(e,t,r)=>{var n=r(5639).Uint8Array;e.exports=n},577:(e,t,r)=>{var n=r(852)(r(5639),\"WeakMap\");e.exports=n},4963:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,a=[];++r{var n=r(2545),o=r(5694),a=r(1469),i=r(4144),s=r(5776),u=r(6719),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var r=a(e),p=!r&&o(e),l=!r&&!p&&i(e),f=!r&&!p&&!l&&u(e),v=r||p||l||f,d=v?n(e.length,String):[],h=d.length;for(var y in e)!t&&!c.call(e,y)||v&&(\"length\"==y||l&&(\"offset\"==y||\"parent\"==y)||f&&(\"buffer\"==y||\"byteLength\"==y||\"byteOffset\"==y)||s(y,h))||d.push(y);return d}},2488:e=>{e.exports=function(e,t){for(var r=-1,n=t.length,o=e.length;++r{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length;++r{var n=r(7813);e.exports=function(e,t){for(var r=e.length;r--;)if(n(e[r][0],t))return r;return-1}},8866:(e,t,r)=>{var n=r(2488),o=r(1469);e.exports=function(e,t,r){var a=t(e);return o(e)?a:n(a,r(e))}},4239:(e,t,r)=>{var n=r(2705),o=r(9607),a=r(2333),i=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":i&&i in Object(e)?o(e):a(e)}},9454:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return o(e)&&\"[object Arguments]\"==n(e)}},939:(e,t,r)=>{var n=r(2492),o=r(7005);e.exports=function e(t,r,a,i,s){return t===r||(null==t||null==r||!o(t)&&!o(r)?t!=t&&r!=r:n(t,r,a,i,e,s))}},2492:(e,t,r)=>{var n=r(6384),o=r(7114),a=r(8351),i=r(6096),s=r(4160),u=r(1469),c=r(4144),p=r(6719),l=\"[object Arguments]\",f=\"[object Array]\",v=\"[object Object]\",d=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,h,y,b){var _=u(e),m=u(t),g=_?f:s(e),w=m?f:s(t),x=(g=g==l?v:g)==v,j=(w=w==l?v:w)==v,E=g==w;if(E&&c(e)){if(!c(t))return!1;_=!0,x=!1}if(E&&!x)return b||(b=new n),_||p(e)?o(e,t,r,h,y,b):a(e,t,g,r,h,y,b);if(!(1&r)){var O=x&&d.call(e,\"__wrapped__\"),T=j&&d.call(t,\"__wrapped__\");if(O||T){var A=O?e.value():e,S=T?t.value():t;return b||(b=new n),y(A,S,r,h,b)}}return!!E&&(b||(b=new n),i(e,t,r,h,y,b))}},8458:(e,t,r)=>{var n=r(3560),o=r(5346),a=r(3218),i=r(346),s=/^\\[object .+?Constructor\\]$/,u=Function.prototype,c=Object.prototype,p=u.toString,l=c.hasOwnProperty,f=RegExp(\"^\"+p.call(l).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");e.exports=function(e){return!(!a(e)||o(e))&&(n(e)?f:s).test(i(e))}},8749:(e,t,r)=>{var n=r(4239),o=r(1780),a=r(7005),i={};i[\"[object Float32Array]\"]=i[\"[object Float64Array]\"]=i[\"[object Int8Array]\"]=i[\"[object Int16Array]\"]=i[\"[object Int32Array]\"]=i[\"[object Uint8Array]\"]=i[\"[object Uint8ClampedArray]\"]=i[\"[object Uint16Array]\"]=i[\"[object Uint32Array]\"]=!0,i[\"[object Arguments]\"]=i[\"[object Array]\"]=i[\"[object ArrayBuffer]\"]=i[\"[object Boolean]\"]=i[\"[object DataView]\"]=i[\"[object Date]\"]=i[\"[object Error]\"]=i[\"[object Function]\"]=i[\"[object Map]\"]=i[\"[object Number]\"]=i[\"[object Object]\"]=i[\"[object RegExp]\"]=i[\"[object Set]\"]=i[\"[object String]\"]=i[\"[object WeakMap]\"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[n(e)]}},280:(e,t,r)=>{var n=r(5726),o=r(6916),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return o(e);var t=[];for(var r in Object(e))a.call(e,r)&&\"constructor\"!=r&&t.push(r);return t}},2545:e=>{e.exports=function(e,t){for(var r=-1,n=Array(e);++r{e.exports=function(e){return function(t){return e(t)}}},4757:e=>{e.exports=function(e,t){return e.has(t)}},4429:(e,t,r)=>{var n=r(5639)[\"__core-js_shared__\"];e.exports=n},7114:(e,t,r)=>{var n=r(8668),o=r(2908),a=r(4757);e.exports=function(e,t,r,i,s,u){var c=1&r,p=e.length,l=t.length;if(p!=l&&!(c&&l>p))return!1;var f=u.get(e),v=u.get(t);if(f&&v)return f==t&&v==e;var d=-1,h=!0,y=2&r?new n:void 0;for(u.set(e,t),u.set(t,e);++d{var n=r(2705),o=r(1149),a=r(7813),i=r(7114),s=r(8776),u=r(1814),c=n?n.prototype:void 0,p=c?c.valueOf:void 0;e.exports=function(e,t,r,n,c,l,f){switch(r){case\"[object DataView]\":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case\"[object ArrayBuffer]\":return!(e.byteLength!=t.byteLength||!l(new o(e),new o(t)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return a(+e,+t);case\"[object Error]\":return e.name==t.name&&e.message==t.message;case\"[object RegExp]\":case\"[object String]\":return e==t+\"\";case\"[object Map]\":var v=s;case\"[object Set]\":var d=1&n;if(v||(v=u),e.size!=t.size&&!d)return!1;var h=f.get(e);if(h)return h==t;n|=2,f.set(e,t);var y=i(v(e),v(t),n,c,l,f);return f.delete(e),y;case\"[object Symbol]\":if(p)return p.call(e)==p.call(t)}return!1}},6096:(e,t,r)=>{var n=r(8234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,a,i,s){var u=1&r,c=n(e),p=c.length;if(p!=n(t).length&&!u)return!1;for(var l=p;l--;){var f=c[l];if(!(u?f in t:o.call(t,f)))return!1}var v=s.get(e),d=s.get(t);if(v&&d)return v==t&&d==e;var h=!0;s.set(e,t),s.set(t,e);for(var y=u;++l{var n=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=n},8234:(e,t,r)=>{var n=r(8866),o=r(9551),a=r(3674);e.exports=function(e){return n(e,a,o)}},5050:(e,t,r)=>{var n=r(7019);e.exports=function(e,t){var r=e.__data__;return n(t)?r[\"string\"==typeof t?\"string\":\"hash\"]:r.map}},852:(e,t,r)=>{var n=r(8458),o=r(7801);e.exports=function(e,t){var r=o(e,t);return n(r)?r:void 0}},9607:(e,t,r)=>{var n=r(2705),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,s=n?n.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),r=e[s];try{e[s]=void 0;var n=!0}catch(e){}var o=i.call(e);return n&&(t?e[s]=r:delete e[s]),o}},9551:(e,t,r)=>{var n=r(4963),o=r(479),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),n(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=s},4160:(e,t,r)=>{var n=r(8552),o=r(7071),a=r(3818),i=r(8525),s=r(577),u=r(4239),c=r(346),p=\"[object Map]\",l=\"[object Promise]\",f=\"[object Set]\",v=\"[object WeakMap]\",d=\"[object DataView]\",h=c(n),y=c(o),b=c(a),_=c(i),m=c(s),g=u;(n&&g(new n(new ArrayBuffer(1)))!=d||o&&g(new o)!=p||a&&g(a.resolve())!=l||i&&g(new i)!=f||s&&g(new s)!=v)&&(g=function(e){var t=u(e),r=\"[object Object]\"==t?e.constructor:void 0,n=r?c(r):\"\";if(n)switch(n){case h:return d;case y:return p;case b:return l;case _:return f;case m:return v}return t}),e.exports=g},7801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},1789:(e,t,r)=>{var n=r(4536);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},7667:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var r=t[e];return\"__lodash_hash_undefined__\"===r?void 0:r}return o.call(t,e)?t[e]:void 0}},1327:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:o.call(t,e)}},1866:(e,t,r)=>{var n=r(4536);e.exports=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=n&&void 0===t?\"__lodash_hash_undefined__\":t,this}},5776:e=>{var t=/^(?:0|[1-9]\\d*)$/;e.exports=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&(\"number\"==n||\"symbol\"!=n&&t.test(e))&&e>-1&&e%1==0&&e{e.exports=function(e){var t=typeof e;return\"string\"==t||\"number\"==t||\"symbol\"==t||\"boolean\"==t?\"__proto__\"!==e:null===e}},5346:(e,t,r)=>{var n,o=r(4429),a=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\";e.exports=function(e){return!!a&&a in e}},5726:e=>{var t=Object.prototype;e.exports=function(e){var r=e&&e.constructor;return e===(\"function\"==typeof r&&r.prototype||t)}},7040:e=>{e.exports=function(){this.__data__=[],this.size=0}},4125:(e,t,r)=>{var n=r(8470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,r=n(t,e);return!(r<0||(r==t.length-1?t.pop():o.call(t,r,1),--this.size,0))}},2117:(e,t,r)=>{var n=r(8470);e.exports=function(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}},7518:(e,t,r)=>{var n=r(8470);e.exports=function(e){return n(this.__data__,e)>-1}},4705:(e,t,r)=>{var n=r(8470);e.exports=function(e,t){var r=this.__data__,o=n(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}},4785:(e,t,r)=>{var n=r(1989),o=r(8407),a=r(7071);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(a||o),string:new n}}},1285:(e,t,r)=>{var n=r(5050);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},6e3:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).get(e)}},9916:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).has(e)}},5265:(e,t,r)=>{var n=r(5050);e.exports=function(e,t){var r=n(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}},8776:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}},4536:(e,t,r)=>{var n=r(852)(Object,\"create\");e.exports=n},6916:(e,t,r)=>{var n=r(5569)(Object.keys,Object);e.exports=n},1167:(e,t,r)=>{e=r.nmd(e);var n=r(1957),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o&&n.process,s=function(){try{return a&&a.require&&a.require(\"util\").types||i&&i.binding&&i.binding(\"util\")}catch(e){}}();e.exports=s},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(r){return e(t(r))}}},5639:(e,t,r)=>{var n=r(1957),o=\"object\"==typeof self&&self&&self.Object===Object&&self,a=n||o||Function(\"return this\")();e.exports=a},619:e=>{e.exports=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this}},2385:e=>{e.exports=function(e){return this.__data__.has(e)}},1814:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}},7465:(e,t,r)=>{var n=r(8407);e.exports=function(){this.__data__=new n,this.size=0}},3779:e=>{e.exports=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}},7599:e=>{e.exports=function(e){return this.__data__.get(e)}},4758:e=>{e.exports=function(e){return this.__data__.has(e)}},4309:(e,t,r)=>{var n=r(8407),o=r(7071),a=r(3369);e.exports=function(e,t){var r=this.__data__;if(r instanceof n){var i=r.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new a(i)}return r.set(e,t),this.size=r.size,this}},346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}},7813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},5694:(e,t,r)=>{var n=r(9454),o=r(7005),a=Object.prototype,i=a.hasOwnProperty,s=a.propertyIsEnumerable,u=n(function(){return arguments}())?n:function(e){return o(e)&&i.call(e,\"callee\")&&!s.call(e,\"callee\")};e.exports=u},1469:e=>{var t=Array.isArray;e.exports=t},8612:(e,t,r)=>{var n=r(3560),o=r(1780);e.exports=function(e){return null!=e&&o(e.length)&&!n(e)}},4144:(e,t,r)=>{e=r.nmd(e);var n=r(5639),o=r(5062),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,s=i&&i.exports===a?n.Buffer:void 0,u=(s?s.isBuffer:void 0)||o;e.exports=u},8446:(e,t,r)=>{var n=r(939);e.exports=function(e,t){return n(e,t)}},3560:(e,t,r)=>{var n=r(4239),o=r(3218);e.exports=function(e){if(!o(e))return!1;var t=n(e);return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}},1780:e=>{e.exports=function(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},3218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}},7005:e=>{e.exports=function(e){return null!=e&&\"object\"==typeof e}},6719:(e,t,r)=>{var n=r(8749),o=r(1717),a=r(1167),i=a&&a.isTypedArray,s=i?o(i):n;e.exports=s},3674:(e,t,r)=>{var n=r(4636),o=r(280),a=r(8612);e.exports=function(e){return a(e)?n(e):o(e)}},479:e=>{e.exports=function(){return[]}},5062:e=>{e.exports=function(){return!1}},75:function(e){(function(){var t,r,n,o,a,i;\"undefined\"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:\"undefined\"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-a)/1e6},r=process.hrtime,o=(t=function(){var e;return 1e9*(e=r())[0]+e[1]})(),i=1e9*process.uptime(),a=o-i):Date.now?(e.exports=function(){return Date.now()-n},n=Date.now()):(e.exports=function(){return(new Date).getTime()-n},n=(new Date).getTime())}).call(this)},2703:(e,t,r)=>{\"use strict\";var n=r(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,a,i){if(i!==n){var s=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw s.name=\"Invariant Violation\",s}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return r.PropTypes=r,r}},5697:(e,t,r)=>{e.exports=r(2703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},4087:(e,t,r)=>{for(var n=r(75),o=\"undefined\"==typeof window?r.g:window,a=[\"moz\",\"webkit\"],i=\"AnimationFrame\",s=o[\"request\"+i],u=o[\"cancel\"+i]||o[\"cancelRequest\"+i],c=0;!s&&c{\"use strict\";t.exports=e}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var o={};return(()=>{\"use strict\";n.d(o,{default:()=>y});var e=n(9297),t=n.n(e),r=(n(5697),n(7403)),a=n(8446),i=n.n(a);function s(e){return(s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function u(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function c(e,t){for(var r=0;r 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\n\r\nfunction BaseEvent() {}\r\nBaseEvent.prototype = {\r\n triggerEvent: function (eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n for (var i = 0; i < callbacks.length; i += 1) {\r\n callbacks[i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function (eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function (eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n }\r\n i += 1;\r\n }\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n },\r\n};\r\n\r\n/* exported createTypedArray, createSizedArray */\r\n\r\nvar createTypedArray = (function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n return arr;\r\n }\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n } if (type === 'int16') {\r\n return new Int16Array(len);\r\n } if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n return createRegularArray(type, len);\r\n }\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n return createRegularArray;\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n return Array.apply(null, { length: len });\r\n}\r\n\r\n/* global svgNS */\r\n/* exported createNS */\r\n\r\nfunction createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n}\r\n\r\n/* exported createTag */\r\n\r\nfunction createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n}\r\n\r\nfunction DynamicPropertyContainer() {}\r\nDynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function () {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function (container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n },\r\n};\r\n\r\n/* exported getBlendMode */\r\n\r\nvar getBlendMode = (function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity',\r\n };\r\n\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n}());\r\n\r\n/* exported lineCapEnum, lineJoinEnum */\r\n\r\nvar lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n};\r\n\r\nvar lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\r\n};\r\n\r\n/* global createTypedArray */\r\n\r\n/*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n/**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\nvar Matrix = (function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2;\r\n // }\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [\r\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n ];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/* eslint-disable */\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\n/* eslint-disable */\r\nvar BezierFactory = (function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C(aA1) { return 3.0 * aA1; }\r\n\r\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n }\r\n\r\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); }\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n },\r\n };\r\n\r\n return ob;\r\n}());\r\n\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n if (!window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}());\r\n\r\n/* exported extendPrototype, getDescriptor, createProxyFunction */\r\n\r\nfunction extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n}\r\n\r\n/* global segmentsLengthPool, defaultCurveSegments, createSizedArray, bmPow, bmSqrt, bmFloor, createTypedArray, bezierLengthPool */\r\n/* exported bez */\r\n\r\nfunction bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function () {\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n if (!storedData[bezierName]) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0t0 = t0 * t0 * t0;\r\n //\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0t1 = t0 * t0 * t1;\r\n //\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1t1 = t0 * t1 * t1;\r\n //\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1t1 = t1 * t1 * t1;\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D,\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\n\r\n/* global _useWebWorker */\r\n\r\nvar dataManager = (function () {\r\n var _counterId = 1;\r\n var processes = [];\r\n var workerFn;\r\n var workerInstance;\r\n var workerProxy = {\r\n onmessage: function () {\r\n\r\n },\r\n postMessage: function (path) {\r\n workerFn({\r\n data: path,\r\n });\r\n },\r\n };\r\n var _workerSelf = {\r\n postMessage: function (data) {\r\n workerProxy.onmessage({\r\n data: data,\r\n });\r\n },\r\n };\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && _useWebWorker) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\r\n workerFn = fn;\r\n return workerProxy;\r\n }\r\n\r\n function setupWorker() {\r\n if (!workerInstance) {\r\n workerInstance = createWorker(function workerStart(e) {\r\n /* exported dataManager */\r\n\r\n function dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (('ks' in layerData) && !layerData.completed) {\r\n layerData.completed = true;\r\n if (layerData.tt) {\r\n layers[i - 1].td = layerData.tt;\r\n }\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n if (!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n } if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n } if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n } if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n var checkText = (function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s: documentData,\r\n t: 0,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n var j;\r\n var jLen;\r\n var pathData;\r\n var paths;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if (!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkPathProperties = (function () {\r\n var minimumVersion = [5, 7, 15];\r\n\r\n function updateTextLayer(textLayer) {\r\n var pathData = textLayer.t.p;\r\n if (typeof pathData.a === 'number') {\r\n pathData.a = {\r\n a: 0,\r\n k: pathData.a,\r\n };\r\n }\r\n if (typeof pathData.p === 'number') {\r\n pathData.p = {\r\n a: 0,\r\n k: pathData.p,\r\n };\r\n }\r\n if (typeof pathData.r === 'number') {\r\n pathData.r = {\r\n a: 0,\r\n k: pathData.r,\r\n };\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkPathProperties(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkPathProperties = checkPathProperties;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n }\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\r\n /* exported assetLoader */\r\n if (!_workerSelf.assetLoader) {\r\n _workerSelf.assetLoader = (function () {\r\n function formatResponse(xhr) {\r\n // using typeof doubles the time of execution of this method,\r\n // so if available, it's better to use the header to validate the type\r\n var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n if (xhr.response && typeof xhr.response === 'object') {\r\n return xhr.response;\r\n } if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n } if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n return null;\r\n }\r\n\r\n function loadAsset(path, fullPath, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n // set responseType after calling open or IE will break.\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n try {\r\n xhr.open('GET', path, true);\r\n } catch (error) {\r\n xhr.open('GET', fullPath + '/' + path, true);\r\n }\r\n xhr.send();\r\n }\r\n return {\r\n load: loadAsset,\r\n };\r\n }());\r\n }\r\n\r\n if (e.data.type === 'loadAnimation') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n _workerSelf.dataManager.completeData(animation);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: animation,\r\n status: 'success',\r\n });\r\n } else if (e.data.type === 'loadData') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n }\r\n });\r\n\r\n workerInstance.onmessage = function (event) {\r\n var data = event.data;\r\n var id = data.id;\r\n var process = processes[id];\r\n processes[id] = null;\r\n if (data.status === 'success') {\r\n process.onComplete(data.payload);\r\n } else if (process.onError) {\r\n process.onError();\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createProcess(onComplete, onError) {\r\n _counterId += 1;\r\n var id = 'processId_' + _counterId;\r\n processes[id] = {\r\n onComplete: onComplete,\r\n onError: onError,\r\n };\r\n return id;\r\n }\r\n\r\n function loadAnimation(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadAnimation',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function loadData(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadData',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function completeAnimation(anim, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'complete',\r\n animation: anim,\r\n id: processId,\r\n });\r\n }\r\n\r\n return {\r\n loadAnimation: loadAnimation,\r\n loadData: loadData,\r\n completeAnimation: completeAnimation,\r\n };\r\n}());\r\n\r\n/* exported getFontProperties */\r\n\r\nfunction getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal'; var\r\n fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight,\r\n };\r\n}\r\n\r\n/* global createNS, createTag, getFontProperties */\r\n/* exported FontManager */\r\n\r\nvar FontManager = (function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n };\r\n var combinedCharacters = [];\r\n // Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366,\r\n 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,\r\n 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n var surrogateModifiers = [\r\n 'd83cdffb',\r\n 'd83cdffc',\r\n 'd83cdffd',\r\n 'd83cdffe',\r\n 'd83cdfff',\r\n ];\r\n\r\n var zeroWidthJoiner = [65039, 8205];\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span');\r\n // Node is invisible to screen readers.\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerText = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return { node: node, w: width, parent: parentNode };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(def, fontData) {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily;\r\n // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs, fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n while (i < len) {\r\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n i += 1;\r\n }\r\n if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char)\r\n && console\r\n && console.warn // eslint-disable-line no-console\r\n && !this._warned\r\n ) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n // Canvas version\r\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n // SVG version\r\n // console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength()) / 100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function isModifier(firstCharCode, secondCharCode) {\r\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n return surrogateModifiers.indexOf(sum) !== -1;\r\n }\r\n\r\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n if (!secondCharCode) {\r\n return firstCharCode === zeroWidthJoiner[1];\r\n }\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(char) {\r\n return combinedCharacters.indexOf(char) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function () {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\r\n\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded,\r\n };\r\n\r\n Font.prototype = fontPrototype;\r\n\r\n return Font;\r\n}());\r\n\r\n/* global initialDefaultFrame, BezierFactory, degToRads, bez, createTypedArray */\r\n/* exported PropertyFactory */\r\n\r\nvar PropertyFactory = (function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyframeMetadata.bezierData) {\r\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyframeMetadata.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyframeMetadata.__fnct) {\r\n keyframeMetadata.__fnct = [];\r\n }\r\n if (!keyframeMetadata.__fnct[i]) {\r\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyframeMetadata.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct[i];\r\n }\r\n } else if (!keyframeMetadata.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.keyframeMetadata = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n // based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1,\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof (data.k[0]) === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp,\r\n };\r\n return ob;\r\n}());\r\n\r\n/* global Matrix, degToRads, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n/* exported TransformPropertyFactory */\r\n\r\nvar TransformPropertyFactory = (function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {\r\n //\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n // Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this);\r\n }\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n // sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);\r\n }\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this);\r\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = { _mdf: false, v: 1 };\r\n }\r\n this._isDirty = true;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient,\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, createSizedArray, pointPool */\r\n\r\nfunction ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n};\r\n\r\nShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n this._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n if (!arr[pos] || (arr[pos] && !replace)) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\n\r\n/* global extendPrototype, roundCorner, BezierFactory, shapePool, degToRads,\r\n shapeCollectionPool, PropertyFactory, bmMin, DynamicPropertyContainer */\r\n/* exported ShapePropertyFactory */\r\n\r\nvar ShapePropertyFactory = (function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n if ((nextKeyData.t - this.offsetTime) > frameNum) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n /// /\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n var i;\r\n var len = shape1._length;\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0]\r\n || shape1.v[i][1] !== shape2.v[i][1]\r\n || shape1.o[i][0] !== shape2.o[i][0]\r\n || shape1.o[i][1] !== shape2.o[i][1]\r\n || shape1.i[i][0] !== shape2.i[i][0]\r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n var i;\r\n var len = this.effectsSequence.length;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.keyframesMetadata = [];\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = { lastFrame: initFrame, lastIndex: 0 };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n /* this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n }; */\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n },\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n\r\n return EllShapePropertyFactory;\r\n }());\r\n\r\n var StarShapeProperty = (function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function () {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = (Math.PI * 2) / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\r\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function () {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = (Math.PI * 2) / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n },\r\n\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n\r\n return StarShapePropertyFactory;\r\n }());\r\n\r\n var RectShapeProperty = (function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape,\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n\r\n return RectShapePropertyFactory;\r\n }());\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\n\r\n/* global shapeCollectionPool, initialDefaultFrame, extendPrototype, DynamicPropertyContainer */\r\n/* exported ShapeModifiers */\r\n\r\nvar ShapeModifiers = (function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier() {}\r\nShapeModifier.prototype.initModifierProperties = function () {};\r\nShapeModifier.prototype.addShapeToModifier = function () {};\r\nShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, segmentsLengthPool, bez, shapePool, ShapeModifiers */\r\n\r\nfunction TrimModifier() {\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e,\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1,\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1,\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE,\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, roundCorner, ShapeModifiers */\r\n\r\nfunction RoundCornersModifier() {}\r\nextendPrototype([ShapeModifier], RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n return clonedPath;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, ShapeModifiers */\r\n\r\nfunction PuckerAndBloatModifier() {}\r\nextendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\nPuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n return clonedPath;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\nShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, TransformPropertyFactory, PropertyFactory, Matrix, ShapeModifiers */\r\n\r\nfunction RepeaterModifier() {}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n while (pos > 0) {\r\n pos -= 1;\r\n // this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n }\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr',\r\n };\r\n group.it.push({\r\n a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr',\r\n });\r\n\r\n this.arr.splice(0, 0, group);\r\n this._groups.splice(0, 0, group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies;\r\n /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1\r\n ? this.so.v\r\n : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n return hasReloaded;\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function () {};\r\n\r\nShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n\r\n/* global createSizedArray, shapePool */\r\n\r\nfunction ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n this._length = 0;\r\n};\r\n\r\n/* global createSizedArray, createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = { n: data[i].n, p: prop };\r\n }\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n/* global createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\nfunction GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n/* exported buildShapeString */\r\n\r\nvar buildShapeString = function (pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n};\r\n\r\n/* global Howl */\r\n/* exported audioControllerFactory */\r\n\r\nvar audioControllerFactory = (function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function (audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function (rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function (assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n } if (Howl) {\r\n return new Howl({\r\n src: [assetPath],\r\n });\r\n }\r\n return {\r\n isPlaying: false,\r\n play: function () { this.isPlaying = true; },\r\n seek: function () { this.isPlaying = false; },\r\n playing: function () {},\r\n rate: function () {},\r\n setVolume: function () {},\r\n };\r\n },\r\n setAudioFactory: function (audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function (value) {\r\n this._volume = value;\r\n this._updateVolume();\r\n },\r\n mute: function () {\r\n this._isMuted = true;\r\n this._updateVolume();\r\n },\r\n unmute: function () {\r\n this._isMuted = false;\r\n this._updateVolume();\r\n },\r\n getVolume: function () {\r\n return this._volume;\r\n },\r\n _updateVolume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n },\r\n };\r\n\r\n return function () {\r\n return new AudioController();\r\n };\r\n}());\r\n\r\n/* global createTag, createNS, isSafari, dataManager */\r\n/* exported ImagePreloader */\r\n\r\nvar ImagePreloader = (function () {\r\n var proxyImage = (function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }());\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n clearInterval(intervalId);\r\n }\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data,\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n dataManager.loadData(path, function (footageData) {\r\n ob.img = footageData;\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t || assets[i].t === 'seq') {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType,\r\n };\r\n\r\n return ImagePreloaderFactory;\r\n}());\r\n\r\n/* exported featureSupport */\r\n\r\nvar featureSupport = (function () {\r\n var ob = {\r\n maskType: true,\r\n };\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n return ob;\r\n}());\r\n\r\n/* global createNS */\r\n/* exported filtersFactory */\r\n\r\nvar filtersFactory = (function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray, PropertyFactory, TextAnimatorDataProperty, bez, addHueToRGB,\r\n addSaturationToRGB, addBrightnessToRGB, LetterProps, Matrix, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {},\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: [],\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[i + 1],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[0],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO;\r\n\r\n //\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += (alignment[0] * letters[i].an) * 0.005;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n flag = true;\r\n // Force alignment only works with a single line for now\r\n if (this._pathData.a.v) {\r\n currentLength = letters[0].an * 0.5 + ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) / (len - 1);\r\n currentLength += this._pathData.f.v;\r\n }\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1);\r\n } else {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n\r\n matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0);\r\n if (this._pathData.p.v) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = (Math.atan(tanAngle) * 180) / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate((-rot * Math.PI) / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= (alignment[0] * letters[i].an) * 0.005;\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0);\r\n xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n/* global PropertyFactory, degToRads, TextSelectorProp */\r\n/* exported TextAnimatorDataProperty */\r\n\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = { propType: false };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\r\n };\r\n\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\n\r\nfunction LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true,\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n return updated;\r\n};\r\n\r\n/* global FontManager, initialDefaultFrame, getFontProperties */\r\n/* exported TextProperty */\r\n\r\nfunction TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false,\r\n\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\nTextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nTextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n};\r\n\r\nTextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var i; var\r\n len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n};\r\n\r\nTextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0; var\r\n len = textKeys.length;\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function (text) {\r\n var charactersArray = [];\r\n var i = 0;\r\n var len = text.length;\r\n var charCode;\r\n var secondCharCode;\r\n var shouldCombine = false;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (FontManager.isCombinedCharacter(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n shouldCombine = false;\r\n } else {\r\n charactersArray.push(text.substr(i, 2));\r\n }\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (charCode > 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n shouldCombine = true;\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n shouldCombine = true;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n};\r\n\r\nTextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i; var\r\n len;\r\n var newLineFlag; var index = 0; var\r\n val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0; var currentPos = 0; var currentLine = 0; var\r\n lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j; var\r\n jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData; var\r\n cLength = 0;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var charCode;\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight; var\r\n finalText;\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\r\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += (fontData.ascent * documentData.finalSize) / 100;\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({\r\n l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0,\r\n });\r\n if (anchorGrouping == 2) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a; var animatorData; var\r\n letterData;\r\n jLen = animators.length;\r\n var based; var ind; var\r\n indexes = [];\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1; var\r\n newInd;\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n};\r\n\r\nTextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\n/* global extendPrototype, BezierFactory, PropertyFactory, DynamicPropertyContainer */\r\n/* exported TextSelectorProp */\r\n\r\nvar TextSelectorProp = (function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = { v: 100 };\r\n }\r\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function (ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n // var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n // Smoothness implementation.\r\n // The smoothness represents a reduced range of the original [0; 1] range.\r\n // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n // Steps are:\r\n // - find the lower value of the new range (threshold)\r\n // - if multiplier is smaller than that value, floor it to 0\r\n // - if it is larger,\r\n // - subtract the threshold\r\n // - divide it by the smoothness (this will return the range to [0; 1])\r\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n var threshold = 0.5 - smoothness * 0.5;\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n return mult * this.a.v;\r\n },\r\n getValue: function (newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = (this.e.v / divisor) + o;\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n },\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, pooling */\r\n/* exported poolFactory */\r\n\r\nvar poolFactory = (function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n var ob = {\r\n newElement: newElement,\r\n release: release,\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n if (_release) {\r\n _release(element);\r\n }\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported pooling */\r\n\r\nvar pooling = (function () {\r\n function double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n double: double,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, poolFactory */\r\n/* exported pointPool */\r\n\r\nvar pointPool = (function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* global ShapePath, pointPool, poolFactory */\r\n/* exported shapePool */\r\n\r\nvar shapePool = (function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n\r\n return factory;\r\n}());\r\n\r\n/* global createSizedArray, ShapeCollection, shapePool, pooling */\r\n/* exported shapeCollectionPool */\r\n\r\nvar shapeCollectionPool = (function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release,\r\n };\r\n\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global poolFactory, bezierLengthPool */\r\n/* exported segmentsLengthPool */\r\n\r\nvar segmentsLengthPool = (function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0,\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n}());\r\n\r\n/* global createTypedArray, defaultCurveSegments, poolFactory */\r\n/* exported bezierLengthPool */\r\n\r\nvar bezierLengthPool = (function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* exported markerParser */\r\n\r\nvar markerParser = (\r\n\r\n function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr,\r\n };\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i],\r\n };\r\n }\r\n }\r\n markers.push(markerData);\r\n }\r\n return markers;\r\n };\r\n }());\r\n\r\n/* global AudioElement, FootageElement, FontManager */\r\n\r\nfunction BaseRenderer() {}\r\nBaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n case 15:\r\n return this.createFootage(layer);\r\n default:\r\n return this.createNull(layer);\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h,\r\n };\r\n};\r\n\r\n/* global createElementID, extendPrototype, BaseRenderer, NullElement, SVGShapeElement, SVGTextLottieElement,\r\nIImageElement, SVGCompElement, ISolidElement, createNS, locationHref, createSizedArray, expressionsPlugin */\r\n\r\nfunction SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: !((config && config.hideOnTransparent === false)),\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '100%',\r\n height: (config && config.filterSize && config.filterSize.height) || '100%',\r\n x: (config && config.filterSize && config.filterSize.x) || '0%',\r\n y: (config && config.filterSize && config.filterSize.y) || '0%',\r\n },\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n}\r\n\r\nextendPrototype([BaseRenderer], SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n }\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\r\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n // Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + maskId + ')');\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if (expressionsPlugin) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element, pos);\r\n if (this.layers[pos].tt) {\r\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n if (!newElement) {\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\n/* global CVContextData, Matrix, extendPrototype, BaseRenderer, CVShapeElement, CVTextElement,\r\nCVImageElement, CVCompElement, CVSolidElement, SVGRenderer, createTag, createSizedArray */\r\n\r\nfunction CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1,\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer], CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]);\r\n // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0,\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\r\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel;\r\n var animationRel;\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function (num, forceRender) {\r\n if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) {\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\n/* global extendPrototype, BaseRenderer, SVGRenderer, SVGShapeElement, HShapeElement, SVGTextLottieElement,\r\nHTextElement, HCameraElement, IImageElement, HImageElement, SVGCompElement, HCompElement, ISolidElement,\r\nHSolidElement, styleDiv, createTag, createNS */\r\n\r\nfunction HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '400%',\r\n height: (config && config.filterSize && config.filterSize.height) || '400%',\r\n x: (config && config.filterSize && config.filterSize.x) || '-100%',\r\n y: (config && config.filterSize && config.filterSize.y) || '-100%',\r\n },\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n}\r\n\r\nextendPrototype([BaseRenderer], HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container);\r\n // this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type,\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n // Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / (this.globalData.compSize.w);\r\n sy = elementWidth / (this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2);\r\n } else {\r\n sx = elementHeight / (this.globalData.compSize.h);\r\n sy = elementHeight / (this.globalData.compSize.h);\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function () {\r\n this.buildAllItems();\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\n/* global createSizedArray, createElementID, PropertyFactory, ShapePropertyFactory, createNS, locationHref */\r\n\r\nfunction MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n for (i = 0; i < len; i += 1) {\r\n if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: '',\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0,\r\n };\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + layerId + '_' + count + ')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect,\r\n };\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n\r\n len = currentMasks.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + locationHref + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + locationHref + '#' + this.storedData[i].filterId + ')');\r\n }\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n }\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n }\r\n // pathNodes.__renderedString = pathString;\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement() {}\r\n\r\nHierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function () {\r\n // element's parent list\r\n this.hierarchy = [];\r\n // if element is parent of another layer _isParent will be true\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function (hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function () {\r\n this._isParent = true;\r\n },\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function () {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement() {}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function () {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n // list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function (num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n },\r\n};\r\n\r\n/* global TransformPropertyFactory, Matrix */\r\n\r\nfunction TransformElement() {}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function () {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix(),\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n // TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n // this.createElements();\r\n }\r\n },\r\n renderTransform: function () {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length;\r\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function (pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix(),\r\n};\r\n\r\nfunction RenderableElement() {\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function () {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n // layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n // list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function (num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function () {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function (num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function () {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n },\r\n sourceRectAtTime: function () {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100,\r\n };\r\n },\r\n getLayerSize: function () {\r\n if (this.data.ty === 5) {\r\n return { w: this.data.textData.width, h: this.data.textData.height };\r\n }\r\n return { w: this.data.width, h: this.data.height };\r\n },\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, createProxyFunction */\r\n\r\nfunction RenderableDOMElement() {}\r\n\r\n(function () {\r\n var _prototype = {\r\n initElement: function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function () {},\r\n prepareFrame: function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function () {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n },\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\n\r\n/* exported ProcessedElement */\r\n\r\nfunction ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n}\r\n\r\n/* global createNS */\r\n\r\nfunction SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n};\r\n\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0;\r\n var len = transformers.length;\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n};\r\n\r\n/* exported SVGTransformData */\r\n\r\nfunction SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container,\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\n\r\n/* global DashProperty, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n/* global PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n/* global PropertyFactory, degToRads, GradientProperty, createElementID, createNS, locationHref,\r\nextendPrototype, DynamicPropertyContainer, lineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + opacityId + ')');\r\n if (data.ty === 'gs') {\r\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n/* global PropertyFactory, DashProperty, extendPrototype, SVGGradientFillStyleData, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n/* global createNS */\r\n/* exported ShapeGroupData */\r\n\r\nfunction ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\n\r\n/* global Matrix, buildShapeString, bmFloor */\r\n/* exported SVGElementsRenderer */\r\n\r\nvar SVGElementsRenderer = (function () {\r\n var _identityMatrix = new Matrix();\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction,\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n case 'gf':\r\n return renderGradient;\r\n case 'gs':\r\n return renderGradientStroke;\r\n case 'st':\r\n return renderStroke;\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n case 'tr':\r\n return renderContentTransform;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n }\r\n // gfill.setAttribute('fy','200');\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global Matrix */\r\n\r\nfunction ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n addTransformSequence: function (transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n var sequence = this.sequences[key];\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false,\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n return sequence;\r\n },\r\n processSequence: function (sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function (isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function () {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n },\r\n};\r\n\r\n/* global ShapePropertyFactory, SVGShapeData */\r\n\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: [],\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n/* global LayerExpressionInterface, EffectsExpressionInterface, CompExpressionInterface, ShapeExpressionInterface,\r\nTextExpressionInterface, getBlendMode,createElementID, EffectsManager */\r\n\r\nfunction BaseElement() {\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function () {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n while (i < len) {\r\n if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function () {\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function () {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function (data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n\r\n // Stretch factor for old animations missing this property.\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function () {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function () {},\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement */\r\n\r\nfunction NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function () {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nNullElement.prototype.destroy = function () {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nNullElement.prototype.hide = function () {\r\n};\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n/* global filtersFactory, featureSupport, filtersFactory, createElementID, createNS, MaskElement, SVGEffects, locationHref */\r\n\r\nfunction SVGBaseElement() {\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function () {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function () {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n // If this layer acts as a mask for the following layer\r\n var filId;\r\n var fil;\r\n var gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if (this.data.td == 2) { // eslint-disable-line eqeqeq\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n /// /\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\r\n /// /\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n /// /\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n }\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function () {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function () {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function (id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n },\r\n};\r\n\r\n/* global ProcessedElement */\r\n\r\nfunction IShapeElement() {\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function (data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function (data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function () {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n var i;\r\n var len = this.shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n searchProcessedElement: function (elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function (elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while (i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function (num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n },\r\n};\r\n\r\n/* global TextProperty, TextAnimatorProperty, buildShapeString, LetterProps */\r\n\r\nfunction ITextElement() {\r\n}\r\n\r\nITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\nITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function () {\r\n\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement */\r\n\r\nfunction ICompElement() {}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\n/* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n}; */\r\n\r\nICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n var i;\r\n var len = this.elements.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n // This iteration needs to be backwards because of how expressions connect between each other\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, createNS */\r\n\r\nfunction IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0, left: 0, width: this.assetData.w, height: this.assetData.h,\r\n };\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n\r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n};\r\n\r\n/* global extendPrototype, IImageElement, createNS */\r\n\r\nfunction ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect');\r\n /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global PropertyFactory, extendPrototype, RenderableElement, BaseElement, FrameElement */\r\n\r\nfunction AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing()\r\n || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n ) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n};\r\n\r\nAudioElement.prototype.show = function () {\r\n // this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function (volumeValue) {\r\n this.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function () {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function () {\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, BaseElement, FrameElement, FootageInterface */\r\n\r\nfunction FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n}\r\n\r\nFootageElement.prototype.prepareFrame = function () {\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\nFootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nFootageElement.prototype.renderFrame = function () {\r\n};\r\n\r\nFootageElement.prototype.destroy = function () {\r\n};\r\n\r\nFootageElement.prototype.initExpressions = function () {\r\n this.layerInterface = FootageInterface(this);\r\n};\r\n\r\nFootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, SVGRenderer, ICompElement, SVGBaseElement */\r\n\r\nfunction SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n // this.layerElement = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createNS */\r\n\r\nfunction SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\nSVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildNewText = function () {\r\n var i;\r\n var len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData;\r\n var charData;\r\n for (i = 0; i < len; i += 1) {\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs ? 'path' : 'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if (!singleShape) {\r\n tSpan.setAttribute('d', this.createPathShape(matrixHelper, shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper, shapes);\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height,\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement,\r\nFrameElement, RenderableDOMElement, Matrix, SVGStyleData, SVGStrokeStyleData, SVGFillStyleData,\r\nSVGGradientFillStyleData, SVGGradientStrokeStyleData, locationHref, getBlendMode, ShapeGroupData,\r\nTransformPropertyFactory, SVGTransformData, ShapePropertyFactory, SVGShapeData, SVGElementsRenderer, ShapeModifiers,\r\nlineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function () {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\nSVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n pathElement.setAttribute('fill-opacity', '0');\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data,\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if (arr[i]._render) {\r\n if (itemsData[i].style.pElem.parentNode !== container) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n if (arr[i]._render) {\r\n if (itemsData[i].gr.parentNode !== container) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n // Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTintFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', (colorWhite[0] - colorBlack[0]) + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGFillFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGGaussianBlurEffect(filter, filterManager) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n}\r\n\r\nSVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\r\n\r\n // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n};\r\n\r\n/* global createNS, createElementID, locationHref, bmFloor */\r\n\r\nfunction SVGStrokeEffect(elem, filterManager) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({ p: path, m: i });\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTritoneFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n // var opacity = this.filterManager.effectElements[2].p.v/100;\r\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGProLevelsFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, { length: segments });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n};\r\n\r\n/* global createNS, rgbToHex, degToRads */\r\n\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', 'drop_shadow_1');\r\n feOffset.setAttribute('result', 'drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', 'drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', 'drop_shadow_3');\r\n feComposite.setAttribute('in2', 'drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', 'drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\r\n }\r\n};\r\n\r\n/* global createElementID, createNS */\r\n\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if (!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n i += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n};\r\n\r\n/* global createElementID, filtersFactory, SVGTintFilter, SVGFillFilter, SVGStrokeEffect, SVGTritoneFilter,\r\nSVGProLevelsFilter, SVGDropShadowEffect, SVGMatte3Effect, SVGGaussianBlurEffect, locationHref */\r\n\r\nfunction SVGEffects(elem) {\r\n var i;\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n if (elem.data.ef[i].ty === 20) {\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 21) {\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 22) {\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 23) {\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 24) {\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 25) {\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 28) {\r\n // count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n } else if (elem.data.ef[i].ty === 29) {\r\n count += 1;\r\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\r\n }\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\n\r\n/* global Matrix, createTypedArray */\r\n\r\nfunction CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n};\r\n\r\n/* global CVEffects, getBlendMode, CVMaskElement, Matrix */\r\n\r\nfunction CVBaseElement() {\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function () {},\r\n initRendererElement: function () {},\r\n createContainerElements: function () {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function () {},\r\n setBlendMode: function () {\r\n var globalData = this.globalData;\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix(),\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement,HierarchyElement, FrameElement,\r\nRenderableElement, SVGShapeElement, IImageElement, createTag */\r\n\r\nfunction CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, CanvasRenderer, ICompElement, CVBaseElement */\r\n\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\n/* global createSizedArray, ShapePropertyFactory, MaskElement */\r\n\r\nfunction CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n};\r\n\r\n/* global ShapeTransformManager, extendPrototype, BaseElement, TransformElement, CVBaseElement, IShapeElement,\r\nHierarchyElement, FrameElement, RenderableElement, RenderableDOMElement, PropertyFactory, degToRads, GradientProperty,\r\nDashProperty, TransformPropertyFactory, CVShapeData, ShapeModifiers, bmFloor, lineCapEnum, lineJoinEnum */\r\n\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true,\r\n };\r\n var elementData = {};\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = lineCapEnum[data.lc || 2];\r\n styleElem.lj = lineJoinEnum[data.lj || 2];\r\n if (data.lj == 1) { // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: [],\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\r\n },\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {\r\n //\r\n }\r\n }\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\r\n });\r\n shapeNodes.push({\r\n t: 'z',\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb('\r\n + bmFloor(itemData.c.v[0]) + ','\r\n + bmFloor(itemData.c.v[1]) + ','\r\n + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement,\r\nSVGShapeElement, IImageElement */\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement,\r\nRenderableElement, ITextElement, createTag, createSizedArray */\r\n\r\nfunction CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: '',\r\n };\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n // this.tHelper.font = this.values.fValue;\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n matrixHelper.reset();\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for (j = 0; j < jLen; j += 1) {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[j] = pathArr;\r\n }\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = { elem: commands };\r\n }\r\n cnt += 1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, createNS, styleDiv, CVEffects, MaskElement, SVGBaseElement, HybridRenderer */\r\n\r\nfunction HBaseElement() {}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function () {},\r\n initRendererElement: function () {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function () {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function () {\r\n },\r\n setMatte: function () {},\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, createNS, createTag */\r\n\r\nfunction HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function () {\r\n var rect;\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, HybridRenderer, ICompElement, HBaseElement */\r\n\r\nfunction HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements();\r\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n};\r\n\r\n/* global createNS, extendPrototype, BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement,\r\nHierarchyElement, FrameElement, RenderableElement, createNS, bmMin, bmSqrt, bmMin, bmMax, bmPow */\r\n\r\nfunction HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n}\r\nextendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n};\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n};\r\n\r\nHShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n};\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n};\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0,\r\n};\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b |= 0; // eslint-disable-line no-bitwise\r\n a |= 0; // eslint-disable-line no-bitwise\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {\r\n //\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n};\r\n\r\nHShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i]\r\n + 3 * bmPow(1 - t, 2) * t * p1[i]\r\n + 3 * (1 - t) * bmPow(t, 2) * p2[i]\r\n + bmPow(t, 3) * p3[i];\r\n};\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n }\r\n }\r\n};\r\n\r\nHShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x\r\n && this.currentBBox.y <= box.y\r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n};\r\n\r\nHShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n // var tempBoundingBox = this.shapeCont.getBBox();\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createTag, styleDiv, createNS, lineJoinEnum, lineCapEnum */\r\n\r\nfunction HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i;\r\n var len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n // tSpan.setAttribute('visibility', 'hidden');\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if (shapeData && shapeData.shapes) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', (boundingBox.x - 1) + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n //\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n } if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n }\r\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n if (this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement,\r\nFrameElement, RenderableElement, createNS */\r\n\r\nfunction HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\nHImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n};\r\n\r\n/* global PropertyFactory, degToRads, Matrix, extendPrototype, BaseElement, FrameElement, HierarchyElement */\r\n\r\nfunction HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n\r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this,\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function () {\r\n};\r\n\r\nHCameraElement.prototype.hide = function () {\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n if (_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n if (this.a) {\r\n var diffVector;\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\r\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = (Math.atan2(lookDir[1], lookLengthOnXZ));\r\n var mRotationY = (Math.atan2(lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function () {\r\n};\r\nHCameraElement.prototype.getBaseElement = function () { return null; };\r\n\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, AnimationItem */\r\n/* exported animationManager */\r\n\r\nvar animationManager = (function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n var i = 0;\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n i += 1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({ elem: element, animation: animItem });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for (i = (len - 1); i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n // moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\n/* global createElementID, subframeEnabled, ProjectInterface, ImagePreloader, audioControllerFactory, extendPrototype, BaseEvent,\r\nCanvasRenderer, SVGRenderer, HybridRenderer, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, markerParser */\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n this.configAnimation = this.configAnimation.bind(this);\r\n this.onSetupError = this.onSetupError.bind(this);\r\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = 'svg';\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n switch (animType) {\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n if (params.loop === ''\r\n || params.loop === null\r\n || params.loop === undefined\r\n || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n if (params.animationData) {\r\n this.setupAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n dataManager.loadAnimation(\r\n params.path,\r\n this.configAnimation,\r\n this.onSetupError\r\n );\r\n }\r\n};\r\n\r\nAnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n};\r\n\r\nAnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(\r\n data,\r\n this.configAnimation\r\n );\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (typeof animationData !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData,\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value\r\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value\r\n : wrapperAttributes.getNamedItem('bm-path')\r\n ? wrapperAttributes.getNamedItem('bm-path').value\r\n : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value\r\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\r\n : wrapperAttributes.getNamedItem('bm-renderer')\r\n ? wrapperAttributes.getNamedItem('bm-renderer').value\r\n : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\r\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\r\n : wrapperAttributes.getNamedItem('bm-loop')\r\n ? wrapperAttributes.getNamedItem('bm-loop').value\r\n : '';\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\r\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\r\n : wrapperAttributes.getNamedItem('bm-autoplay')\r\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\r\n : true;\r\n params.autoplay = autoplay !== 'false';\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value\r\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value\r\n : wrapperAttributes.getNamedItem('bm-name')\r\n ? wrapperAttributes.getNamedItem('bm-name').value\r\n : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\r\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\r\n : wrapperAttributes.getNamedItem('bm-prerender')\r\n ? wrapperAttributes.getNamedItem('bm-prerender').value\r\n : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if (data.assets) {\r\n len = data.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(\r\n this.animationData,\r\n this.onSegmentComplete\r\n );\r\n};\r\n\r\nAnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n};\r\n\r\nAnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.animationData = animData;\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n this.renderer.configAnimation(animData);\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded\r\n && this.renderer.globalData.fontManager.isLoaded\r\n && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas')\r\n && (this.imagePreloader.loadedFootages())\r\n ) {\r\n this.isLoaded = true;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i;\r\n var len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name !== name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n case 'drawnFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\n/* global CompExpressionInterface, expressionsPlugin: writable */\r\n/* exported expressionsPlugin */\r\n\r\nvar Expressions = (function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\n/* eslint-disable camelcase, no-unused-vars */\r\n/* global BMMath, BezierFactory, createTypedArray, degToRads, shapePool */\r\n\r\nvar ExpressionManager = (function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n var XMLHttpRequest = null;\r\n var fetch = null;\r\n var frames = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = typeof a;\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a - b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n default: break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n b = l; // achromatic\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if (t <= tMin) {\r\n return value1;\r\n } if (t >= tMax) {\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n return arr;\r\n }\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n return arr;\r\n }\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function () {\r\n return thisProperty.v;\r\n },\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n\r\n var scoped_bm_rt;\r\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\r\n // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n iWiggle += 1;\r\n }\r\n // var rnd2 = BMMath.random();\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n }\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n var mult = fn(t);\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n return arr;\r\n }\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n break;\r\n }\r\n }\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: [],\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n\r\n lenKey = arr.length;\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n return obKey;\r\n }\r\n\r\n function framesToTime(fr, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return fr / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n return value.substring(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n return value.substr(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === 'shape') {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\n\r\n/* global ExpressionManager, createTypedArray */\r\n/* exported expressionHelpers */\r\n\r\nvar expressionHelpers = (function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if (v1.length) {\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n // frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, Matrix, TransformPropertyFactory, expressionHelpers, PropertyFactory, expressionHelpers,\r\ninitialDefaultFrame, shapePool, ShapePropertyFactory, bez, extendPrototype, ExpressionManager, createSizedArray */\r\n\r\n(function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n return ret;\r\n }\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix(),\r\n };\r\n }\r\n /// /\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(\r\n -anchor[0] * this.a.mult,\r\n -anchor[1] * this.a.mult,\r\n anchor[2] * this.a.mult\r\n );\r\n }\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(\r\n scale[0] * this.s.mult,\r\n scale[1] * this.s.mult,\r\n scale[2] * this.s.mult\r\n );\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult)\r\n .rotateY(rotationY * this.ry.mult)\r\n .rotateX(rotationX * this.rx.mult)\r\n .rotateZ(-orientation[2] * this.or.mult)\r\n .rotateY(orientation[1] * this.or.mult)\r\n .rotateX(orientation[0] * this.or.mult);\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(\r\n positionX * this.px.mult,\r\n positionY * this.py.mult,\r\n -positionZ * this.pz.mult\r\n );\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(\r\n position[0] * this.p.mult,\r\n position[1] * this.p.mult,\r\n -position[2] * this.p.mult\r\n );\r\n }\r\n return matrix;\r\n /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container);\r\n // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value,\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame,\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n ShapeExpressions.prototype = {\r\n vertices: function (prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n return arr;\r\n },\r\n points: function (time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function (time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function (time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function () {\r\n return this.v.c;\r\n },\r\n pointOnPath: function (perc, time) {\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function (perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) { // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) { // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n\r\n/* global ExpressionManager, TextProperty */\r\n\r\n(function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n}());\r\n\r\n/* global propertyGroupFactory, PropertyInterface */\r\n/* exported ShapePathInterface */\r\n\r\nvar ShapePathInterface = (\r\n\r\n function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n shape: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n ix: { value: shape.ix },\r\n propertyIndex: { value: shape.ix },\r\n mn: { value: shape.mn },\r\n propertyGroup: { value: propertyGroup },\r\n });\r\n return interfaceFunction;\r\n };\r\n }()\r\n);\r\n\r\n/* exported propertyGroupFactory */\r\n\r\nvar propertyGroupFactory = (function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n}());\r\n\r\n/* exported PropertyInterface */\r\n\r\nvar PropertyInterface = (function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName,\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface, PropertyInterface, propertyGroupFactory, ShapePathInterface */\r\n/* exported ShapeExpressionInterface */\r\n\r\nvar ShapeExpressionInterface = (function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {\r\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'gf') {\r\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else {\r\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function () {\r\n return shape.nm;\r\n },\r\n });\r\n // interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Start Point' || val === 'start point') {\r\n return interfaceFunction.startPoint;\r\n }\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n startPoint: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n endPoint: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n type: {\r\n get: function () {\r\n return 'a';\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\r\n });\r\n }\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n } if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w),\r\n },\r\n dash: {\r\n get: function () {\r\n return dashOb;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p),\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a),\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r),\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt),\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or),\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os),\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir),\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n } if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n return interfaces[value - 1];\r\n }\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported TextExpressionInterface */\r\n\r\nvar TextExpressionInterface = (function () {\r\n return function (elem) {\r\n var _prevValue;\r\n var _sourceText;\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function () {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n return _sourceText;\r\n },\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global Matrix, MaskManagerInterface, TransformExpressionInterface, getDescriptor */\r\n/* exported LayerExpressionInterface */\r\n\r\nvar LayerExpressionInterface = (function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n default:\r\n return null;\r\n }\r\n }\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function () {\r\n return elem.hierarchy.length;\r\n },\r\n },\r\n parent: {\r\n get: function () {\r\n return elem.hierarchy[0].layerInterface;\r\n },\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n },\r\n },\r\n active: {\r\n get: function () {\r\n return elem.isInRange;\r\n },\r\n },\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global */\r\n/* exported FootageInterface */\r\n\r\nvar FootageInterface = (function () {\r\n var outlineInterfaceFactory = (function (elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n return '';\r\n }\r\n return init;\r\n });\r\n\r\n var dataInterfaceFactory = function (elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported CompExpressionInterface */\r\n\r\nvar CompExpressionInterface = (function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n // return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface */\r\n/* exported TransformExpressionInterface */\r\n\r\nvar TransformExpressionInterface = (function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry),\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s),\r\n });\r\n var _px;\r\n var _py;\r\n var _pz;\r\n var _transformFactory;\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function () {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n return [\r\n _px(),\r\n _py(),\r\n _pz ? _pz() : 0];\r\n },\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or),\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\n\r\n/* exported ProjectInterface */\r\n\r\nvar ProjectInterface = (function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\n\r\n/* global propertyGroupFactory, ExpressionPropertyInterface, PropertyInterface */\r\n/* exported EffectsExpressionInterface */\r\n\r\nvar EffectsExpressionInterface = (function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface,\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n var groupInterface = function (name) {\r\n i = 0;\r\n len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function () {\r\n return effects.length;\r\n },\r\n });\r\n return groupInterface;\r\n }\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n return effectElements[i]();\r\n }\r\n i += 1;\r\n }\r\n throw new Error();\r\n }\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function () {\r\n return effectElements[0]();\r\n },\r\n });\r\n }\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function () {\r\n return data.np;\r\n },\r\n },\r\n _name: { value: data.nm },\r\n propertyGroup: { value: _propertyGroup },\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported MaskManagerInterface */\r\n\r\nvar MaskManagerInterface = (function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function () {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n },\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function () {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n return this._mask.op.v * 100;\r\n },\r\n });\r\n\r\n var MaskManager = function (maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n var i;\r\n var len = maskManager.viewData.length;\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function (name) {\r\n i = 0;\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n return maskFunction;\r\n };\r\n return MaskManager;\r\n}());\r\n\r\n/* global createTypedArray */\r\n/* exported ExpressionPropertyInterface */\r\n\r\nvar ExpressionPropertyInterface = (function () {\r\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };\r\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function () {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n },\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n var value = '';\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = (property.data && property.data.l) || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n // TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n } if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n}());\r\n\r\n/* global expressionHelpers, TextSelectorProp, ExpressionManager */\r\n/* exported TextExpressionSelectorPropFactory */\r\n\r\nvar TextExpressionSelectorPropFactory = (function () { // eslint-disable-line no-unused-vars\r\n function getValueProxy(index, total) {\r\n this.textIndex = index + 1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function (elem, data) {\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1, 1, 1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if (this.kf) {\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n}());\r\n\r\nvar propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\nTextSelectorProp.getTextSelectorProp = function (elem, data, arr) {\r\n if (data.t === 1) {\r\n return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef\r\n }\r\n return propertyGetTextProp(elem, data, arr);\r\n};\r\n\r\n/* global PropertyFactory */\r\n/* exported SliderEffect, AngleEffect, ColorEffect, PointEffect, LayerIndexEffect, MaskIndexEffect, CheckboxEffect, NoValueEffect */\r\n\r\nfunction SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction NoValueEffect() {\r\n this.p = {};\r\n}\r\n\r\n/* global extendPrototype, SliderEffect, AngleEffect, ColorEffect, PointEffect, CheckboxEffect, LayerIndexEffect,\r\nMaskIndexEffect, NoValueEffect, DynamicPropertyContainer */\r\n\r\nfunction EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data, element) {\r\n this.init(data, element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n\r\nvar lottie = {};\r\n\r\nfunction setLocationHref(href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction setIDPrefix(prefix) {\r\n idPrefix = prefix;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n default:\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n case 'matrix':\r\n return Matrix;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n// lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.useWebWorker = function (flag) {\r\n _useWebWorker = flag;\r\n};\r\nlottie.setIDPrefix = setIDPrefix;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.8.1';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nvar queryString;\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: '',\r\n };\r\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","var createDefinition = function (propNames) { return ({\n isEnabled: function (props) { return propNames.some(function (name) { return !!props[name]; }); },\n}); };\nvar featureDefinitions = {\n measureLayout: createDefinition([\n \"layout\",\n \"layoutId\",\n \"drag\",\n \"_layoutResetTransform\",\n ]),\n animation: createDefinition([\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n ]),\n exit: createDefinition([\"exit\"]),\n drag: createDefinition([\"drag\", \"dragControls\"]),\n focus: createDefinition([\"whileFocus\"]),\n hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n pan: createDefinition([\n \"onPan\",\n \"onPanStart\",\n \"onPanSessionStart\",\n \"onPanEnd\",\n ]),\n layoutAnimation: createDefinition([\"layout\", \"layoutId\"]),\n};\nfunction loadFeatures(features) {\n for (var key in features) {\n var Component = features[key];\n if (Component !== null)\n featureDefinitions[key].Component = Component;\n }\n}\n\nexport { featureDefinitions, loadFeatures };\n","import { createContext } from 'react';\n\nvar LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { __assign } from 'tslib';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { featureDefinitions } from './definitions.js';\nimport { invariant } from 'hey-listen';\nimport { LazyContext } from '../../context/LazyContext.js';\n\nvar featureNames = Object.keys(featureDefinitions);\nvar numFeatures = featureNames.length;\n/**\n * Load features via renderless components based on the provided MotionProps.\n */\nfunction useFeatures(props, visualElement, preloadedFeatures) {\n var features = [];\n var lazyContext = useContext(LazyContext);\n if (!visualElement)\n return null;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n lazyContext.strict) {\n invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n }\n for (var i = 0; i < numFeatures; i++) {\n var name_1 = featureNames[i];\n var _a = featureDefinitions[name_1], isEnabled = _a.isEnabled, Component = _a.Component;\n /**\n * It might be possible in the future to use this moment to\n * dynamically request functionality. In initial tests this\n * was producing a lot of duplication amongst bundles.\n */\n if (isEnabled(props) && Component) {\n features.push(React.createElement(Component, __assign({ key: name_1 }, props, { visualElement: visualElement })));\n }\n }\n return features;\n}\n\nexport { useFeatures };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nvar MotionConfigContext = createContext({\n transformPagePoint: function (p) { return p; },\n isStatic: false,\n});\n\nexport { MotionConfigContext };\n","import { useContext, createContext } from 'react';\n\nvar MotionContext = createContext({});\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nvar PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n var ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useContext, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.js';\nimport { useConstant } from '../../utils/use-constant.js';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n var context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n var isPresent = context.isPresent, onExitComplete = context.onExitComplete, register = context.register;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n // Replace with useOpaqueId when released in React\n var id = useUniqueId();\n useEffect(function () { return register(id); }, []);\n var safeToRemove = function () { return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id); };\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\nvar counter = 0;\nvar incrementId = function () { return counter++; };\nvar useUniqueId = function () { return useConstant(incrementId); };\n\nexport { isPresent, useIsPresent, usePresence };\n","import { createContext } from 'react';\n\n/**\n * @internal\n */\nvar LayoutGroupContext = createContext(null);\n\nexport { LayoutGroupContext };\n","var isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.js';\n\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { __assign } from 'tslib';\nimport { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.js';\nimport { isPresent } from '../../components/AnimatePresence/use-presence.js';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.js';\nimport { useVisualElementContext } from '../../context/MotionContext/index.js';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.js';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.js';\nimport { LazyContext } from '../../context/LazyContext.js';\n\nfunction useLayoutId(_a) {\n var layoutId = _a.layoutId;\n var layoutGroupId = useContext(LayoutGroupContext);\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n var config = useContext(MotionConfigContext);\n var lazyContext = useContext(LazyContext);\n var parent = useVisualElementContext();\n var presenceContext = useContext(PresenceContext);\n var layoutId = useLayoutId(props);\n var visualElementRef = useRef(undefined);\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n if (!createVisualElement)\n createVisualElement = lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState: visualState,\n parent: parent,\n props: __assign(__assign({}, props), { layoutId: layoutId }),\n presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id,\n blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false,\n });\n }\n var visualElement = visualElementRef.current;\n useIsomorphicLayoutEffect(function () {\n if (!visualElement)\n return;\n visualElement.setProps(__assign(__assign(__assign({}, config), props), { layoutId: layoutId }));\n visualElement.isPresent = isPresent(presenceContext);\n visualElement.isPresenceRoot =\n !parent || parent.presenceId !== (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id);\n /**\n * Fire a render to ensure the latest state is reflected on-screen.\n */\n visualElement.syncRender();\n });\n useEffect(function () {\n var _a;\n if (!visualElement)\n return;\n /**\n * In a future refactor we can replace the features-as-components and\n * have this loop through them all firing \"effect\" listeners\n */\n (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges();\n });\n useIsomorphicLayoutEffect(function () { return function () { return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount(); }; }, []);\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","/**\n * Decides if the supplied variable is an array of variant labels\n */\nfunction isVariantLabels(v) {\n return Array.isArray(v);\n}\n/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || isVariantLabels(v);\n}\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n var current = {};\n visualElement.forEachValue(function (value, key) { return (current[key] = value.get()); });\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n var velocity = {};\n visualElement.forEachValue(function (value, key) { return (velocity[key] = value.getVelocity()); });\n return velocity;\n}\nfunction resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) {\n var _a;\n if (currentValues === void 0) { currentValues = {}; }\n if (currentVelocity === void 0) { currentVelocity = {}; }\n if (typeof definition === \"string\") {\n definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition];\n }\n return typeof definition === \"function\"\n ? definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity)\n : definition;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n var props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\nfunction checkIfControllingVariants(props) {\n var _a;\n return (typeof ((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === \"function\" ||\n isVariantLabel(props.initial) ||\n isVariantLabel(props.animate) ||\n isVariantLabel(props.whileHover) ||\n isVariantLabel(props.whileDrag) ||\n isVariantLabel(props.whileTap) ||\n isVariantLabel(props.whileFocus) ||\n isVariantLabel(props.exit));\n}\nfunction checkIfVariantNode(props) {\n return Boolean(checkIfControllingVariants(props) || props.variants);\n}\n\nexport { checkIfControllingVariants, checkIfVariantNode, isVariantLabel, isVariantLabels, resolveVariant, resolveVariantFromProps };\n","import { useMemo, useContext } from 'react';\nimport { MotionContext } from './index.js';\nimport { getCurrentTreeVariants } from './utils.js';\n\nfunction useCreateMotionContext(props, isStatic) {\n var _a = getCurrentTreeVariants(props, useContext(MotionContext)), initial = _a.initial, animate = _a.animate;\n return useMemo(function () { return ({ initial: initial, animate: animate }); }, \n /**\n * Only break memoisation in static mode\n */\n isStatic\n ? [\n variantLabelsAsDependency(initial),\n variantLabelsAsDependency(animate),\n ]\n : []);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { checkIfControllingVariants, isVariantLabel } from '../../render/utils/variants.js';\n\nfunction getCurrentTreeVariants(props, context) {\n if (checkIfControllingVariants(props)) {\n var initial = props.initial, animate = props.animate;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { useFeatures } from './features/use-features.js';\nimport { MotionConfigContext } from '../context/MotionConfigContext.js';\nimport { MotionContext } from '../context/MotionContext/index.js';\nimport { useVisualElement } from './utils/use-visual-element.js';\nimport { useMotionRef } from './utils/use-motion-ref.js';\nimport { useCreateMotionContext } from '../context/MotionContext/create.js';\nimport { loadFeatures } from './features/definitions.js';\nimport { isBrowser } from '../utils/is-browser.js';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n *\n * @internal\n */\nfunction createMotionComponent(_a) {\n var preloadedFeatures = _a.preloadedFeatures, createVisualElement = _a.createVisualElement, useRender = _a.useRender, useVisualState = _a.useVisualState, Component = _a.Component;\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we're rendering in a static environment, we only visually update the component\n * as a result of a React-rerender rather than interactions or animations. This\n * means we don't need to load additional memory structures like VisualElement,\n * or any gesture/animation features.\n */\n var isStatic = useContext(MotionConfigContext).isStatic;\n var features = null;\n /**\n * Create the tree context. This is memoized and will only trigger renders\n * when the current tree variant changes in static mode.\n */\n var context = useCreateMotionContext(props, isStatic);\n /**\n *\n */\n var visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, props, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n *\n * TODO: The intention is to move these away from a React-centric to a\n * VisualElement-centric lifecycle scheme.\n */\n features = useFeatures(props, context.visualElement, preloadedFeatures);\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(React.Fragment, null,\n React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic)),\n features));\n }\n return forwardRef(MotionComponent);\n}\n\nexport { createMotionComponent };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.js';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback(function (instance) {\n var _a;\n instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance));\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","import { createMotionComponent } from '../../motion/index.js';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig) {\n if (customMotionComponentConfig === void 0) { customMotionComponentConfig = {}; }\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n var componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: function (_target, key) {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nvar lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.js';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","var valueScaleCorrection = {};\n/**\n * @internal\n */\nfunction addScaleCorrection(correctors) {\n for (var key in correctors) {\n valueScaleCorrection[key] = correctors[key];\n }\n}\n\nexport { addScaleCorrection, valueScaleCorrection };\n","/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nvar order = [\"translate\", \"scale\", \"rotate\", \"skew\"];\n/**\n * Generate a list of every possible transform key.\n */\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n return transformAxes.forEach(function (axesKey) {\n return transformProps.push(operationKey + axesKey);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nfunction sortTransformProps(a, b) {\n return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\n/**\n * A quick lookup for transform props.\n */\nvar transformPropSet = new Set(transformProps);\nfunction isTransformProp(key) {\n return transformPropSet.has(key);\n}\n/**\n * A quick lookup for transform origin props\n */\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\nfunction isTransformOriginProp(key) {\n return transformOriginProps.has(key);\n}\n\nexport { isTransformOriginProp, isTransformProp, sortTransformProps, transformAxes, transformProps };\n","import { valueScaleCorrection } from '../../render/dom/projection/scale-correction.js';\nimport { isTransformProp, isTransformOriginProp } from '../../render/html/utils/transform.js';\n\nfunction isForcedMotionValue(key, _a) {\n var layout = _a.layout, layoutId = _a.layoutId;\n return (isTransformProp(key) ||\n isTransformOriginProp(key) ||\n ((layout || layoutId !== undefined) &&\n (!!valueScaleCorrection[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","var isMotionValue = function (value) {\n return value !== null && typeof value === \"object\" && value.getVelocity;\n};\n\nexport { isMotionValue };\n","import { sortTransformProps } from './transform.js';\n\nvar translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(_a, _b, transformIsDefault, transformTemplate) {\n var transform = _a.transform, transformKeys = _a.transformKeys;\n var _c = _b.enableHardwareAcceleration, enableHardwareAcceleration = _c === void 0 ? true : _c, _d = _b.allowTransformNone, allowTransformNone = _d === void 0 ? true : _d;\n // The transform string we're going to build into.\n var transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Track whether the defined transform has a defined z so we don't add a\n // second to enable hardware acceleration\n var transformHasZ = false;\n // Loop over each transform and build them into transformString\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n if (key === \"z\")\n transformHasZ = true;\n }\n if (!transformHasZ && enableHardwareAcceleration) {\n transformString += \"translateZ(0)\";\n }\n else {\n transformString = transformString.trim();\n }\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n/**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\nfunction buildTransformOrigin(_a) {\n var _b = _a.originX, originX = _b === void 0 ? \"50%\" : _b, _c = _a.originY, originY = _c === void 0 ? \"50%\" : _c, _d = _a.originZ, originZ = _d === void 0 ? 0 : _d;\n return originX + \" \" + originY + \" \" + originZ;\n}\n\nexport { buildTransform, buildTransformOrigin };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nvar getValueAsType = function (value, type) {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","var clamp = function (min, max) { return function (v) {\n return Math.max(Math.min(v, max), min);\n}; };\nvar sanitize = function (v) { return (v % 1 ? Number(v.toFixed(5)) : v); };\nvar floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nvar colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;\nvar singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nexport { clamp, colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { __assign } from 'tslib';\nimport { isString } from '../utils.js';\n\nvar createUnitType = function (unit) { return ({\n test: function (v) {\n return isString(v) && v.endsWith(unit) && v.split(' ').length === 1;\n },\n parse: parseFloat,\n transform: function (v) { return \"\" + v + unit; },\n}); };\nvar degrees = createUnitType('deg');\nvar percent = createUnitType('%');\nvar px = createUnitType('px');\nvar vh = createUnitType('vh');\nvar vw = createUnitType('vw');\nvar progressPercentage = __assign(__assign({}, percent), { parse: function (v) { return percent.parse(v) / 100; }, transform: function (v) { return percent.transform(v * 100); } });\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { __assign } from 'tslib';\nimport { clamp } from '../utils.js';\n\nvar number = {\n test: function (v) { return typeof v === 'number'; },\n parse: parseFloat,\n transform: function (v) { return v; },\n};\nvar alpha = __assign(__assign({}, number), { transform: clamp(0, 1) });\nvar scale = __assign(__assign({}, number), { default: 1 });\n\nexport { alpha, number, scale };\n","import { __assign } from 'tslib';\nimport { number } from 'style-value-types';\n\nvar int = __assign(__assign({}, number), { transform: Math.round });\n\nexport { int };\n","import { px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { int } from './type-int.js';\n\nvar numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale: scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { valueScaleCorrection } from '../../dom/projection/scale-correction.js';\nimport { buildTransform, buildTransformOrigin } from './build-transform.js';\nimport { isCSSVariable } from '../../dom/utils/is-css-variable.js';\nimport { isTransformProp, isTransformOriginProp } from './transform.js';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.js';\nimport { numberValueTypes } from '../../dom/value-types/number.js';\n\nfunction buildHTMLStyles(state, latestValues, projection, layoutState, options, transformTemplate, buildProjectionTransform, buildProjectionTransformOrigin) {\n var _a;\n var style = state.style, vars = state.vars, transform = state.transform, transformKeys = state.transformKeys, transformOrigin = state.transformOrigin;\n // Empty the transformKeys array. As we're throwing out refs to its items\n // this might not be as cheap as suspected. Maybe using the array as a buffer\n // with a manual incrementation would be better.\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n var hasTransform = false;\n var hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n var transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (var key in latestValues) {\n var value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariable(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n var valueType = numberValueTypes[key];\n var valueAsType = getValueAsType(value, valueType);\n if (isTransformProp(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== ((_a = valueType.default) !== null && _a !== void 0 ? _a : 0))\n transformIsNone = false;\n }\n else if (isTransformOriginProp(key)) {\n transformOrigin[key] = valueAsType;\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n }\n else {\n /**\n * If layout projection is on, and we need to perform scale correction for this\n * value type, perform it.\n */\n if ((projection === null || projection === void 0 ? void 0 : projection.isHydrated) &&\n (layoutState === null || layoutState === void 0 ? void 0 : layoutState.isHydrated) &&\n valueScaleCorrection[key]) {\n var correctedValue = valueScaleCorrection[key].process(value, layoutState, projection);\n /**\n * Scale-correctable values can define a number of other values to break\n * down into. For instance borderRadius needs applying to borderBottomLeftRadius etc\n */\n var applyTo = valueScaleCorrection[key].applyTo;\n if (applyTo) {\n var num = applyTo.length;\n for (var i = 0; i < num; i++) {\n style[applyTo[i]] = correctedValue;\n }\n }\n else {\n style[key] = correctedValue;\n }\n }\n else {\n style[key] = valueAsType;\n }\n }\n }\n if (layoutState &&\n projection &&\n buildProjectionTransform &&\n buildProjectionTransformOrigin) {\n style.transform = buildProjectionTransform(layoutState.deltaFinal, layoutState.treeScale, hasTransform ? transform : undefined);\n if (transformTemplate) {\n style.transform = transformTemplate(transform, style.transform);\n }\n style.transformOrigin = buildProjectionTransformOrigin(layoutState);\n }\n else {\n if (hasTransform) {\n style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n }\n if (hasTransformOrigin) {\n style.transformOrigin = buildTransformOrigin(transformOrigin);\n }\n }\n}\n\nexport { buildHTMLStyles };\n","var createHtmlRenderState = function () { return ({\n style: {},\n transform: {},\n transformKeys: [],\n transformOrigin: {},\n vars: {},\n}); };\n\nexport { createHtmlRenderState };\n","import { __assign } from 'tslib';\nimport { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.js';\nimport { isMotionValue } from '../../value/utils/is-motion-value.js';\nimport { buildHTMLStyles } from './utils/build-styles.js';\nimport { createHtmlRenderState } from './utils/create-render-state.js';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (var key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues(_a, visualState, isStatic) {\n var transformTemplate = _a.transformTemplate;\n return useMemo(function () {\n var state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, undefined, undefined, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n var vars = state.vars, style = state.style;\n return __assign(__assign({}, vars), style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n var styleProp = props.style || {};\n var style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n if (props.transformValues) {\n style = props.transformValues(style);\n }\n return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n var htmlProps = {};\n var style = useStyle(props, visualState, isStatic);\n if (Boolean(props.drag)) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : \"pan-\" + (props.drag === \"x\" ? \"y\" : \"x\");\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps, useStyle };\n","/**\n * A list of all valid MotionProps.\n *\n * @internalremarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nvar validMotionProps = new Set([\n \"initial\",\n \"animate\",\n \"exit\",\n \"style\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"layout\",\n \"layoutId\",\n \"_layoutResetTransform\",\n \"onLayoutAnimationComplete\",\n \"onViewportBoxUpdate\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"whileDrag\",\n \"onPan\",\n \"onPanStart\",\n \"onPanEnd\",\n \"onPanSessionStart\",\n \"onTap\",\n \"onTapStart\",\n \"onTapCancel\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"whileFocus\",\n \"whileTap\",\n \"whileHover\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return validMotionProps.has(key);\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.js';\n\nvar shouldForward = function (key) { return !isValidMotionProp(key); };\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n var emotionIsPropValid_1 = require(\"@emotion/is-prop-valid\").default;\n shouldForward = function (key) {\n // Handle events explicitly as Emotion validates them all as true\n if (key.startsWith(\"on\")) {\n return !isValidMotionProp(key);\n }\n else {\n return emotionIsPropValid_1(key);\n }\n };\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n var filteredProps = {};\n for (var key in props) {\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps };\n","import { px } from 'style-value-types';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n var pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n var pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return pxOriginX + \" \" + pxOriginY;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from 'style-value-types';\n\n// Convert a progress 0-1 to a pixels value based on the provided length\nvar progressToPixels = function (progress, length) {\n return px.transform(progress * length);\n};\nvar dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nvar camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, totalLength, length, spacing, offset, useDashCase) {\n if (spacing === void 0) { spacing = 1; }\n if (offset === void 0) { offset = 0; }\n if (useDashCase === void 0) { useDashCase = true; }\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n var keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = progressToPixels(-offset, totalLength);\n // Build the dash array\n var pathLength = progressToPixels(length, totalLength);\n var pathSpacing = progressToPixels(spacing, totalLength);\n attrs[keys.array] = pathLength + \" \" + pathSpacing;\n}\n\nexport { buildSVGPath };\n","import { __rest } from 'tslib';\nimport { buildHTMLStyles } from '../../html/utils/build-styles.js';\nimport { calcSVGTransformOrigin } from './transform-origin.js';\nimport { buildSVGPath } from './path.js';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, _a, projection, layoutState, options, transformTemplate, buildProjectionTransform, buildProjectionTransformOrigin) {\n var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, \n // This is object creation, which we try to avoid per-frame.\n latest = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n buildHTMLStyles(state, latest, projection, layoutState, options, transformTemplate, buildProjectionTransform, buildProjectionTransformOrigin);\n state.attrs = state.style;\n state.style = {};\n var attrs = state.attrs, style = state.style, dimensions = state.dimensions, totalPathLength = state.totalPathLength;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been measured\n if (totalPathLength !== undefined && pathLength !== undefined) {\n buildSVGPath(attrs, totalPathLength, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","import { __assign } from 'tslib';\nimport { createHtmlRenderState } from '../../html/utils/create-render-state.js';\n\nvar createSvgRenderState = function () { return (__assign(__assign({}, createHtmlRenderState()), { attrs: {} })); };\n\nexport { createSvgRenderState };\n","import { __assign } from 'tslib';\nimport { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.js';\nimport { buildSVGAttrs } from './utils/build-attrs.js';\nimport { createSvgRenderState } from './utils/create-render-state.js';\n\nfunction useSVGProps(props, visualState) {\n var visualProps = useMemo(function () {\n var state = createSvgRenderState();\n buildSVGAttrs(state, visualState, undefined, undefined, { enableHardwareAcceleration: false }, props.transformTemplate);\n return __assign(__assign({}, state.attrs), { style: __assign({}, state.style) });\n }, [visualState]);\n if (props.style) {\n var rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = __assign(__assign({}, rawStyles), visualProps.style);\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { __assign } from 'tslib';\nimport { createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.js';\nimport { filterProps } from './utils/filter-props.js';\nimport { isSVGComponent } from './utils/is-svg-component.js';\nimport { useSVGProps } from '../svg/use-props.js';\n\nfunction createUseRender(forwardMotionProps) {\n if (forwardMotionProps === void 0) { forwardMotionProps = false; }\n var useRender = function (Component, props, ref, _a, isStatic) {\n var latestValues = _a.latestValues;\n var useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n var visualProps = useVisualProps(props, latestValues, isStatic);\n var filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n var elementProps = __assign(__assign(__assign({}, filteredProps), visualProps), { ref: ref });\n return createElement(Component, elementProps);\n };\n return useRender;\n}\n\nexport { createUseRender };\n","var CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\n/**\n * Convert camelCase to dash-case properties.\n */\nvar camelToDash = function (str) {\n return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\nexport { camelToDash };\n","function renderHTML(element, _a) {\n var style = _a.style, vars = _a.vars;\n // Directly assign style into the Element's style prop. In tests Object.assign is the\n // fastest way to assign styles.\n Object.assign(element.style, style);\n // Loop over any CSS variables and assign those.\n for (var key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nvar camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.js';\nimport { renderHTML } from '../../html/utils/render.js';\nimport { camelCaseAttributes } from './camel-case-attrs.js';\n\nfunction renderSVG(element, renderState) {\n renderHTML(element, renderState);\n for (var key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.js';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.js';\n\nfunction scrapeMotionValuesFromProps(props) {\n var style = props.style;\n var newValues = {};\n for (var key in style) {\n if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.js';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.js';\n\nfunction scrapeMotionValuesFromProps(props) {\n var newValues = scrapeMotionValuesFromProps$1(props);\n for (var key in props) {\n if (isMotionValue(props[key])) {\n var targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","function isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","var isKeyframesTarget = function (v) {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isCustomValue } from '../../utils/resolve-value.js';\nimport { isMotionValue } from './is-motion-value.js';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n *\n * @internal\n */\nfunction resolveMotionValue(value) {\n var unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.js';\n\nvar isCustomValue = function (v) {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = function (v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { __rest } from 'tslib';\nimport { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.js';\nimport { PresenceContext } from '../../context/PresenceContext.js';\nimport { checkIfControllingVariants, checkIfVariantNode, resolveVariantFromProps } from '../../render/utils/variants.js';\nimport { useConstant } from '../../utils/use-constant.js';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.js';\nimport { MotionContext } from '../../context/MotionContext/index.js';\n\nfunction makeState(_a, props, context, presenceContext) {\n var scrapeMotionValuesFromProps = _a.scrapeMotionValuesFromProps, createRenderState = _a.createRenderState, onMount = _a.onMount;\n var state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = function (instance) { return onMount(props, instance, state); };\n }\n return state;\n}\nvar makeUseVisualState = function (config) { return function (props, isStatic) {\n var context = useContext(MotionContext);\n var presenceContext = useContext(PresenceContext);\n return isStatic\n ? makeState(config, props, context, presenceContext)\n : useConstant(function () { return makeState(config, props, context, presenceContext); });\n}; };\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n var values = {};\n var blockInitialAnimation = (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false;\n var motionValues = scrapeMotionValues(props);\n for (var key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n var initial = props.initial, animate = props.animate;\n var isControllingVariants = checkIfControllingVariants(props);\n var isVariantNode = checkIfVariantNode(props);\n if (context &&\n isVariantNode &&\n !isControllingVariants &&\n props.inherit !== false) {\n initial !== null && initial !== void 0 ? initial : (initial = context.initial);\n animate !== null && animate !== void 0 ? animate : (animate = context.animate);\n }\n var variantToSet = blockInitialAnimation || initial === false ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n var list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach(function (definition) {\n var resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n var transitionEnd = resolved.transitionEnd; resolved.transition; var target = __rest(resolved, [\"transitionEnd\", \"transition\"]);\n for (var key in target)\n values[key] = target[key];\n for (var key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.js';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.js';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.js';\nimport { createSvgRenderState } from './utils/create-render-state.js';\nimport { buildSVGAttrs } from './utils/build-attrs.js';\n\nvar svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: function (props, instance, _a) {\n var renderState = _a.renderState, latestValues = _a.latestValues;\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (isPath(instance)) {\n renderState.totalPathLength = instance.getTotalLength();\n }\n buildSVGAttrs(renderState, latestValues, undefined, undefined, { enableHardwareAcceleration: false }, props.transformTemplate);\n // TODO: Replace with direct assignment\n renderSVG(instance, renderState);\n },\n }),\n};\nfunction isPath(element) {\n return element.tagName === \"path\";\n}\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.js';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.js';\nimport { createHtmlRenderState } from './utils/create-render-state.js';\n\nvar htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","var AnimationType;\n(function (AnimationType) {\n AnimationType[\"Animate\"] = \"animate\";\n AnimationType[\"Hover\"] = \"whileHover\";\n AnimationType[\"Tap\"] = \"whileTap\";\n AnimationType[\"Drag\"] = \"whileDrag\";\n AnimationType[\"Focus\"] = \"whileFocus\";\n AnimationType[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\nexport { AnimationType };\n","import { __assign } from 'tslib';\nimport { isSVGComponent } from './is-svg-component.js';\nimport { createUseRender } from '../use-render.js';\nimport { svgMotionConfig } from '../../svg/config-motion.js';\nimport { htmlMotionConfig } from '../../html/config-motion.js';\n\nfunction createDomMotionConfig(Component, _a, preloadedFeatures, createVisualElement) {\n var _b = _a.forwardMotionProps, forwardMotionProps = _b === void 0 ? false : _b;\n var baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return __assign(__assign({}, baseConfig), { preloadedFeatures: preloadedFeatures, useRender: createUseRender(forwardMotionProps), createVisualElement: createVisualElement,\n Component: Component });\n}\n\nexport { createDomMotionConfig };\n","import { useEffect } from 'react';\n\nfunction addDomEvent(target, eventName, handler, options) {\n target.addEventListener(eventName, handler, options);\n return function () { return target.removeEventListener(eventName, handler, options); };\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return
\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(function () {\n var element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nexport { addDomEvent, useDomEvent };\n","function isMouseEvent(event) {\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (typeof PointerEvent !== \"undefined\" && event instanceof PointerEvent) {\n return !!(event.pointerType === \"mouse\");\n }\n return event instanceof MouseEvent;\n}\nfunction isTouchEvent(event) {\n var hasTouches = !!event.touches;\n return hasTouches;\n}\n\nexport { isMouseEvent, isTouchEvent };\n","import { isTouchEvent } from '../gestures/utils/event-type.js';\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n return function (event) {\n var isMouseEvent = event instanceof MouseEvent;\n var isPrimaryPointer = !isMouseEvent ||\n (isMouseEvent && event.button === 0);\n if (isPrimaryPointer) {\n eventHandler(event);\n }\n };\n}\nvar defaultPagePoint = { pageX: 0, pageY: 0 };\nfunction pointFromTouch(e, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n var primaryTouch = e.touches[0] || e.changedTouches[0];\n var point = primaryTouch || defaultPagePoint;\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction pointFromMouse(point, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction extractEventInfo(event, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n };\n}\nfunction getViewportPointFromEvent(event) {\n return extractEventInfo(event, \"client\");\n}\nvar wrapHandler = function (handler, shouldFilterPrimaryPointer) {\n if (shouldFilterPrimaryPointer === void 0) { shouldFilterPrimaryPointer = false; }\n var listener = function (event) {\n return handler(event, extractEventInfo(event));\n };\n return shouldFilterPrimaryPointer\n ? filterPrimaryPointer(listener)\n : listener;\n};\n\nexport { extractEventInfo, getViewportPointFromEvent, wrapHandler };\n","import { useDomEvent, addDomEvent } from './use-dom-event.js';\nimport { wrapHandler } from './event-info.js';\nimport { supportsPointerEvents, supportsTouchEvents, supportsMouseEvents } from './utils.js';\n\nvar mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n};\nvar touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n};\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n }\n else if (supportsTouchEvents()) {\n return touchEventNames[name];\n }\n else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\nexport { addPointerEvent, usePointerEvent };\n","import { isBrowser } from '../utils/is-browser.js';\n\n// We check for event support via functions in case they've been mocked by a testing suite.\nvar supportsPointerEvents = function () {\n return isBrowser && window.onpointerdown === null;\n};\nvar supportsTouchEvents = function () {\n return isBrowser && window.ontouchstart === null;\n};\nvar supportsMouseEvents = function () {\n return isBrowser && window.onmousedown === null;\n};\n\nexport { supportsMouseEvents, supportsPointerEvents, supportsTouchEvents };\n","function createLock(name) {\n var lock = null;\n return function () {\n var openLock = function () {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n var lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n var openHorizontal_1 = globalHorizontalLock();\n var openVertical_1 = globalVerticalLock();\n if (openHorizontal_1 && openVertical_1) {\n lock = function () {\n openHorizontal_1();\n openVertical_1();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal_1)\n openHorizontal_1();\n if (openVertical_1)\n openVertical_1();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n var openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { isMouseEvent } from './utils/event-type.js';\nimport { AnimationType } from '../render/utils/types.js';\nimport { usePointerEvent } from '../events/use-pointer-event.js';\nimport { isDragActive } from './drag/utils/lock.js';\n\nfunction createHoverEvent(visualElement, isActive, callback) {\n return function (event, info) {\n var _a;\n if (!isMouseEvent(event) || isDragActive())\n return;\n callback === null || callback === void 0 ? void 0 : callback(event, info);\n (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Hover, isActive);\n };\n}\nfunction useHoverGesture(_a) {\n var onHoverStart = _a.onHoverStart, onHoverEnd = _a.onHoverEnd, whileHover = _a.whileHover, visualElement = _a.visualElement;\n usePointerEvent(visualElement, \"pointerenter\", onHoverStart || whileHover\n ? createHoverEvent(visualElement, true, onHoverStart)\n : undefined);\n usePointerEvent(visualElement, \"pointerleave\", onHoverEnd || whileHover\n ? createHoverEvent(visualElement, false, onHoverEnd)\n : undefined);\n}\n\nexport { useHoverGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nvar isNodeOrChild = function (parent, child) {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(function () { return function () { return callback(); }; }, []);\n}\n\nexport { useUnmountEffect };\n","var combineFunctions = function (a, b) { return function (v) { return b(a(v)); }; };\nvar pipe = function () {\n var transformers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n transformers[_i] = arguments[_i];\n }\n return transformers.reduce(combineFunctions);\n};\n\nexport { pipe };\n","var makeRenderlessComponent = function (hook) { return function (props) {\n hook(props);\n return null;\n}; };\n\nexport { makeRenderlessComponent };\n","import { useFocusGesture } from '../../gestures/use-focus-gesture.js';\nimport { useHoverGesture } from '../../gestures/use-hover-gesture.js';\nimport { useTapGesture } from '../../gestures/use-tap-gesture.js';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.js';\n\nvar gestureAnimations = {\n tap: makeRenderlessComponent(useTapGesture),\n focus: makeRenderlessComponent(useFocusGesture),\n hover: makeRenderlessComponent(useHoverGesture),\n};\n\nexport { gestureAnimations };\n","import { useRef } from 'react';\nimport { isNodeOrChild } from './utils/is-node-or-child.js';\nimport { usePointerEvent, addPointerEvent } from '../events/use-pointer-event.js';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.js';\nimport { pipe } from 'popmotion';\nimport { AnimationType } from '../render/utils/types.js';\nimport { isDragActive } from './drag/utils/lock.js';\n\n/**\n * @param handlers -\n * @internal\n */\nfunction useTapGesture(_a) {\n var onTap = _a.onTap, onTapStart = _a.onTapStart, onTapCancel = _a.onTapCancel, whileTap = _a.whileTap, visualElement = _a.visualElement;\n var hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n var isPressing = useRef(false);\n var cancelPointerEndListeners = useRef(null);\n function removePointerEndListener() {\n var _a;\n (_a = cancelPointerEndListeners.current) === null || _a === void 0 ? void 0 : _a.call(cancelPointerEndListeners);\n cancelPointerEndListeners.current = null;\n }\n function checkPointerEnd() {\n var _a;\n removePointerEndListener();\n isPressing.current = false;\n (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Tap, false);\n return !isDragActive();\n }\n function onPointerUp(event, info) {\n if (!checkPointerEnd())\n return;\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !isNodeOrChild(visualElement.getInstance(), event.target)\n ? onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info)\n : onTap === null || onTap === void 0 ? void 0 : onTap(event, info);\n }\n function onPointerCancel(event, info) {\n if (!checkPointerEnd())\n return;\n onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info);\n }\n function onPointerDown(event, info) {\n var _a;\n removePointerEndListener();\n if (isPressing.current)\n return;\n isPressing.current = true;\n cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp), addPointerEvent(window, \"pointercancel\", onPointerCancel));\n onTapStart === null || onTapStart === void 0 ? void 0 : onTapStart(event, info);\n (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Tap, true);\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? onPointerDown : undefined);\n useUnmountEffect(removePointerEndListener);\n}\n\nexport { useTapGesture };\n","import { AnimationType } from '../render/utils/types.js';\nimport { useDomEvent } from '../events/use-dom-event.js';\n\n/**\n *\n * @param props\n * @param ref\n * @internal\n */\nfunction useFocusGesture(_a) {\n var whileFocus = _a.whileFocus, visualElement = _a.visualElement;\n var onFocus = function () {\n var _a;\n (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Focus, true);\n };\n var onBlur = function () {\n var _a;\n (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Focus, false);\n };\n useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : undefined);\n useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : undefined);\n}\n\nexport { useFocusGesture };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n var prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (var i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","var clamp = function (min, max, v) {\n return Math.min(Math.max(v, min), max);\n};\n\nexport { clamp };\n","import { warning } from 'hey-listen';\nimport { clamp } from '../../utils/clamp.js';\n\nvar safeMin = 0.001;\nvar minDuration = 0.01;\nvar maxDuration = 10.0;\nvar minDamping = 0.05;\nvar maxDamping = 1;\nfunction findSpring(_a) {\n var _b = _a.duration, duration = _b === void 0 ? 800 : _b, _c = _a.bounce, bounce = _c === void 0 ? 0.25 : _c, _d = _a.velocity, velocity = _d === void 0 ? 0 : _d, _e = _a.mass, mass = _e === void 0 ? 1 : _e;\n var envelope;\n var derivative;\n warning(duration <= maxDuration * 1000, \"Spring duration must be 10 seconds or less\");\n var dampingRatio = 1 - bounce;\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, duration / 1000);\n if (dampingRatio < 1) {\n envelope = function (undampedFreq) {\n var exponentialDecay = undampedFreq * dampingRatio;\n var delta = exponentialDecay * duration;\n var a = exponentialDecay - velocity;\n var b = calcAngularFreq(undampedFreq, dampingRatio);\n var c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = function (undampedFreq) {\n var exponentialDecay = undampedFreq * dampingRatio;\n var delta = exponentialDecay * duration;\n var d = delta * velocity + velocity;\n var e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n var f = Math.exp(-delta);\n var g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n var factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n envelope = function (undampedFreq) {\n var a = Math.exp(-undampedFreq * duration);\n var b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = function (undampedFreq) {\n var a = Math.exp(-undampedFreq * duration);\n var b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n var initialGuess = 5 / duration;\n var undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = duration * 1000;\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration: duration,\n };\n }\n else {\n var stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness: stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration: duration,\n };\n }\n}\nvar rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n var result = initialGuess;\n for (var i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { __rest, __assign } from 'tslib';\nimport { findSpring, calcAngularFreq } from '../utils/find-spring.js';\n\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some(function (key) { return options[key] !== undefined; });\n}\nfunction getSpringOptions(options) {\n var springOptions = __assign({ velocity: 0.0, stiffness: 100, damping: 10, mass: 1.0, isResolvedFromDuration: false }, options);\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n var derived = findSpring(options);\n springOptions = __assign(__assign(__assign({}, springOptions), derived), { velocity: 0.0, mass: 1.0 });\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring(_a) {\n var _b = _a.from, from = _b === void 0 ? 0.0 : _b, _c = _a.to, to = _c === void 0 ? 1.0 : _c, _d = _a.restSpeed, restSpeed = _d === void 0 ? 2 : _d, restDelta = _a.restDelta, options = __rest(_a, [\"from\", \"to\", \"restSpeed\", \"restDelta\"]);\n var state = { done: false, value: from };\n var _e = getSpringOptions(options), stiffness = _e.stiffness, damping = _e.damping, mass = _e.mass, velocity = _e.velocity, duration = _e.duration, isResolvedFromDuration = _e.isResolvedFromDuration;\n var resolveSpring = zero;\n var resolveVelocity = zero;\n function createSpring() {\n var initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n var initialDelta = to - from;\n var dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n var undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;\n restDelta !== null && restDelta !== void 0 ? restDelta : (restDelta = Math.abs(to - from) <= 1 ? 0.01 : 0.4);\n if (dampingRatio < 1) {\n var angularFreq_1 = calcAngularFreq(undampedAngularFreq, dampingRatio);\n resolveSpring = function (t) {\n var envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (to -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq_1) *\n Math.sin(angularFreq_1 * t) +\n initialDelta * Math.cos(angularFreq_1 * t)));\n };\n resolveVelocity = function (t) {\n var envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (dampingRatio *\n undampedAngularFreq *\n envelope *\n ((Math.sin(angularFreq_1 * t) *\n (initialVelocity +\n dampingRatio *\n undampedAngularFreq *\n initialDelta)) /\n angularFreq_1 +\n initialDelta * Math.cos(angularFreq_1 * t)) -\n envelope *\n (Math.cos(angularFreq_1 * t) *\n (initialVelocity +\n dampingRatio *\n undampedAngularFreq *\n initialDelta) -\n angularFreq_1 *\n initialDelta *\n Math.sin(angularFreq_1 * t)));\n };\n }\n else if (dampingRatio === 1) {\n resolveSpring = function (t) {\n return to -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) *\n t);\n };\n }\n else {\n var dampedAngularFreq_1 = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = function (t) {\n var envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n var freqForT = Math.min(dampedAngularFreq_1 * t, 300);\n return (to -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq_1 *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq_1);\n };\n }\n }\n createSpring();\n return {\n next: function (t) {\n var current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n var currentVelocity = resolveVelocity(t) * 1000;\n var isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n var isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? to : current;\n return state;\n },\n flipTarget: function () {\n var _a;\n velocity = -velocity;\n _a = [to, from], from = _a[0], to = _a[1];\n createSpring();\n },\n };\n}\nspring.needsInterpolation = function (a, b) {\n return typeof a === \"string\" || typeof b === \"string\";\n};\nvar zero = function (_t) { return 0; };\n\nexport { spring };\n","var progress = function (from, to, value) {\n var toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","var mix = function (from, to, progress) {\n return -progress * from + progress * to + from;\n};\n\nexport { mix };\n","import { isString, singleColorRegex, floatRegex } from '../utils.js';\n\nvar isColorString = function (type, testProp) { return function (v) {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n}; };\nvar splitColor = function (aName, bName, cName) { return function (v) {\n var _a;\n if (!isString(v))\n return v;\n var _b = v.match(floatRegex), a = _b[0], b = _b[1], c = _b[2], alpha = _b[3];\n return _a = {},\n _a[aName] = parseFloat(a),\n _a[bName] = parseFloat(b),\n _a[cName] = parseFloat(c),\n _a.alpha = alpha !== undefined ? parseFloat(alpha) : 1,\n _a;\n}; };\n\nexport { isColorString, splitColor };\n","import { __assign } from 'tslib';\nimport { number, alpha } from '../numbers/index.js';\nimport { sanitize, clamp } from '../utils.js';\nimport { isColorString, splitColor } from './utils.js';\n\nvar clampRgbUnit = clamp(0, 255);\nvar rgbUnit = __assign(__assign({}, number), { transform: function (v) { return Math.round(clampRgbUnit(v)); } });\nvar rgba = {\n test: isColorString('rgb', 'red'),\n parse: splitColor('red', 'green', 'blue'),\n transform: function (_a) {\n var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\n return 'rgba(' +\n rgbUnit.transform(red) +\n ', ' +\n rgbUnit.transform(green) +\n ', ' +\n rgbUnit.transform(blue) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')';\n },\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.js';\nimport { isColorString } from './utils.js';\n\nfunction parseHex(v) {\n var r = '';\n var g = '';\n var b = '';\n var a = '';\n if (v.length > 5) {\n r = v.substr(1, 2);\n g = v.substr(3, 2);\n b = v.substr(5, 2);\n a = v.substr(7, 2);\n }\n else {\n r = v.substr(1, 1);\n g = v.substr(2, 1);\n b = v.substr(3, 1);\n a = v.substr(4, 1);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nvar hex = {\n test: isColorString('#'),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.js';\nimport { percent } from '../numbers/units.js';\nimport { sanitize } from '../utils.js';\nimport { isColorString, splitColor } from './utils.js';\n\nvar hsla = {\n test: isColorString('hsl', 'hue'),\n parse: splitColor('hue', 'saturation', 'lightness'),\n transform: function (_a) {\n var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\n return ('hsla(' +\n Math.round(hue) +\n ', ' +\n percent.transform(sanitize(saturation)) +\n ', ' +\n percent.transform(sanitize(lightness)) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')');\n },\n};\n\nexport { hsla };\n","import { __assign } from 'tslib';\nimport { mix } from './mix.js';\nimport { hex, rgba, hsla } from 'style-value-types';\nimport { invariant } from 'hey-listen';\n\nvar mixLinearColor = function (from, to, v) {\n var fromExpo = from * from;\n var toExpo = to * to;\n return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = function (v) {\n return colorTypes.find(function (type) { return type.test(v); });\n};\nvar notAnimatable = function (color) {\n return \"'\" + color + \"' is not an animatable color. Use the equivalent color code instead.\";\n};\nvar mixColor = function (from, to) {\n var fromColorType = getColorType(from);\n var toColorType = getColorType(to);\n invariant(!!fromColorType, notAnimatable(from));\n invariant(!!toColorType, notAnimatable(to));\n invariant(fromColorType.transform === toColorType.transform, \"Both colors must be hex/RGBA, OR both must be HSLA.\");\n var fromColor = fromColorType.parse(from);\n var toColor = toColorType.parse(to);\n var blended = __assign({}, fromColor);\n var mixFunc = fromColorType === hsla ? mix : mixLinearColor;\n return function (v) {\n for (var key in blended) {\n if (key !== \"alpha\") {\n blended[key] = mixFunc(fromColor[key], toColor[key], v);\n }\n }\n blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\n return fromColorType.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { isString } from '../utils.js';\nimport { hex } from './hex.js';\nimport { hsla } from './hsla.js';\nimport { rgba } from './rgba.js';\n\nvar color = {\n test: function (v) { return rgba.test(v) || hex.test(v) || hsla.test(v); },\n parse: function (v) {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: function (v) {\n return isString(v)\n ? v\n : v.hasOwnProperty('red')\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.js';\nimport { number } from '../numbers/index.js';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.js';\n\nvar colorToken = '${c}';\nvar numberToken = '${n}';\nfunction test(v) {\n var _a, _b, _c, _d;\n return (isNaN(v) &&\n isString(v) &&\n ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);\n}\nfunction analyse(v) {\n var values = [];\n var numColors = 0;\n var colors = v.match(colorRegex);\n if (colors) {\n numColors = colors.length;\n v = v.replace(colorRegex, colorToken);\n values.push.apply(values, colors.map(color.parse));\n }\n var numbers = v.match(floatRegex);\n if (numbers) {\n v = v.replace(floatRegex, numberToken);\n values.push.apply(values, numbers.map(number.parse));\n }\n return { values: values, numColors: numColors, tokenised: v };\n}\nfunction parse(v) {\n return analyse(v).values;\n}\nfunction createTransformer(v) {\n var _a = analyse(v), values = _a.values, numColors = _a.numColors, tokenised = _a.tokenised;\n var numValues = values.length;\n return function (v) {\n var output = tokenised;\n for (var i = 0; i < numValues; i++) {\n output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\n }\n return output;\n };\n}\nvar convertNumbersToZero = function (v) {\n return typeof v === 'number' ? 0 : v;\n};\nfunction getAnimatableNone(v) {\n var parsed = parse(v);\n var transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = { test: test, parse: parse, createTransformer: createTransformer, getAnimatableNone: getAnimatableNone };\n\nexport { complex };\n","var zeroPoint = {\n x: 0,\n y: 0,\n z: 0\n};\nvar isNum = function (v) { return typeof v === 'number'; };\n\nexport { isNum, zeroPoint };\n","import { __spreadArray, __assign } from 'tslib';\nimport { complex, color } from 'style-value-types';\nimport { mix } from './mix.js';\nimport { mixColor } from './mix-color.js';\nimport { isNum } from './inc.js';\nimport { pipe } from './pipe.js';\nimport { invariant } from 'hey-listen';\n\nfunction getMixer(origin, target) {\n if (isNum(origin)) {\n return function (v) { return mix(origin, target, v); };\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return mixComplex(origin, target);\n }\n}\nvar mixArray = function (from, to) {\n var output = __spreadArray([], from);\n var numValues = output.length;\n var blendValue = from.map(function (fromThis, i) { return getMixer(fromThis, to[i]); });\n return function (v) {\n for (var i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nvar mixObject = function (origin, target) {\n var output = __assign(__assign({}, origin), target);\n var blendValue = {};\n for (var key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return function (v) {\n for (var key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nfunction analyse(value) {\n var parsed = complex.parse(value);\n var numValues = parsed.length;\n var numNumbers = 0;\n var numRGB = 0;\n var numHSL = 0;\n for (var i = 0; i < numValues; i++) {\n if (numNumbers || typeof parsed[i] === \"number\") {\n numNumbers++;\n }\n else {\n if (parsed[i].hue !== undefined) {\n numHSL++;\n }\n else {\n numRGB++;\n }\n }\n }\n return { parsed: parsed, numNumbers: numNumbers, numRGB: numRGB, numHSL: numHSL };\n}\nvar mixComplex = function (origin, target) {\n var template = complex.createTransformer(target);\n var originStats = analyse(origin);\n var targetStats = analyse(target);\n invariant(originStats.numHSL === targetStats.numHSL &&\n originStats.numRGB === targetStats.numRGB &&\n originStats.numNumbers >= targetStats.numNumbers, \"Complex values '\" + origin + \"' and '\" + target + \"' too different to mix. Ensure all colors are of the same type.\");\n return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\n};\n\nexport { mixArray, mixComplex, mixObject };\n","import { progress } from './progress.js';\nimport { mix } from './mix.js';\nimport { mixColor } from './mix-color.js';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.js';\nimport { color } from 'style-value-types';\nimport { clamp } from './clamp.js';\nimport { pipe } from './pipe.js';\nimport { invariant } from 'hey-listen';\n\nvar mixNumber = function (from, to) { return function (p) { return mix(from, to, p); }; };\nfunction detectMixerFactory(v) {\n if (typeof v === 'number') {\n return mixNumber;\n }\n else if (typeof v === 'string') {\n if (color.test(v)) {\n return mixColor;\n }\n else {\n return mixComplex;\n }\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === 'object') {\n return mixObject;\n }\n}\nfunction createMixers(output, ease, customMixer) {\n var mixers = [];\n var mixerFactory = customMixer || detectMixerFactory(output[0]);\n var numMixers = output.length - 1;\n for (var i = 0; i < numMixers; i++) {\n var mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n var easingFunction = Array.isArray(ease) ? ease[i] : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\nfunction fastInterpolate(_a, _b) {\n var from = _a[0], to = _a[1];\n var mixer = _b[0];\n return function (v) { return mixer(progress(from, to, v)); };\n}\nfunction slowInterpolate(input, mixers) {\n var inputLength = input.length;\n var lastInputIndex = inputLength - 1;\n return function (v) {\n var mixerIndex = 0;\n var foundMixerIndex = false;\n if (v <= input[0]) {\n foundMixerIndex = true;\n }\n else if (v >= input[lastInputIndex]) {\n mixerIndex = lastInputIndex - 1;\n foundMixerIndex = true;\n }\n if (!foundMixerIndex) {\n var i = 1;\n for (; i < inputLength; i++) {\n if (input[i] > v || i === lastInputIndex) {\n break;\n }\n }\n mixerIndex = i - 1;\n }\n var progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n return mixers[mixerIndex](progressInRange);\n };\n}\nfunction interpolate(input, output, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.clamp, isClamp = _c === void 0 ? true : _c, ease = _b.ease, mixer = _b.mixer;\n var inputLength = input.length;\n invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\n invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\n if (input[0] > input[inputLength - 1]) {\n input = [].concat(input);\n output = [].concat(output);\n input.reverse();\n output.reverse();\n }\n var mixers = createMixers(output, ease, mixer);\n var interpolator = inputLength === 2\n ? fastInterpolate(input, mixers)\n : slowInterpolate(input, mixers);\n return isClamp\n ? function (v) { return interpolator(clamp(input[0], input[inputLength - 1], v)); }\n : interpolator;\n}\n\nexport { interpolate };\n","var reverseEasing = function (easing) { return function (p) { return 1 - easing(1 - p); }; };\nvar mirrorEasing = function (easing) { return function (p) {\n return p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n}; };\nvar createExpoIn = function (power) { return function (p) { return Math.pow(p, power); }; };\nvar createBackIn = function (power) { return function (p) {\n return p * p * ((power + 1) * p - power);\n}; };\nvar createAnticipate = function (power) {\n var backEasing = createBackIn(power);\n return function (p) {\n return (p *= 2) < 1\n ? 0.5 * backEasing(p)\n : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n };\n};\n\nexport { createAnticipate, createBackIn, createExpoIn, mirrorEasing, reverseEasing };\n","import { createExpoIn, reverseEasing, mirrorEasing, createBackIn, createAnticipate } from './utils.js';\n\nvar DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nvar BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nvar BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nvar BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nvar linear = function (p) { return p; };\nvar easeIn = createExpoIn(2);\nvar easeOut = reverseEasing(easeIn);\nvar easeInOut = mirrorEasing(easeIn);\nvar circIn = function (p) { return 1 - Math.sin(Math.acos(p)); };\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circOut);\nvar backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nvar backOut = reverseEasing(backIn);\nvar backInOut = mirrorEasing(backIn);\nvar anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nvar ca = 4356.0 / 361.0;\nvar cb = 35442.0 / 1805.0;\nvar cc = 16061.0 / 1805.0;\nvar bounceOut = function (p) {\n if (p === 1 || p === 0)\n return p;\n var p2 = p * p;\n return p < BOUNCE_FIRST_THRESHOLD\n ? 7.5625 * p2\n : p < BOUNCE_SECOND_THRESHOLD\n ? 9.075 * p2 - 9.9 * p + 3.4\n : p < BOUNCE_THIRD_THRESHOLD\n ? ca * p2 - cb * p + cc\n : 10.8 * p * p - 20.52 * p + 10.72;\n};\nvar bounceIn = reverseEasing(bounceOut);\nvar bounceInOut = function (p) {\n return p < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))\n : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n};\n\nexport { anticipate, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, easeIn, easeInOut, easeOut, linear };\n","import { interpolate } from '../../utils/interpolate.js';\nimport { easeInOut } from '../../easing/index.js';\n\nfunction defaultEasing(values, easing) {\n return values.map(function () { return easing || easeInOut; }).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n var numValues = values.length;\n return values.map(function (_value, i) {\n return i !== 0 ? i / (numValues - 1) : 0;\n });\n}\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map(function (o) { return o * duration; });\n}\nfunction keyframes(_a) {\n var _b = _a.from, from = _b === void 0 ? 0 : _b, _c = _a.to, to = _c === void 0 ? 1 : _c, ease = _a.ease, offset = _a.offset, _d = _a.duration, duration = _d === void 0 ? 300 : _d;\n var state = { done: false, value: from };\n var values = Array.isArray(to) ? to : [from, to];\n var times = convertOffsetToTimes(offset && offset.length === values.length\n ? offset\n : defaultOffset(values), duration);\n function createInterpolator() {\n return interpolate(times, values, {\n ease: Array.isArray(ease) ? ease : defaultEasing(values, ease),\n });\n }\n var interpolator = createInterpolator();\n return {\n next: function (t) {\n state.value = interpolator(t);\n state.done = t >= duration;\n return state;\n },\n flipTarget: function () {\n values.reverse();\n interpolator = createInterpolator();\n },\n };\n}\n\nexport { convertOffsetToTimes, defaultEasing, defaultOffset, keyframes };\n","import { spring } from '../generators/spring.js';\nimport { keyframes } from '../generators/keyframes.js';\nimport { decay } from '../generators/decay.js';\n\nvar types = { keyframes: keyframes, spring: spring, decay: decay };\nfunction detectAnimationFromOptions(config) {\n if (Array.isArray(config.to)) {\n return keyframes;\n }\n else if (types[config.type]) {\n return types[config.type];\n }\n var keys = new Set(Object.keys(config));\n if (keys.has(\"ease\") ||\n (keys.has(\"duration\") && !keys.has(\"dampingRatio\"))) {\n return keyframes;\n }\n else if (keys.has(\"dampingRatio\") ||\n keys.has(\"stiffness\") ||\n keys.has(\"mass\") ||\n keys.has(\"damping\") ||\n keys.has(\"restSpeed\") ||\n keys.has(\"restDelta\")) {\n return spring;\n }\n return keyframes;\n}\n\nexport { detectAnimationFromOptions };\n","function decay(_a) {\n var _b = _a.velocity, velocity = _b === void 0 ? 0 : _b, _c = _a.from, from = _c === void 0 ? 0 : _c, _d = _a.power, power = _d === void 0 ? 0.8 : _d, _e = _a.timeConstant, timeConstant = _e === void 0 ? 350 : _e, _f = _a.restDelta, restDelta = _f === void 0 ? 0.5 : _f, modifyTarget = _a.modifyTarget;\n var state = { done: false, value: from };\n var amplitude = power * velocity;\n var ideal = from + amplitude;\n var target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n if (target !== ideal)\n amplitude = target - from;\n return {\n next: function (t) {\n var delta = -amplitude * Math.exp(-t / timeConstant);\n state.done = !(delta > restDelta || delta < -restDelta);\n state.value = state.done ? target : target + delta;\n return state;\n },\n flipTarget: function () { },\n };\n}\n\nexport { decay };\n","var defaultTimestep = (1 / 60) * 1000;\nvar getCurrentTime = typeof performance !== \"undefined\"\n ? function () { return performance.now(); }\n : function () { return Date.now(); };\nvar onNextFrame = typeof window !== \"undefined\"\n ? function (callback) {\n return window.requestAnimationFrame(callback);\n }\n : function (callback) {\n return setTimeout(function () { return callback(getCurrentTime()); }, defaultTimestep);\n };\n\nexport { defaultTimestep, onNextFrame };\n","import { onNextFrame, defaultTimestep } from './on-next-frame.js';\nimport { createRenderStep } from './create-render-step.js';\n\nvar maxElapsed = 40;\nvar useDefaultElapsed = true;\nvar runNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n delta: 0,\n timestamp: 0\n};\nvar stepsOrder = [\"read\", \"update\", \"preRender\", \"render\", \"postRender\"];\nvar steps = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = createRenderStep(function () {\n return runNextFrame = true;\n });\n return acc;\n}, {});\nvar sync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n var step = steps[key];\n acc[key] = function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n if (!runNextFrame) startLoop();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n}, {});\nvar cancelSync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nvar flushSync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = function () {\n return steps[key].process(frame);\n };\n return acc;\n}, {});\nvar processStep = function (stepId) {\n return steps[stepId].process(frame);\n};\nvar processFrame = function (timestamp) {\n runNextFrame = false;\n frame.delta = useDefaultElapsed ? defaultTimestep : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n frame.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (runNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nvar startLoop = function () {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing) onNextFrame(processFrame);\n};\nvar getFrameData = function () {\n return frame;\n};\n\nexport default sync;\nexport { cancelSync, flushSync, getFrameData };\n","function createRenderStep(runNextFrame) {\n var toRun = [];\n var toRunNextFrame = [];\n var numToRun = 0;\n var isProcessing = false;\n var toKeepAlive = new WeakSet();\n var step = {\n schedule: function (callback, keepAlive, immediate) {\n if (keepAlive === void 0) { keepAlive = false; }\n if (immediate === void 0) { immediate = false; }\n var addToCurrentFrame = immediate && isProcessing;\n var buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (buffer.indexOf(callback) === -1) {\n buffer.push(callback);\n if (addToCurrentFrame && isProcessing)\n numToRun = toRun.length;\n }\n return callback;\n },\n cancel: function (callback) {\n var index = toRunNextFrame.indexOf(callback);\n if (index !== -1)\n toRunNextFrame.splice(index, 1);\n toKeepAlive.delete(callback);\n },\n process: function (frameData) {\n var _a;\n isProcessing = true;\n _a = [toRunNextFrame, toRun], toRun = _a[0], toRunNextFrame = _a[1];\n toRunNextFrame.length = 0;\n numToRun = toRun.length;\n if (numToRun) {\n for (var i = 0; i < numToRun; i++) {\n var callback = toRun[i];\n callback(frameData);\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n }\n }\n isProcessing = false;\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","function loopElapsed(elapsed, duration, delay) {\n if (delay === void 0) { delay = 0; }\n return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration, delay, isForwardPlayback) {\n if (delay === void 0) { delay = 0; }\n if (isForwardPlayback === void 0) { isForwardPlayback = true; }\n return isForwardPlayback\n ? loopElapsed(duration + -elapsed, duration, delay)\n : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\n\nexport { hasRepeatDelayElapsed, loopElapsed, reverseElapsed };\n","import { __rest, __assign } from 'tslib';\nimport { detectAnimationFromOptions } from './utils/detect-animation-from-options.js';\nimport sync, { cancelSync } from 'framesync';\nimport { interpolate } from '../utils/interpolate.js';\nimport { hasRepeatDelayElapsed, reverseElapsed, loopElapsed } from './utils/elapsed.js';\n\nvar framesync = function (update) {\n var passTimestamp = function (_a) {\n var delta = _a.delta;\n return update(delta);\n };\n return {\n start: function () { return sync.update(passTimestamp, true); },\n stop: function () { return cancelSync.update(passTimestamp); },\n };\n};\nfunction animate(_a) {\n var _b, _c;\n var from = _a.from, _d = _a.autoplay, autoplay = _d === void 0 ? true : _d, _e = _a.driver, driver = _e === void 0 ? framesync : _e, _f = _a.elapsed, elapsed = _f === void 0 ? 0 : _f, _g = _a.repeat, repeatMax = _g === void 0 ? 0 : _g, _h = _a.repeatType, repeatType = _h === void 0 ? \"loop\" : _h, _j = _a.repeatDelay, repeatDelay = _j === void 0 ? 0 : _j, onPlay = _a.onPlay, onStop = _a.onStop, onComplete = _a.onComplete, onRepeat = _a.onRepeat, onUpdate = _a.onUpdate, options = __rest(_a, [\"from\", \"autoplay\", \"driver\", \"elapsed\", \"repeat\", \"repeatType\", \"repeatDelay\", \"onPlay\", \"onStop\", \"onComplete\", \"onRepeat\", \"onUpdate\"]);\n var to = options.to;\n var driverControls;\n var repeatCount = 0;\n var computedDuration = options.duration;\n var latest;\n var isComplete = false;\n var isForwardPlayback = true;\n var interpolateFromNumber;\n var animator = detectAnimationFromOptions(options);\n if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {\n interpolateFromNumber = interpolate([0, 100], [from, to], {\n clamp: false,\n });\n from = 0;\n to = 100;\n }\n var animation = animator(__assign(__assign({}, options), { from: from, to: to }));\n function repeat() {\n repeatCount++;\n if (repeatType === \"reverse\") {\n isForwardPlayback = repeatCount % 2 === 0;\n elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n }\n else {\n elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n if (repeatType === \"mirror\")\n animation.flipTarget();\n }\n isComplete = false;\n onRepeat && onRepeat();\n }\n function complete() {\n driverControls.stop();\n onComplete && onComplete();\n }\n function update(delta) {\n if (!isForwardPlayback)\n delta = -delta;\n elapsed += delta;\n if (!isComplete) {\n var state = animation.next(Math.max(0, elapsed));\n latest = state.value;\n if (interpolateFromNumber)\n latest = interpolateFromNumber(latest);\n isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n }\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);\n if (isComplete) {\n if (repeatCount === 0)\n computedDuration !== null && computedDuration !== void 0 ? computedDuration : (computedDuration = elapsed);\n if (repeatCount < repeatMax) {\n hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n }\n else {\n complete();\n }\n }\n }\n function play() {\n onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n driverControls = driver(update);\n driverControls.start();\n }\n autoplay && play();\n return {\n stop: function () {\n onStop === null || onStop === void 0 ? void 0 : onStop();\n driverControls.stop();\n },\n };\n}\n\nexport { animate };\n","function velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nvar secondsToMilliseconds = function (seconds) { return seconds * 1000; };\n\nexport { secondsToMilliseconds };\n","import { linear } from './index.js';\n\nvar a = function (a1, a2) { return 1.0 - 3.0 * a2 + 3.0 * a1; };\nvar b = function (a1, a2) { return 3.0 * a2 - 6.0 * a1; };\nvar c = function (a1) { return 3.0 * a1; };\nvar calcBezier = function (t, a1, a2) {\n return ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n};\nvar getSlope = function (t, a1, a2) {\n return 3.0 * a(a1, a2) * t * t + 2.0 * b(a1, a2) * t + c(a1);\n};\nvar subdivisionPrecision = 0.0000001;\nvar subdivisionMaxIterations = 10;\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX;\n var currentT;\n var i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n }\n else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nvar newtonIterations = 8;\nvar newtonMinSlope = 0.001;\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < newtonIterations; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n if (mX1 === mY1 && mX2 === mY2)\n return linear;\n var sampleValues = new Float32Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n function getTForX(aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n var dist = (aX - sampleValues[currentSample]) /\n (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= newtonMinSlope) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n else if (initialSlope === 0.0) {\n return guessForT;\n }\n else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n return function (t) {\n return t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n };\n}\n\nexport { cubicBezier };\n","import { __read } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut } from 'popmotion';\n\nvar easingLookup = {\n linear: linear,\n easeIn: easeIn,\n easeInOut: easeInOut,\n easeOut: easeOut,\n circIn: circIn,\n circInOut: circInOut,\n circOut: circOut,\n backIn: backIn,\n backInOut: backInOut,\n backOut: backOut,\n anticipate: anticipate,\n bounceIn: bounceIn,\n bounceInOut: bounceInOut,\n bounceOut: bounceOut,\n};\nvar easingDefinitionToFunction = function (definition) {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, \"Cubic bezier arrays must contain four numerical values.\");\n var _a = __read(definition, 4), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, \"Invalid easing type '\" + definition + \"'\");\n return easingLookup[definition];\n }\n return definition;\n};\nvar isEasingArray = function (ease) {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { easingDefinitionToFunction, isEasingArray };\n","import { complex } from 'style-value-types';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nvar isAnimatable = function (key, value) {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n complex.test(value) && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { __assign } from 'tslib';\nimport { isKeyframesTarget } from './is-keyframes-target.js';\n\nvar underDampedSpring = function () { return ({\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restDelta: 0.5,\n restSpeed: 10,\n}); };\nvar criticallyDampedSpring = function (to) { return ({\n type: \"spring\",\n stiffness: 550,\n damping: to === 0 ? 2 * Math.sqrt(550) : 30,\n restDelta: 0.01,\n restSpeed: 10,\n}); };\nvar linearTween = function () { return ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n}); };\nvar keyframes = function (values) { return ({\n type: \"keyframes\",\n duration: 0.8,\n values: values,\n}); };\nvar defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: criticallyDampedSpring,\n scaleY: criticallyDampedSpring,\n scale: criticallyDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: criticallyDampedSpring,\n};\nvar getDefaultTransition = function (valueKey, to) {\n var transitionFactory;\n if (isKeyframesTarget(to)) {\n transitionFactory = keyframes;\n }\n else {\n transitionFactory =\n defaultTransitions[valueKey] || defaultTransitions.default;\n }\n return __assign({ to: to }, transitionFactory(to));\n};\n\nexport { criticallyDampedSpring, getDefaultTransition, linearTween, underDampedSpring };\n","import { __assign } from 'tslib';\nimport { complex } from './index.js';\nimport { floatRegex } from '../utils.js';\n\nvar maxDefaults = new Set(['brightness', 'contrast', 'saturate', 'opacity']);\nfunction applyDefaultFilter(v) {\n var _a = v.slice(0, -1).split('('), name = _a[0], value = _a[1];\n if (name === 'drop-shadow')\n return v;\n var number = (value.match(floatRegex) || [])[0];\n if (!number)\n return v;\n var unit = value.replace(number, '');\n var defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + '(' + defaultValue + unit + ')';\n}\nvar functionRegex = /([a-z-]*)\\(.*?\\)/g;\nvar filter = __assign(__assign({}, complex), { getAnimatableNone: function (v) {\n var functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(' ') : v;\n } });\n\nexport { filter };\n","import { __assign } from 'tslib';\nimport { color, filter } from 'style-value-types';\nimport { numberValueTypes } from './number.js';\n\n/**\n * A map of default value types for common values\n */\nvar defaultValueTypes = __assign(__assign({}, numberValueTypes), { \n // Color props\n color: color, backgroundColor: color, outlineColor: color, fill: color, stroke: color, \n // Border props\n borderColor: color, borderTopColor: color, borderRightColor: color, borderBottomColor: color, borderLeftColor: color, filter: filter, WebkitFilter: filter });\n/**\n * Gets the default ValueType for the provided value key\n */\nvar getDefaultValueType = function (key) { return defaultValueTypes[key]; };\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { filter, complex } from 'style-value-types';\nimport { getDefaultValueType } from './defaults.js';\n\nfunction getAnimatableNone(key, value) {\n var _a;\n var defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\nexport { getAnimatableNone };\n","import { __assign, __rest, __spreadArray, __read } from 'tslib';\nimport { inertia, animate } from 'popmotion';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.js';\nimport { isEasingArray, easingDefinitionToFunction } from './easing.js';\nimport { isAnimatable } from './is-animatable.js';\nimport { getDefaultTransition } from './default-transitions.js';\nimport { warning } from 'hey-listen';\nimport { getAnimatableNone } from '../../render/dom/value-types/animatable-none.js';\n\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined(_a) {\n _a.when; _a.delay; _a.delayChildren; _a.staggerChildren; _a.staggerDirection; _a.repeat; _a.repeatType; _a.repeatDelay; _a.from; var transition = __rest(_a, [\"when\", \"delay\", \"delayChildren\", \"staggerChildren\", \"staggerDirection\", \"repeat\", \"repeatType\", \"repeatDelay\", \"from\"]);\n return !!Object.keys(transition).length;\n}\nvar legacyRepeatWarning = false;\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\nfunction convertTransitionToAnimationOptions(_a) {\n var ease = _a.ease, times = _a.times, yoyo = _a.yoyo, flip = _a.flip, loop = _a.loop, transition = __rest(_a, [\"ease\", \"times\", \"yoyo\", \"flip\", \"loop\"]);\n var options = __assign({}, transition);\n if (times)\n options[\"offset\"] = times;\n /**\n * Convert any existing durations from seconds to milliseconds\n */\n if (transition.duration)\n options[\"duration\"] = secondsToMilliseconds(transition.duration);\n if (transition.repeatDelay)\n options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n /**\n * Map easing names to Popmotion's easing functions\n */\n if (ease) {\n options[\"ease\"] = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n }\n /**\n * Support legacy transition API\n */\n if (transition.type === \"tween\")\n options.type = \"keyframes\";\n /**\n * TODO: These options are officially removed from the API.\n */\n if (yoyo || loop || flip) {\n warning(!legacyRepeatWarning, \"yoyo, loop and flip have been removed from the API. Replace with repeat and repeatType options.\");\n legacyRepeatWarning = true;\n if (yoyo) {\n options.repeatType = \"reverse\";\n }\n else if (loop) {\n options.repeatType = \"loop\";\n }\n else if (flip) {\n options.repeatType = \"mirror\";\n }\n options.repeat = loop || yoyo || flip || transition.repeat;\n }\n /**\n * TODO: Popmotion 9 has the ability to automatically detect whether to use\n * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n * It'd be good to introduce a similar thing here.\n */\n if (transition.type !== \"spring\")\n options.type = \"keyframes\";\n return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\nfunction getDelayFromTransition(transition, key) {\n var _a;\n var valueTransition = getValueTransition(transition, key) || {};\n return (_a = valueTransition.delay) !== null && _a !== void 0 ? _a : 0;\n}\nfunction hydrateKeyframes(options) {\n if (Array.isArray(options.to) && options.to[0] === null) {\n options.to = __spreadArray([], __read(options.to));\n options.to[0] = options.from;\n }\n return options;\n}\nfunction getPopmotionAnimationOptions(transition, options, key) {\n var _a;\n if (Array.isArray(options.to)) {\n (_a = transition.duration) !== null && _a !== void 0 ? _a : (transition.duration = 0.8);\n }\n hydrateKeyframes(options);\n /**\n * Get a default transition if none is determined to be defined.\n */\n if (!isTransitionDefined(transition)) {\n transition = __assign(__assign({}, transition), getDefaultTransition(key, options.to));\n }\n return __assign(__assign({}, options), convertTransitionToAnimationOptions(transition));\n}\n/**\n *\n */\nfunction getAnimation(key, value, target, transition, onComplete) {\n var _a;\n var valueTransition = getValueTransition(transition, key);\n var origin = (_a = valueTransition.from) !== null && _a !== void 0 ? _a : value.get();\n var isTargetAnimatable = isAnimatable(key, target);\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n origin = getAnimatableNone(key, target);\n }\n else if (isZero(origin) && typeof target === \"string\") {\n origin = getZeroUnit(target);\n }\n else if (!Array.isArray(target) &&\n isZero(target) &&\n typeof origin === \"string\") {\n target = getZeroUnit(origin);\n }\n var isOriginAnimatable = isAnimatable(key, origin);\n warning(isOriginAnimatable === isTargetAnimatable, \"You are trying to animate \" + key + \" from \\\"\" + origin + \"\\\" to \\\"\" + target + \"\\\". \" + origin + \" is not an animatable value - to enable this animation set \" + origin + \" to a value animatable to \" + target + \" via the `style` property.\");\n function start() {\n var options = {\n from: origin,\n to: target,\n velocity: value.getVelocity(),\n onComplete: onComplete,\n onUpdate: function (v) { return value.set(v); },\n };\n return valueTransition.type === \"inertia\" ||\n valueTransition.type === \"decay\"\n ? inertia(__assign(__assign({}, options), valueTransition))\n : animate(__assign(__assign({}, getPopmotionAnimationOptions(valueTransition, options, key)), { onUpdate: function (v) {\n var _a;\n options.onUpdate(v);\n (_a = valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, v);\n }, onComplete: function () {\n var _a;\n options.onComplete();\n (_a = valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n } }));\n }\n function set() {\n var _a;\n value.set(target);\n onComplete();\n (_a = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n return { stop: function () { } };\n }\n return !isOriginAnimatable ||\n !isTargetAnimatable ||\n valueTransition.type === false\n ? set\n : start;\n}\nfunction isZero(value) {\n return (value === 0 ||\n (typeof value === \"string\" &&\n parseFloat(value) === 0 &&\n value.indexOf(\" \") === -1));\n}\nfunction getZeroUnit(potentialUnitType) {\n return typeof potentialUnitType === \"number\"\n ? 0\n : getAnimatableNone(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n *\n * @internal\n */\nfunction startAnimation(key, value, target, transition) {\n if (transition === void 0) { transition = {}; }\n return value.start(function (onComplete) {\n var delayTimer;\n var controls;\n var animation = getAnimation(key, value, target, transition, onComplete);\n var delay = getDelayFromTransition(transition, key);\n var start = function () { return (controls = animation()); };\n if (delay) {\n delayTimer = setTimeout(start, secondsToMilliseconds(delay));\n }\n else {\n start();\n }\n return function () {\n clearTimeout(delayTimer);\n controls === null || controls === void 0 ? void 0 : controls.stop();\n };\n });\n}\n\nexport { convertTransitionToAnimationOptions, getDelayFromTransition, getPopmotionAnimationOptions, getValueTransition, getZeroUnit, hydrateKeyframes, isTransitionDefined, isZero, startAnimation };\n","import { __assign } from 'tslib';\nimport { animate } from './index.js';\nimport { velocityPerSecond } from '../utils/velocity-per-second.js';\nimport { getFrameData } from 'framesync';\n\nfunction inertia(_a) {\n var _b = _a.from, from = _b === void 0 ? 0 : _b, _c = _a.velocity, velocity = _c === void 0 ? 0 : _c, min = _a.min, max = _a.max, _d = _a.power, power = _d === void 0 ? 0.8 : _d, _e = _a.timeConstant, timeConstant = _e === void 0 ? 750 : _e, _f = _a.bounceStiffness, bounceStiffness = _f === void 0 ? 500 : _f, _g = _a.bounceDamping, bounceDamping = _g === void 0 ? 10 : _g, _h = _a.restDelta, restDelta = _h === void 0 ? 1 : _h, modifyTarget = _a.modifyTarget, driver = _a.driver, onUpdate = _a.onUpdate, onComplete = _a.onComplete;\n var currentAnimation;\n function isOutOfBounds(v) {\n return (min !== undefined && v < min) || (max !== undefined && v > max);\n }\n function boundaryNearest(v) {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n }\n function startAnimation(options) {\n currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n currentAnimation = animate(__assign(__assign({}, options), { driver: driver, onUpdate: function (v) {\n var _a;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n }, onComplete: onComplete }));\n }\n function startSpring(options) {\n startAnimation(__assign({ type: \"spring\", stiffness: bounceStiffness, damping: bounceDamping, restDelta: restDelta }, options));\n }\n if (isOutOfBounds(from)) {\n startSpring({ from: from, velocity: velocity, to: boundaryNearest(from) });\n }\n else {\n var target = power * velocity + from;\n if (typeof modifyTarget !== \"undefined\")\n target = modifyTarget(target);\n var boundary_1 = boundaryNearest(target);\n var heading_1 = boundary_1 === min ? -1 : 1;\n var prev_1;\n var current_1;\n var checkBoundary = function (v) {\n prev_1 = current_1;\n current_1 = v;\n velocity = velocityPerSecond(v - prev_1, getFrameData().delta);\n if ((heading_1 === 1 && v > boundary_1) ||\n (heading_1 === -1 && v < boundary_1)) {\n startSpring({ from: v, to: boundary_1, velocity: velocity });\n }\n };\n startAnimation({\n type: \"decay\",\n from: from,\n velocity: velocity,\n timeConstant: timeConstant,\n power: power,\n restDelta: restDelta,\n modifyTarget: modifyTarget,\n onUpdate: isOutOfBounds(target) ? checkBoundary : undefined,\n });\n }\n return {\n stop: function () { return currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop(); },\n };\n}\n\nexport { inertia };\n","function addUniqueItem(arr, item) {\n arr.indexOf(item) === -1 && arr.push(item);\n}\nfunction removeItem(arr, item) {\n var index = arr.indexOf(item);\n index > -1 && arr.splice(index, 1);\n}\n\nexport { addUniqueItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.js';\n\nvar SubscriptionManager = /** @class */ (function () {\n function SubscriptionManager() {\n this.subscriptions = [];\n }\n SubscriptionManager.prototype.add = function (handler) {\n var _this = this;\n addUniqueItem(this.subscriptions, handler);\n return function () { return removeItem(_this.subscriptions, handler); };\n };\n SubscriptionManager.prototype.notify = function (a, b, c) {\n var numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (var i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n var handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n };\n SubscriptionManager.prototype.getSize = function () {\n return this.subscriptions.length;\n };\n SubscriptionManager.prototype.clear = function () {\n this.subscriptions.length = 0;\n };\n return SubscriptionManager;\n}());\n\nexport { SubscriptionManager };\n","import sync, { getFrameData } from 'framesync';\nimport { velocityPerSecond } from 'popmotion';\nimport { SubscriptionManager } from '../utils/subscription-manager.js';\n\nvar isFloat = function (value) {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nvar MotionValue = /** @class */ (function () {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n function MotionValue(init) {\n var _this = this;\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Functions to notify when the `MotionValue` updates.\n *\n * @internal\n */\n this.updateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the velocity updates.\n *\n * @internal\n */\n this.velocityUpdateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the `MotionValue` updates and `render` is set to `true`.\n *\n * @internal\n */\n this.renderSubscribers = new SubscriptionManager();\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n this.updateAndNotify = function (v, render) {\n if (render === void 0) { render = true; }\n _this.prev = _this.current;\n _this.current = v;\n // Update timestamp\n var _a = getFrameData(), delta = _a.delta, timestamp = _a.timestamp;\n if (_this.lastUpdated !== timestamp) {\n _this.timeDelta = delta;\n _this.lastUpdated = timestamp;\n sync.postRender(_this.scheduleVelocityCheck);\n }\n // Update update subscribers\n if (_this.prev !== _this.current) {\n _this.updateSubscribers.notify(_this.current);\n }\n // Update velocity subscribers\n if (_this.velocityUpdateSubscribers.getSize()) {\n _this.velocityUpdateSubscribers.notify(_this.getVelocity());\n }\n // Update render subscribers\n if (render) {\n _this.renderSubscribers.notify(_this.current);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = function () { return sync.postRender(_this.velocityCheck); };\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = function (_a) {\n var timestamp = _a.timestamp;\n if (timestamp !== _this.lastUpdated) {\n _this.prev = _this.current;\n _this.velocityUpdateSubscribers.notify(_this.getVelocity());\n }\n };\n this.hasAnimated = false;\n this.prev = this.current = init;\n this.canTrackVelocity = isFloat(this.current);\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * @library\n *\n * ```jsx\n * function MyComponent() {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @motion\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @internalremarks\n *\n * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\n *\n * ```jsx\n * useOnChange(x, () => {})\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @public\n */\n MotionValue.prototype.onChange = function (subscription) {\n return this.updateSubscribers.add(subscription);\n };\n MotionValue.prototype.clearListeners = function () {\n this.updateSubscribers.clear();\n };\n /**\n * Adds a function that will be notified when the `MotionValue` requests a render.\n *\n * @param subscriber - A function that's provided the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @internal\n */\n MotionValue.prototype.onRenderRequest = function (subscription) {\n // Render immediately\n subscription(this.get());\n return this.renderSubscribers.add(subscription);\n };\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n MotionValue.prototype.attach = function (passiveEffect) {\n this.passiveEffect = passiveEffect;\n };\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n MotionValue.prototype.set = function (v, render) {\n if (render === void 0) { render = true; }\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n };\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n MotionValue.prototype.get = function () {\n return this.current;\n };\n /**\n * @public\n */\n MotionValue.prototype.getPrevious = function () {\n return this.prev;\n };\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n MotionValue.prototype.getVelocity = function () {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\n };\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n MotionValue.prototype.start = function (animation) {\n var _this = this;\n this.stop();\n return new Promise(function (resolve) {\n _this.hasAnimated = true;\n _this.stopAnimation = animation(resolve);\n }).then(function () { return _this.clearAnimation(); });\n };\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n MotionValue.prototype.stop = function () {\n if (this.stopAnimation)\n this.stopAnimation();\n this.clearAnimation();\n };\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n MotionValue.prototype.isAnimating = function () {\n return !!this.stopAnimation;\n };\n MotionValue.prototype.clearAnimation = function () {\n this.stopAnimation = null;\n };\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n MotionValue.prototype.destroy = function () {\n this.updateSubscribers.clear();\n this.renderSubscribers.clear();\n this.stop();\n };\n return MotionValue;\n}());\n/**\n * @internal\n */\nfunction motionValue(init) {\n return new MotionValue(init);\n}\n\nexport { MotionValue, motionValue };\n","/**\n * Tests a provided value against a ValueType\n */\nvar testValueType = function (v) { return function (type) { return type.test(v); }; };\n\nexport { testValueType };\n","import { number, px, percent, degrees, vw, vh } from 'style-value-types';\nimport { testValueType } from './test.js';\nimport { auto } from './type-auto.js';\n\n/**\n * A list of value types commonly used for dimensions\n */\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nvar findDimensionValueType = function (v) {\n return dimensionValueTypes.find(testValueType(v));\n};\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nvar auto = {\n test: function (v) { return v === \"auto\"; },\n parse: function (v) { return v; },\n};\n\nexport { auto };\n","import { __spreadArray, __read } from 'tslib';\nimport { color, complex } from 'style-value-types';\nimport { dimensionValueTypes } from './dimensions.js';\nimport { testValueType } from './test.js';\n\n/**\n * A list of all ValueTypes\n */\nvar valueTypes = __spreadArray(__spreadArray([], __read(dimensionValueTypes)), [color, complex]);\n/**\n * Tests a value against the list of ValueTypes\n */\nvar findValueType = function (v) { return valueTypes.find(testValueType(v)); };\n\nexport { findValueType };\n","import { __rest, __assign, __spreadArray, __read } from 'tslib';\nimport { complex } from 'style-value-types';\nimport { isNumericalString } from '../../utils/is-numerical-string.js';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.js';\nimport { motionValue } from '../../value/index.js';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.js';\nimport { findValueType } from '../dom/value-types/find.js';\nimport { resolveVariant } from './variants.js';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n var resolved = resolveVariant(visualElement, definition);\n var _a = resolved\n ? visualElement.makeTargetAnimatable(resolved, false)\n : {}, _b = _a.transitionEnd, transitionEnd = _b === void 0 ? {} : _b; _a.transition; var target = __rest(_a, [\"transitionEnd\", \"transition\"]);\n target = __assign(__assign({}, target), transitionEnd);\n for (var key in target) {\n var value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n var reversedLabels = __spreadArray([], __read(variantLabels)).reverse();\n reversedLabels.forEach(function (key) {\n var _a;\n var variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n setVariants(child, variantLabels);\n });\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b, _c;\n var _d;\n var newValueKeys = Object.keys(target).filter(function (key) { return !visualElement.hasValue(key); });\n var numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (var i = 0; i < numNewValues; i++) {\n var key = newValueKeys[i];\n var targetValue = target[key];\n var value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\n if (typeof value === \"string\" && isNumericalString(value)) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value));\n (_c = (_d = origin)[key]) !== null && _c !== void 0 ? _c : (_d[key] = value);\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n var valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n var _a, _b;\n var origin = {};\n for (var key in target) {\n origin[key] =\n (_a = getOriginFromTransition(key, transition)) !== null && _a !== void 0 ? _a : (_b = visualElement.getValue(key)) === null || _b === void 0 ? void 0 : _b.get();\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { __read, __rest, __assign } from 'tslib';\nimport { startAnimation } from '../../animation/utils/transitions.js';\nimport { setTarget } from './setters.js';\nimport { resolveVariant } from './variants.js';\n\n/**\n * @internal\n */\nfunction animateVisualElement(visualElement, definition, options) {\n if (options === void 0) { options = {}; }\n visualElement.notifyAnimationStart();\n var animation;\n if (Array.isArray(definition)) {\n var animations = definition.map(function (variant) {\n return animateVariant(visualElement, variant, options);\n });\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n var resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = animateTarget(visualElement, resolvedDefinition, options);\n }\n return animation.then(function () {\n return visualElement.notifyAnimationComplete(definition);\n });\n}\nfunction animateVariant(visualElement, variant, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var resolved = resolveVariant(visualElement, variant, options.custom);\n var _b = (resolved || {}).transition, transition = _b === void 0 ? visualElement.getDefaultTransition() || {} : _b;\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n var getAnimation = resolved\n ? function () { return animateTarget(visualElement, resolved, options); }\n : function () { return Promise.resolve(); };\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n var getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size)\n ? function (forwardDelay) {\n if (forwardDelay === void 0) { forwardDelay = 0; }\n var _a = transition.delayChildren, delayChildren = _a === void 0 ? 0 : _a, staggerChildren = transition.staggerChildren, staggerDirection = transition.staggerDirection;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : function () { return Promise.resolve(); };\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n var when = transition.when;\n if (when) {\n var _c = __read(when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation], 2), first = _c[0], last = _c[1];\n return first().then(last);\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\n/**\n * @internal\n */\nfunction animateTarget(visualElement, definition, _a) {\n var _b;\n var _c = _a === void 0 ? {} : _a, _d = _c.delay, delay = _d === void 0 ? 0 : _d, transitionOverride = _c.transitionOverride, type = _c.type;\n var _e = visualElement.makeTargetAnimatable(definition), _f = _e.transition, transition = _f === void 0 ? visualElement.getDefaultTransition() : _f, transitionEnd = _e.transitionEnd, target = __rest(_e, [\"transition\", \"transitionEnd\"]);\n if (transitionOverride)\n transition = transitionOverride;\n var animations = [];\n var animationTypeState = type && ((_b = visualElement.animationState) === null || _b === void 0 ? void 0 : _b.getState()[type]);\n for (var key in target) {\n var value = visualElement.getValue(key);\n var valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n var animation = startAnimation(key, value, valueTarget, __assign({ delay: delay }, transition));\n animations.push(animation);\n }\n return Promise.all(animations).then(function () {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n}\nfunction animateChildren(visualElement, variant, delayChildren, staggerChildren, staggerDirection, options) {\n if (delayChildren === void 0) { delayChildren = 0; }\n if (staggerChildren === void 0) { staggerChildren = 0; }\n if (staggerDirection === void 0) { staggerDirection = 1; }\n var animations = [];\n var maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n var generateStaggerDuration = staggerDirection === 1\n ? function (i) {\n if (i === void 0) { i = 0; }\n return i * staggerChildren;\n }\n : function (i) {\n if (i === void 0) { i = 0; }\n return maxStaggerDuration - i * staggerChildren;\n };\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach(function (child, i) {\n animations.push(animateVariant(child, variant, __assign(__assign({}, options), { delay: delayChildren + generateStaggerDuration(i) })).then(function () { return child.notifyAnimationComplete(variant); }));\n });\n return Promise.all(animations);\n}\nfunction stopAnimation(visualElement) {\n visualElement.forEachValue(function (value) { return value.stop(); });\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation(_a, key) {\n var protectedKeys = _a.protectedKeys, needsAnimating = _a.needsAnimating;\n var shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\n\nexport { animateVisualElement, sortByTreeOrder, stopAnimation };\n","import { __spreadArray, __read, __assign, __rest } from 'tslib';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.js';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.js';\nimport { shallowCompare } from '../../utils/shallow-compare.js';\nimport { animateVisualElement } from './animation.js';\nimport { AnimationType } from './types.js';\nimport { isVariantLabels, resolveVariant, isVariantLabel } from './variants.js';\n\nvar variantPriorityOrder = [\n AnimationType.Animate,\n AnimationType.Hover,\n AnimationType.Tap,\n AnimationType.Drag,\n AnimationType.Focus,\n AnimationType.Exit,\n];\nvar reversePriorityOrder = __spreadArray([], __read(variantPriorityOrder)).reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return function (animations) {\n return Promise.all(animations.map(function (_a) {\n var animation = _a.animation, options = _a.options;\n return animateVisualElement(visualElement, animation, options);\n }));\n };\n}\nfunction createAnimationState(visualElement) {\n var animate = animateList(visualElement);\n var state = createState();\n var allAnimatedKeys = {};\n var isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n var buildResolvedTypeValues = function (acc, definition) {\n var resolved = resolveVariant(visualElement, definition);\n if (resolved) {\n resolved.transition; var transitionEnd = resolved.transitionEnd, target = __rest(resolved, [\"transition\", \"transitionEnd\"]);\n acc = __assign(__assign(__assign({}, acc), target), transitionEnd);\n }\n return acc;\n };\n function isAnimated(key) {\n return allAnimatedKeys[key] !== undefined;\n }\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(options, changedActiveType) {\n var _a;\n var props = visualElement.getProps();\n var context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n var animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n var removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n var encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n var removedVariantIndex = Infinity;\n var _loop_1 = function (i) {\n var type = reversePriorityOrder[i];\n var typeState = state[type];\n var prop = (_a = props[type]) !== null && _a !== void 0 ? _a : context[type];\n var propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n var activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n var isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = __assign({}, encounteredKeys);\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n return \"continue\";\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n var shouldAnimateType = variantsHaveChanged(typeState.prevProp, prop) ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n var definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n var resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n var _b = typeState.prevResolvedValues, prevResolvedValues = _b === void 0 ? {} : _b;\n var allKeys = __assign(__assign({}, prevResolvedValues), resolvedValues);\n var markToAnimate = function (key) {\n shouldAnimateType = true;\n removedKeys.delete(key);\n typeState.needsAnimating[key] = true;\n };\n for (var key in allKeys) {\n var next = resolvedValues[key];\n var prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n if (next !== prev) {\n /**\n * If both values are keyframes, we need to shallow compare them to\n * detect whether any value has changed. If it has, we animate it.\n */\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n if (!shallowCompare(next, prev)) {\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we want to ensure it doesn't animate by\n * adding it to the list of protected keys.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n else if (next !== undefined) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = __assign(__assign({}, encounteredKeys), resolvedValues);\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n * TODO: Test as this should probably still handle animations triggered\n * by removed values?\n */\n if (shouldAnimateType && !isInherited) {\n animations.push.apply(animations, __spreadArray([], __read(definitionList.map(function (animation) { return ({\n animation: animation,\n options: __assign({ type: type }, options),\n }); }))));\n }\n };\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (var i = 0; i < numAnimationTypes; i++) {\n _loop_1(i);\n }\n allAnimatedKeys = __assign({}, encounteredKeys);\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n var fallbackAnimation_1 = {};\n removedKeys.forEach(function (key) {\n var fallbackTarget = visualElement.getBaseTarget(key);\n if (fallbackTarget !== undefined) {\n fallbackAnimation_1[key] = fallbackTarget;\n }\n });\n animations.push({ animation: fallbackAnimation_1 });\n }\n var shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n props.initial === false &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive, options) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n return animateChanges(options, type);\n }\n return {\n isAnimated: isAnimated,\n animateChanges: animateChanges,\n setActive: setActive,\n setAnimateFunction: setAnimateFunction,\n getState: function () { return state; },\n };\n}\nfunction variantsHaveChanged(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (isVariantLabels(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive) {\n if (isActive === void 0) { isActive = false; }\n return {\n isActive: isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n var _a;\n return _a = {},\n _a[AnimationType.Animate] = createTypeState(true),\n _a[AnimationType.Hover] = createTypeState(),\n _a[AnimationType.Tap] = createTypeState(),\n _a[AnimationType.Drag] = createTypeState(),\n _a[AnimationType.Focus] = createTypeState(),\n _a[AnimationType.Exit] = createTypeState(),\n _a;\n}\n\nexport { createAnimationState, variantPriorityOrder, variantsHaveChanged };\n","import { __read } from 'tslib';\nimport { useEffect, useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.js';\nimport { usePresence } from '../../components/AnimatePresence/use-presence.js';\nimport { PresenceContext } from '../../context/PresenceContext.js';\nimport { createAnimationState } from '../../render/utils/animation-state.js';\nimport { AnimationType } from '../../render/utils/types.js';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.js';\n\nvar animations = {\n animation: makeRenderlessComponent(function (_a) {\n var visualElement = _a.visualElement, animate = _a.animate;\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement));\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n if (isAnimationControls(animate)) {\n useEffect(function () { return animate.subscribe(visualElement); }, [animate]);\n }\n }),\n exit: makeRenderlessComponent(function (props) {\n var custom = props.custom, visualElement = props.visualElement;\n var _a = __read(usePresence(), 2), isPresent = _a[0], onExitComplete = _a[1];\n var presenceContext = useContext(PresenceContext);\n useEffect(function () {\n var _a, _b;\n var animation = (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Exit, !isPresent, { custom: (_b = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.custom) !== null && _b !== void 0 ? _b : custom });\n !isPresent && (animation === null || animation === void 0 ? void 0 : animation.then(onExitComplete));\n }, [isPresent]);\n }),\n};\n\nexport { animations };\n","var isPoint = function (point) {\n return point.hasOwnProperty('x') && point.hasOwnProperty('y');\n};\n\nexport { isPoint };\n","import { isPoint } from './is-point.js';\n\nvar isPoint3D = function (point) {\n return isPoint(point) && point.hasOwnProperty('z');\n};\n\nexport { isPoint3D };\n","import { isPoint } from './is-point.js';\nimport { isPoint3D } from './is-point-3d.js';\nimport { isNum } from './inc.js';\n\nvar distance1D = function (a, b) { return Math.abs(a - b); };\nfunction distance(a, b) {\n if (isNum(a) && isNum(b)) {\n return distance1D(a, b);\n }\n else if (isPoint(a) && isPoint(b)) {\n var xDelta = distance1D(a.x, b.x);\n var yDelta = distance1D(a.y, b.y);\n var zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\n return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\n }\n}\n\nexport { distance };\n","import { __assign } from 'tslib';\nimport { isMouseEvent, isTouchEvent } from './utils/event-type.js';\nimport { extractEventInfo } from '../events/event-info.js';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { secondsToMilliseconds } from '../utils/time-conversion.js';\nimport { addPointerEvent } from '../events/use-pointer-event.js';\nimport { distance, pipe } from 'popmotion';\n\n/**\n * @internal\n */\nvar PanSession = /** @class */ (function () {\n function PanSession(event, handlers, _a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, transformPagePoint = _b.transformPagePoint;\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n this.updatePoint = function () {\n if (!(_this.lastMoveEvent && _this.lastMoveEventInfo))\n return;\n var info = getPanInfo(_this.lastMoveEventInfo, _this.history);\n var isPanStarted = _this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n var isDistancePastThreshold = distance(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n var point = info.point;\n var timestamp = getFrameData().timestamp;\n _this.history.push(__assign(__assign({}, point), { timestamp: timestamp }));\n var _a = _this.handlers, onStart = _a.onStart, onMove = _a.onMove;\n if (!isPanStarted) {\n onStart && onStart(_this.lastMoveEvent, info);\n _this.startEvent = _this.lastMoveEvent;\n }\n onMove && onMove(_this.lastMoveEvent, info);\n };\n this.handlePointerMove = function (event, info) {\n _this.lastMoveEvent = event;\n _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint);\n // Because Safari doesn't trigger mouseup events when it's above a `