three-stdlib 2.35.5 → 2.35.7
Sign up to get free protection for your applications and to get access to all the features.
- package/_polyfill/CapsuleGeometry.cjs +20 -17
- package/_polyfill/CapsuleGeometry.cjs.map +1 -1
- package/_polyfill/CapsuleGeometry.js +20 -17
- package/_polyfill/CapsuleGeometry.js.map +1 -1
- package/_polyfill/constants.cjs +1 -1
- package/_polyfill/constants.cjs.map +1 -1
- package/_polyfill/constants.js +1 -1
- package/_polyfill/constants.js.map +1 -1
- package/animation/AnimationClipCreator.cjs +13 -13
- package/animation/AnimationClipCreator.cjs.map +1 -1
- package/animation/AnimationClipCreator.js +13 -13
- package/animation/AnimationClipCreator.js.map +1 -1
- package/animation/CCDIKSolver.cjs +11 -11
- package/animation/CCDIKSolver.cjs.map +1 -1
- package/animation/CCDIKSolver.js +12 -12
- package/animation/CCDIKSolver.js.map +1 -1
- package/animation/MMDAnimationHelper.cjs +1 -1
- package/animation/MMDAnimationHelper.cjs.map +1 -1
- package/animation/MMDAnimationHelper.js +1 -1
- package/animation/MMDAnimationHelper.js.map +1 -1
- package/animation/MMDPhysics.cjs +4 -4
- package/animation/MMDPhysics.cjs.map +1 -1
- package/animation/MMDPhysics.js +4 -4
- package/animation/MMDPhysics.js.map +1 -1
- package/controls/ArcballControls.cjs +2 -2
- package/controls/ArcballControls.cjs.map +1 -1
- package/controls/ArcballControls.js +3 -3
- package/controls/ArcballControls.js.map +1 -1
- package/controls/FirstPersonControls.cjs +1 -1
- package/controls/FirstPersonControls.cjs.map +1 -1
- package/controls/FirstPersonControls.js +1 -1
- package/controls/FirstPersonControls.js.map +1 -1
- package/controls/OrbitControls.cjs +2 -2
- package/controls/OrbitControls.cjs.map +1 -1
- package/controls/OrbitControls.js +3 -3
- package/controls/OrbitControls.js.map +1 -1
- package/controls/PointerLockControls.cjs +2 -2
- package/controls/PointerLockControls.cjs.map +1 -1
- package/controls/PointerLockControls.js +3 -3
- package/controls/PointerLockControls.js.map +1 -1
- package/csm/CSM.cjs +4 -4
- package/csm/CSM.cjs.map +1 -1
- package/csm/CSM.js +5 -5
- package/csm/CSM.js.map +1 -1
- package/csm/CSMFrustum.cjs +1 -1
- package/csm/CSMFrustum.cjs.map +1 -1
- package/csm/CSMFrustum.js +2 -2
- package/csm/CSMFrustum.js.map +1 -1
- package/deprecated/Geometry.cjs +722 -715
- package/deprecated/Geometry.cjs.map +1 -1
- package/deprecated/Geometry.js +723 -716
- package/deprecated/Geometry.js.map +1 -1
- package/effects/AnaglyphEffect.cjs +2 -1
- package/effects/AnaglyphEffect.cjs.map +1 -1
- package/effects/AnaglyphEffect.js +3 -2
- package/effects/AnaglyphEffect.js.map +1 -1
- package/effects/OutlineEffect.cjs +2 -1
- package/effects/OutlineEffect.cjs.map +1 -1
- package/effects/OutlineEffect.js +3 -2
- package/effects/OutlineEffect.js.map +1 -1
- package/effects/ParallaxBarrierEffect.cjs +2 -1
- package/effects/ParallaxBarrierEffect.cjs.map +1 -1
- package/effects/ParallaxBarrierEffect.js +3 -2
- package/effects/ParallaxBarrierEffect.js.map +1 -1
- package/exporters/DRACOExporter.cjs +133 -122
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +34 -21
- package/exporters/DRACOExporter.js +133 -122
- package/exporters/DRACOExporter.js.map +1 -1
- package/exporters/GLTFExporter.cjs +170 -167
- package/exporters/GLTFExporter.cjs.map +1 -1
- package/exporters/GLTFExporter.js +170 -167
- package/exporters/GLTFExporter.js.map +1 -1
- package/geometries/LightningStrike.cjs +524 -515
- package/geometries/LightningStrike.cjs.map +1 -1
- package/geometries/LightningStrike.js +524 -515
- package/geometries/LightningStrike.js.map +1 -1
- package/geometries/RoundedBoxGeometry.cjs +1 -1
- package/geometries/RoundedBoxGeometry.cjs.map +1 -1
- package/geometries/RoundedBoxGeometry.js +2 -2
- package/geometries/RoundedBoxGeometry.js.map +1 -1
- package/helpers/RaycasterHelper.cjs +2 -2
- package/helpers/RaycasterHelper.cjs.map +1 -1
- package/helpers/RaycasterHelper.js +3 -3
- package/helpers/RaycasterHelper.js.map +1 -1
- package/helpers/VertexNormalsHelper.cjs +3 -3
- package/helpers/VertexNormalsHelper.cjs.map +1 -1
- package/helpers/VertexNormalsHelper.js +4 -4
- package/helpers/VertexNormalsHelper.js.map +1 -1
- package/helpers/VertexTangentsHelper.cjs +2 -2
- package/helpers/VertexTangentsHelper.cjs.map +1 -1
- package/helpers/VertexTangentsHelper.js +3 -3
- package/helpers/VertexTangentsHelper.js.map +1 -1
- package/interactive/InteractiveGroup.cjs +1 -1
- package/interactive/InteractiveGroup.cjs.map +1 -1
- package/interactive/InteractiveGroup.js +2 -2
- package/interactive/InteractiveGroup.js.map +1 -1
- package/interactive/SelectionBox.cjs +15 -15
- package/interactive/SelectionBox.cjs.map +1 -1
- package/interactive/SelectionBox.js +16 -16
- package/interactive/SelectionBox.js.map +1 -1
- package/libs/chevrotain.cjs +1 -1
- package/libs/chevrotain.cjs.map +1 -1
- package/libs/chevrotain.js +1 -1
- package/libs/chevrotain.js.map +1 -1
- package/libs/lottie.cjs +1 -1
- package/libs/lottie.cjs.map +1 -1
- package/libs/lottie.js +1 -1
- package/libs/lottie.js.map +1 -1
- package/libs/opentype.cjs +1 -1
- package/libs/opentype.cjs.map +1 -1
- package/libs/opentype.js +1 -1
- package/libs/opentype.js.map +1 -1
- package/lights/LightProbeGenerator.cjs +5 -5
- package/lights/LightProbeGenerator.cjs.map +1 -1
- package/lights/LightProbeGenerator.js +5 -5
- package/lights/LightProbeGenerator.js.map +1 -1
- package/lights/RectAreaLightUniformsLib.cjs +3 -3
- package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
- package/lights/RectAreaLightUniformsLib.js +3 -3
- package/lights/RectAreaLightUniformsLib.js.map +1 -1
- package/lines/LineMaterial.cjs +2 -1
- package/lines/LineMaterial.cjs.map +1 -1
- package/lines/LineMaterial.js +3 -2
- package/lines/LineMaterial.js.map +1 -1
- package/lines/LineSegments2.cjs +13 -13
- package/lines/LineSegments2.cjs.map +1 -1
- package/lines/LineSegments2.js +14 -14
- package/lines/LineSegments2.js.map +1 -1
- package/lines/LineSegmentsGeometry.cjs +2 -2
- package/lines/LineSegmentsGeometry.cjs.map +1 -1
- package/lines/LineSegmentsGeometry.js +3 -3
- package/lines/LineSegmentsGeometry.js.map +1 -1
- package/lines/Wireframe.cjs +3 -3
- package/lines/Wireframe.cjs.map +1 -1
- package/lines/Wireframe.js +4 -4
- package/lines/Wireframe.js.map +1 -1
- package/loaders/BasisTextureLoader.cjs +441 -435
- package/loaders/BasisTextureLoader.cjs.map +1 -1
- package/loaders/BasisTextureLoader.js +441 -435
- package/loaders/BasisTextureLoader.js.map +1 -1
- package/loaders/EXRLoader.cjs +2 -1
- package/loaders/EXRLoader.cjs.map +1 -1
- package/loaders/EXRLoader.js +3 -2
- package/loaders/EXRLoader.js.map +1 -1
- package/loaders/FBXLoader.cjs +2 -2
- package/loaders/FBXLoader.cjs.map +1 -1
- package/loaders/FBXLoader.js +2 -2
- package/loaders/FBXLoader.js.map +1 -1
- package/loaders/FontLoader.cjs +2 -2
- package/loaders/FontLoader.cjs.map +1 -1
- package/loaders/FontLoader.d.ts +2 -2
- package/loaders/FontLoader.js +2 -2
- package/loaders/FontLoader.js.map +1 -1
- package/loaders/GLTFLoader.cjs +2 -2
- package/loaders/GLTFLoader.cjs.map +1 -1
- package/loaders/GLTFLoader.js +2 -2
- package/loaders/GLTFLoader.js.map +1 -1
- package/loaders/KTX2Loader.cjs +377 -374
- package/loaders/KTX2Loader.cjs.map +1 -1
- package/loaders/KTX2Loader.js +377 -374
- package/loaders/KTX2Loader.js.map +1 -1
- package/loaders/LDrawLoader.cjs +5 -4
- package/loaders/LDrawLoader.cjs.map +1 -1
- package/loaders/LDrawLoader.js +6 -5
- package/loaders/LDrawLoader.js.map +1 -1
- package/loaders/OBJLoader.cjs +5 -5
- package/loaders/OBJLoader.cjs.map +1 -1
- package/loaders/OBJLoader.js +6 -6
- package/loaders/OBJLoader.js.map +1 -1
- package/loaders/PRWMLoader.cjs +46 -43
- package/loaders/PRWMLoader.cjs.map +1 -1
- package/loaders/PRWMLoader.js +46 -43
- package/loaders/PRWMLoader.js.map +1 -1
- package/loaders/SVGLoader.cjs +1694 -1688
- package/loaders/SVGLoader.cjs.map +1 -1
- package/loaders/SVGLoader.js +1694 -1688
- package/loaders/SVGLoader.js.map +1 -1
- package/loaders/XLoader.cjs +1 -1
- package/loaders/XLoader.cjs.map +1 -1
- package/loaders/XLoader.js +1 -1
- package/loaders/XLoader.js.map +1 -1
- package/math/Capsule.cjs +3 -3
- package/math/Capsule.cjs.map +1 -1
- package/math/Capsule.js +3 -3
- package/math/Capsule.js.map +1 -1
- package/math/ColorConverter.cjs +9 -9
- package/math/ColorConverter.cjs.map +1 -1
- package/math/ColorConverter.js +9 -9
- package/math/ColorConverter.js.map +1 -1
- package/math/ConvexHull.cjs +53 -50
- package/math/ConvexHull.cjs.map +1 -1
- package/math/ConvexHull.js +53 -50
- package/math/ConvexHull.js.map +1 -1
- package/math/ImprovedNoise.cjs +1 -1
- package/math/ImprovedNoise.cjs.map +1 -1
- package/math/ImprovedNoise.js +1 -1
- package/math/ImprovedNoise.js.map +1 -1
- package/math/MeshSurfaceSampler.cjs +2 -2
- package/math/MeshSurfaceSampler.cjs.map +1 -1
- package/math/MeshSurfaceSampler.js +2 -2
- package/math/MeshSurfaceSampler.js.map +1 -1
- package/math/OBB.cjs +14 -14
- package/math/OBB.cjs.map +1 -1
- package/math/OBB.js +15 -15
- package/math/OBB.js.map +1 -1
- package/math/Octree.cjs +7 -7
- package/math/Octree.cjs.map +1 -1
- package/math/Octree.js +8 -8
- package/math/Octree.js.map +1 -1
- package/misc/ConvexObjectBreaker.cjs +271 -268
- package/misc/ConvexObjectBreaker.cjs.map +1 -1
- package/misc/ConvexObjectBreaker.js +272 -269
- package/misc/ConvexObjectBreaker.js.map +1 -1
- package/misc/Gyroscope.cjs +6 -6
- package/misc/Gyroscope.cjs.map +1 -1
- package/misc/Gyroscope.js +7 -7
- package/misc/Gyroscope.js.map +1 -1
- package/modifiers/CurveModifier.cjs +1 -1
- package/modifiers/CurveModifier.cjs.map +1 -1
- package/modifiers/CurveModifier.js +2 -2
- package/modifiers/CurveModifier.js.map +1 -1
- package/modifiers/SimplifyModifier.cjs +2 -2
- package/modifiers/SimplifyModifier.cjs.map +1 -1
- package/modifiers/SimplifyModifier.js +2 -2
- package/modifiers/SimplifyModifier.js.map +1 -1
- package/objects/BatchedMesh.cjs +2 -2
- package/objects/BatchedMesh.cjs.map +1 -1
- package/objects/BatchedMesh.js +3 -3
- package/objects/BatchedMesh.js.map +1 -1
- package/objects/GroundProjectedEnv.cjs +2 -1
- package/objects/GroundProjectedEnv.cjs.map +1 -1
- package/objects/GroundProjectedEnv.js +3 -2
- package/objects/GroundProjectedEnv.js.map +1 -1
- package/objects/Lensflare.cjs +211 -206
- package/objects/Lensflare.cjs.map +1 -1
- package/objects/Lensflare.js +212 -207
- package/objects/Lensflare.js.map +1 -1
- package/objects/Reflector.cjs +154 -146
- package/objects/Reflector.cjs.map +1 -1
- package/objects/Reflector.js +154 -146
- package/objects/Reflector.js.map +1 -1
- package/objects/ReflectorForSSRPass.cjs +183 -180
- package/objects/ReflectorForSSRPass.cjs.map +1 -1
- package/objects/ReflectorForSSRPass.js +183 -180
- package/objects/ReflectorForSSRPass.js.map +1 -1
- package/objects/Refractor.cjs +164 -161
- package/objects/Refractor.cjs.map +1 -1
- package/objects/Refractor.js +164 -161
- package/objects/Refractor.js.map +1 -1
- package/objects/ShadowMesh.cjs +1 -1
- package/objects/ShadowMesh.cjs.map +1 -1
- package/objects/ShadowMesh.js +2 -2
- package/objects/ShadowMesh.js.map +1 -1
- package/objects/Sky.cjs +35 -32
- package/objects/Sky.cjs.map +1 -1
- package/objects/Sky.d.ts +17 -42
- package/objects/Sky.js +35 -32
- package/objects/Sky.js.map +1 -1
- package/objects/Water.cjs +2 -1
- package/objects/Water.cjs.map +1 -1
- package/objects/Water.js +3 -2
- package/objects/Water.js.map +1 -1
- package/objects/Water2.cjs +143 -140
- package/objects/Water2.cjs.map +1 -1
- package/objects/Water2.js +143 -140
- package/objects/Water2.js.map +1 -1
- package/package.json +1 -1
- package/postprocessing/SAOPass.cjs +267 -264
- package/postprocessing/SAOPass.cjs.map +1 -1
- package/postprocessing/SAOPass.js +267 -264
- package/postprocessing/SAOPass.js.map +1 -1
- package/postprocessing/SSAOPass.cjs +253 -250
- package/postprocessing/SSAOPass.cjs.map +1 -1
- package/postprocessing/SSAOPass.js +253 -250
- package/postprocessing/SSAOPass.js.map +1 -1
- package/postprocessing/SSRPass.cjs +379 -376
- package/postprocessing/SSRPass.cjs.map +1 -1
- package/postprocessing/SSRPass.js +379 -376
- package/postprocessing/SSRPass.js.map +1 -1
- package/postprocessing/UnrealBloomPass.cjs +205 -202
- package/postprocessing/UnrealBloomPass.cjs.map +1 -1
- package/postprocessing/UnrealBloomPass.js +205 -202
- package/postprocessing/UnrealBloomPass.js.map +1 -1
- package/renderers/CSS2DRenderer.cjs +5 -5
- package/renderers/CSS2DRenderer.cjs.map +1 -1
- package/renderers/CSS2DRenderer.js +5 -5
- package/renderers/CSS2DRenderer.js.map +1 -1
- package/renderers/CSS3DRenderer.cjs +5 -5
- package/renderers/CSS3DRenderer.cjs.map +1 -1
- package/renderers/CSS3DRenderer.js +6 -6
- package/renderers/CSS3DRenderer.js.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
- package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.js +71 -46
- package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
- package/shaders/AfterimageShader.cjs +41 -22
- package/shaders/AfterimageShader.cjs.map +1 -1
- package/shaders/AfterimageShader.js +41 -22
- package/shaders/AfterimageShader.js.map +1 -1
- package/shaders/BasicShader.cjs +20 -6
- package/shaders/BasicShader.cjs.map +1 -1
- package/shaders/BasicShader.js +20 -6
- package/shaders/BasicShader.js.map +1 -1
- package/shaders/BleachBypassShader.cjs +46 -26
- package/shaders/BleachBypassShader.cjs.map +1 -1
- package/shaders/BleachBypassShader.js +46 -26
- package/shaders/BleachBypassShader.js.map +1 -1
- package/shaders/BlendShader.cjs +33 -19
- package/shaders/BlendShader.cjs.map +1 -1
- package/shaders/BlendShader.js +33 -19
- package/shaders/BlendShader.js.map +1 -1
- package/shaders/BokehShader.cjs +117 -90
- package/shaders/BokehShader.cjs.map +1 -1
- package/shaders/BokehShader.js +117 -90
- package/shaders/BokehShader.js.map +1 -1
- package/shaders/BokehShader2.cjs +333 -232
- package/shaders/BokehShader2.cjs.map +1 -1
- package/shaders/BokehShader2.js +333 -232
- package/shaders/BokehShader2.js.map +1 -1
- package/shaders/BrightnessContrastShader.cjs +38 -22
- package/shaders/BrightnessContrastShader.cjs.map +1 -1
- package/shaders/BrightnessContrastShader.js +38 -22
- package/shaders/BrightnessContrastShader.js.map +1 -1
- package/shaders/ColorCorrectionShader.cjs +35 -21
- package/shaders/ColorCorrectionShader.cjs.map +1 -1
- package/shaders/ColorCorrectionShader.js +35 -21
- package/shaders/ColorCorrectionShader.js.map +1 -1
- package/shaders/ColorifyShader.cjs +34 -19
- package/shaders/ColorifyShader.cjs.map +1 -1
- package/shaders/ColorifyShader.js +34 -19
- package/shaders/ColorifyShader.js.map +1 -1
- package/shaders/ConvolutionShader.cjs +43 -24
- package/shaders/ConvolutionShader.cjs.map +1 -1
- package/shaders/ConvolutionShader.js +43 -24
- package/shaders/ConvolutionShader.js.map +1 -1
- package/shaders/CopyShader.cjs +30 -16
- package/shaders/CopyShader.cjs.map +1 -1
- package/shaders/CopyShader.js +30 -16
- package/shaders/CopyShader.js.map +1 -1
- package/shaders/DOFMipMapShader.cjs +38 -21
- package/shaders/DOFMipMapShader.cjs.map +1 -1
- package/shaders/DOFMipMapShader.js +38 -21
- package/shaders/DOFMipMapShader.js.map +1 -1
- package/shaders/DepthLimitedBlurShader.cjs +98 -69
- package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
- package/shaders/DepthLimitedBlurShader.js +98 -69
- package/shaders/DepthLimitedBlurShader.js.map +1 -1
- package/shaders/DigitalGlitch.cjs +70 -59
- package/shaders/DigitalGlitch.cjs.map +1 -1
- package/shaders/DigitalGlitch.js +70 -59
- package/shaders/DigitalGlitch.js.map +1 -1
- package/shaders/DotScreenShader.cjs +49 -28
- package/shaders/DotScreenShader.cjs.map +1 -1
- package/shaders/DotScreenShader.js +49 -28
- package/shaders/DotScreenShader.js.map +1 -1
- package/shaders/FXAAShader.cjs +1098 -1089
- package/shaders/FXAAShader.cjs.map +1 -1
- package/shaders/FXAAShader.js +1098 -1089
- package/shaders/FXAAShader.js.map +1 -1
- package/shaders/FilmShader.cjs +57 -29
- package/shaders/FilmShader.cjs.map +1 -1
- package/shaders/FilmShader.js +57 -29
- package/shaders/FilmShader.js.map +1 -1
- package/shaders/FocusShader.cjs +70 -43
- package/shaders/FocusShader.cjs.map +1 -1
- package/shaders/FocusShader.js +70 -43
- package/shaders/FocusShader.js.map +1 -1
- package/shaders/FreiChenShader.cjs +74 -53
- package/shaders/FreiChenShader.cjs.map +1 -1
- package/shaders/FreiChenShader.js +74 -53
- package/shaders/FreiChenShader.js.map +1 -1
- package/shaders/FresnelShader.cjs +55 -35
- package/shaders/FresnelShader.cjs.map +1 -1
- package/shaders/FresnelShader.js +55 -35
- package/shaders/FresnelShader.js.map +1 -1
- package/shaders/GammaCorrectionShader.cjs +33 -19
- package/shaders/GammaCorrectionShader.cjs.map +1 -1
- package/shaders/GammaCorrectionShader.js +33 -19
- package/shaders/GammaCorrectionShader.js.map +1 -1
- package/shaders/GodRaysShader.cjs +193 -116
- package/shaders/GodRaysShader.cjs.map +1 -1
- package/shaders/GodRaysShader.js +193 -116
- package/shaders/GodRaysShader.js.map +1 -1
- package/shaders/HalftoneShader.cjs +270 -192
- package/shaders/HalftoneShader.cjs.map +1 -1
- package/shaders/HalftoneShader.js +270 -192
- package/shaders/HalftoneShader.js.map +1 -1
- package/shaders/HorizontalTiltShiftShader.cjs +43 -27
- package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
- package/shaders/HorizontalTiltShiftShader.js +43 -27
- package/shaders/HorizontalTiltShiftShader.js.map +1 -1
- package/shaders/HueSaturationShader.cjs +47 -31
- package/shaders/HueSaturationShader.cjs.map +1 -1
- package/shaders/HueSaturationShader.js +47 -31
- package/shaders/HueSaturationShader.js.map +1 -1
- package/shaders/KaleidoShader.cjs +37 -24
- package/shaders/KaleidoShader.cjs.map +1 -1
- package/shaders/KaleidoShader.js +37 -24
- package/shaders/KaleidoShader.js.map +1 -1
- package/shaders/LuminosityHighPassShader.cjs +43 -24
- package/shaders/LuminosityHighPassShader.cjs.map +1 -1
- package/shaders/LuminosityHighPassShader.js +43 -24
- package/shaders/LuminosityHighPassShader.js.map +1 -1
- package/shaders/LuminosityShader.cjs +34 -17
- package/shaders/LuminosityShader.cjs.map +1 -1
- package/shaders/LuminosityShader.js +34 -17
- package/shaders/LuminosityShader.js.map +1 -1
- package/shaders/MirrorShader.cjs +39 -26
- package/shaders/MirrorShader.cjs.map +1 -1
- package/shaders/MirrorShader.js +39 -26
- package/shaders/MirrorShader.js.map +1 -1
- package/shaders/NormalMapShader.cjs +36 -21
- package/shaders/NormalMapShader.cjs.map +1 -1
- package/shaders/NormalMapShader.js +36 -21
- package/shaders/NormalMapShader.js.map +1 -1
- package/shaders/ParallaxShader.cjs +147 -97
- package/shaders/ParallaxShader.cjs.map +1 -1
- package/shaders/ParallaxShader.js +147 -97
- package/shaders/ParallaxShader.js.map +1 -1
- package/shaders/PixelShader.cjs +31 -18
- package/shaders/PixelShader.cjs.map +1 -1
- package/shaders/PixelShader.js +31 -18
- package/shaders/PixelShader.js.map +1 -1
- package/shaders/RGBShiftShader.cjs +33 -20
- package/shaders/RGBShiftShader.cjs.map +1 -1
- package/shaders/RGBShiftShader.js +33 -20
- package/shaders/RGBShiftShader.js.map +1 -1
- package/shaders/SAOShader.cjs +154 -117
- package/shaders/SAOShader.cjs.map +1 -1
- package/shaders/SAOShader.js +154 -117
- package/shaders/SAOShader.js.map +1 -1
- package/shaders/SMAAShader.cjs +358 -270
- package/shaders/SMAAShader.cjs.map +1 -1
- package/shaders/SMAAShader.js +358 -270
- package/shaders/SMAAShader.js.map +1 -1
- package/shaders/SSAOShader.cjs +236 -142
- package/shaders/SSAOShader.cjs.map +1 -1
- package/shaders/SSAOShader.js +236 -142
- package/shaders/SSAOShader.js.map +1 -1
- package/shaders/SSRShader.cjs +4 -4
- package/shaders/SSRShader.cjs.map +1 -1
- package/shaders/SSRShader.js +4 -4
- package/shaders/SSRShader.js.map +1 -1
- package/shaders/SepiaShader.cjs +36 -20
- package/shaders/SepiaShader.cjs.map +1 -1
- package/shaders/SepiaShader.js +36 -20
- package/shaders/SepiaShader.js.map +1 -1
- package/shaders/SobelOperatorShader.cjs +64 -37
- package/shaders/SobelOperatorShader.cjs.map +1 -1
- package/shaders/SobelOperatorShader.js +64 -37
- package/shaders/SobelOperatorShader.js.map +1 -1
- package/shaders/TechnicolorShader.cjs +29 -16
- package/shaders/TechnicolorShader.cjs.map +1 -1
- package/shaders/TechnicolorShader.js +29 -16
- package/shaders/TechnicolorShader.js.map +1 -1
- package/shaders/ToneMapShader.cjs +55 -35
- package/shaders/ToneMapShader.cjs.map +1 -1
- package/shaders/ToneMapShader.js +55 -35
- package/shaders/ToneMapShader.js.map +1 -1
- package/shaders/ToonShader.cjs +275 -165
- package/shaders/ToonShader.cjs.map +1 -1
- package/shaders/ToonShader.js +275 -165
- package/shaders/ToonShader.js.map +1 -1
- package/shaders/TriangleBlurShader.cjs +50 -27
- package/shaders/TriangleBlurShader.cjs.map +1 -1
- package/shaders/TriangleBlurShader.js +50 -27
- package/shaders/TriangleBlurShader.js.map +1 -1
- package/shaders/UnpackDepthRGBAShader.cjs +32 -17
- package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
- package/shaders/UnpackDepthRGBAShader.js +32 -17
- package/shaders/UnpackDepthRGBAShader.js.map +1 -1
- package/shaders/VerticalTiltShiftShader.cjs +43 -27
- package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
- package/shaders/VerticalTiltShiftShader.js +43 -27
- package/shaders/VerticalTiltShiftShader.js.map +1 -1
- package/shaders/VignetteShader.cjs +43 -27
- package/shaders/VignetteShader.cjs.map +1 -1
- package/shaders/VignetteShader.js +43 -27
- package/shaders/VignetteShader.js.map +1 -1
- package/shaders/VolumeShader.cjs +264 -213
- package/shaders/VolumeShader.cjs.map +1 -1
- package/shaders/VolumeShader.js +264 -213
- package/shaders/VolumeShader.js.map +1 -1
- package/shaders/WaterRefractionShader.cjs +63 -35
- package/shaders/WaterRefractionShader.cjs.map +1 -1
- package/shaders/WaterRefractionShader.js +63 -35
- package/shaders/WaterRefractionShader.js.map +1 -1
- package/utils/GeometryCompressionUtils.cjs +2 -1
- package/utils/GeometryCompressionUtils.cjs.map +1 -1
- package/utils/GeometryCompressionUtils.js +3 -2
- package/utils/GeometryCompressionUtils.js.map +1 -1
- package/utils/RoughnessMipmapper.cjs +3 -3
- package/utils/RoughnessMipmapper.cjs.map +1 -1
- package/utils/RoughnessMipmapper.js +4 -4
- package/utils/RoughnessMipmapper.js.map +1 -1
- package/webxr/ARButton.cjs +3 -3
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +3 -3
- package/webxr/ARButton.js +3 -3
- package/webxr/ARButton.js.map +1 -1
- package/webxr/OculusHandPointerModel.cjs +2 -2
- package/webxr/OculusHandPointerModel.cjs.map +1 -1
- package/webxr/OculusHandPointerModel.js +2 -2
- package/webxr/OculusHandPointerModel.js.map +1 -1
- package/webxr/VRButton.cjs +98 -95
- package/webxr/VRButton.cjs.map +1 -1
- package/webxr/VRButton.d.ts +9 -6
- package/webxr/VRButton.js +98 -95
- package/webxr/VRButton.js.map +1 -1
- package/webxr/XRHandPrimitiveModel.cjs +2 -2
- package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
- package/webxr/XRHandPrimitiveModel.js +3 -3
- package/webxr/XRHandPrimitiveModel.js.map +1 -1
package/libs/lottie.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lottie.cjs","sources":["../../src/libs/lottie.js"],"sourcesContent":["const lottie = (() => {\n if (typeof navigator === 'undefined' || typeof document === 'undefined') return {}\n\n const svgNS = 'http://www.w3.org/2000/svg'\n\n let locationHref = ''\n let _useWebWorker = false\n\n const initialDefaultFrame = -999999\n\n const setWebWorker = (flag) => {\n _useWebWorker = !!flag\n }\n const getWebWorker = () => _useWebWorker\n\n const setLocationHref = (value) => {\n locationHref = value\n }\n const getLocationHref = () => locationHref\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type)\n }\n\n function extendPrototype(sources, destination) {\n var i\n var len = sources.length\n var sourcePrototype\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr))\n destination.prototype[attr] = sourcePrototype[attr]\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop)\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n ProxyFunction.prototype = prototype\n return ProxyFunction\n }\n\n // import Howl from '../../3rd_party/howler';\n\n const audioControllerFactory = (function () {\n function AudioController(audioFactory) {\n this.audios = []\n this.audioFactory = audioFactory\n this._volume = 1\n this._isMuted = false\n }\n\n AudioController.prototype = {\n addAudio: function (audio) {\n this.audios.push(audio)\n },\n pause: function () {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause()\n }\n },\n resume: function () {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume()\n }\n },\n setRate: function (rateValue) {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue)\n }\n },\n createAudio: function (assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath)\n }\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath],\n })\n }\n return {\n isPlaying: false,\n play: function () {\n this.isPlaying = true\n },\n seek: function () {\n this.isPlaying = false\n },\n playing: function () {},\n rate: function () {},\n setVolume: function () {},\n }\n },\n setAudioFactory: function (audioFactory) {\n this.audioFactory = audioFactory\n },\n setVolume: function (value) {\n this._volume = value\n this._updateVolume()\n },\n mute: function () {\n this._isMuted = true\n this._updateVolume()\n },\n unmute: function () {\n this._isMuted = false\n this._updateVolume()\n },\n getVolume: function () {\n return this._volume\n },\n _updateVolume: function () {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1))\n }\n },\n }\n\n return function () {\n return new AudioController()\n }\n })()\n\n const createTypedArray = (function () {\n function createRegularArray(type, len) {\n var i = 0\n var arr = []\n var value\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1\n break\n default:\n value = 1.1\n break\n }\n for (i = 0; i < len; i += 1) {\n arr.push(value)\n }\n return arr\n }\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len)\n }\n if (type === 'int16') {\n return new Int16Array(len)\n }\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len)\n }\n return createRegularArray(type, len)\n }\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory\n }\n return createRegularArray\n })()\n\n function createSizedArray(len) {\n return Array.apply(null, { length: len })\n }\n\n let subframeEnabled = true\n let expressionsPlugin = null\n let idPrefix$1 = ''\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n let _shouldRoundValues = false\n const bmPow = Math.pow\n const bmSqrt = Math.sqrt\n const bmFloor = Math.floor\n const bmMax = Math.max\n const bmMin = Math.min\n\n const BMMath = {}\n ;(function () {\n var propertyNames = [\n 'abs',\n 'acos',\n 'acosh',\n 'asin',\n 'asinh',\n 'atan',\n 'atanh',\n 'atan2',\n 'ceil',\n 'cbrt',\n 'expm1',\n 'clz32',\n 'cos',\n 'cosh',\n 'exp',\n 'floor',\n 'fround',\n 'hypot',\n 'imul',\n 'log',\n 'log1p',\n 'log2',\n 'log10',\n 'max',\n 'min',\n 'pow',\n 'random',\n 'round',\n 'sign',\n 'sin',\n 'sinh',\n 'sqrt',\n 'tan',\n 'tanh',\n 'trunc',\n 'E',\n 'LN10',\n 'LN2',\n 'LOG10E',\n 'LOG2E',\n 'PI',\n 'SQRT1_2',\n 'SQRT2',\n ]\n var i\n var len = propertyNames.length\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]]\n }\n })()\n\n function ProjectInterface$1() {\n return {}\n }\n BMMath.random = Math.random\n BMMath.abs = function (val) {\n var tOfVal = typeof val\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length)\n var i\n var len = val.length\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i])\n }\n return absArr\n }\n return Math.abs(val)\n }\n let defaultCurveSegments = 150\n const degToRads = Math.PI / 180\n const roundCorner = 0.5519\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value)\n }\n return value\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute'\n element.style.top = 0\n element.style.left = 0\n element.style.display = 'block'\n element.style.transformOrigin = '0 0'\n element.style.webkitTransformOrigin = '0 0'\n element.style.backfaceVisibility = 'visible'\n element.style.webkitBackfaceVisibility = 'visible'\n element.style.transformStyle = 'preserve-3d'\n element.style.webkitTransformStyle = 'preserve-3d'\n element.style.mozTransformStyle = 'preserve-3d'\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type\n this.currentTime = currentTime\n this.totalTime = totalTime\n this.direction = frameMultiplier < 0 ? -1 : 1\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type\n this.direction = frameMultiplier < 0 ? -1 : 1\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type\n this.currentLoop = currentLoop\n this.totalLoops = totalLoops\n this.direction = frameMultiplier < 0 ? -1 : 1\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type\n this.firstFrame = firstFrame\n this.totalFrames = totalFrames\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type\n this.target = target\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError'\n this.nativeError = nativeError\n this.currentTime = currentTime\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError'\n this.nativeError = nativeError\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type\n this.nativeError = nativeError\n }\n\n const createElementID = (function () {\n var _count = 0\n return function createID() {\n _count += 1\n return idPrefix$1 + '__lottie_element_' + _count\n }\n })()\n\n function HSVtoRGB(h, s, v) {\n var r\n var g\n var b\n var i\n var f\n var p\n var q\n var t\n i = Math.floor(h * 6)\n f = h * 6 - i\n p = v * (1 - s)\n q = v * (1 - f * s)\n t = v * (1 - (1 - f) * s)\n switch (i % 6) {\n case 0:\n r = v\n g = t\n b = p\n break\n case 1:\n r = q\n g = v\n b = p\n break\n case 2:\n r = p\n g = v\n b = t\n break\n case 3:\n r = p\n g = q\n b = v\n break\n case 4:\n r = t\n g = p\n b = v\n break\n case 5:\n r = v\n g = p\n b = q\n break\n default:\n break\n }\n return [r, g, b]\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b)\n var min = Math.min(r, g, b)\n var d = max - min\n var h\n var s = max === 0 ? 0 : d / max\n var v = max / 255\n\n switch (max) {\n case min:\n h = 0\n break\n case r:\n h = g - b + d * (g < b ? 6 : 0)\n h /= 6 * d\n break\n case g:\n h = b - r + d * 2\n h /= 6 * d\n break\n case b:\n h = r - g + d * 4\n h /= 6 * d\n break\n default:\n break\n }\n\n return [h, s, v]\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255)\n hsv[1] += offset\n if (hsv[1] > 1) {\n hsv[1] = 1\n } else if (hsv[1] <= 0) {\n hsv[1] = 0\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2])\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255)\n hsv[2] += offset\n if (hsv[2] > 1) {\n hsv[2] = 1\n } else if (hsv[2] < 0) {\n hsv[2] = 0\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2])\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255)\n hsv[0] += offset / 360\n if (hsv[0] > 1) {\n hsv[0] -= 1\n } else if (hsv[0] < 0) {\n hsv[0] += 1\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2])\n }\n\n const rgbToHex = (function () {\n var colorMap = []\n var i\n var hex\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16)\n colorMap[i] = hex.length === 1 ? '0' + hex : hex\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0\n }\n if (g < 0) {\n g = 0\n }\n if (b < 0) {\n b = 0\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b]\n }\n })()\n\n const setSubframeEnabled = (flag) => {\n subframeEnabled = !!flag\n }\n const getSubframeEnabled = () => subframeEnabled\n const setExpressionsPlugin = (value) => {\n expressionsPlugin = value\n }\n const getExpressionsPlugin = () => expressionsPlugin\n const setDefaultCurveSegments = (value) => {\n defaultCurveSegments = value\n }\n const getDefaultCurveSegments = () => defaultCurveSegments\n const setIdPrefix = (value) => {\n idPrefix$1 = value\n }\n const getIdPrefix = () => idPrefix$1\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type)\n }\n\n const dataManager = (function () {\n var _counterId = 1\n var processes = []\n var workerFn\n var workerInstance\n var workerProxy = {\n onmessage: function () {},\n postMessage: function (path) {\n workerFn({\n data: path,\n })\n },\n }\n var _workerSelf = {\n postMessage: function (data) {\n workerProxy.onmessage({\n data: data,\n })\n },\n }\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' })\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n var url = URL.createObjectURL(blob)\n return new Worker(url)\n }\n workerFn = fn\n return workerProxy\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData\n var i\n var len = layers.length\n var j\n var jLen\n var k\n var kLen\n for (i = 0; i < len; i += 1) {\n layerData = layers[i]\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true\n if (layerData.tt) {\n layers[i - 1].td = layerData.tt\n }\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties\n jLen = maskProps.length\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k)\n } else {\n kLen = maskProps[j].pt.k.length\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0])\n }\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0])\n }\n }\n }\n }\n }\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps)\n completeLayers(layerData.layers, comps)\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes)\n } else if (layerData.ty === 5) {\n completeText(layerData)\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0\n var len = chars.length\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets)\n // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n completeLayers(chars[i].data.layers, assets)\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0\n var len = comps.length\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i]\n }\n i += 1\n }\n return null\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps)\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true\n return comp.layers\n }\n return JSON.parse(JSON.stringify(comp.layers))\n }\n return null\n }\n\n function completeShapes(arr) {\n var i\n var len = arr.length\n var j\n var jLen\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k)\n } else {\n jLen = arr[i].ks.k.length\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0])\n }\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0])\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it)\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i\n var len = path.i.length\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0]\n path.i[i][1] += path.v[i][1]\n path.o[i][0] += path.v[i][0]\n path.o[i][1] += path.v[i][1]\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100]\n if (minimum[0] > animVersion[0]) {\n return true\n }\n if (animVersion[0] > minimum[0]) {\n return false\n }\n if (minimum[1] > animVersion[1]) {\n return true\n }\n if (animVersion[1] > minimum[1]) {\n return false\n }\n if (minimum[2] > animVersion[2]) {\n return true\n }\n if (animVersion[2] > minimum[2]) {\n return false\n }\n return null\n }\n\n var checkText = (function () {\n var minimumVersion = [4, 4, 14]\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d\n textLayer.t.d = {\n k: [\n {\n s: documentData,\n t: 0,\n },\n ],\n }\n }\n\n function iterateLayers(layers) {\n var i\n var len = layers.length\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i])\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n var checkChars = (function () {\n var minimumVersion = [4, 7, 99]\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i\n var len = animationData.chars.length\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i]\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes)\n charData.data.ip = 0\n charData.data.op = 99999\n charData.data.st = 0\n charData.data.sr = 1\n charData.data.ks = {\n p: { k: [0, 0], a: 0 },\n s: { k: [100, 100], a: 0 },\n a: { k: [0, 0], a: 0 },\n r: { k: 0, a: 0 },\n o: { k: 100, a: 0 },\n }\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no',\n })\n charData.data.shapes[0].it.push({\n p: { k: [0, 0], a: 0 },\n s: { k: [100, 100], a: 0 },\n a: { k: [0, 0], a: 0 },\n r: { k: 0, a: 0 },\n o: { k: 100, a: 0 },\n sk: { k: 0, a: 0 },\n sa: { k: 0, a: 0 },\n ty: 'tr',\n })\n }\n }\n }\n }\n }\n })()\n\n var checkPathProperties = (function () {\n var minimumVersion = [5, 7, 15]\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a,\n }\n }\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p,\n }\n }\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r,\n }\n }\n }\n\n function iterateLayers(layers) {\n var i\n var len = layers.length\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i])\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n var checkColors = (function () {\n var minimumVersion = [4, 1, 9]\n\n function iterateShapes(shapes) {\n var i\n var len = shapes.length\n var j\n var jLen\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it)\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255\n shapes[i].c.k[j].s[1] /= 255\n shapes[i].c.k[j].s[2] /= 255\n shapes[i].c.k[j].s[3] /= 255\n }\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255\n shapes[i].c.k[j].e[1] /= 255\n shapes[i].c.k[j].e[2] /= 255\n shapes[i].c.k[j].e[3] /= 255\n }\n }\n } else {\n shapes[i].c.k[0] /= 255\n shapes[i].c.k[1] /= 255\n shapes[i].c.k[2] /= 255\n shapes[i].c.k[3] /= 255\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i\n var len = layers.length\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes)\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n var checkShapes = (function () {\n var minimumVersion = [4, 4, 18]\n\n function completeClosingShapes(arr) {\n var i\n var len = arr.length\n var j\n var jLen\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed\n } else {\n jLen = arr[i].ks.k.length\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed\n }\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it)\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData\n var i\n var len = layers.length\n var j\n var jLen\n var k\n var kLen\n for (i = 0; i < len; i += 1) {\n layerData = layers[i]\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties\n jLen = maskProps.length\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl\n } else {\n kLen = maskProps[j].pt.k.length\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl\n }\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl\n }\n }\n }\n }\n }\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes)\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return\n }\n checkColors(animationData)\n checkText(animationData)\n checkChars(animationData)\n checkPathProperties(animationData)\n checkShapes(animationData)\n completeLayers(animationData.layers, animationData.assets)\n completeChars(animationData.chars, animationData.assets)\n animationData.__complete = true\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\n // data.singleShape = true;\n }\n }\n\n var moduleOb = {}\n moduleOb.completeData = completeData\n moduleOb.checkColors = checkColors\n moduleOb.checkChars = checkChars\n moduleOb.checkPathProperties = checkPathProperties\n moduleOb.checkShapes = checkShapes\n moduleOb.completeLayers = completeLayers\n\n return moduleOb\n }\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager()\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = (function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type')\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response\n }\n if (xhr.response && typeof xhr.response === 'object') {\n return xhr.response\n }\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response)\n }\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText)\n }\n return null\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response\n var xhr = new XMLHttpRequest()\n // set responseType after calling open or IE will break.\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json'\n } catch (err) {} // eslint-disable-line no-empty\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr)\n callback(response)\n } else {\n try {\n response = formatResponse(xhr)\n callback(response)\n } catch (err) {\n if (errorCallback) {\n errorCallback(err)\n }\n }\n }\n }\n }\n try {\n xhr.open('GET', path, true)\n } catch (error) {\n xhr.open('GET', fullPath + '/' + path, true)\n }\n xhr.send()\n }\n return {\n load: loadAsset,\n }\n })()\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(\n e.data.path,\n e.data.fullPath,\n function (data) {\n _workerSelf.dataManager.completeData(data)\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success',\n })\n },\n function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error',\n })\n },\n )\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation\n _workerSelf.dataManager.completeData(animation)\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success',\n })\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(\n e.data.path,\n e.data.fullPath,\n function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success',\n })\n },\n function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error',\n })\n },\n )\n }\n })\n\n workerInstance.onmessage = function (event) {\n var data = event.data\n var id = data.id\n var process = processes[id]\n processes[id] = null\n if (data.status === 'success') {\n process.onComplete(data.payload)\n } else if (process.onError) {\n process.onError()\n }\n }\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1\n var id = 'processId_' + _counterId\n processes[id] = {\n onComplete: onComplete,\n onError: onError,\n }\n return id\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker()\n var processId = createProcess(onComplete, onError)\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId,\n })\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker()\n var processId = createProcess(onComplete, onError)\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId,\n })\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker()\n var processId = createProcess(onComplete, onError)\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId,\n })\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation,\n }\n })()\n\n const ImagePreloader = (function () {\n var proxyImage = (function () {\n var canvas = createTag('canvas')\n canvas.width = 1\n canvas.height = 1\n var ctx = canvas.getContext('2d')\n ctx.fillStyle = 'rgba(0,0,0,0)'\n ctx.fillRect(0, 0, 1, 1)\n return canvas\n })()\n\n function imageLoaded() {\n this.loadedAssets += 1\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null)\n }\n }\n }\n function footageLoaded() {\n this.loadedFootagesCount += 1\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null)\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = ''\n if (assetData.e) {\n path = assetData.p\n } else if (assetsPath) {\n var imagePath = assetData.p\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1]\n }\n path = assetsPath + imagePath\n } else {\n path = originalPath\n path += assetData.u ? assetData.u : ''\n path += assetData.p\n }\n return path\n }\n\n function testImageLoaded(img) {\n var _count = 0\n var intervalId = setInterval(\n function () {\n var box = img.getBBox()\n if (box.width || _count > 500) {\n this._imageLoaded()\n clearInterval(intervalId)\n }\n _count += 1\n }.bind(this),\n 50,\n )\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path)\n var img = createNS('image')\n if (isSafari) {\n this.testImageLoaded(img)\n } else {\n img.addEventListener('load', this._imageLoaded, false)\n }\n img.addEventListener(\n 'error',\n function () {\n ob.img = proxyImage\n this._imageLoaded()\n }.bind(this),\n false,\n )\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path)\n if (this._elementHelper.append) {\n this._elementHelper.append(img)\n } else {\n this._elementHelper.appendChild(img)\n }\n var ob = {\n img: img,\n assetData: assetData,\n }\n return ob\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path)\n var img = createTag('img')\n img.crossOrigin = 'anonymous'\n img.addEventListener('load', this._imageLoaded, false)\n img.addEventListener(\n 'error',\n function () {\n ob.img = proxyImage\n this._imageLoaded()\n }.bind(this),\n false,\n )\n img.src = path\n var ob = {\n img: img,\n assetData: assetData,\n }\n return ob\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data,\n }\n var path = getAssetsPath(data, this.assetsPath, this.path)\n dataManager.loadData(\n path,\n function (footageData) {\n ob.img = footageData\n this._footageLoaded()\n }.bind(this),\n function () {\n ob.img = {}\n this._footageLoaded()\n }.bind(this),\n )\n return ob\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb\n var i\n var len = assets.length\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1\n this.images.push(this._createImageData(assets[i]))\n } else if (assets[i].t === 3) {\n this.totalFootages += 1\n this.images.push(this.createFootageData(assets[i]))\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || ''\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || ''\n }\n\n function getAsset(assetData) {\n var i = 0\n var len = this.images.length\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img\n }\n i += 1\n }\n return null\n }\n\n function destroy() {\n this.imagesLoadedCb = null\n this.images.length = 0\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper\n this._createImageData = this.createImageData.bind(this)\n } else {\n this._createImageData = this.createImgData.bind(this)\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this)\n this._footageLoaded = footageLoaded.bind(this)\n this.testImageLoaded = testImageLoaded.bind(this)\n this.createFootageData = createFootageData.bind(this)\n this.assetsPath = ''\n this.path = ''\n this.totalImages = 0\n this.totalFootages = 0\n this.loadedAssets = 0\n this.loadedFootagesCount = 0\n this.imagesLoadedCb = null\n this.images = []\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType,\n }\n\n return ImagePreloaderFactory\n })()\n\n function BaseEvent() {}\n BaseEvent.prototype = {\n triggerEvent: function (eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName]\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args)\n }\n }\n },\n addEventListener: function (eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = []\n }\n this._cbs[eventName].push(callback)\n\n return function () {\n this.removeEventListener(eventName, callback)\n }.bind(this)\n },\n removeEventListener: function (eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null\n } else if (this._cbs[eventName]) {\n var i = 0\n var len = this._cbs[eventName].length\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1)\n i -= 1\n len -= 1\n }\n i += 1\n }\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null\n }\n }\n },\n }\n\n const markerParser = (function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n')\n var keys = {}\n var line\n var keysCount = 0\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':')\n if (line.length === 2) {\n keys[line[0]] = line[1].trim()\n keysCount += 1\n }\n }\n if (keysCount === 0) {\n throw new Error()\n }\n return keys\n }\n\n return function (_markers) {\n var markers = []\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i]\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr,\n }\n try {\n markerData.payload = JSON.parse(_markers[i].cm)\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm)\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm,\n }\n }\n }\n markers.push(markerData)\n }\n return markers\n }\n })()\n\n const ProjectInterface = (function () {\n function registerComposition(comp) {\n this.compositions.push(comp)\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0\n var len = this.compositions.length\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame)\n }\n return this.compositions[i].compInterface\n }\n i += 1\n }\n return null\n }\n\n _thisProjectFunction.compositions = []\n _thisProjectFunction.currentFrame = 0\n\n _thisProjectFunction.registerComposition = registerComposition\n\n return _thisProjectFunction\n }\n })()\n\n const renderers = {}\n\n const registerRenderer = (key, value) => {\n renderers[key] = value\n }\n\n function getRenderer(key) {\n return renderers[key]\n }\n\n const AnimationItem = function () {\n this._cbs = []\n this.name = ''\n this.path = ''\n this.isLoaded = false\n this.currentFrame = 0\n this.currentRawFrame = 0\n this.firstFrame = 0\n this.totalFrames = 0\n this.frameRate = 0\n this.frameMult = 0\n this.playSpeed = 1\n this.playDirection = 1\n this.playCount = 0\n this.animationData = {}\n this.assets = []\n this.isPaused = true\n this.autoplay = false\n this.loop = true\n this.renderer = null\n this.animationID = createElementID()\n this.assetsPath = ''\n this.timeCompleted = 0\n this.segmentPos = 0\n this.isSubframeEnabled = getSubframeEnabled()\n this.segments = []\n this._idle = true\n this._completedLoop = false\n this.projectInterface = ProjectInterface()\n this.imagePreloader = new ImagePreloader()\n this.audioController = audioControllerFactory()\n this.markers = []\n this.configAnimation = this.configAnimation.bind(this)\n this.onSetupError = this.onSetupError.bind(this)\n this.onSegmentComplete = this.onSegmentComplete.bind(this)\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0)\n }\n\n extendPrototype([BaseEvent], AnimationItem)\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container\n }\n var animType = 'svg'\n if (params.animType) {\n animType = params.animType\n } else if (params.renderer) {\n animType = params.renderer\n }\n const RendererClass = getRenderer(animType)\n this.renderer = new RendererClass(this, params.rendererSettings)\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs)\n this.renderer.setProjectInterface(this.projectInterface)\n this.animType = animType\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true\n } else if (params.loop === false) {\n this.loop = false\n } else {\n this.loop = parseInt(params.loop, 10)\n }\n this.autoplay = 'autoplay' in params ? params.autoplay : true\n this.name = params.name ? params.name : ''\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments')\n ? params.autoloadSegments\n : true\n this.assetsPath = params.assetsPath\n this.initialSegment = params.initialSegment\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory)\n }\n if (params.animationData) {\n this.setupAnimation(params.animationData)\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1)\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1)\n }\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1)\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'))\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError)\n }\n }\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed')\n }\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation)\n }\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (typeof animationData !== 'object') {\n animationData = JSON.parse(animationData)\n }\n }\n var params = {\n wrapper: wrapper,\n animationData: animationData,\n }\n var wrapperAttributes = wrapper.attributes\n\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value\n : wrapperAttributes.getNamedItem('bm-path')\n ? wrapperAttributes.getNamedItem('bm-path').value\n : ''\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\n : wrapperAttributes.getNamedItem('bm-renderer')\n ? wrapperAttributes.getNamedItem('bm-renderer').value\n : 'canvas'\n\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\n : wrapperAttributes.getNamedItem('bm-loop')\n ? wrapperAttributes.getNamedItem('bm-loop').value\n : ''\n if (loop === 'false') {\n params.loop = false\n } else if (loop === 'true') {\n params.loop = true\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10)\n }\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\n : wrapperAttributes.getNamedItem('bm-autoplay')\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\n : true\n params.autoplay = autoplay !== 'false'\n\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value\n : wrapperAttributes.getNamedItem('bm-name')\n ? wrapperAttributes.getNamedItem('bm-name').value\n : ''\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\n : wrapperAttributes.getNamedItem('bm-prerender')\n ? wrapperAttributes.getNamedItem('bm-prerender').value\n : ''\n\n if (prerender === 'false') {\n params.prerender = false\n }\n this.setParams(params)\n }\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op\n this.totalFrames = Math.floor(data.op - this.animationData.ip)\n }\n var layers = this.animationData.layers\n var i\n var len = layers.length\n var newLayers = data.layers\n var j\n var jLen = newLayers.length\n for (j = 0; j < jLen; j += 1) {\n i = 0\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j]\n break\n }\n i += 1\n }\n }\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars)\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs)\n }\n if (data.assets) {\n len = data.assets.length\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i])\n }\n }\n this.animationData.__complete = false\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete)\n }\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data\n var expressionsPlugin = getExpressionsPlugin()\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this)\n }\n this.loadNextSegment()\n }\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready')\n this.timeCompleted = this.totalFrames\n return\n }\n var segment = segments.shift()\n this.timeCompleted = segment.time * this.frameRate\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json'\n this.segmentPos += 1\n dataManager.loadData(\n segmentPath,\n this.includeLayers.bind(this),\n function () {\n this.trigger('data_failed')\n }.bind(this),\n )\n }\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments\n if (!segments) {\n this.timeCompleted = this.totalFrames\n }\n this.loadNextSegment()\n }\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images')\n this.checkLoaded()\n }\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath)\n this.imagePreloader.setPath(this.path)\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this))\n }\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return\n }\n try {\n this.animationData = animData\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0])\n this.firstFrame = Math.round(this.initialSegment[0])\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip)\n this.firstFrame = Math.round(this.animationData.ip)\n }\n this.renderer.configAnimation(animData)\n if (!animData.assets) {\n animData.assets = []\n }\n\n this.assets = this.animationData.assets\n this.frameRate = this.animationData.fr\n this.frameMult = this.animationData.fr / 1000\n this.renderer.searchExtraCompositions(animData.assets)\n this.markers = markerParser(animData.markers || [])\n this.trigger('config_ready')\n this.preloadImages()\n this.loadSegments()\n this.updaFrameModifier()\n this.waitForFontsLoaded()\n if (this.isPaused) {\n this.audioController.pause()\n }\n } catch (error) {\n this.triggerConfigError(error)\n }\n }\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return\n }\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded()\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20)\n }\n }\n\n AnimationItem.prototype.checkLoaded = function () {\n if (\n !this.isLoaded &&\n this.renderer.globalData.fontManager.isLoaded &&\n (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') &&\n this.imagePreloader.loadedFootages()\n ) {\n this.isLoaded = true\n var expressionsPlugin = getExpressionsPlugin()\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this)\n }\n this.renderer.initItems()\n setTimeout(\n function () {\n this.trigger('DOMLoaded')\n }.bind(this),\n 0,\n )\n this.gotoFrame()\n if (this.autoplay) {\n this.play()\n }\n }\n }\n\n AnimationItem.prototype.resize = function () {\n this.renderer.updateContainerSize()\n }\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag\n }\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted\n }\n this.trigger('enterFrame')\n this.renderFrame()\n this.trigger('drawnFrame')\n }\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return\n }\n try {\n this.renderer.renderFrame(this.currentFrame + this.firstFrame)\n } catch (error) {\n this.triggerRenderFrameError(error)\n }\n }\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return\n }\n if (this.isPaused === true) {\n this.isPaused = false\n this.trigger('_pause')\n this.audioController.resume()\n if (this._idle) {\n this._idle = false\n this.trigger('_active')\n }\n }\n }\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return\n }\n if (this.isPaused === false) {\n this.isPaused = true\n this.trigger('_play')\n this._idle = true\n this.trigger('_idle')\n this.audioController.pause()\n }\n }\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return\n }\n if (this.isPaused === true) {\n this.play()\n } else {\n this.pause()\n }\n }\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return\n }\n this.pause()\n this.playCount = 0\n this._completedLoop = false\n this.setCurrentRawFrameValue(0)\n }\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i]\n if (marker.payload && marker.payload.name === markerName) {\n return marker\n }\n }\n return null\n }\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return\n }\n var numValue = Number(value)\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value)\n if (marker) {\n this.goToAndStop(marker.time, true)\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value)\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier)\n }\n this.pause()\n }\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return\n }\n var numValue = Number(value)\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value)\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true)\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true)\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name)\n }\n this.play()\n }\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier\n var _isComplete = false\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\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.\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true\n nextValue = this.totalFrames - 1\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames)\n this._completedLoop = true\n this.trigger('loopComplete')\n }\n } else {\n this.setCurrentRawFrameValue(nextValue)\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames))\n if (!this._completedLoop) {\n this._completedLoop = true\n } else {\n this.trigger('loopComplete')\n }\n } else {\n _isComplete = true\n nextValue = 0\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue)\n }\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue)\n this.pause()\n this.trigger('complete')\n }\n }\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed)\n } else {\n this.setDirection(-1)\n }\n }\n this.totalFrames = arr[0] - arr[1]\n this.timeCompleted = this.totalFrames\n this.firstFrame = arr[1]\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset)\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed)\n } else {\n this.setDirection(1)\n }\n }\n this.totalFrames = arr[1] - arr[0]\n this.timeCompleted = this.totalFrames\n this.firstFrame = arr[0]\n this.setCurrentRawFrameValue(0.001 + offset)\n }\n this.trigger('segmentStart')\n }\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init\n }\n }\n\n this.firstFrame = init\n this.totalFrames = end - init\n this.timeCompleted = this.totalFrames\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true)\n }\n }\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0\n }\n if (typeof arr[0] === 'object') {\n var i\n var len = arr.length\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i])\n }\n } else {\n this.segments.push(arr)\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0)\n }\n if (this.isPaused) {\n this.play()\n }\n }\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0\n this.segments.push([this.animationData.ip, this.animationData.op])\n if (forceFlag) {\n this.checkSegments(0)\n }\n }\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset)\n return true\n }\n return false\n }\n\n AnimationItem.prototype.destroy = function (name) {\n if ((name && this.name !== name) || !this.renderer) {\n return\n }\n this.renderer.destroy()\n this.imagePreloader.destroy()\n this.trigger('destroy')\n this._cbs = null\n this.onEnterFrame = null\n this.onLoopComplete = null\n this.onComplete = null\n this.onSegmentStart = null\n this.onDestroy = null\n this.renderer = null\n this.renderer = null\n this.imagePreloader = null\n this.projectInterface = null\n }\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value\n this.gotoFrame()\n }\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val\n this.updaFrameModifier()\n }\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1\n this.updaFrameModifier()\n }\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return\n }\n this.audioController.setVolume(val)\n }\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume()\n }\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return\n }\n this.audioController.mute()\n }\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return\n }\n this.audioController.unmute()\n }\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection\n this.audioController.setRate(this.playSpeed * this.playDirection)\n }\n\n AnimationItem.prototype.getPath = function () {\n return this.path\n }\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = ''\n if (assetData.e) {\n path = assetData.p\n } else if (this.assetsPath) {\n var imagePath = assetData.p\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1]\n }\n path = this.assetsPath + imagePath\n } else {\n path = this.path\n path += assetData.u ? assetData.u : ''\n path += assetData.p\n }\n return path\n }\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0\n var len = this.assets.length\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i]\n }\n i += 1\n }\n return null\n }\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide()\n }\n\n AnimationItem.prototype.show = function () {\n this.renderer.show()\n }\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate\n }\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path)\n element.updateDocumentData(documentData, index)\n } catch (error) {\n // TODO: decide how to handle catch case\n }\n }\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier))\n break\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame\n this.drawnFrameEvent.totalTime = this.totalFrames\n this.drawnFrameEvent.direction = this.frameModifier\n this.triggerEvent(name, this.drawnFrameEvent)\n break\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult))\n break\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult))\n break\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames))\n break\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this))\n break\n default:\n this.triggerEvent(name)\n }\n }\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult))\n }\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult))\n }\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult))\n }\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames))\n }\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this))\n }\n }\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame)\n this.triggerEvent('error', error)\n\n if (this.onError) {\n this.onError.call(this, error)\n }\n }\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame)\n this.triggerEvent('error', error)\n\n if (this.onError) {\n this.onError.call(this, error)\n }\n }\n\n const animationManager = (function () {\n var moduleOb = {}\n var registeredAnimations = []\n var initTime = 0\n var len = 0\n var playingAnimationsNum = 0\n var _stopped = true\n var _isFrozen = false\n\n function removeElement(ev) {\n var i = 0\n var animItem = ev.target\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1)\n i -= 1\n len -= 1\n if (!animItem.isPaused) {\n subtractPlayingCount()\n }\n }\n i += 1\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null\n }\n var i = 0\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation\n }\n i += 1\n }\n var animItem = new AnimationItem()\n setupAnimation(animItem, element)\n animItem.setData(element, animationData)\n return animItem\n }\n\n function getRegisteredAnimations() {\n var i\n var lenAnims = registeredAnimations.length\n var animations = []\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation)\n }\n return animations\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1\n activate()\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement)\n animItem.addEventListener('_active', addPlayingCount)\n animItem.addEventListener('_idle', subtractPlayingCount)\n registeredAnimations.push({ elem: element, animation: animItem })\n len += 1\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem()\n setupAnimation(animItem, null)\n animItem.setParams(params)\n return animItem\n }\n\n function setSpeed(val, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation)\n }\n }\n\n function setDirection(val, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation)\n }\n }\n\n function play(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation)\n }\n }\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime)\n }\n initTime = nowTime\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume)\n } else {\n _stopped = true\n }\n }\n\n function first(nowTime) {\n initTime = nowTime\n window.requestAnimationFrame(resume)\n }\n\n function pause(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation)\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation)\n }\n }\n\n function stop(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation)\n }\n }\n\n function togglePause(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation)\n }\n }\n\n function destroy(animation) {\n var i\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation)\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat(\n [].slice.call(document.getElementsByClassName('lottie')),\n [].slice.call(document.getElementsByClassName('bodymovin')),\n )\n var i\n var lenAnims = animElements.length\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer)\n }\n registerAnimation(animElements[i], animationData)\n }\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg'\n }\n var body = document.getElementsByTagName('body')[0]\n body.innerText = ''\n var div = createTag('div')\n div.style.width = '100%'\n div.style.height = '100%'\n div.setAttribute('data-bm-type', renderer)\n body.appendChild(div)\n registerAnimation(div, animationData)\n }\n }\n\n function resize() {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize()\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first)\n _stopped = false\n }\n }\n }\n\n function freeze() {\n _isFrozen = true\n }\n\n function unfreeze() {\n _isFrozen = false\n activate()\n }\n\n function setVolume(val, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation)\n }\n }\n\n function mute(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation)\n }\n }\n\n function unmute(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation)\n }\n }\n\n moduleOb.registerAnimation = registerAnimation\n moduleOb.loadAnimation = loadAnimation\n moduleOb.setSpeed = setSpeed\n moduleOb.setDirection = setDirection\n moduleOb.play = play\n moduleOb.pause = pause\n moduleOb.stop = stop\n moduleOb.togglePause = togglePause\n moduleOb.searchAnimations = searchAnimations\n moduleOb.resize = resize\n // moduleOb.start = start;\n moduleOb.goToAndStop = goToAndStop\n moduleOb.destroy = destroy\n moduleOb.freeze = freeze\n moduleOb.unfreeze = unfreeze\n moduleOb.setVolume = setVolume\n moduleOb.mute = mute\n moduleOb.unmute = unmute\n moduleOb.getRegisteredAnimations = getRegisteredAnimations\n return moduleOb\n })()\n\n /* eslint-disable */\n const BezierFactory = (function () {\n /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\n\n var ob = {}\n ob.getBezierEasing = getBezierEasing\n var beziers = {}\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p')\n if (beziers[str]) {\n return beziers[str]\n }\n var bezEasing = new BezierEasing([a, b, c, d])\n beziers[str] = bezEasing\n return bezEasing\n }\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4\n var NEWTON_MIN_SLOPE = 0.001\n var SUBDIVISION_PRECISION = 0.0000001\n var SUBDIVISION_MAX_ITERATIONS = 10\n\n var kSplineTableSize = 11\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0)\n\n var float32ArraySupported = typeof Float32Array === 'function'\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1\n }\n function C(aA1) {\n return 3.0 * aA1\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1)\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n 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 } else {\n aA = currentT\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS)\n return currentT\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2)\n if (currentSlope === 0.0) return aGuessT\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX\n aGuessT -= currentX / currentSlope\n }\n return aGuessT\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\n */\n function BezierEasing(points) {\n this._p = points\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize)\n this._precomputed = false\n\n this.get = this.get.bind(this)\n }\n\n BezierEasing.prototype = {\n get: function (x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3]\n if (!this._precomputed) this._precompute()\n if (mX1 === mY1 && mX2 === mY2) return x // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) return 0\n if (x === 1) return 1\n return calcBezier(this._getTForX(x), mY1, mY2)\n },\n\n // Private part\n\n _precompute: function () {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3]\n this._precomputed = true\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues()\n }\n },\n\n _calcSampleValues: function () {\n var mX1 = this._p[0],\n mX2 = this._p[2]\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2)\n }\n },\n\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\n */\n _getTForX: function (aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues\n\n var intervalStart = 0.0\n var currentSample = 1\n var lastSample = kSplineTableSize - 1\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize\n }\n --currentSample\n\n // Interpolate to provide an initial guess for t\n var dist =\n (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample])\n var guessForT = intervalStart + dist * kSampleStepSize\n\n var initialSlope = getSlope(guessForT, mX1, mX2)\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2)\n }\n if (initialSlope === 0.0) {\n return guessForT\n }\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2)\n },\n }\n\n return ob\n })()\n\n const pooling = (function () {\n function double(arr) {\n return arr.concat(createSizedArray(arr.length))\n }\n\n return {\n double: double,\n }\n })()\n\n const poolFactory = (function () {\n return function (initialLength, _create, _release) {\n var _length = 0\n var _maxLength = initialLength\n var pool = createSizedArray(_maxLength)\n\n var ob = {\n newElement: newElement,\n release: release,\n }\n\n function newElement() {\n var element\n if (_length) {\n _length -= 1\n element = pool[_length]\n } else {\n element = _create()\n }\n return element\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling.double(pool)\n _maxLength *= 2\n }\n if (_release) {\n _release(element)\n }\n pool[_length] = element\n _length += 1\n }\n\n return ob\n }\n })()\n\n const bezierLengthPool = (function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments()),\n }\n }\n return poolFactory(8, create)\n })()\n\n const segmentsLengthPool = (function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0,\n }\n }\n\n function release(element) {\n var i\n var len = element.lengths.length\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i])\n }\n element.lengths.length = 0\n }\n\n return poolFactory(8, create, release)\n })()\n\n function bezFunction() {\n var math = Math\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1\n return det1 > -0.001 && det1 < 0.001\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3)\n }\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2))\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2))\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2))\n var diffDist\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3\n } else {\n diffDist = dist3 - dist2 - dist1\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1\n } else {\n diffDist = dist2 - dist1 - dist3\n }\n return diffDist > -0.0001 && diffDist < 0.0001\n }\n\n var getBezierLength = (function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments()\n var k\n var i\n var len\n var ptCoord\n var perc\n var addedLength = 0\n var ptDistance\n var point = []\n var lastPoint = []\n var lengthData = bezierLengthPool.newElement()\n len = pt3.length\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1)\n ptDistance = 0\n for (i = 0; i < len; i += 1) {\n ptCoord =\n bmPow(1 - perc, 3) * pt1[i] +\n 3 * bmPow(1 - perc, 2) * perc * pt3[i] +\n 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] +\n bmPow(perc, 3) * pt2[i]\n point[i] = ptCoord\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2)\n }\n lastPoint[i] = point[i]\n }\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance)\n addedLength += ptDistance\n }\n lengthData.percents[k] = perc\n lengthData.lengths[k] = addedLength\n }\n lengthData.addedLength = addedLength\n return lengthData\n }\n })()\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement()\n var closed = shapeData.c\n var pathV = shapeData.v\n var pathO = shapeData.o\n var pathI = shapeData.i\n var i\n var len = shapeData._length\n var lengths = segmentsLength.lengths\n var totalLength = 0\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1])\n totalLength += lengths[i].addedLength\n }\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0])\n totalLength += lengths[i].addedLength\n }\n segmentsLength.totalLength = totalLength\n return segmentsLength\n }\n\n function BezierData(length) {\n this.segmentLength = 0\n this.points = new Array(length)\n }\n\n function PointData(partial, point) {\n this.partialLength = partial\n this.point = point\n }\n\n var buildBezierData = (function () {\n var storedData = {}\n\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (\n pt1[0] +\n '_' +\n pt1[1] +\n '_' +\n pt2[0] +\n '_' +\n pt2[1] +\n '_' +\n pt3[0] +\n '_' +\n pt3[1] +\n '_' +\n pt4[0] +\n '_' +\n pt4[1]\n ).replace(/\\./g, 'p')\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments()\n var k\n var i\n var len\n var ptCoord\n var perc\n var addedLength = 0\n var ptDistance\n var point\n var lastPoint = null\n if (\n pt1.length === 2 &&\n (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) &&\n pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) &&\n pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])\n ) {\n curveSegments = 2\n }\n var bezierData = new BezierData(curveSegments)\n len = pt3.length\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len)\n perc = k / (curveSegments - 1)\n ptDistance = 0\n for (i = 0; i < len; i += 1) {\n ptCoord =\n bmPow(1 - perc, 3) * pt1[i] +\n 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) +\n 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) +\n bmPow(perc, 3) * pt2[i]\n point[i] = ptCoord\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2)\n }\n }\n ptDistance = bmSqrt(ptDistance)\n addedLength += ptDistance\n bezierData.points[k] = new PointData(ptDistance, point)\n lastPoint = point\n }\n bezierData.segmentLength = addedLength\n storedData[bezierName] = bezierData\n }\n return storedData[bezierName]\n }\n })()\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents\n var lengths = bezierData.lengths\n var len = percents.length\n var initPos = bmFloor((len - 1) * perc)\n var lengthPos = perc * bezierData.addedLength\n var lPerc = 0\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos]\n }\n var dir = lengths[initPos] > lengthPos ? -1 : 1\n var flag = true\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos])\n flag = false\n } else {\n initPos += dir\n }\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos]\n }\n flag = false\n }\n }\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData)\n var u1 = 1 - t1\n var ptX =\n math.round(\n (u1 * u1 * u1 * pt1[0] +\n (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] +\n (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] +\n t1 * t1 * t1 * pt2[0]) *\n 1000,\n ) / 1000\n var ptY =\n math.round(\n (u1 * u1 * u1 * pt1[1] +\n (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] +\n (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] +\n t1 * t1 * t1 * pt2[1]) *\n 1000,\n ) / 1000\n return [ptX, ptY]\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8)\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0\n } else if (startPerc > 1) {\n startPerc = 1\n }\n var t0 = getDistancePerc(startPerc, bezierData)\n endPerc = endPerc > 1 ? 1 : endPerc\n var t1 = getDistancePerc(endPerc, bezierData)\n var i\n var len = pt1.length\n var u0 = 1 - t0\n var u1 = 1 - t1\n var u0u0u0 = u0 * u0 * u0\n var t0u0u0_3 = t0 * u0 * u0 * 3 // eslint-disable-line camelcase\n var t0t0u0_3 = t0 * t0 * u0 * 3 // eslint-disable-line camelcase\n var t0t0t0 = t0 * t0 * t0\n //\n var u0u0u1 = u0 * u0 * u1\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1 // eslint-disable-line camelcase\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1 // eslint-disable-line camelcase\n var t0t0t1 = t0 * t0 * t1\n //\n var u0u1u1 = u0 * u1 * u1\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1 // eslint-disable-line camelcase\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1 // eslint-disable-line camelcase\n var t0t1t1 = t0 * t1 * t1\n //\n var u1u1u1 = u1 * u1 * u1\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1 // eslint-disable-line camelcase\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1 // eslint-disable-line camelcase\n var t1t1t1 = t1 * t1 * t1\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] =\n math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 1] =\n math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 2] =\n math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 3] =\n math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D,\n }\n }\n\n const bez = bezFunction()\n\n const PropertyFactory = (function () {\n var initFrame = initialDefaultFrame\n var mathAbs = Math.abs\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime\n var newValue\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length)\n }\n var iterationIndex = caching.lastIndex\n var i = iterationIndex\n var len = this.keyframes.length - 1\n var flag = true\n var keyData\n var nextKeyData\n var keyframeMetadata\n\n while (flag) {\n keyData = this.keyframes[i]\n nextKeyData = this.keyframes[i + 1]\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData\n }\n iterationIndex = 0\n break\n }\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i\n break\n }\n if (i < len - 1) {\n i += 1\n } else {\n iterationIndex = 0\n flag = false\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {}\n\n var k\n var kLen\n var perc\n var jLen\n var j\n var fnc\n var nextKeyTime = nextKeyData.t - offsetTime\n var keyTime = keyData.t - offsetTime\n var endValue\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(\n keyData.s,\n nextKeyData.s || keyData.e,\n keyData.to,\n keyData.ti,\n )\n }\n var bezierData = keyframeMetadata.bezierData\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0\n kLen = bezierData.points[ind].point.length\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k]\n }\n // caching._lastKeyframeIndex = -1;\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get\n keyframeMetadata.__fnct = fnc\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime))\n var distanceInLine = bezierData.segmentLength * perc\n\n var segmentPerc\n var addedLength =\n caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0\n flag = true\n jLen = bezierData.points.length\n while (flag) {\n addedLength += bezierData.points[j].partialLength\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k]\n }\n break\n } else if (\n distanceInLine >= addedLength &&\n distanceInLine < addedLength + bezierData.points[j + 1].partialLength\n ) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength\n kLen = bezierData.points[j].point.length\n for (k = 0; k < kLen; k += 1) {\n newValue[k] =\n bezierData.points[j].point[k] +\n (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc\n }\n break\n }\n if (j < jLen - 1) {\n j += 1\n } else {\n flag = false\n }\n }\n caching._lastPoint = j\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength\n caching._lastKeyframeIndex = i\n }\n } else {\n var outX\n var outY\n var inX\n var inY\n var keyValue\n len = keyData.s.length\n endValue = nextKeyData.s || keyData.e\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0]\n newValue[1] = endValue[1]\n newValue[2] = endValue[2]\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0]\n newValue[1] = keyData.s[1]\n newValue[2] = keyData.s[2]\n } else {\n var quatStart = createQuaternion(keyData.s)\n var quatEnd = createQuaternion(endValue)\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime)\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time))\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1\n } else if (frameNum < keyTime) {\n perc = 0\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = []\n }\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i]\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i]\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i]\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i]\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get\n keyframeMetadata.__fnct[i] = fnc\n } else {\n fnc = keyframeMetadata.__fnct[i]\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x\n outY = keyData.o.y\n inX = keyData.i.x\n inY = keyData.i.y\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get\n keyData.keyframeMetadata = fnc\n } else {\n fnc = keyframeMetadata.__fnct\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime))\n }\n }\n\n endValue = nextKeyData.s || keyData.e\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue\n } else {\n newValue = keyValue\n }\n }\n }\n }\n caching.lastIndex = iterationIndex\n return newValue\n }\n\n // based on @Toji's https://github.com/toji/gl-matrix/\n function slerp(a, b, t) {\n var out = []\n var ax = a[0]\n var ay = a[1]\n var az = a[2]\n var aw = a[3]\n var bx = b[0]\n var by = b[1]\n var bz = b[2]\n var bw = b[3]\n\n var omega\n var cosom\n var sinom\n var scale0\n var scale1\n\n cosom = ax * bx + ay * by + az * bz + aw * bw\n if (cosom < 0.0) {\n cosom = -cosom\n bx = -bx\n by = -by\n bz = -bz\n bw = -bw\n }\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom)\n sinom = Math.sin(omega)\n scale0 = Math.sin((1.0 - t) * omega) / sinom\n scale1 = Math.sin(t * omega) / sinom\n } else {\n scale0 = 1.0 - t\n scale1 = t\n }\n out[0] = scale0 * ax + scale1 * bx\n out[1] = scale0 * ay + scale1 * by\n out[2] = scale0 * az + scale1 * bz\n out[3] = scale0 * aw + scale1 * bw\n\n return out\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0]\n var qy = quat[1]\n var qz = quat[2]\n var qw = quat[3]\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz)\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw)\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz)\n out[0] = heading / degToRads\n out[1] = attitude / degToRads\n out[2] = bank / degToRads\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads\n var attitude = values[1] * degToRads\n var bank = values[2] * degToRads\n var c1 = Math.cos(heading / 2)\n var c2 = Math.cos(attitude / 2)\n var c3 = Math.cos(bank / 2)\n var s1 = Math.sin(heading / 2)\n var s2 = Math.sin(attitude / 2)\n var s3 = Math.sin(bank / 2)\n var w = c1 * c2 * c3 - s1 * s2 * s3\n var x = s1 * s2 * c3 + c1 * c2 * s3\n var y = s1 * c2 * c3 + c1 * s2 * s3\n var z = c1 * s2 * c3 - s1 * c2 * s3\n\n return [x, y, z, w]\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime\n var initTime = this.keyframes[0].t - this.offsetTime\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime\n if (\n !(\n frameNum === this._caching.lastFrame ||\n (this._caching.lastFrame !== initFrame &&\n ((this._caching.lastFrame >= endTime && frameNum >= endTime) ||\n (this._caching.lastFrame < initTime && frameNum < initTime)))\n )\n ) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1\n this._caching.lastIndex = 0\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching)\n this.pv = renderResult\n }\n this._caching.lastFrame = frameNum\n return this.pv\n }\n\n function setVValue(val) {\n var multipliedValue\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue\n this._mdf = true\n }\n } else {\n var i = 0\n var len = this.v.length\n while (i < len) {\n multipliedValue = val[i] * this.mult\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue\n this._mdf = true\n }\n i += 1\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return\n }\n if (this.lock) {\n this.setVValue(this.pv)\n return\n }\n this.lock = true\n this._mdf = this._isFirstFrame\n var i\n var len = this.effectsSequence.length\n var finalValue = this.kf ? this.pv : this.data.k\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue)\n }\n this.setVValue(finalValue)\n this._isFirstFrame = false\n this.lock = false\n this.frameId = this.elem.globalData.frameId\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction)\n this.container.addDynamicProperty(this)\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional'\n this.mult = mult || 1\n this.data = data\n this.v = mult ? data.k * mult : data.k\n this.pv = data.k\n this._mdf = false\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.k = false\n this.kf = false\n this.vel = 0\n this.effectsSequence = []\n this._isFirstFrame = true\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.addEffect = addEffect\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional'\n this.mult = mult || 1\n this.data = data\n this._mdf = false\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.k = false\n this.kf = false\n this.frameId = -1\n var i\n var len = data.k.length\n this.v = createTypedArray('float32', len)\n this.pv = createTypedArray('float32', len)\n this.vel = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult\n this.pv[i] = data.k[i]\n }\n this._isFirstFrame = true\n this.effectsSequence = []\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.addEffect = addEffect\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional'\n this.keyframes = data.k\n this.keyframesMetadata = []\n this.offsetTime = elem.data.st\n this.frameId = -1\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1,\n }\n this.k = true\n this.kf = true\n this.data = data\n this.mult = mult || 1\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.v = initFrame\n this.pv = initFrame\n this._isFirstFrame = true\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.interpolateValue = interpolateValue\n this.effectsSequence = [getValueAtCurrentTime.bind(this)]\n this.addEffect = addEffect\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional'\n var i\n var len = data.k.length\n var s\n var e\n var to\n var ti\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s\n e = data.k[i + 1].s\n to = data.k[i].to\n ti = data.k[i].ti\n if (\n (s.length === 2 &&\n !(s[0] === e[0] && s[1] === e[1]) &&\n bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) &&\n bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) ||\n (s.length === 3 &&\n !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) &&\n 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]) &&\n 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]))\n ) {\n data.k[i].to = null\n data.k[i].ti = null\n }\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\n data.k[i].to = null\n data.k[i].ti = null\n }\n }\n }\n }\n this.effectsSequence = [getValueAtCurrentTime.bind(this)]\n this.data = data\n this.keyframes = data.k\n this.keyframesMetadata = []\n this.offsetTime = elem.data.st\n this.k = true\n this.kf = true\n this._isFirstFrame = true\n this.mult = mult || 1\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.interpolateValue = interpolateValue\n this.frameId = -1\n var arrLen = data.k[0].s.length\n this.v = createTypedArray('float32', arrLen)\n this.pv = createTypedArray('float32', arrLen)\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame\n this.pv[i] = initFrame\n }\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) }\n this.addEffect = addEffect\n }\n\n function getProp(elem, data, type, mult, container) {\n var p\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container)\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container)\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container)\n break\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container)\n break\n default:\n break\n }\n }\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p)\n }\n return p\n }\n\n var ob = {\n getProp: getProp,\n }\n return ob\n })()\n\n function DynamicPropertyContainer() {}\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function (prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop)\n this.container.addDynamicProperty(this)\n this._isAnimated = true\n }\n },\n iterateDynamicProperties: function () {\n this._mdf = false\n var i\n var len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue()\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true\n }\n }\n },\n initDynamicPropertyContainer: function (container) {\n this.container = container\n this.dynamicProperties = []\n this._mdf = false\n this._isAnimated = false\n },\n }\n\n const pointPool = (function () {\n function create() {\n return createTypedArray('float32', 2)\n }\n return poolFactory(8, create)\n })()\n\n function ShapePath() {\n this.c = false\n this._length = 0\n this._maxLength = 8\n this.v = createSizedArray(this._maxLength)\n this.o = createSizedArray(this._maxLength)\n this.i = createSizedArray(this._maxLength)\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed\n this.setLength(len)\n var i = 0\n while (i < len) {\n this.v[i] = pointPool.newElement()\n this.o[i] = pointPool.newElement()\n this.i[i] = pointPool.newElement()\n i += 1\n }\n }\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength()\n }\n this._length = len\n }\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength))\n this.i = this.i.concat(createSizedArray(this._maxLength))\n this.o = this.o.concat(createSizedArray(this._maxLength))\n this._maxLength *= 2\n }\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr\n this._length = Math.max(this._length, pos + 1)\n if (this._length >= this._maxLength) {\n this.doubleArrayLength()\n }\n switch (type) {\n case 'v':\n arr = this.v\n break\n case 'i':\n arr = this.i\n break\n case 'o':\n arr = this.o\n break\n default:\n arr = []\n break\n }\n if (!arr[pos] || (arr[pos] && !replace)) {\n arr[pos] = pointPool.newElement()\n }\n arr[pos][0] = x\n arr[pos][1] = y\n }\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace)\n this.setXYAt(oX, oY, 'o', pos, replace)\n this.setXYAt(iX, iY, 'i', pos, replace)\n }\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath()\n newPath.setPathData(this.c, this._length)\n var vertices = this.v\n var outPoints = this.o\n var inPoints = this.i\n var init = 0\n if (this.c) {\n newPath.setTripleAt(\n vertices[0][0],\n vertices[0][1],\n inPoints[0][0],\n inPoints[0][1],\n outPoints[0][0],\n outPoints[0][1],\n 0,\n false,\n )\n init = 1\n }\n var cnt = this._length - 1\n var len = this._length\n\n var i\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(\n vertices[cnt][0],\n vertices[cnt][1],\n inPoints[cnt][0],\n inPoints[cnt][1],\n outPoints[cnt][0],\n outPoints[cnt][1],\n i,\n false,\n )\n cnt -= 1\n }\n return newPath\n }\n\n const shapePool = (function () {\n function create() {\n return new ShapePath()\n }\n\n function release(shapePath) {\n var len = shapePath._length\n var i\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i])\n pointPool.release(shapePath.i[i])\n pointPool.release(shapePath.o[i])\n shapePath.v[i] = null\n shapePath.i[i] = null\n shapePath.o[i] = null\n }\n shapePath._length = 0\n shapePath.c = false\n }\n\n function clone(shape) {\n var cloned = factory.newElement()\n var i\n var len = shape._length === undefined ? shape.v.length : shape._length\n cloned.setLength(len)\n cloned.c = shape.c\n\n for (i = 0; i < len; i += 1) {\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)\n }\n return cloned\n }\n\n var factory = poolFactory(4, create, release)\n factory.clone = clone\n\n return factory\n })()\n\n function ShapeCollection() {\n this._length = 0\n this._maxLength = 4\n this.shapes = createSizedArray(this._maxLength)\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength))\n this._maxLength *= 2\n }\n this.shapes[this._length] = shapeData\n this._length += 1\n }\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i])\n }\n this._length = 0\n }\n\n const shapeCollectionPool = (function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release,\n }\n\n var _length = 0\n var _maxLength = 4\n var pool = createSizedArray(_maxLength)\n\n function newShapeCollection() {\n var shapeCollection\n if (_length) {\n _length -= 1\n shapeCollection = pool[_length]\n } else {\n shapeCollection = new ShapeCollection()\n }\n return shapeCollection\n }\n\n function release(shapeCollection) {\n var i\n var len = shapeCollection._length\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i])\n }\n shapeCollection._length = 0\n\n if (_length === _maxLength) {\n pool = pooling.double(pool)\n _maxLength *= 2\n }\n pool[_length] = shapeCollection\n _length += 1\n }\n\n return ob\n })()\n\n const ShapePropertyFactory = (function () {\n var initFrame = -999999\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex\n var keyPropS\n var keyPropE\n var isHold\n var j\n var k\n var jLen\n var kLen\n var perc\n var vertexValue\n var kf = this.keyframes\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0]\n isHold = true\n iterationIndex = 0\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0]\n /* if(kf[kf.length - 1].s){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\n } */\n isHold = true\n } else {\n var i = iterationIndex\n var len = kf.length - 1\n var flag = true\n var keyData\n var nextKeyData\n var keyframeMetadata\n while (flag) {\n keyData = kf[i]\n nextKeyData = kf[i + 1]\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break\n }\n if (i < len - 1) {\n i += 1\n } else {\n flag = false\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {}\n isHold = keyData.h === 1\n iterationIndex = i\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0\n } else {\n var fnc\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get\n keyframeMetadata.__fnct = fnc\n }\n perc = fnc(\n (frameNum - (keyData.t - this.offsetTime)) /\n (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)),\n )\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0]\n }\n keyPropS = keyData.s[0]\n }\n jLen = previousValue._length\n kLen = keyPropS.i[0].length\n caching.lastIndex = iterationIndex\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc\n previousValue.i[j][k] = vertexValue\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc\n previousValue.o[j][k] = vertexValue\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc\n previousValue.v[j][k] = vertexValue\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime\n var initTime = this.keyframes[0].t - this.offsetTime\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime\n var lastFrame = this._caching.lastFrame\n if (\n !(\n lastFrame !== initFrame &&\n ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime))\n )\n ) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0\n this.interpolateShape(frameNum, this.pv, this._caching)\n /// /\n }\n this._caching.lastFrame = frameNum\n return this.pv\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false\n }\n var i\n var len = shape1._length\n for (i = 0; i < len; i += 1) {\n if (\n shape1.v[i][0] !== shape2.v[i][0] ||\n shape1.v[i][1] !== shape2.v[i][1] ||\n shape1.o[i][0] !== shape2.o[i][0] ||\n shape1.o[i][1] !== shape2.o[i][1] ||\n shape1.i[i][0] !== shape2.i[i][0] ||\n shape1.i[i][1] !== shape2.i[i][1]\n ) {\n return false\n }\n }\n return true\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath)\n this.localShapeCollection.releaseShapes()\n this.localShapeCollection.addShape(this.v)\n this._mdf = true\n this.paths = this.localShapeCollection\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n if (!this.effectsSequence.length) {\n this._mdf = false\n return\n }\n if (this.lock) {\n this.setVValue(this.pv)\n return\n }\n this.lock = true\n this._mdf = false\n var finalValue\n if (this.kf) {\n finalValue = this.pv\n } else if (this.data.ks) {\n finalValue = this.data.ks.k\n } else {\n finalValue = this.data.pt.k\n }\n var i\n var len = this.effectsSequence.length\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue)\n }\n this.setVValue(finalValue)\n this.lock = false\n this.frameId = this.elem.globalData.frameId\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape'\n this.comp = elem.comp\n this.container = elem\n this.elem = elem\n this.data = data\n this.k = false\n this.kf = false\n this._mdf = false\n var pathData = type === 3 ? data.pt.k : data.ks.k\n this.v = shapePool.clone(pathData)\n this.pv = shapePool.clone(this.v)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.paths = this.localShapeCollection\n this.paths.addShape(this.v)\n this.reset = resetShape\n this.effectsSequence = []\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction)\n this.container.addDynamicProperty(this)\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape\n ShapeProperty.prototype.getValue = processEffectsSequence\n ShapeProperty.prototype.setVValue = setVValue\n ShapeProperty.prototype.addEffect = addEffect\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape'\n this.comp = elem.comp\n this.elem = elem\n this.container = elem\n this.offsetTime = elem.data.st\n this.keyframes = type === 3 ? data.pt.k : data.ks.k\n this.keyframesMetadata = []\n this.k = true\n this.kf = true\n var len = this.keyframes[0].s[0].i.length\n this.v = shapePool.newElement()\n this.v.setPathData(this.keyframes[0].s[0].c, len)\n this.pv = shapePool.clone(this.v)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.paths = this.localShapeCollection\n this.paths.addShape(this.v)\n this.lastFrame = initFrame\n this.reset = resetShape\n this._caching = { lastFrame: initFrame, lastIndex: 0 }\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]\n }\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape\n KeyframedShapeProperty.prototype.setVValue = setVValue\n KeyframedShapeProperty.prototype.addEffect = addEffect\n\n var EllShapeProperty = (function () {\n var cPoint = roundCorner\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement()\n this.v.setPathData(true, 4)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.paths = this.localShapeCollection\n this.localShapeCollection.addShape(this.v)\n this.d = data.d\n this.elem = elem\n this.comp = elem.comp\n this.frameId = -1\n this.initDynamicPropertyContainer(elem)\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this)\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this)\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.k = false\n this.convertEllToPath()\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n\n if (this._mdf) {\n this.convertEllToPath()\n }\n },\n convertEllToPath: function () {\n var p0 = this.p.v[0]\n var p1 = this.p.v[1]\n var s0 = this.s.v[0] / 2\n var s1 = this.s.v[1] / 2\n var _cw = this.d !== 3\n var _v = this.v\n _v.v[0][0] = p0\n _v.v[0][1] = p1 - s1\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0\n _v.v[1][1] = p1\n _v.v[2][0] = p0\n _v.v[2][1] = p1 + s1\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0\n _v.v[3][1] = p1\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint\n _v.i[0][1] = p1 - s1\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0\n _v.i[1][1] = p1 - s1 * cPoint\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint\n _v.i[2][1] = p1 + s1\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0\n _v.i[3][1] = p1 + s1 * cPoint\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint\n _v.o[0][1] = p1 - s1\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0\n _v.o[1][1] = p1 + s1 * cPoint\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint\n _v.o[2][1] = p1 + s1\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0\n _v.o[3][1] = p1 - s1 * cPoint\n },\n }\n\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory)\n\n return EllShapePropertyFactory\n })()\n\n var StarShapeProperty = (function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement()\n this.v.setPathData(true, 0)\n this.elem = elem\n this.comp = elem.comp\n this.data = data\n this.frameId = -1\n this.d = data.d\n this.initDynamicPropertyContainer(elem)\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this)\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this)\n this.convertToPath = this.convertStarToPath\n } else {\n this.convertToPath = this.convertPolygonToPath\n }\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this)\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this)\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this)\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this)\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.localShapeCollection.addShape(this.v)\n this.paths = this.localShapeCollection\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.k = false\n this.convertToPath()\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n if (this._mdf) {\n this.convertToPath()\n }\n },\n convertStarToPath: function () {\n var numPts = Math.floor(this.pt.v) * 2\n var angle = (Math.PI * 2) / numPts\n /* this.v.v.length = numPts;\n this.v.i.length = numPts;\n this.v.o.length = numPts; */\n var longFlag = true\n var longRad = this.or.v\n var shortRad = this.ir.v\n var longRound = this.os.v\n var shortRound = this.is.v\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2)\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2)\n var i\n var rad\n var roundness\n var perimSegment\n var currentAng = -Math.PI / 2\n currentAng += this.r.v\n var dir = this.data.d === 3 ? -1 : 1\n this.v._length = 0\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad\n roundness = longFlag ? longRound : shortRound\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment\n var x = rad * Math.cos(currentAng)\n var y = rad * Math.sin(currentAng)\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y)\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y)\n x += +this.p.v[0]\n y += +this.p.v[1]\n this.v.setTripleAt(\n x,\n y,\n x - ox * perimSegment * roundness * dir,\n y - oy * perimSegment * roundness * dir,\n x + ox * perimSegment * roundness * dir,\n y + oy * perimSegment * roundness * dir,\n i,\n true,\n )\n\n /* this.v.v[i] = [x,y];\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n this.v._length = numPts; */\n longFlag = !longFlag\n currentAng += angle * dir\n }\n },\n convertPolygonToPath: function () {\n var numPts = Math.floor(this.pt.v)\n var angle = (Math.PI * 2) / numPts\n var rad = this.or.v\n var roundness = this.os.v\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4)\n var i\n var currentAng = -Math.PI * 0.5\n var dir = this.data.d === 3 ? -1 : 1\n currentAng += this.r.v\n this.v._length = 0\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng)\n var y = rad * Math.sin(currentAng)\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y)\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y)\n x += +this.p.v[0]\n y += +this.p.v[1]\n this.v.setTripleAt(\n x,\n y,\n x - ox * perimSegment * roundness * dir,\n y - oy * perimSegment * roundness * dir,\n x + ox * perimSegment * roundness * dir,\n y + oy * perimSegment * roundness * dir,\n i,\n true,\n )\n currentAng += angle * dir\n }\n this.paths.length = 0\n this.paths[0] = this.v\n },\n }\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory)\n\n return StarShapePropertyFactory\n })()\n\n var RectShapeProperty = (function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement()\n this.v.c = true\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.localShapeCollection.addShape(this.v)\n this.paths = this.localShapeCollection\n this.elem = elem\n this.comp = elem.comp\n this.frameId = -1\n this.d = data.d\n this.initDynamicPropertyContainer(elem)\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this)\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this)\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this)\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.k = false\n this.convertRectToPath()\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function () {\n var p0 = this.p.v[0]\n var p1 = this.p.v[1]\n var v0 = this.s.v[0] / 2\n var v1 = this.s.v[1] / 2\n var round = bmMin(v0, v1, this.r.v)\n var cPoint = round * (1 - roundCorner)\n this.v._length = 0\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true)\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true)\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true)\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true)\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true)\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true)\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true)\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true)\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2)\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3)\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true)\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true)\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true)\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true)\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true)\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true)\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true)\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true)\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true)\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true)\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true)\n }\n }\n },\n getValue: function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n if (this._mdf) {\n this.convertRectToPath()\n }\n },\n reset: resetShape,\n }\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory)\n\n return RectShapePropertyFactory\n })()\n\n function getShapeProp(elem, data, type) {\n var prop\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks\n var keys = dataProp.k\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type)\n } else {\n prop = new ShapeProperty(elem, data, type)\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data)\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data)\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data)\n }\n if (prop.k) {\n elem.addDynamicProperty(prop)\n }\n return prop\n }\n\n function getConstructorFunction() {\n return ShapeProperty\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty\n }\n\n var ob = {}\n ob.getShapeProp = getShapeProp\n ob.getConstructorFunction = getConstructorFunction\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction\n return ob\n })()\n\n /*!\n Transformation Matrix v2.0\n (c) Epistemex 2014-2015\n www.epistemex.com\n By Ken Fyrstenberg\n Contributions by leeoniya.\n License: MIT, header required.\n */\n\n /**\n * 2D transformation matrix object initialized with identity matrix.\n *\n * The matrix can synchronize a canvas context by supplying the context\n * as an argument, or later apply current absolute transform to an\n * existing context.\n *\n * All values are handled as floating point values.\n *\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n * @prop {number} a - scale x\n * @prop {number} b - shear y\n * @prop {number} c - shear x\n * @prop {number} d - scale y\n * @prop {number} e - translate x\n * @prop {number} f - translate y\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n * @constructor\n */\n\n const Matrix = (function () {\n var _cos = Math.cos\n var _sin = Math.sin\n var _tan = Math.tan\n var _rnd = Math.round\n\n function reset() {\n this.props[0] = 1\n this.props[1] = 0\n this.props[2] = 0\n this.props[3] = 0\n this.props[4] = 0\n this.props[5] = 1\n this.props[6] = 0\n this.props[7] = 0\n this.props[8] = 0\n this.props[9] = 0\n this.props[10] = 1\n this.props[11] = 0\n this.props[12] = 0\n this.props[13] = 0\n this.props[14] = 0\n this.props[15] = 1\n return this\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1)\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1)\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0)\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay))\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\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);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1\n }\n if (sx === 1 && sy === 1 && sz === 1) {\n return this\n }\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1)\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a\n this.props[1] = b\n this.props[2] = c\n this.props[3] = d\n this.props[4] = e\n this.props[5] = f\n this.props[6] = g\n this.props[7] = h\n this.props[8] = i\n this.props[9] = j\n this.props[10] = k\n this.props[11] = l\n this.props[12] = m\n this.props[13] = n\n this.props[14] = o\n this.props[15] = p\n return this\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1)\n }\n return this\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props\n\n if (\n a2 === 1 &&\n b2 === 0 &&\n c2 === 0 &&\n d2 === 0 &&\n e2 === 0 &&\n f2 === 1 &&\n g2 === 0 &&\n h2 === 0 &&\n i2 === 0 &&\n j2 === 0 &&\n k2 === 1 &&\n l2 === 0\n ) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2\n _p[13] = _p[13] * f2 + _p[15] * n2\n _p[14] = _p[14] * k2 + _p[15] * o2\n _p[15] *= p2\n // }\n this._identityCalculated = false\n return this\n }\n\n var a1 = _p[0]\n var b1 = _p[1]\n var c1 = _p[2]\n var d1 = _p[3]\n var e1 = _p[4]\n var f1 = _p[5]\n var g1 = _p[6]\n var h1 = _p[7]\n var i1 = _p[8]\n var j1 = _p[9]\n var k1 = _p[10]\n var l1 = _p[11]\n var m1 = _p[12]\n var n1 = _p[13]\n var o1 = _p[14]\n var p1 = _p[15]\n\n /* matrix order (canvas compatible):\n * ace\n * bdf\n * 001\n */\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2\n\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2\n\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2\n\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2\n\n this._identityCalculated = false\n return this\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(\n this.props[0] !== 1 ||\n this.props[1] !== 0 ||\n this.props[2] !== 0 ||\n this.props[3] !== 0 ||\n this.props[4] !== 0 ||\n this.props[5] !== 1 ||\n this.props[6] !== 0 ||\n this.props[7] !== 0 ||\n this.props[8] !== 0 ||\n this.props[9] !== 0 ||\n this.props[10] !== 1 ||\n this.props[11] !== 0 ||\n this.props[12] !== 0 ||\n this.props[13] !== 0 ||\n this.props[14] !== 0 ||\n this.props[15] !== 1\n )\n this._identityCalculated = true\n }\n return this._identity\n }\n\n function equals(matr) {\n var i = 0\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false\n }\n i += 1\n }\n return true\n }\n\n function clone(matr) {\n var i\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i]\n }\n return matr\n }\n\n function cloneFromProps(props) {\n var i\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i]\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\n }\n /* return {\n x: x * me.a + y * me.c + me.e,\n y: x * me.b + y * me.d + me.f\n }; */\n }\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12]\n }\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13]\n }\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4]\n var a = this.props[5] / determinant\n var b = -this.props[1] / determinant\n var c = -this.props[4] / determinant\n var d = this.props[0] / determinant\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant\n var inverseMatrix = new Matrix()\n inverseMatrix.props[0] = a\n inverseMatrix.props[1] = b\n inverseMatrix.props[4] = c\n inverseMatrix.props[5] = d\n inverseMatrix.props[12] = e\n inverseMatrix.props[13] = f\n return inverseMatrix\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix()\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0)\n }\n\n function inversePoints(pts) {\n var i\n var len = pts.length\n var retPts = []\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i])\n }\n return retPts\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6)\n if (this.isIdentity()) {\n arr[0] = pt1[0]\n arr[1] = pt1[1]\n arr[2] = pt2[0]\n arr[3] = pt2[1]\n arr[4] = pt3[0]\n arr[5] = pt3[1]\n } else {\n var p0 = this.props[0]\n var p1 = this.props[1]\n var p4 = this.props[4]\n var p5 = this.props[5]\n var p12 = this.props[12]\n var p13 = this.props[13]\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13\n }\n return arr\n }\n\n function applyToPointArray(x, y, z) {\n var arr\n if (this.isIdentity()) {\n arr = [x, y, z]\n } else {\n arr = [\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\n ]\n }\n return arr\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y\n }\n var _p = this.props\n return (\n Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 +\n ',' +\n Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100\n )\n }\n\n function toCSS() {\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.\n /* if(this.isIdentity()) {\n return '';\n } */\n var i = 0\n var props = this.props\n var cssValue = 'matrix3d('\n var v = 10000\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v\n cssValue += i === 15 ? ')' : ','\n i += 1\n }\n return cssValue\n }\n\n function roundMatrixProperty(val) {\n var v = 10000\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\n return _rnd(val * v) / v\n }\n return val\n }\n\n function to2dCSS() {\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.\n /* if(this.isIdentity()) {\n return '';\n } */\n var props = this.props\n var _a = roundMatrixProperty(props[0])\n var _b = roundMatrixProperty(props[1])\n var _c = roundMatrixProperty(props[4])\n var _d = roundMatrixProperty(props[5])\n var _e = roundMatrixProperty(props[12])\n var _f = roundMatrixProperty(props[13])\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')'\n }\n\n return function () {\n this.reset = reset\n this.rotate = rotate\n this.rotateX = rotateX\n this.rotateY = rotateY\n this.rotateZ = rotateZ\n this.skew = skew\n this.skewFromAxis = skewFromAxis\n this.shear = shear\n this.scale = scale\n this.setTransform = setTransform\n this.translate = translate\n this.transform = transform\n this.applyToPoint = applyToPoint\n this.applyToX = applyToX\n this.applyToY = applyToY\n this.applyToZ = applyToZ\n this.applyToPointArray = applyToPointArray\n this.applyToTriplePoints = applyToTriplePoints\n this.applyToPointStringified = applyToPointStringified\n this.toCSS = toCSS\n this.to2dCSS = to2dCSS\n this.clone = clone\n this.cloneFromProps = cloneFromProps\n this.equals = equals\n this.inversePoints = inversePoints\n this.inversePoint = inversePoint\n this.getInverseMatrix = getInverseMatrix\n this._t = this.transform\n this.isIdentity = isIdentity\n this._identity = true\n this._identityCalculated = false\n\n this.props = createTypedArray('float32', 16)\n this.reset()\n }\n })()\n\n const lottie = {}\n var standalone = '__[STANDALONE]__'\n var animationData = '__[ANIMATIONDATA]__'\n var renderer = ''\n\n function setLocation(href) {\n setLocationHref(href)\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer)\n } else {\n animationManager.searchAnimations()\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag)\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix)\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData)\n }\n return animationManager.loadAnimation(params)\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200)\n break\n default:\n case 'medium':\n setDefaultCurveSegments(50)\n break\n case 'low':\n setDefaultCurveSegments(10)\n break\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value)\n }\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false)\n } else {\n roundValues(true)\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined'\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin)\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory\n case 'shapePropertyFactory':\n return ShapePropertyFactory\n case 'matrix':\n return Matrix\n default:\n return null\n }\n }\n\n lottie.play = animationManager.play\n lottie.pause = animationManager.pause\n lottie.setLocationHref = setLocation\n lottie.togglePause = animationManager.togglePause\n lottie.setSpeed = animationManager.setSpeed\n lottie.setDirection = animationManager.setDirection\n lottie.stop = animationManager.stop\n lottie.searchAnimations = searchAnimations\n lottie.registerAnimation = animationManager.registerAnimation\n lottie.loadAnimation = loadAnimation\n lottie.setSubframeRendering = setSubframeRendering\n lottie.resize = animationManager.resize\n // lottie.start = start;\n lottie.goToAndStop = animationManager.goToAndStop\n lottie.destroy = animationManager.destroy\n lottie.setQuality = setQuality\n lottie.inBrowser = inBrowser\n lottie.installPlugin = installPlugin\n lottie.freeze = animationManager.freeze\n lottie.unfreeze = animationManager.unfreeze\n lottie.setVolume = animationManager.setVolume\n lottie.mute = animationManager.mute\n lottie.unmute = animationManager.unmute\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations\n lottie.useWebWorker = setWebWorker\n lottie.setIDPrefix = setPrefix\n lottie.__getFactory = getFactory\n lottie.version = '[[BM_VERSION]]'\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval)\n searchAnimations()\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&')\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=')\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1])\n }\n }\n return null\n }\n var queryString = ''\n if (standalone) {\n var scripts = document.getElementsByTagName('script')\n var index = scripts.length - 1\n var myScript = scripts[index] || {\n src: '',\n }\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : '' // eslint-disable-line no-useless-escape\n renderer = getQueryVariable('renderer')\n }\n var readyStateCheckInterval = setInterval(checkReady, 100)\n\n // this adds bodymovin to the window object for backwards compatibility\n try {\n if (\n !(typeof exports === 'object' && typeof module !== 'undefined') &&\n !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie\n }\n } catch (err) {\n //\n }\n\n const ShapeModifiers = (function () {\n var ob = {}\n var modifiers = {}\n ob.registerModifier = registerModifier\n ob.getModifier = getModifier\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data)\n }\n\n return ob\n })()\n\n function ShapeModifier() {}\n ShapeModifier.prototype.initModifierProperties = function () {}\n ShapeModifier.prototype.addShapeToModifier = function () {}\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\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.\n data.sh.container.addDynamicProperty(data.sh)\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() }\n this.shapes.push(shapeData)\n this.addShapeToModifier(shapeData)\n if (this._isAnimated) {\n data.setAsAnimated()\n }\n }\n }\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = []\n this.elem = elem\n this.initDynamicPropertyContainer(elem)\n this.initModifierProperties(elem, data)\n this.frameId = initialDefaultFrame\n this.closed = false\n this.k = false\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.getValue(true)\n }\n }\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n }\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier)\n\n function TrimModifier() {}\n extendPrototype([ShapeModifier], TrimModifier)\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this)\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this)\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this)\n this.sValue = 0\n this.eValue = 0\n this.getValue = this.processKeys\n this.m = data.m\n this._isAnimated =\n !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length\n }\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = []\n }\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = []\n if (e <= 1) {\n segments.push({\n s: s,\n e: e,\n })\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1,\n })\n } else {\n segments.push({\n s: s,\n e: 1,\n })\n segments.push({\n s: 0,\n e: e - 1,\n })\n }\n var shapeSegments = []\n var i\n var len = segments.length\n var segmentOb\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i]\n if (\n !(\n segmentOb.e * totalModifierLength < addedLength ||\n segmentOb.s * totalModifierLength > addedLength + shapeLength\n )\n ) {\n var shapeS\n var shapeE\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength\n }\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength\n }\n shapeSegments.push([shapeS, shapeE])\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0])\n }\n return shapeSegments\n }\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i\n var len = pathsData.length\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i])\n }\n pathsData.length = 0\n return pathsData\n }\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s\n var e\n if (this._mdf || _isFirstFrame) {\n var o = (this.o.v % 360) / 360\n if (o < 0) {\n o += 1\n }\n if (this.s.v > 1) {\n s = 1 + o\n } else if (this.s.v < 0) {\n s = 0 + o\n } else {\n s = this.s.v + o\n }\n if (this.e.v > 1) {\n e = 1 + o\n } else if (this.e.v < 0) {\n e = 0 + o\n } else {\n e = this.e.v + o\n }\n\n if (s > e) {\n var _s = s\n s = e\n e = _s\n }\n s = Math.round(s * 10000) * 0.0001\n e = Math.round(e * 10000) * 0.0001\n this.sValue = s\n this.eValue = e\n } else {\n s = this.sValue\n e = this.eValue\n }\n var shapePaths\n var i\n var len = this.shapes.length\n var j\n var jLen\n var pathsData\n var pathData\n var totalShapeLength\n var totalModifierLength = 0\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes()\n this.shapes[i].shape._mdf = true\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0\n }\n }\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\n var segments = []\n var shapeData\n var localShapeCollection\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection\n } else {\n shapePaths = shapeData.shape.paths\n jLen = shapePaths._length\n totalShapeLength = 0\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData)\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j])\n pathsData.push(pathData)\n totalShapeLength += pathData.totalLength\n }\n shapeData.totalShapeLength = totalShapeLength\n shapeData.pathsData = pathsData\n }\n\n totalModifierLength += totalShapeLength\n shapeData.shape._mdf = true\n }\n }\n var shapeS = s\n var shapeE = e\n var addedLength = 0\n var edges\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i]\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection\n localShapeCollection.releaseShapes()\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength)\n addedLength += shapeData.totalShapeLength\n } else {\n edges = [[shapeS, shapeE]]\n }\n jLen = edges.length\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0]\n shapeE = edges[j][1]\n segments.length = 0\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE,\n })\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1),\n })\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength,\n })\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1),\n })\n }\n var newShapesData = this.addShapes(shapeData, segments[0])\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1]\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop()\n this.addPaths(newShapesData, localShapeCollection)\n newShapesData = this.addShapes(shapeData, segments[1], lastShape)\n } else {\n this.addPaths(newShapesData, localShapeCollection)\n newShapesData = this.addShapes(shapeData, segments[1])\n }\n }\n this.addPaths(newShapesData, localShapeCollection)\n }\n }\n shapeData.shape.paths = localShapeCollection\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0\n this.shapes[i].shape._mdf = true\n }\n }\n }\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i\n var len = newPaths.length\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i])\n }\n }\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos)\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1)\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos)\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1)\n }\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos)\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1)\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos)\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1)\n }\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData\n var shapePaths = shapeData.shape.paths.shapes\n var i\n var len = shapeData.shape.paths._length\n var j\n var jLen\n var addedLength = 0\n var currentLengthData\n var segmentCount\n var lengths\n var segment\n var shapes = []\n var initPos\n var newShape = true\n if (!shapePath) {\n shapePath = shapePool.newElement()\n segmentCount = 0\n initPos = 0\n } else {\n segmentCount = shapePath._length\n initPos = shapePath._length\n }\n shapes.push(shapePath)\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths\n shapePath.c = shapePaths[i].c\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1]\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength\n shapePath.c = false\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false\n break\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[j],\n shapePaths[i].v[j],\n shapePath,\n segmentCount,\n newShape,\n )\n newShape = false\n } else {\n segment = bez.getNewSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].v[j],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[j],\n (shapeSegment.s - addedLength) / currentLengthData.addedLength,\n (shapeSegment.e - addedLength) / currentLengthData.addedLength,\n lengths[j - 1],\n )\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape)\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false\n shapePath.c = false\n }\n addedLength += currentLengthData.addedLength\n segmentCount += 1\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1]\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[0],\n shapePaths[i].v[0],\n shapePath,\n segmentCount,\n newShape,\n )\n newShape = false\n } else {\n segment = bez.getNewSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].v[0],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[0],\n (shapeSegment.s - addedLength) / segmentLength,\n (shapeSegment.e - addedLength) / segmentLength,\n lengths[j - 1],\n )\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape)\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false\n shapePath.c = false\n }\n } else {\n shapePath.c = false\n }\n addedLength += currentLengthData.addedLength\n segmentCount += 1\n }\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos)\n shapePath.setXYAt(\n shapePath.v[shapePath._length - 1][0],\n shapePath.v[shapePath._length - 1][1],\n 'o',\n shapePath._length - 1,\n )\n }\n if (addedLength > shapeSegment.e) {\n break\n }\n if (i < len - 1) {\n shapePath = shapePool.newElement()\n newShape = true\n shapes.push(shapePath)\n segmentCount = 0\n }\n }\n return shapes\n }\n\n function PuckerAndBloatModifier() {}\n extendPrototype([ShapeModifier], PuckerAndBloatModifier)\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this)\n this._isAnimated = !!this.amount.effectsSequence.length\n }\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100\n var centerPoint = [0, 0]\n var pathLength = path._length\n var i = 0\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0]\n centerPoint[1] += path.v[i][1]\n }\n centerPoint[0] /= pathLength\n centerPoint[1] /= pathLength\n var clonedPath = shapePool.newElement()\n clonedPath.c = path.c\n var vX\n var vY\n var oX\n var oY\n var iX\n var iY\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i)\n }\n return clonedPath\n }\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths\n var i\n var len = this.shapes.length\n var j\n var jLen\n var amount = this.amount.v\n\n if (amount !== 0) {\n var shapeData\n var localShapeCollection\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]\n localShapeCollection = shapeData.localShapeCollection\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes()\n shapeData.shape._mdf = true\n shapePaths = shapeData.shape.paths.shapes\n jLen = shapeData.shape.paths._length\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount))\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false\n }\n }\n\n const TransformPropertyFactory = (function () {\n var defaultVector = [0, 0]\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf\n this.iterateDynamicProperties()\n this._mdf = this._mdf || _mdf\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2])\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2])\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v)\n }\n if (this.r) {\n mat.rotate(-this.r.v)\n } else {\n mat\n .rotateZ(-this.rz.v)\n .rotateY(this.ry.v)\n .rotateX(this.rx.v)\n .rotateZ(-this.or.v[2])\n .rotateY(this.or.v[1])\n .rotateX(this.or.v[0])\n }\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v)\n } else {\n mat.translate(this.px.v, this.py.v, 0)\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2])\n }\n }\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n if (this._isDirty) {\n this.precalculateMatrix()\n this._isDirty = false\n }\n\n this.iterateDynamicProperties()\n\n if (this._mdf || forceRender) {\n var frameRate\n this.v.cloneFromProps(this.pre.props)\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2])\n }\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2])\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v)\n }\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v)\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v\n .rotateZ(-this.rz.v)\n .rotateY(this.ry.v)\n .rotateX(this.rx.v)\n .rotateZ(-this.or.v[2])\n .rotateY(this.or.v[1])\n .rotateX(this.or.v[0])\n }\n if (this.autoOriented) {\n var v1\n var v2\n frameRate = this.elem.globalData.frameRate\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0)\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0)\n } else if (\n this.p._caching.lastFrame + this.p.offsetTime >=\n this.p.keyframes[this.p.keyframes.length - 1].t\n ) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0)\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0)\n } else {\n v1 = this.p.pv\n v2 = this.p.getValueAtTime(\n (this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate,\n this.p.offsetTime,\n )\n }\n } else if (\n this.px &&\n this.px.keyframes &&\n this.py.keyframes &&\n this.px.getValueAtTime &&\n this.py.getValueAtTime\n ) {\n v1 = []\n v2 = []\n var px = this.px\n var py = this.py\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0)\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0)\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0)\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0)\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0)\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0)\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0)\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0)\n } else {\n v1 = [px.pv, py.pv]\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime)\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime)\n }\n } else {\n v2 = defaultVector\n v1 = v2\n }\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]))\n }\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v)\n } else {\n this.v.translate(this.px.v, this.py.v, 0)\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2])\n }\n }\n this.frameId = this.elem.globalData.frameId\n }\n\n function precalculateMatrix() {\n if (!this.a.k) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2])\n this.appliedTransformations = 1\n } else {\n return\n }\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2])\n this.appliedTransformations = 2\n } else {\n return\n }\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v)\n this.appliedTransformations = 3\n } else {\n return\n }\n }\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v)\n this.appliedTransformations = 4\n }\n } else if (\n !this.rz.effectsSequence.length &&\n !this.ry.effectsSequence.length &&\n !this.rx.effectsSequence.length &&\n !this.or.effectsSequence.length\n ) {\n this.pre\n .rotateZ(-this.rz.v)\n .rotateY(this.ry.v)\n .rotateX(this.rx.v)\n .rotateZ(-this.or.v[2])\n .rotateY(this.or.v[1])\n .rotateX(this.or.v[0])\n this.appliedTransformations = 4\n }\n }\n\n function autoOrient() {\n //\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop)\n this.elem.addDynamicProperty(prop)\n this._isDirty = true\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem\n this.frameId = -1\n this.propType = 'transform'\n this.data = data\n this.v = new Matrix()\n // Precalculated matrix with non animated properties\n this.pre = new Matrix()\n this.appliedTransformations = 0\n this.initDynamicPropertyContainer(container || elem)\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this)\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this)\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this)\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this)\n }\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this)\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this)\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this)\n if (data.or.k[0].ti) {\n var i\n var len = data.or.k.length\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null\n data.or.k[i].ti = null\n }\n }\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this)\n // sh Indicates it needs to be capped between -180 and 180\n this.or.sh = true\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this)\n }\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this)\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this)\n }\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this)\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this)\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.\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem)\n } else {\n this.o = { _mdf: false, v: 1 }\n }\n this._isDirty = true\n if (!this.dynamicProperties.length) {\n this.getValue(true)\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient,\n }\n\n extendPrototype([DynamicPropertyContainer], TransformProperty)\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container)\n }\n\n return {\n getTransformProperty: getTransformProperty,\n }\n })()\n\n function RepeaterModifier() {}\n extendPrototype([ShapeModifier], RepeaterModifier)\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this)\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this)\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this)\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this)\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this)\n this.data = data\n if (!this.dynamicProperties.length) {\n this.getValue(true)\n }\n this._isAnimated = !!this.dynamicProperties.length\n this.pMatrix = new Matrix()\n this.rMatrix = new Matrix()\n this.sMatrix = new Matrix()\n this.tMatrix = new Matrix()\n this.matrix = new Matrix()\n }\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc)\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc)\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2])\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2])\n rMatrix.rotate(-transform.r.v * dir * perc)\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2])\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2])\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY)\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2])\n }\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem\n this.arr = arr\n this.pos = pos\n this.elemsData = elemsData\n this._currentCopies = 0\n this._elements = []\n this._groups = []\n this.frameId = -1\n this.initDynamicPropertyContainer(elem)\n this.initModifierProperties(elem, arr[pos])\n while (pos > 0) {\n pos -= 1\n // this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos])\n }\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.getValue(true)\n }\n }\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i\n var len = elements.length\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it)\n }\n }\n }\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements))\n this.resetElements(newElements)\n return newElements\n }\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i\n var len = elements.length\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag)\n }\n }\n }\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items\n var itemsTransform\n var i\n var dir\n var cont\n var hasReloaded = false\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v)\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr',\n }\n group.it.push({\n a: { a: 0, ix: 1, k: [0, 0] },\n nm: 'Transform',\n o: { a: 0, ix: 7, k: 100 },\n p: { a: 0, ix: 2, k: [0, 0] },\n r: {\n a: 1,\n ix: 6,\n k: [\n { s: 0, e: 0, t: 0 },\n { s: 0, e: 0, t: 1 },\n ],\n },\n s: { a: 0, ix: 3, k: [100, 100] },\n sa: { a: 0, ix: 5, k: 0 },\n sk: { a: 0, ix: 4, k: 0 },\n ty: 'tr',\n })\n\n this.arr.splice(0, 0, group)\n this._groups.splice(0, 0, group)\n this._currentCopies += 1\n }\n this.elem.reloadShapes()\n hasReloaded = true\n }\n cont = 0\n var renderFlag\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies\n this._groups[i]._render = renderFlag\n this.changeGroupRender(this._groups[i].it, renderFlag)\n if (!renderFlag) {\n var elems = this.elemsData[i].it\n var transformData = elems[elems.length - 1]\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true\n transformData.transform.op.v = 0\n } else {\n transformData.transform.op._mdf = false\n }\n }\n cont += 1\n }\n\n this._currentCopies = copies\n /// /\n\n var offset = this.o.v\n var offsetModulo = offset % 1\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset)\n var pProps = this.pMatrix.props\n var rProps = this.rMatrix.props\n var sProps = this.sMatrix.props\n this.pMatrix.reset()\n this.rMatrix.reset()\n this.sMatrix.reset()\n this.tMatrix.reset()\n this.matrix.reset()\n var iteration = 0\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false)\n iteration += 1\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false)\n iteration += offsetModulo\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true)\n iteration -= 1\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true)\n iteration -= offsetModulo\n }\n }\n i = this.data.m === 1 ? 0 : this._currentCopies - 1\n dir = this.data.m === 1 ? 1 : -1\n cont = this._currentCopies\n var j\n var jLen\n while (cont) {\n items = this.elemsData[i].it\n itemsTransform = items[items.length - 1].transform.mProps.v.props\n jLen = itemsTransform.length\n items[items.length - 1].transform.mProps._mdf = true\n items[items.length - 1].transform.op._mdf = true\n items[items.length - 1].transform.op.v =\n this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1))\n\n if (iteration !== 0) {\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false)\n }\n this.matrix.transform(\n rProps[0],\n rProps[1],\n rProps[2],\n rProps[3],\n rProps[4],\n rProps[5],\n rProps[6],\n rProps[7],\n rProps[8],\n rProps[9],\n rProps[10],\n rProps[11],\n rProps[12],\n rProps[13],\n rProps[14],\n rProps[15],\n )\n this.matrix.transform(\n sProps[0],\n sProps[1],\n sProps[2],\n sProps[3],\n sProps[4],\n sProps[5],\n sProps[6],\n sProps[7],\n sProps[8],\n sProps[9],\n sProps[10],\n sProps[11],\n sProps[12],\n sProps[13],\n sProps[14],\n sProps[15],\n )\n this.matrix.transform(\n pProps[0],\n pProps[1],\n pProps[2],\n pProps[3],\n pProps[4],\n pProps[5],\n pProps[6],\n pProps[7],\n pProps[8],\n pProps[9],\n pProps[10],\n pProps[11],\n pProps[12],\n pProps[13],\n pProps[14],\n pProps[15],\n )\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j]\n }\n this.matrix.reset()\n } else {\n this.matrix.reset()\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j]\n }\n }\n iteration += 1\n cont -= 1\n i += dir\n }\n } else {\n cont = this._currentCopies\n i = 0\n dir = 1\n while (cont) {\n items = this.elemsData[i].it\n itemsTransform = items[items.length - 1].transform.mProps.v.props\n items[items.length - 1].transform.mProps._mdf = false\n items[items.length - 1].transform.op._mdf = false\n cont -= 1\n i += dir\n }\n }\n return hasReloaded\n }\n\n RepeaterModifier.prototype.addShape = function () {}\n\n function RoundCornersModifier() {}\n extendPrototype([ShapeModifier], RoundCornersModifier)\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this)\n this._isAnimated = !!this.rd.effectsSequence.length\n }\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement()\n clonedPath.c = path.c\n var i\n var len = path._length\n var currentV\n var currentI\n var currentO\n var closerV\n var distance\n var newPosPerc\n var index = 0\n var vX\n var vY\n var oX\n var oY\n var iX\n var iY\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i]\n currentO = path.o[i]\n currentI = path.i[i]\n if (\n currentV[0] === currentO[0] &&\n currentV[1] === currentO[1] &&\n currentV[0] === currentI[0] &&\n currentV[1] === currentI[1]\n ) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index)\n /* clonedPath.v[index] = currentV;\n clonedPath.o[index] = currentO;\n clonedPath.i[index] = currentI; */\n index += 1\n } else {\n if (i === 0) {\n closerV = path.v[len - 1]\n } else {\n closerV = path.v[i - 1]\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2))\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc\n vX = iX\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc\n vY = iY\n oX = vX - (vX - currentV[0]) * roundCorner\n oY = vY - (vY - currentV[1]) * roundCorner\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index)\n index += 1\n\n if (i === len - 1) {\n closerV = path.v[0]\n } else {\n closerV = path.v[i + 1]\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2))\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc\n vX = oX\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc\n vY = oY\n iX = vX - (vX - currentV[0]) * roundCorner\n iY = vY - (vY - currentV[1]) * roundCorner\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index)\n index += 1\n }\n } else {\n clonedPath.setTripleAt(\n path.v[i][0],\n path.v[i][1],\n path.o[i][0],\n path.o[i][1],\n path.i[i][0],\n path.i[i][1],\n index,\n )\n index += 1\n }\n }\n return clonedPath\n }\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths\n var i\n var len = this.shapes.length\n var j\n var jLen\n var rd = this.rd.v\n\n if (rd !== 0) {\n var shapeData\n var localShapeCollection\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]\n localShapeCollection = shapeData.localShapeCollection\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes()\n shapeData.shape._mdf = true\n shapePaths = shapeData.shape.paths.shapes\n jLen = shapeData.shape.paths._length\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd))\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false\n }\n }\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : []\n\n var fWeight = 'normal'\n var fStyle = 'normal'\n var len = styles.length\n var styleName\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase()\n switch (styleName) {\n case 'italic':\n fStyle = 'italic'\n break\n case 'bold':\n fWeight = '700'\n break\n case 'black':\n fWeight = '900'\n break\n case 'medium':\n fWeight = '500'\n break\n case 'regular':\n case 'normal':\n fWeight = '400'\n break\n case 'light':\n case 'thin':\n fWeight = '200'\n break\n default:\n break\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight,\n }\n }\n\n const FontManager = (function () {\n var maxWaitingTime = 5000\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: [],\n },\n }\n var combinedCharacters = []\n // Hindi characters\n combinedCharacters = combinedCharacters.concat([\n 2304,\n 2305,\n 2306,\n 2307,\n 2362,\n 2363,\n 2364,\n 2364,\n 2366,\n 2367,\n 2368,\n 2369,\n 2370,\n 2371,\n 2372,\n 2373,\n 2374,\n 2375,\n 2376,\n 2377,\n 2378,\n 2379,\n 2380,\n 2381,\n 2382,\n 2383,\n 2387,\n 2388,\n 2389,\n 2390,\n 2391,\n 2402,\n 2403,\n ])\n\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff']\n\n var zeroWidthJoiner = [65039, 8205]\n\n function trimFontOptions(font) {\n var familyArray = font.split(',')\n var i\n var len = familyArray.length\n var enabledFamilies = []\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i])\n }\n }\n return enabledFamilies.join(',')\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span')\n // Node is invisible to screen readers.\n parentNode.setAttribute('aria-hidden', true)\n parentNode.style.fontFamily = family\n var node = createTag('span')\n // Characters that vary significantly among different fonts\n node.innerText = 'giItT1WQy@!-/#'\n // Visible - so we can measure it - but not on the screen\n parentNode.style.position = 'absolute'\n parentNode.style.left = '-10000px'\n parentNode.style.top = '-10000px'\n // Large font size makes even subtle changes obvious\n parentNode.style.fontSize = '300px'\n // Reset any font properties\n parentNode.style.fontVariant = 'normal'\n parentNode.style.fontStyle = 'normal'\n parentNode.style.fontWeight = 'normal'\n parentNode.style.letterSpacing = '0'\n parentNode.appendChild(node)\n document.body.appendChild(parentNode)\n\n // Remember width with no applied web font\n var width = node.offsetWidth\n node.style.fontFamily = trimFontOptions(font) + ', ' + family\n return { node: node, w: width, parent: parentNode }\n }\n\n function checkLoadedFonts() {\n var i\n var len = this.fonts.length\n var node\n var w\n var loadedCount = len\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true\n } else {\n node = this.fonts[i].monoCase.node\n w = this.fonts[i].monoCase.w\n if (node.offsetWidth !== w) {\n loadedCount -= 1\n this.fonts[i].loaded = true\n } else {\n node = this.fonts[i].sansCase.node\n w = this.fonts[i].sansCase.w\n if (node.offsetWidth !== w) {\n loadedCount -= 1\n this.fonts[i].loaded = true\n }\n }\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent)\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent)\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20)\n } else {\n setTimeout(this.setIsLoadedBinded, 10)\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas'\n var helper\n var fontProps = getFontProperties(fontData)\n if (engine === 'svg') {\n var tHelper = createNS('text')\n tHelper.style.fontSize = '100px'\n // tHelper.style.fontFamily = fontData.fFamily;\n tHelper.setAttribute('font-family', fontData.fFamily)\n tHelper.setAttribute('font-style', fontProps.style)\n tHelper.setAttribute('font-weight', fontProps.weight)\n tHelper.textContent = '1'\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit'\n tHelper.setAttribute('class', fontData.fClass)\n } else {\n tHelper.style.fontFamily = fontData.fFamily\n }\n def.appendChild(tHelper)\n helper = tHelper\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d')\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily\n helper = tCanvasHelper\n }\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text\n return helper.getComputedTextLength()\n }\n return helper.measureText(text).width\n }\n return {\n measureText: measure,\n }\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true\n return\n }\n if (this.chars) {\n this.isLoaded = true\n this.fonts = fontData.list\n return\n }\n if (!document.body) {\n this.isLoaded = true\n fontData.list.forEach((data) => {\n data.helper = createHelper(data)\n data.cache = {}\n })\n this.fonts = fontData.list\n return\n }\n\n var fontArr = fontData.list\n var i\n var len = fontArr.length\n var _pendingFonts = len\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true\n var loadedSelector\n var j\n fontArr[i].loaded = false\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace')\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif')\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true\n _pendingFonts -= 1\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll(\n 'style[f-forigin=\"p\"][f-family=\"' +\n fontArr[i].fFamily +\n '\"], style[f-origin=\"3\"][f-family=\"' +\n fontArr[i].fFamily +\n '\"]',\n )\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false\n }\n\n if (shouldLoadFont) {\n var s = createTag('style')\n s.setAttribute('f-forigin', fontArr[i].fOrigin)\n s.setAttribute('f-origin', fontArr[i].origin)\n s.setAttribute('f-family', fontArr[i].fFamily)\n s.type = 'text/css'\n s.innerText =\n '@font-face {font-family: ' +\n fontArr[i].fFamily +\n \"; font-style: normal; src: url('\" +\n fontArr[i].fPath +\n \"');}\"\n defs.appendChild(s)\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]')\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link')\n l.setAttribute('f-forigin', fontArr[i].fOrigin)\n l.setAttribute('f-origin', fontArr[i].origin)\n l.type = 'text/css'\n l.rel = 'stylesheet'\n l.href = fontArr[i].fPath\n document.body.appendChild(l)\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]')\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link')\n sc.setAttribute('f-forigin', fontArr[i].fOrigin)\n sc.setAttribute('f-origin', fontArr[i].origin)\n sc.setAttribute('rel', 'stylesheet')\n sc.setAttribute('href', fontArr[i].fPath)\n defs.appendChild(sc)\n }\n }\n fontArr[i].helper = createHelper(fontArr[i], defs)\n fontArr[i].cache = {}\n this.fonts.push(fontArr[i])\n }\n if (_pendingFonts === 0) {\n this.isLoaded = true\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100)\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return\n }\n if (!this.chars) {\n this.chars = []\n }\n var i\n var len = chars.length\n var j\n var jLen = this.chars.length\n var found\n for (i = 0; i < len; i += 1) {\n j = 0\n found = false\n while (j < jLen) {\n if (\n this.chars[j].style === chars[i].style &&\n this.chars[j].fFamily === chars[i].fFamily &&\n this.chars[j].ch === chars[i].ch\n ) {\n found = true\n }\n j += 1\n }\n if (!found) {\n this.chars.push(chars[i])\n jLen += 1\n }\n }\n }\n\n function getCharData(char, style, font) {\n var i = 0\n var len = this.chars.length\n while (i < len) {\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i]\n }\n i += 1\n }\n if (\n ((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char) &&\n console &&\n console.warn && // eslint-disable-line no-console\n !this._warned\n ) {\n this._warned = true\n console.warn('Missing character from exported characters list: ', char, style, font) // eslint-disable-line no-console\n }\n return emptyChar\n }\n\n function measureText(char, fontName, size) {\n var fontData = this.getFontByName(fontName)\n var index = char.charCodeAt(0)\n if (!fontData.cache[index + 1]) {\n var tHelper = fontData.helper\n if (char === ' ') {\n var doubleSize = tHelper.measureText('|' + char + '|')\n var singleSize = tHelper.measureText('||')\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100\n } else {\n fontData.cache[index + 1] = tHelper.measureText(char) / 100\n }\n }\n return fontData.cache[index + 1] * size\n }\n\n function getFontByName(name) {\n var i = 0\n var len = this.fonts.length\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i]\n }\n i += 1\n }\n return this.fonts[0]\n }\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16)\n return surrogateModifiers.indexOf(sum) !== -1\n }\n\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\n if (!secondCharCode) {\n return firstCharCode === zeroWidthJoiner[1]\n }\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1]\n }\n\n function isCombinedCharacter(char) {\n return combinedCharacters.indexOf(char) !== -1\n }\n\n function setIsLoaded() {\n this.isLoaded = true\n }\n\n var Font = function () {\n this.fonts = []\n this.chars = null\n this.typekitLoaded = 0\n this.isLoaded = false\n this._warned = false\n this.initTime = Date.now()\n this.setIsLoadedBinded = this.setIsLoaded.bind(this)\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this)\n }\n Font.isModifier = isModifier\n Font.isZeroWidthJoiner = isZeroWidthJoiner\n Font.isCombinedCharacter = isCombinedCharacter\n\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded,\n }\n\n Font.prototype = fontPrototype\n\n return Font\n })()\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function () {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false\n // layer's display state\n this.hidden = false\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false\n // list of animated components\n this.renderableComponents = []\n },\n addRenderableComponent: function (component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component)\n }\n },\n removeRenderableComponent: function (component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1)\n }\n },\n prepareRenderableFrame: function (num) {\n this.checkLayerLimits(num)\n },\n checkTransparency: function () {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true\n this.hide()\n }\n } else if (this.isTransparent) {\n this.isTransparent = false\n this.show()\n }\n },\n /**\n * @function\n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n *\n */\n checkLayerLimits: function (num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true\n this._mdf = true\n this.isInRange = true\n this.show()\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true\n this.isInRange = false\n this.hide()\n }\n },\n renderRenderable: function () {\n var i\n var len = this.renderableComponents.length\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame)\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n },\n sourceRectAtTime: function () {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100,\n }\n },\n getLayerSize: function () {\n if (this.data.ty === 5) {\n return { w: this.data.textData.width, h: this.data.textData.height }\n }\n return { w: this.data.width, h: this.data.height }\n },\n }\n\n const MaskManagerInterface = (function () {\n function MaskInterface(mask, data) {\n this._mask = mask\n this._data = data\n }\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function () {\n if (this._mask.prop.k) {\n this._mask.prop.getValue()\n }\n return this._mask.prop\n },\n })\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function () {\n if (this._mask.op.k) {\n this._mask.op.getValue()\n }\n return this._mask.op.v * 100\n },\n })\n\n var MaskManager = function (maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length)\n var i\n var len = maskManager.viewData.length\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i])\n }\n\n var maskFunction = function (name) {\n i = 0\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i]\n }\n i += 1\n }\n return null\n }\n return maskFunction\n }\n return MaskManager\n })()\n\n const ExpressionPropertyInterface = (function () {\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 }\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 }\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function () {\n return property.getVelocityAtTime(property.comp.currentFrame)\n },\n })\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0\n }\n var value = ''\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e\n } else {\n value = property.keyframes[pos - 2].s\n }\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value) // eslint-disable-line no-new-wrappers\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate\n valueProp.value = type === 'unidimensional' ? value[0] : value\n return valueProp\n }\n expressionValue.valueAtTime = property.getValueAtTime\n expressionValue.speedAtTime = property.getSpeedAtTime\n expressionValue.velocityAtTime = property.getVelocityAtTime\n expressionValue.propertyGroup = property.propertyGroup\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue\n }\n var mult = 1 / property.mult\n var val = property.pv * mult\n var expressionValue = new Number(val) // eslint-disable-line no-new-wrappers\n expressionValue.value = val\n completeProperty(expressionValue, property, 'unidimensional')\n\n return function () {\n if (property.k) {\n property.getValue()\n }\n val = property.v * mult\n if (expressionValue.value !== val) {\n expressionValue = new Number(val) // eslint-disable-line no-new-wrappers\n expressionValue.value = val\n completeProperty(expressionValue, property, 'unidimensional')\n }\n return expressionValue\n }\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue\n }\n var mult = 1 / property.mult\n var len = (property.data && property.data.l) || property.pv.length\n var expressionValue = createTypedArray('float32', len)\n var arrValue = createTypedArray('float32', len)\n expressionValue.value = arrValue\n completeProperty(expressionValue, property, 'multidimensional')\n\n return function () {\n if (property.k) {\n property.getValue()\n }\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult\n expressionValue[i] = arrValue[i]\n }\n return expressionValue\n }\n }\n\n // TODO: try to avoid using this getter\n function defaultGetter() {\n return defaultUnidimensionalValue\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter\n }\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property)\n }\n return MultidimensionalPropertyInterface(property)\n }\n })()\n\n const TransformExpressionInterface = (function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation\n case 'ADBE Rotate X':\n return _thisFunction.xRotation\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position\n case 'ADBE Position_0':\n return _thisFunction.xPosition\n case 'ADBE Position_1':\n return _thisFunction.yPosition\n case 'ADBE Position_2':\n return _thisFunction.zPosition\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity\n default:\n return null\n }\n }\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz),\n })\n\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r),\n })\n\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx),\n })\n\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry),\n })\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s),\n })\n var _px\n var _py\n var _pz\n var _transformFactory\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p)\n } else {\n _px = ExpressionPropertyInterface(transform.px)\n _py = ExpressionPropertyInterface(transform.py)\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz)\n }\n }\n Object.defineProperty(_thisFunction, 'position', {\n get: function () {\n if (transform.p) {\n return _transformFactory()\n }\n return [_px(), _py(), _pz ? _pz() : 0]\n },\n })\n\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px),\n })\n\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py),\n })\n\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz),\n })\n\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a),\n })\n\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o),\n })\n\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk),\n })\n\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa),\n })\n\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or),\n })\n\n return _thisFunction\n }\n })()\n\n const LayerExpressionInterface = (function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix()\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time)\n propMatrix.clone(toWorldMat)\n } else {\n var transformMat = this._elem.finalTransform.mProp\n transformMat.applyToMatrix(toWorldMat)\n }\n return toWorldMat\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time)\n toWorldMat.props[12] = 0\n toWorldMat.props[13] = 0\n toWorldMat.props[14] = 0\n return this.applyPoint(toWorldMat, arr)\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time)\n return this.applyPoint(toWorldMat, arr)\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time)\n toWorldMat.props[12] = 0\n toWorldMat.props[13] = 0\n toWorldMat.props[14] = 0\n return this.invertPoint(toWorldMat, arr)\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time)\n return this.invertPoint(toWorldMat, arr)\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i\n var len = this._elem.hierarchy.length\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix)\n }\n }\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0)\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i\n var len = this._elem.hierarchy.length\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix)\n }\n }\n return matrix.inversePoint(arr)\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix()\n toWorldMat.reset()\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat)\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i\n var len = this._elem.hierarchy.length\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat)\n }\n return toWorldMat.inversePoint(arr)\n }\n return toWorldMat.inversePoint(arr)\n }\n\n function sampleImage() {\n return [1, 1, 1, 1]\n }\n\n return function (elem) {\n var transformInterface\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem)\n }\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface\n default:\n return null\n }\n }\n _thisLayerFunction.getMatrix = getMatrix\n _thisLayerFunction.invertPoint = invertPoint\n _thisLayerFunction.applyPoint = applyPoint\n _thisLayerFunction.toWorld = toWorld\n _thisLayerFunction.toWorldVec = toWorldVec\n _thisLayerFunction.fromWorld = fromWorld\n _thisLayerFunction.fromWorldVec = fromWorldVec\n _thisLayerFunction.toComp = toWorld\n _thisLayerFunction.fromComp = fromComp\n _thisLayerFunction.sampleImage = sampleImage\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem)\n _thisLayerFunction._elem = elem\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp)\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint')\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function () {\n return elem.hierarchy.length\n },\n },\n parent: {\n get: function () {\n return elem.hierarchy[0].layerInterface\n },\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function () {\n return transformInterface\n },\n },\n active: {\n get: function () {\n return elem.isInRange\n },\n },\n })\n\n _thisLayerFunction.startTime = elem.data.st\n _thisLayerFunction.index = elem.data.ind\n _thisLayerFunction.source = elem.data.refId\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate\n _thisLayerFunction._name = elem.data.nm\n\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface\n return _thisLayerFunction\n }\n })()\n\n const propertyGroupFactory = (function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val\n if (val <= 0) {\n return interfaceFunction\n }\n return parentPropertyGroup(val - 1)\n }\n }\n })()\n\n const PropertyInterface = (function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName,\n }\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val\n if (val <= 0) {\n return interfaceFunction\n }\n return propertyGroup(val - 1)\n }\n\n return _propertyGroup\n }\n })()\n\n const EffectsExpressionInterface = (function () {\n var ob = {\n createEffectsInterface: createEffectsInterface,\n }\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = []\n var effectsData = elem.data.ef\n var i\n var len = elem.effectsManager.effectElements.length\n for (i = 0; i < len; i += 1) {\n effectElements.push(\n createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem),\n )\n }\n\n var effects = elem.data.ef || []\n var groupInterface = function (name) {\n i = 0\n len = effects.length\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i]\n }\n i += 1\n }\n return null\n }\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function () {\n return effects.length\n },\n })\n return groupInterface\n }\n return null\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef\n var i = 0\n var len = effects.length\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i]\n }\n return effectElements[i]()\n }\n i += 1\n }\n throw new Error()\n }\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup)\n\n var effectElements = []\n var i\n var len = data.ef.length\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(\n createGroupInterface(\n data.ef[i],\n elements.effectElements[i],\n elements.effectElements[i].propertyGroup,\n elem,\n ),\n )\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup))\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function () {\n return effectElements[0]()\n },\n })\n }\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function () {\n return data.np\n },\n },\n _name: { value: data.nm },\n propertyGroup: { value: _propertyGroup },\n })\n groupInterface.enabled = data.en !== 0\n groupInterface.active = groupInterface.enabled\n return groupInterface\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p)\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v)\n }\n return expressionProperty()\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup))\n }\n\n return interfaceFunction\n }\n\n return ob\n })()\n\n const CompExpressionInterface = (function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0\n var len = comp.layers.length\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface\n }\n i += 1\n }\n return null\n // return {active:false};\n }\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm })\n _thisLayerFunction.layer = _thisLayerFunction\n _thisLayerFunction.pixelAspect = 1\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w\n _thisLayerFunction.pixelAspect = 1\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate\n _thisLayerFunction.displayStartTime = 0\n _thisLayerFunction.numLayers = comp.layers.length\n return _thisLayerFunction\n }\n })()\n\n const ShapePathInterface = (function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh\n\n function interfaceFunction(val) {\n if (\n val === 'Shape' ||\n val === 'shape' ||\n val === 'Path' ||\n val === 'path' ||\n val === 'ADBE Vector Shape' ||\n val === 2\n ) {\n return interfaceFunction.path\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup))\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function () {\n if (prop.k) {\n prop.getValue()\n }\n return prop\n },\n },\n shape: {\n get: function () {\n if (prop.k) {\n prop.getValue()\n }\n return prop\n },\n },\n _name: { value: shape.nm },\n ix: { value: shape.ix },\n propertyIndex: { value: shape.ix },\n mn: { value: shape.mn },\n propertyGroup: { value: propertyGroup },\n })\n return interfaceFunction\n }\n })()\n\n const ShapeExpressionInterface = (function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = []\n var i\n var len = shapes ? shapes.length : 0\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'tr') {\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup))\n }\n }\n return arr\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0\n var len = interfaces.length\n while (i < len) {\n if (\n interfaces[i]._name === value ||\n interfaces[i].mn === value ||\n interfaces[i].propertyIndex === value ||\n interfaces[i].ix === value ||\n interfaces[i].ind === value\n ) {\n return interfaces[i]\n }\n i += 1\n }\n if (typeof value === 'number') {\n return interfaces[value - 1]\n }\n return null\n }\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup)\n interfaceFunction.numProperties = interfaces.length\n var transformInterface = transformInterfaceFactory(\n shape.it[shape.it.length - 1],\n view.it[view.it.length - 1],\n interfaceFunction.propertyGroup,\n )\n interfaceFunction.transform = transformInterface\n interfaceFunction.propertyIndex = shape.cix\n interfaceFunction._name = shape.nm\n\n return interfaceFunction\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n default:\n return interfaceFunction.transform\n }\n }\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup)\n var transformInterface = transformInterfaceFactory(\n shape.it[shape.it.length - 1],\n view.it[view.it.length - 1],\n interfaceFunction.propertyGroup,\n )\n interfaceFunction.content = content\n interfaceFunction.transform = transformInterface\n Object.defineProperty(interfaceFunction, '_name', {\n get: function () {\n return shape.nm\n },\n })\n // interfaceFunction.content = interfaceFunction;\n interfaceFunction.numProperties = shape.np\n interfaceFunction.propertyIndex = shape.ix\n interfaceFunction.nm = shape.nm\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity\n }\n return null\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c),\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o),\n },\n _name: { value: shape.nm },\n mn: { value: shape.mn },\n })\n\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup))\n return interfaceFunction\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint\n }\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity\n }\n return null\n }\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s),\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e),\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o),\n },\n type: {\n get: function () {\n return 'a'\n },\n },\n _name: { value: shape.nm },\n mn: { value: shape.mn },\n })\n\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup))\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup))\n return interfaceFunction\n }\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null\n }\n return interfaceFunction\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup)\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\n })\n }\n var i\n var len = shape.d ? shape.d.length : 0\n var dashOb = {}\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i)\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup)\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity\n }\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth\n }\n return null\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c),\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o),\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w),\n },\n dash: {\n get: function () {\n return dashOb\n },\n },\n _name: { value: shape.nm },\n mn: { value: shape.mn },\n })\n\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup))\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup))\n return interfaceFunction\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end\n }\n if (val === shape.s.ix) {\n return interfaceFunction.start\n }\n if (val === shape.o.ix) {\n return interfaceFunction.offset\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n interfaceFunction.propertyIndex = shape.ix\n\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup))\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup))\n interfaceFunction.propertyIndex = shape.ix\n interfaceFunction.propertyGroup = propertyGroup\n\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s),\n },\n end: {\n get: ExpressionPropertyInterface(view.e),\n },\n offset: {\n get: ExpressionPropertyInterface(view.o),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint\n }\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity\n }\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position\n }\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation\n }\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale\n }\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\n return interfaceFunction.skew\n }\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\n return interfaceFunction.skewAxis\n }\n return null\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup))\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup))\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup))\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup))\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup))\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup))\n }\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup))\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o),\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p),\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a),\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s),\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r),\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.ty = 'tr'\n interfaceFunction.mn = shape.mn\n interfaceFunction.propertyGroup = propertyGroup\n return interfaceFunction\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position\n }\n if (shape.s.ix === value) {\n return interfaceFunction.size\n }\n return null\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n interfaceFunction.propertyIndex = shape.ix\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup))\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s),\n },\n position: {\n get: ExpressionPropertyInterface(prop.p),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position\n }\n if (shape.r.ix === value) {\n return interfaceFunction.rotation\n }\n if (shape.pt.ix === value) {\n return interfaceFunction.points\n }\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius\n }\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness\n }\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius\n }\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh\n interfaceFunction.propertyIndex = shape.ix\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup))\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup))\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup))\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup))\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup))\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup))\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p),\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r),\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt),\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or),\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os),\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir),\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position\n }\n if (shape.r.ix === value) {\n return interfaceFunction.roundness\n }\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size\n }\n return null\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh\n interfaceFunction.propertyIndex = shape.ix\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup))\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup))\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p),\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r),\n },\n size: {\n get: ExpressionPropertyInterface(prop.s),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var prop = view\n interfaceFunction.propertyIndex = shape.ix\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup))\n\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies\n }\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var prop = view\n interfaceFunction.propertyIndex = shape.ix\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup))\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup))\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c),\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value\n if (value === 0) {\n return propertyGroup\n }\n return interfaces[value - 1]\n }\n var i = 0\n var len = interfaces.length\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i]\n }\n i += 1\n }\n return null\n }\n function parentGroupWrapper() {\n return propertyGroup\n }\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper)\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup)\n _interfaceFunction.numProperties = interfaces.length\n _interfaceFunction._name = 'Contents'\n return _interfaceFunction\n }\n })()\n\n const TextExpressionInterface = (function () {\n return function (elem) {\n var _prevValue\n var _sourceText\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText\n default:\n return null\n }\n }\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function () {\n elem.textProperty.getValue()\n var stringValue = elem.textProperty.currentData.t\n if (stringValue !== _prevValue) {\n elem.textProperty.currentData.t = _prevValue\n _sourceText = new String(stringValue) // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n _sourceText.value = stringValue || new String(stringValue) // eslint-disable-line no-new-wrappers\n }\n return _sourceText\n },\n })\n return _thisLayerFunction\n }\n })()\n\n const getBlendMode = (function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity',\n }\n\n return function (mode) {\n return blendModeEnums[mode] || ''\n }\n })()\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container)\n }\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container)\n }\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function NoValueEffect() {\n this.p = {}\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || []\n this.effectElements = []\n var i\n var len = effects.length\n var effectItem\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element)\n this.effectElements.push(effectItem)\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element)\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect)\n\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data\n this.effectElements = []\n this.initDynamicPropertyContainer(element)\n var i\n var len = this.data.ef.length\n var eff\n var effects = this.data.ef\n for (i = 0; i < len; i += 1) {\n eff = null\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this)\n break\n case 1:\n eff = new AngleEffect(effects[i], element, this)\n break\n case 2:\n eff = new ColorEffect(effects[i], element, this)\n break\n case 3:\n eff = new PointEffect(effects[i], element, this)\n break\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this)\n break\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this)\n break\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this)\n break\n case 5:\n eff = new EffectsManager(effects[i], element, this)\n break\n // case 6:\n default:\n eff = new NoValueEffect(effects[i], element, this)\n break\n }\n if (eff) {\n this.effectElements.push(eff)\n }\n }\n }\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function () {\n if (!this.data.hasMask) {\n return false\n }\n var i = 0\n var len = this.data.masksProperties.length\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true\n }\n i += 1\n }\n return false\n },\n initExpressions: function () {\n this.layerInterface = LayerExpressionInterface(this)\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager)\n }\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface)\n this.layerInterface.registerEffectsInterface(effectsInterface)\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this)\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(\n this.shapesData,\n this.itemsData,\n this.layerInterface,\n )\n this.layerInterface.content = this.layerInterface.shapeInterface\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this)\n this.layerInterface.text = this.layerInterface.textInterface\n }\n },\n setBlendMode: function () {\n var blendModeValue = getBlendMode(this.data.bm)\n var elem = this.baseElement || this.layerElement\n\n elem.style['mix-blend-mode'] = blendModeValue\n },\n initBaseData: function (data, globalData, comp) {\n this.globalData = globalData\n this.comp = comp\n this.data = data\n this.layerId = createElementID()\n\n // Stretch factor for old animations missing this property.\n if (!this.data.sr) {\n this.data.sr = 1\n }\n // effects manager\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties)\n },\n getType: function () {\n return this.type\n },\n sourceRectAtTime: function () {},\n }\n\n /**\n * @file\n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\n * @function\n * Initializes frame related properties.\n *\n */\n initFrame: function () {\n // set to true when inpoint is rendered\n this._isFirstFrame = false\n // list of animated properties\n this.dynamicProperties = []\n // If layer has been modified in current tick this will be true\n this._mdf = false\n },\n /**\n * @function\n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n *\n */\n prepareProperties: function (num, isVisible) {\n var i\n var len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\n this.dynamicProperties[i].getValue()\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true\n this._mdf = true\n }\n }\n }\n },\n addDynamicProperty: function (prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop)\n }\n },\n }\n\n const FootageInterface = (function () {\n var outlineInterfaceFactory = function (elem) {\n var currentPropertyName = ''\n var currentProperty = elem.getFootageData()\n function init() {\n currentPropertyName = ''\n currentProperty = elem.getFootageData()\n return searchProperty\n }\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value\n currentProperty = currentProperty[value]\n if (typeof currentProperty === 'object') {\n return searchProperty\n }\n return currentProperty\n }\n var propertyNameIndex = value.indexOf(currentPropertyName)\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10)\n currentProperty = currentProperty[index]\n if (typeof currentProperty === 'object') {\n return searchProperty\n }\n return currentProperty\n }\n return ''\n }\n return init\n }\n\n var dataInterfaceFactory = function (elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface()\n }\n return null\n }\n\n interfaceFunction._name = 'Outline'\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem)\n return interfaceFunction\n }\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface\n }\n return null\n }\n\n _interfaceFunction._name = 'Data'\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem)\n return _interfaceFunction\n }\n })()\n\n function FootageElement(data, globalData, comp) {\n this.initFrame()\n this.initRenderable()\n this.assetData = globalData.getAssetData(data.refId)\n this.footageData = globalData.imageLoader.getAsset(this.assetData)\n this.initBaseData(data, globalData, comp)\n }\n\n FootageElement.prototype.prepareFrame = function () {}\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement)\n\n FootageElement.prototype.getBaseElement = function () {\n return null\n }\n\n FootageElement.prototype.renderFrame = function () {}\n\n FootageElement.prototype.destroy = function () {}\n\n FootageElement.prototype.initExpressions = function () {\n this.layerInterface = FootageInterface(this)\n }\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData\n }\n\n function AudioElement(data, globalData, comp) {\n this.initFrame()\n this.initRenderable()\n this.assetData = globalData.getAssetData(data.refId)\n this.initBaseData(data, globalData, comp)\n this._isPlaying = false\n this._canPlay = false\n var assetPath = this.globalData.getAssetsPath(this.assetData)\n this.audio = this.globalData.audioController.createAudio(assetPath)\n this._currentTime = 0\n this.globalData.audioController.addAudio(this)\n this._volumeMultiplier = 1\n this._volume = 1\n this._previousVolume = null\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, 0.01, this)\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true)\n this.prepareProperties(num, true)\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v\n this._currentTime = timeRemapped\n } else {\n this._currentTime = num / this.data.sr\n }\n this._volume = this.lv.v[0]\n var totalVolume = this._volume * this._volumeMultiplier\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume\n this.audio.volume(totalVolume)\n }\n }\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement)\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play()\n this.audio.seek(this._currentTime / this.globalData.frameRate)\n this._isPlaying = true\n } else if (\n !this.audio.playing() ||\n Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\n ) {\n this.audio.seek(this._currentTime / this.globalData.frameRate)\n }\n }\n }\n\n AudioElement.prototype.show = function () {\n // this.audio.play()\n }\n\n AudioElement.prototype.hide = function () {\n this.audio.pause()\n this._isPlaying = false\n }\n\n AudioElement.prototype.pause = function () {\n this.audio.pause()\n this._isPlaying = false\n this._canPlay = false\n }\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true\n }\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue)\n }\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue\n this._previousVolume = volumeValue * this._volume\n this.audio.volume(this._previousVolume)\n }\n\n AudioElement.prototype.getBaseElement = function () {\n return null\n }\n\n AudioElement.prototype.destroy = function () {}\n\n AudioElement.prototype.sourceRectAtTime = function () {}\n\n AudioElement.prototype.initExpressions = function () {}\n\n function BaseRenderer() {}\n BaseRenderer.prototype.checkLayers = function (num) {\n var i\n var len = this.layers.length\n var data\n this.completeLayers = true\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i]\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i)\n }\n }\n this.completeLayers = this.elements[i] ? this.completeLayers : false\n }\n this.checkPendingElements()\n }\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer)\n case 0:\n return this.createComp(layer)\n case 1:\n return this.createSolid(layer)\n case 3:\n return this.createNull(layer)\n case 4:\n return this.createShape(layer)\n case 5:\n return this.createText(layer)\n case 6:\n return this.createAudio(layer)\n case 13:\n return this.createCamera(layer)\n case 15:\n return this.createFootage(layer)\n default:\n return this.createNull(layer)\n }\n }\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error(\"You're using a 3d camera. Try the html renderer.\")\n }\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this)\n }\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this)\n }\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i\n var len = this.layers.length\n for (i = 0; i < len; i += 1) {\n this.buildItem(i)\n }\n this.checkPendingElements()\n }\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false\n var i\n var len = newLayers.length\n var j\n var jLen = this.layers.length\n for (i = 0; i < len; i += 1) {\n j = 0\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i]\n break\n }\n j += 1\n }\n }\n }\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface\n }\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems()\n }\n }\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements\n var layers = this.layers\n var i = 0\n var len = layers.length\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i)\n this.addPendingElement(element)\n } else {\n hierarchy.push(elements[i])\n elements[i].setAsParent()\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy)\n } else {\n element.setHierarchy(hierarchy)\n }\n }\n }\n i += 1\n }\n }\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element)\n }\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i\n var len = assets.length\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i])\n comp.initExpressions()\n this.globalData.projectInterface.registerComposition(comp)\n }\n }\n }\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift()\n var element\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue]\n } else {\n var i\n var len = this.elements.length\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i]\n break\n }\n }\n }\n if (path.length === 0) {\n return element\n }\n return element.getElementByPath(path)\n }\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager()\n this.globalData.fontManager.addChars(animData.chars)\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer)\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem)\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem)\n this.globalData.imageLoader = this.animationItem.imagePreloader\n this.globalData.audioController = this.animationItem.audioController\n this.globalData.frameId = 0\n this.globalData.frameRate = animData.fr\n this.globalData.nm = animData.nm\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h,\n }\n }\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function () {\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\n _matMdf: false,\n _opMdf: false,\n mat: new Matrix(),\n }\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true\n }\n\n // TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n // this.createElements();\n }\n },\n renderTransform: function () {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame\n\n if (this.hierarchy) {\n var mat\n var finalMat = this.finalTransform.mat\n var i = 0\n var len = this.hierarchy.length\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true\n break\n }\n i += 1\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props\n finalMat.cloneFromProps(mat)\n for (i = 0; i < len; i += 1) {\n mat = this.hierarchy[i].finalTransform.mProp.v.props\n finalMat.transform(\n mat[0],\n mat[1],\n mat[2],\n mat[3],\n mat[4],\n mat[5],\n mat[6],\n mat[7],\n mat[8],\n mat[9],\n mat[10],\n mat[11],\n mat[12],\n mat[13],\n mat[14],\n mat[15],\n )\n }\n }\n }\n },\n globalToLocal: function (pt) {\n var transforms = []\n transforms.push(this.finalTransform)\n var flag = true\n var comp = this.comp\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform)\n }\n comp = comp.comp\n } else {\n flag = false\n }\n }\n var i\n var len = transforms.length\n var ptNew\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0)\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0]\n }\n return pt\n },\n mHelper: new Matrix(),\n }\n\n function MaskElement(data, element, globalData) {\n this.data = data\n this.element = element\n this.globalData = globalData\n this.storedData = []\n this.masksProperties = this.data.masksProperties || []\n this.maskElement = null\n var defs = this.globalData.defs\n var i\n var len = this.masksProperties ? this.masksProperties.length : 0\n this.viewData = createSizedArray(len)\n this.solidPath = ''\n\n var path\n var properties = this.masksProperties\n var count = 0\n var currentMasks = []\n var j\n var jLen\n var layerId = createElementID()\n var rect\n var expansor\n var feMorph\n var x\n var maskType = 'clipPath'\n var maskRef = 'clip-path'\n for (i = 0; i < len; i += 1) {\n if (\n (properties[i].mode !== 'a' && properties[i].mode !== 'n') ||\n properties[i].inv ||\n properties[i].o.k !== 100 ||\n properties[i].o.x\n ) {\n maskType = 'mask'\n maskRef = 'mask'\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect')\n rect.setAttribute('fill', '#ffffff')\n rect.setAttribute('width', this.element.comp.data.w || 0)\n rect.setAttribute('height', this.element.comp.data.h || 0)\n currentMasks.push(rect)\n } else {\n rect = null\n }\n\n path = createNS('path')\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: '',\n }\n defs.appendChild(path)\n } else {\n count += 1\n\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff')\n path.setAttribute('clip-rule', 'nonzero')\n var filterID\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask'\n maskRef = 'mask'\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element)\n filterID = createElementID()\n expansor = createNS('filter')\n expansor.setAttribute('id', filterID)\n feMorph = createNS('feMorphology')\n feMorph.setAttribute('operator', 'erode')\n feMorph.setAttribute('in', 'SourceGraphic')\n feMorph.setAttribute('radius', '0')\n expansor.appendChild(feMorph)\n defs.appendChild(expansor)\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff')\n } else {\n feMorph = null\n x = null\n }\n\n // TODO move this to a factory or to a constructor\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0,\n }\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length\n var g = createNS('g')\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j])\n }\n var mask = createNS('mask')\n mask.setAttribute('mask-type', 'alpha')\n mask.setAttribute('id', layerId + '_' + count)\n mask.appendChild(path)\n defs.appendChild(mask)\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')')\n\n currentMasks.length = 0\n currentMasks.push(g)\n } else {\n currentMasks.push(path)\n }\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath()\n }\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect,\n }\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i])\n }\n }\n }\n\n this.maskElement = createNS(maskType)\n\n len = currentMasks.length\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i])\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId)\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')')\n defs.appendChild(this.maskElement)\n }\n if (this.viewData.length) {\n this.element.addRenderableComponent(this)\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop\n }\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat\n var i\n var len = this.masksProperties.length\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i])\n }\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v)\n }\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS())\n }\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode'\n this.storedData[i].elem.setAttribute(\n 'filter',\n 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')',\n )\n }\n feMorph.setAttribute('radius', -this.storedData[i].x.v)\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate'\n this.storedData[i].elem.setAttribute('filter', null)\n }\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2)\n }\n }\n }\n }\n }\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement\n }\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 '\n path += ' h' + this.globalData.compSize.w\n path += ' v' + this.globalData.compSize.h\n path += ' h-' + this.globalData.compSize.w\n path += ' v-' + this.globalData.compSize.h + ' '\n return path\n }\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1]\n var i\n var len\n len = pathNodes._length\n for (i = 1; i < len; i += 1) {\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];\n pathString +=\n ' C' +\n pathNodes.o[i - 1][0] +\n ',' +\n pathNodes.o[i - 1][1] +\n ' ' +\n pathNodes.i[i][0] +\n ',' +\n pathNodes.i[i][1] +\n ' ' +\n pathNodes.v[i][0] +\n ',' +\n pathNodes.v[i][1]\n }\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];\n if (pathNodes.c && len > 1) {\n pathString +=\n ' C' +\n pathNodes.o[i - 1][0] +\n ',' +\n pathNodes.o[i - 1][1] +\n ' ' +\n pathNodes.i[0][0] +\n ',' +\n pathNodes.i[0][1] +\n ' ' +\n pathNodes.v[0][0] +\n ',' +\n pathNodes.v[0][1]\n }\n // pathNodes.__renderedString = pathString;\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = ''\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString\n }\n viewData.elem.setAttribute('d', pathShapeValue)\n }\n viewData.lastPath = pathString\n }\n }\n\n MaskElement.prototype.destroy = function () {\n this.element = null\n this.globalData = null\n this.maskElement = null\n this.data = null\n this.masksProperties = null\n }\n\n const filtersFactory = (function () {\n var ob = {}\n ob.createFilter = createFilter\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter')\n fil.setAttribute('id', filId)\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox')\n fil.setAttribute('x', '0%')\n fil.setAttribute('y', '0%')\n fil.setAttribute('width', '100%')\n fil.setAttribute('height', '100%')\n }\n return fil\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix')\n feColorMatrix.setAttribute('type', 'matrix')\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB')\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1')\n return feColorMatrix\n }\n\n return ob\n })()\n\n const featureSupport = (function () {\n var ob = {\n maskType: true,\n }\n if (\n /MSIE 10/i.test(navigator.userAgent) ||\n /MSIE 9/i.test(navigator.userAgent) ||\n /rv:11.0/i.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent)\n ) {\n ob.maskType = false\n }\n return ob\n })()\n\n var registeredEffects = {}\n var idPrefix = 'filter_result_'\n\n function SVGEffects(elem) {\n var i\n var source = 'SourceGraphic'\n var len = elem.data.ef ? elem.data.ef.length : 0\n var filId = createElementID()\n var fil = filtersFactory.createFilter(filId, true)\n var count = 0\n this.filters = []\n var filterManager\n for (i = 0; i < len; i += 1) {\n filterManager = null\n var type = elem.data.ef[i].ty\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source)\n source = idPrefix + count\n if (registeredEffects[type].countsAsEffect) {\n count += 1\n }\n }\n if (filterManager) {\n this.filters.push(filterManager)\n }\n }\n if (count) {\n elem.globalData.defs.appendChild(fil)\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')')\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this)\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i\n var len = this.filters.length\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame)\n }\n }\n\n function registerEffect(id, effect, countsAsEffect) {\n registeredEffects[id] = {\n effect,\n countsAsEffect,\n }\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function () {\n this.layerElement = createNS('g')\n },\n createContainerElements: function () {\n this.matteElement = createNS('g')\n this.transformedElement = this.layerElement\n this.maskedElement = this.layerElement\n this._sizeChanged = false\n var layerElementParent = null\n // If this layer acts as a mask for the following layer\n var filId\n var fil\n var gg\n if (this.data.td) {\n if (this.data.td == 3 || this.data.td == 1) {\n // eslint-disable-line eqeqeq\n var masker = createNS('mask')\n masker.setAttribute('id', this.layerId)\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha') // eslint-disable-line eqeqeq\n masker.appendChild(this.layerElement)\n layerElementParent = masker\n this.globalData.defs.appendChild(masker)\n // This is only for IE and Edge when mask if of type alpha\n if (!featureSupport.maskType && this.data.td == 1) {\n // eslint-disable-line eqeqeq\n masker.setAttribute('mask-type', 'luminance')\n filId = createElementID()\n fil = filtersFactory.createFilter(filId)\n this.globalData.defs.appendChild(fil)\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter())\n gg = createNS('g')\n gg.appendChild(this.layerElement)\n layerElementParent = gg\n masker.appendChild(gg)\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')')\n }\n } else if (this.data.td == 2) {\n // eslint-disable-line eqeqeq\n var maskGroup = createNS('mask')\n maskGroup.setAttribute('id', this.layerId)\n maskGroup.setAttribute('mask-type', 'alpha')\n var maskGrouper = createNS('g')\n maskGroup.appendChild(maskGrouper)\n filId = createElementID()\n fil = filtersFactory.createFilter(filId)\n /// /\n\n // This solution doesn't work on Android when meta tag with viewport attribute is set\n /* var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\n fil.appendChild(feColorMatrix); */\n /// /\n var feCTr = createNS('feComponentTransfer')\n feCTr.setAttribute('in', 'SourceGraphic')\n fil.appendChild(feCTr)\n var feFunc = createNS('feFuncA')\n feFunc.setAttribute('type', 'table')\n feFunc.setAttribute('tableValues', '1.0 0.0')\n feCTr.appendChild(feFunc)\n /// /\n this.globalData.defs.appendChild(fil)\n var alphaRect = createNS('rect')\n alphaRect.setAttribute('width', this.comp.data.w)\n alphaRect.setAttribute('height', this.comp.data.h)\n alphaRect.setAttribute('x', '0')\n alphaRect.setAttribute('y', '0')\n alphaRect.setAttribute('fill', '#ffffff')\n alphaRect.setAttribute('opacity', '0')\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')')\n maskGrouper.appendChild(alphaRect)\n maskGrouper.appendChild(this.layerElement)\n layerElementParent = maskGrouper\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance')\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter())\n gg = createNS('g')\n maskGrouper.appendChild(alphaRect)\n gg.appendChild(this.layerElement)\n layerElementParent = gg\n maskGrouper.appendChild(gg)\n }\n this.globalData.defs.appendChild(maskGroup)\n }\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement)\n layerElementParent = this.matteElement\n this.baseElement = this.matteElement\n } else {\n this.baseElement = this.layerElement\n }\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln)\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl)\n }\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath')\n var pt = createNS('path')\n pt.setAttribute(\n 'd',\n 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z',\n )\n var clipId = createElementID()\n cp.setAttribute('id', clipId)\n cp.appendChild(pt)\n this.globalData.defs.appendChild(cp)\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g')\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')')\n cpGroup.appendChild(this.layerElement)\n this.transformedElement = cpGroup\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement)\n } else {\n this.baseElement = this.transformedElement\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')')\n }\n }\n if (this.data.bm !== 0) {\n this.setBlendMode()\n }\n },\n renderElement: function () {\n if (this.finalTransform._matMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS())\n }\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v)\n }\n },\n destroyBaseElement: function () {\n this.layerElement = null\n this.matteElement = null\n this.maskManager.destroy()\n },\n getBaseElement: function () {\n if (this.data.hd) {\n return null\n }\n return this.baseElement\n },\n createRenderableComponents: function () {\n this.maskManager = new MaskElement(this.data, this, this.globalData)\n this.renderableEffectsManager = new SVGEffects(this)\n },\n setMatte: function (id) {\n if (!this.matteElement) {\n return\n }\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')')\n },\n }\n\n /**\n * @file\n * Handles AE's layer parenting property.\n *\n */\n\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\n * @function\n * Initializes hierarchy properties\n *\n */\n initHierarchy: function () {\n // element's parent list\n this.hierarchy = []\n // if element is parent of another layer _isParent will be true\n this._isParent = false\n this.checkParenting()\n },\n /**\n * @function\n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */\n setHierarchy: function (hierarchy) {\n this.hierarchy = hierarchy\n },\n /**\n * @function\n * Sets layer as parent.\n *\n */\n setAsParent: function () {\n this._isParent = true\n },\n /**\n * @function\n * Searches layer's parenting chain\n *\n */\n checkParenting: function () {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, [])\n }\n },\n }\n\n function RenderableDOMElement() {}\n\n ;(function () {\n var _prototype = {\n initElement: function (data, globalData, comp) {\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.initTransform(data, globalData, comp)\n this.initHierarchy()\n this.initRenderable()\n this.initRendererElement()\n this.createContainerElements()\n this.createRenderableComponents()\n this.createContent()\n this.hide()\n },\n hide: function () {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement\n elem.style.display = 'none'\n this.hidden = true\n }\n },\n show: function () {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement\n elem.style.display = 'block'\n }\n this.hidden = false\n this._isFirstFrame = true\n }\n },\n renderFrame: function () {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return\n }\n this.renderTransform()\n this.renderRenderable()\n this.renderElement()\n this.renderInnerContent()\n if (this._isFirstFrame) {\n this._isFirstFrame = false\n }\n },\n renderInnerContent: function () {},\n prepareFrame: function (num) {\n this._mdf = false\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n this.checkTransparency()\n },\n destroy: function () {\n this.innerElem = null\n this.destroyBaseElement()\n },\n }\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement)\n })()\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId)\n this.initElement(data, globalData, comp)\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h,\n }\n }\n\n extendPrototype(\n [BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement],\n IImageElement,\n )\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData)\n\n this.innerElem = createNS('image')\n this.innerElem.setAttribute('width', this.assetData.w + 'px')\n this.innerElem.setAttribute('height', this.assetData.h + 'px')\n this.innerElem.setAttribute(\n 'preserveAspectRatio',\n this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio,\n )\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath)\n\n this.layerElement.appendChild(this.innerElem)\n }\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect\n }\n\n function ProcessedElement(element, position) {\n this.elem = element\n this.pos = position\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function (data) {\n var i\n var len = this.shapeModifiers.length\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data)\n }\n },\n isShapeInAnimatedModifiers: function (data) {\n var i = 0\n var len = this.shapeModifiers.length\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true\n }\n }\n return false\n },\n renderModifiers: function () {\n if (!this.shapeModifiers.length) {\n return\n }\n var i\n var len = this.shapes.length\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset()\n }\n\n len = this.shapeModifiers.length\n var shouldBreakProcess\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame)\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n if (shouldBreakProcess) {\n break\n }\n }\n },\n\n searchProcessedElement: function (elem) {\n var elements = this.processedElements\n var i = 0\n var len = elements.length\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos\n }\n i += 1\n }\n return 0\n },\n addProcessedElement: function (elem, pos) {\n var elements = this.processedElements\n var i = elements.length\n while (i) {\n i -= 1\n if (elements[i].elem === elem) {\n elements[i].pos = pos\n return\n }\n }\n elements.push(new ProcessedElement(elem, pos))\n },\n prepareFrame: function (num) {\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n },\n }\n\n const lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square',\n }\n\n const lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel',\n }\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = []\n this.styles = []\n this.transformers = transformers\n this.lStr = ''\n this.sh = shape\n this.lvl = level\n // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n this._isAnimated = !!shape.k\n // TODO: commenting this for now since all shapes are animated\n var i = 0\n var len = transformers.length\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true\n break\n }\n i += 1\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true\n }\n\n function SVGStyleData(data, level) {\n this.data = data\n this.type = data.ty\n this.d = ''\n this.lvl = level\n this._mdf = false\n this.closed = data.hd === true\n this.pElem = createNS('path')\n this.msElem = null\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = ''\n this._mdf = false\n }\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem\n this.frameId = -1\n this.dataProps = createSizedArray(data.length)\n this.renderer = renderer\n this.k = false\n this.dashStr = ''\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0)\n this.dashoffset = createTypedArray('float32', 1)\n this.initDynamicPropertyContainer(container)\n var i\n var len = data.length || 0\n var prop\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this)\n this.k = prop.k || this.k\n this.dataProps[i] = { n: data[i].n, p: prop }\n }\n if (!this.k) {\n this.getValue(true)\n }\n this._isAnimated = this.k\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n this._mdf = this._mdf || forceRender\n if (this._mdf) {\n var i = 0\n var len = this.dataProps.length\n if (this.renderer === 'svg') {\n this.dashStr = ''\n }\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v\n } else {\n this.dashArray[i] = this.dataProps[i].p.v\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v\n }\n }\n }\n }\n extendPrototype([DynamicPropertyContainer], DashProperty)\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this)\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this)\n this.d = new DashProperty(elem, data.d || {}, 'svg', this)\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this)\n this.style = styleOb\n this._isAnimated = !!this._isAnimated\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData)\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this)\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this)\n this.style = styleOb\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData)\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.style = styleOb\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData)\n\n function GradientProperty(elem, data, container) {\n this.data = data\n this.c = createTypedArray('uint8c', data.p * 4)\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4\n this.o = createTypedArray('float32', cLength)\n this._cmdf = false\n this._omdf = false\n this._collapsable = this.checkCollapsable()\n this._hasOpacity = cLength\n this.initDynamicPropertyContainer(container)\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this)\n this.k = this.prop.k\n this.getValue(true)\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0\n var len = this.o.length / 2\n var diff\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2])\n if (diff > 0.01) {\n return false\n }\n i += 1\n }\n return true\n }\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false\n }\n if (this.data.k.k[0].s) {\n var i = 0\n var len = this.data.k.k.length\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false\n }\n i += 1\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false\n }\n return true\n }\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue()\n this._mdf = false\n this._cmdf = false\n this._omdf = false\n if (this.prop._mdf || forceRender) {\n var i\n var len = this.data.p * 4\n var mult\n var val\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255\n val = Math.round(this.prop.v[i] * mult)\n if (this.c[i] !== val) {\n this.c[i] = val\n this._cmdf = !forceRender\n }\n }\n if (this.o.length) {\n len = this.prop.v.length\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i]\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val\n this._omdf = !forceRender\n }\n }\n }\n this._mdf = !forceRender\n }\n }\n\n extendPrototype([DynamicPropertyContainer], GradientProperty)\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.initGradientData(elem, data, styleOb)\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this)\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this)\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this)\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this)\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this)\n this.g = new GradientProperty(elem, data.g, this)\n this.style = styleOb\n this.stops = []\n this.setGradientData(styleOb.pElem, data)\n this.setGradientOpacity(data, styleOb)\n this._isAnimated = !!this._isAnimated\n }\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID()\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient')\n gfill.setAttribute('id', gradientId)\n gfill.setAttribute('spreadMethod', 'pad')\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse')\n var stops = []\n var stop\n var j\n var jLen\n jLen = data.g.p * 4\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop')\n gfill.appendChild(stop)\n stops.push(stop)\n }\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')')\n this.gf = gfill\n this.cst = stops\n }\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop\n var j\n var jLen\n var mask = createNS('mask')\n var maskElement = createNS('path')\n mask.appendChild(maskElement)\n var opacityId = createElementID()\n var maskId = createElementID()\n mask.setAttribute('id', maskId)\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient')\n opFill.setAttribute('id', opacityId)\n opFill.setAttribute('spreadMethod', 'pad')\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse')\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length\n var stops = this.stops\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop')\n stop.setAttribute('stop-color', 'rgb(255,255,255)')\n opFill.appendChild(stop)\n stops.push(stop)\n }\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')')\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2])\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2])\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml)\n }\n }\n this.of = opFill\n this.ms = mask\n this.ost = stops\n this.maskId = maskId\n styleOb.msElem = maskElement\n }\n }\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData)\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this)\n this.d = new DashProperty(elem, data.d || {}, 'svg', this)\n this.initGradientData(elem, data, styleOb)\n this._isAnimated = !!this._isAnimated\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData)\n\n function ShapeGroupData() {\n this.it = []\n this.prevViewData = []\n this.gr = createNS('g')\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container,\n }\n this.elements = []\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length\n }\n\n const buildShapeString = function (pathNodes, length, closed, mat) {\n if (length === 0) {\n return ''\n }\n var _o = pathNodes.o\n var _i = pathNodes.i\n var _v = pathNodes.v\n var i\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1])\n for (i = 1; i < length; i += 1) {\n shapeString +=\n ' C' +\n mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) +\n ' ' +\n mat.applyToPointStringified(_i[i][0], _i[i][1]) +\n ' ' +\n mat.applyToPointStringified(_v[i][0], _v[i][1])\n }\n if (closed && length) {\n shapeString +=\n ' C' +\n mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) +\n ' ' +\n mat.applyToPointStringified(_i[0][0], _i[0][1]) +\n ' ' +\n mat.applyToPointStringified(_v[0][0], _v[0][1])\n shapeString += 'z'\n }\n return shapeString\n }\n\n const SVGElementsRenderer = (function () {\n var _identityMatrix = new Matrix()\n var _matrixHelper = new Matrix()\n\n var ob = {\n createRenderFunction: createRenderFunction,\n }\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill\n case 'gf':\n return renderGradient\n case 'gs':\n return renderGradientStroke\n case 'st':\n return renderStroke\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath\n case 'tr':\n return renderContentTransform\n case 'no':\n return renderNoop\n default:\n return null\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v)\n }\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS())\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j\n var jLen\n var pathStringTransformed\n var redraw\n var pathNodes\n var l\n var lLen = itemData.styles.length\n var lvl = itemData.lvl\n var paths\n var mat\n var props\n var iterations\n var k\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset()\n iterations = lvl - itemData.styles[l].lvl\n k = itemData.transformers.length - 1\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw\n iterations -= 1\n k -= 1\n }\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl\n k = itemData.transformers.length - 1\n while (iterations > 0) {\n props = itemData.transformers[k].mProps.v.props\n mat.transform(\n props[0],\n props[1],\n props[2],\n props[3],\n props[4],\n props[5],\n props[6],\n props[7],\n props[8],\n props[9],\n props[10],\n props[11],\n props[12],\n props[13],\n props[14],\n props[15],\n )\n iterations -= 1\n k -= 1\n }\n }\n } else {\n mat = _identityMatrix\n }\n paths = itemData.sh.paths\n jLen = paths._length\n if (redraw) {\n pathStringTransformed = ''\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j]\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat)\n }\n }\n itemData.caches[l] = pathStringTransformed\n } else {\n pathStringTransformed = itemData.caches[l]\n }\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute(\n 'fill',\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')',\n )\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v)\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame)\n renderStroke(styleData, itemData, isFirstFrame)\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf\n var hasOpacity = itemData.g._hasOpacity\n var pt1 = itemData.s.v\n var pt2 = itemData.e.v\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity'\n itemData.style.pElem.setAttribute(attr, itemData.o.v)\n }\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx'\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy'\n gfill.setAttribute(attr1, pt1[0])\n gfill.setAttribute(attr2, pt1[1])\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0])\n itemData.of.setAttribute(attr2, pt1[1])\n }\n }\n var stops\n var i\n var len\n var stop\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst\n var cValues = itemData.g.c\n len = stops.length\n for (i = 0; i < len; i += 1) {\n stop = stops[i]\n stop.setAttribute('offset', cValues[i * 4] + '%')\n stop.setAttribute(\n 'stop-color',\n 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')',\n )\n }\n }\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o\n if (itemData.g._collapsable) {\n stops = itemData.cst\n } else {\n stops = itemData.ost\n }\n len = stops.length\n for (i = 0; i < len; i += 1) {\n stop = stops[i]\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%')\n }\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1])\n }\n }\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0])\n gfill.setAttribute('y2', pt2[1])\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0])\n itemData.of.setAttribute('y2', pt2[1])\n }\n }\n } else {\n var rad\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2))\n gfill.setAttribute('r', rad)\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad)\n }\n }\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2))\n }\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0])\n\n var percent = itemData.h.v\n if (percent >= 1) {\n percent = 0.99\n } else if (percent <= -1) {\n percent = -0.99\n }\n var dist = rad * percent\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]\n gfill.setAttribute('fx', x)\n gfill.setAttribute('fy', y)\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x)\n itemData.of.setAttribute('fy', y)\n }\n }\n // gfill.setAttribute('fy','200');\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style\n var d = itemData.d\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr)\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0])\n }\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute(\n 'stroke',\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')',\n )\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v)\n }\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v)\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v)\n }\n }\n }\n\n return ob\n })()\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []\n // Full shape data\n this.shapesData = data.shapes\n // List of styles that will be applied to shapes\n this.stylesList = []\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = []\n // List of items in shape tree\n this.itemsData = []\n // List of items in previous shape tree\n this.processedElements = []\n // List of animated components\n this.animatedContents = []\n this.initElement(data, globalData, comp)\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n this.prevViewData = []\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype(\n [\n BaseElement,\n TransformElement,\n SVGBaseElement,\n IShapeElement,\n HierarchyElement,\n FrameElement,\n RenderableDOMElement,\n ],\n SVGShapeElement,\n )\n\n SVGShapeElement.prototype.initSecondaryElement = function () {}\n\n SVGShapeElement.prototype.identityMatrix = new Matrix()\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {}\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true)\n this.filterUniqueShapes()\n }\n\n /*\nThis method searches for multiple shapes that affect a single element and one of them is animated\n*/\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i\n var len = this.shapes.length\n var shape\n var j\n var jLen = this.stylesList.length\n var style\n var tempShapes = []\n var areAnimated = false\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j]\n areAnimated = false\n tempShapes.length = 0\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i]\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape)\n areAnimated = shape._isAnimated || areAnimated\n }\n }\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes)\n }\n }\n }\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i\n var len = shapes.length\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated()\n }\n }\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData\n var styleOb = new SVGStyleData(data, level)\n\n var pathElement = styleOb.pElem\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb)\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb)\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData\n elementData = new GradientConstructor(this, data, styleOb)\n this.globalData.defs.appendChild(elementData.gf)\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms)\n this.globalData.defs.appendChild(elementData.of)\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')')\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb)\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2])\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2])\n pathElement.setAttribute('fill-opacity', '0')\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml)\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd')\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln)\n }\n if (data.cl) {\n pathElement.setAttribute('class', data.cl)\n }\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm)\n }\n this.stylesList.push(styleOb)\n this.addToAnimatedContents(data, elementData)\n return elementData\n }\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData()\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln)\n }\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl)\n }\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm)\n }\n return elementData\n }\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this)\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container)\n this.addToAnimatedContents(data, elementData)\n return elementData\n }\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4\n if (data.ty === 'rc') {\n ty = 5\n } else if (data.ty === 'el') {\n ty = 6\n } else if (data.ty === 'sr') {\n ty = 7\n }\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this)\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty)\n this.shapes.push(elementData)\n this.addShapeToModifiers(elementData)\n this.addToAnimatedContents(data, elementData)\n return elementData\n }\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0\n var len = this.animatedContents.length\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return\n }\n i += 1\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data,\n })\n }\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles\n var j\n var jLen = this.stylesList.length\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j])\n }\n }\n }\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true\n var i\n var len = this.itemsData.length\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i]\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true)\n this.filterUniqueShapes()\n len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue()\n }\n this.renderModifiers()\n }\n\n SVGShapeElement.prototype.searchShapes = function (\n arr,\n itemsData,\n prevViewData,\n container,\n level,\n transformers,\n render,\n ) {\n var ownTransformers = [].concat(transformers)\n var i\n var len = arr.length - 1\n var j\n var jLen\n var ownStyles = []\n var ownModifiers = []\n var currentTransform\n var modifier\n var processedPos\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i])\n if (!processedPos) {\n arr[i]._render = render\n } else {\n itemsData[i] = prevViewData[processedPos - 1]\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level)\n } else {\n itemsData[i].style.closed = false\n }\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem)\n }\n }\n ownStyles.push(itemsData[i].style)\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i])\n } else {\n jLen = itemsData[i].it.length\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j]\n }\n }\n this.searchShapes(\n arr[i].it,\n itemsData[i].it,\n itemsData[i].prevViewData,\n itemsData[i].gr,\n level + 1,\n ownTransformers,\n render,\n )\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr)\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container)\n }\n currentTransform = itemsData[i].transform\n ownTransformers.push(currentTransform)\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level)\n }\n this.setElementStyles(itemsData[i])\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n modifier.init(this, arr[i])\n itemsData[i] = modifier\n this.shapeModifiers.push(modifier)\n } else {\n modifier = itemsData[i]\n modifier.closed = false\n }\n ownModifiers.push(modifier)\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n itemsData[i] = modifier\n modifier.init(this, arr, i, itemsData)\n this.shapeModifiers.push(modifier)\n render = false\n } else {\n modifier = itemsData[i]\n modifier.closed = true\n }\n ownModifiers.push(modifier)\n }\n this.addProcessedElement(arr[i], i + 1)\n }\n len = ownStyles.length\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true\n }\n len = ownModifiers.length\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true\n }\n }\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers()\n var i\n var len = this.stylesList.length\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset()\n }\n this.renderShape()\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d)\n // Adding M0 0 fixes same mask bug on all browsers\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d\n }\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0')\n }\n }\n }\n\n SVGShapeElement.prototype.renderShape = function () {\n var i\n var len = this.animatedContents.length\n var animatedContent\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i]\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame)\n }\n }\n }\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement()\n this.shapesData = null\n this.itemsData = null\n }\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o\n this.sw = sw\n this.sc = sc\n this.fc = fc\n this.m = m\n this.p = p\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true,\n }\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false\n this._mdf.sw = false\n this._mdf.sc = false\n this._mdf.fc = false\n this._mdf.m = false\n this._mdf.p = false\n var updated = false\n\n if (this.o !== o) {\n this.o = o\n this._mdf.o = true\n updated = true\n }\n if (this.sw !== sw) {\n this.sw = sw\n this._mdf.sw = true\n updated = true\n }\n if (this.sc !== sc) {\n this.sc = sc\n this._mdf.sc = true\n updated = true\n }\n if (this.fc !== fc) {\n this.fc = fc\n this._mdf.fc = true\n updated = true\n }\n if (this.m !== m) {\n this.m = m\n this._mdf.m = true\n updated = true\n }\n if (\n p.length &&\n (this.p[0] !== p[0] ||\n this.p[1] !== p[1] ||\n this.p[4] !== p[4] ||\n this.p[5] !== p[5] ||\n this.p[12] !== p[12] ||\n this.p[13] !== p[13])\n ) {\n this.p = p\n this._mdf.p = true\n updated = true\n }\n return updated\n }\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame\n this.pv = ''\n this.v = ''\n this.kf = false\n this._isFirstFrame = true\n this._mdf = false\n this.data = data\n this.elem = elem\n this.comp = this.elem.comp\n this.keysIndex = 0\n this.canResize = false\n this.minimumFontSize = 1\n this.effectsSequence = []\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false,\n }\n this.copyData(this.currentData, this.data.d.k[0].s)\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData)\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0]\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s]\n }\n }\n return obj\n }\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data)\n }\n this.currentData = data\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth\n this._mdf = true\n }\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes()\n }\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this))\n }\n return this.kf\n }\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction)\n this.elem.addDynamicProperty(this)\n }\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t\n var currentValue = this.currentData\n var currentIndex = this.keysIndex\n if (this.lock) {\n this.setCurrentData(this.currentData)\n return\n }\n this.lock = true\n this._mdf = false\n var i\n var len = this.effectsSequence.length\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t)\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t)\n }\n }\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue)\n }\n this.v = this.currentData\n this.pv = this.v\n this.lock = false\n this.frameId = this.elem.globalData.frameId\n }\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k\n var frameNum = this.elem.comp.renderedFrame\n var i = 0\n var len = textKeys.length\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break\n }\n i += 1\n }\n if (this.keysIndex !== i) {\n this.keysIndex = i\n }\n return this.data.d.k[this.keysIndex].s\n }\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = []\n var i = 0\n var len = text.length\n var charCode\n var secondCharCode\n var shouldCombine = false\n while (i < len) {\n charCode = text.charCodeAt(i)\n if (FontManager.isCombinedCharacter(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i)\n } else if (charCode >= 0xd800 && charCode <= 0xdbff) {\n secondCharCode = text.charCodeAt(i + 1)\n if (secondCharCode >= 0xdc00 && secondCharCode <= 0xdfff) {\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\n charactersArray[charactersArray.length - 1] += text.substr(i, 2)\n shouldCombine = false\n } else {\n charactersArray.push(text.substr(i, 2))\n }\n i += 1\n } else {\n charactersArray.push(text.charAt(i))\n }\n } else if (charCode > 0xdbff) {\n secondCharCode = text.charCodeAt(i + 1)\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\n shouldCombine = true\n charactersArray[charactersArray.length - 1] += text.substr(i, 2)\n i += 1\n } else {\n charactersArray.push(text.charAt(i))\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i)\n shouldCombine = true\n } else {\n charactersArray.push(text.charAt(i))\n }\n i += 1\n }\n return charactersArray\n }\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true\n var fontManager = this.elem.globalData.fontManager\n var data = this.data\n var letters = []\n var i\n var len\n var newLineFlag\n var index = 0\n var val\n var anchorGrouping = data.m.g\n var currentSize = 0\n var currentPos = 0\n var currentLine = 0\n var lineWidths = []\n var lineWidth = 0\n var maxLineWidth = 0\n var j\n var jLen\n var fontData = fontManager.getFontByName(documentData.f)\n var charData\n var cLength = 0\n\n var fontProps = getFontProperties(fontData)\n documentData.fWeight = fontProps.weight\n documentData.fStyle = fontProps.style\n documentData.finalSize = documentData.s\n documentData.finalText = this.buildFinalText(documentData.t)\n len = documentData.finalText.length\n documentData.finalLineHeight = documentData.lh\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize\n var charCode\n if (documentData.sz) {\n var flag = true\n var boxWidth = documentData.sz[0]\n var boxHeight = documentData.sz[1]\n var currentHeight\n var finalText\n while (flag) {\n finalText = this.buildFinalText(documentData.t)\n currentHeight = 0\n lineWidth = 0\n len = finalText.length\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize\n var lastSpaceIndex = -1\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0)\n newLineFlag = false\n if (finalText[i] === ' ') {\n lastSpaceIndex = i\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0\n newLineFlag = true\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily)\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize)\n }\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1\n } else {\n i = lastSpaceIndex\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r')\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1\n lineWidth = 0\n } else {\n lineWidth += cLength\n lineWidth += trackingOffset\n }\n }\n currentHeight += (fontData.ascent * documentData.finalSize) / 100\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s\n } else {\n documentData.finalText = finalText\n len = documentData.finalText.length\n flag = false\n }\n }\n }\n lineWidth = -trackingOffset\n cLength = 0\n var uncollapsedSpaces = 0\n var currentChar\n for (i = 0; i < len; i += 1) {\n newLineFlag = false\n currentChar = documentData.finalText[i]\n charCode = currentChar.charCodeAt(0)\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0\n lineWidths.push(lineWidth)\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth\n lineWidth = -2 * trackingOffset\n val = ''\n newLineFlag = true\n currentLine += 1\n } else {\n val = currentChar\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(\n currentChar,\n fontData.fStyle,\n fontManager.getFontByName(documentData.f).fFamily,\n )\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize)\n }\n\n //\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces\n uncollapsedSpaces = 0\n }\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0,\n })\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize\n letters[currentPos].ind = index\n letters[currentPos].extra = cLength\n currentPos += 1\n }\n index += 1\n currentSize = 0\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize\n letters[currentPos].ind = index\n letters[currentPos].extra = cLength\n currentPos += 1\n }\n currentSize = 0\n index += 1\n }\n } else {\n letters[index].ind = index\n letters[index].extra = 0\n index += 1\n }\n }\n documentData.l = letters\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth\n lineWidths.push(lineWidth)\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0]\n documentData.justifyOffset = 0\n } else {\n documentData.boxWidth = maxLineWidth\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth\n break\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2\n break\n default:\n documentData.justifyOffset = 0\n }\n }\n documentData.lineWidths = lineWidths\n\n var animators = data.a\n var animatorData\n var letterData\n jLen = animators.length\n var based\n var ind\n var indexes = []\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j]\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true\n }\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true\n }\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true\n }\n ind = 0\n based = animatorData.s.b\n for (i = 0; i < len; i += 1) {\n letterData = letters[i]\n letterData.anIndexes[j] = ind\n if (\n (based == 1 && letterData.val !== '') ||\n (based == 2 && letterData.val !== '' && letterData.val !== ' ') ||\n (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) ||\n (based == 4 && (letterData.n || i == len - 1))\n ) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind)\n }\n ind += 1\n }\n }\n data.a[j].s.totalChars = ind\n var currentInd = -1\n var newInd\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i]\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j]\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0]\n }\n letterData.anIndexes[j] = newInd\n }\n }\n }\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2\n documentData.ls = documentData.ls || 0\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100\n }\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index\n var dData = this.copyData({}, this.data.d.k[index].s)\n dData = this.copyData(dData, newData)\n this.data.d.k[index].s = dData\n this.recalculate(index)\n this.elem.addDynamicProperty(this)\n }\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s\n dData.__complete = false\n this.keysIndex = 0\n this._isFirstFrame = true\n this.getValue(dData)\n }\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize\n this.recalculate(this.keysIndex)\n this.elem.addDynamicProperty(this)\n }\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1\n this.recalculate(this.keysIndex)\n this.elem.addDynamicProperty(this)\n }\n\n const TextSelectorProp = (function () {\n var max = Math.max\n var min = Math.min\n var floor = Math.floor\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1\n this.k = false\n this.data = data\n this.elem = elem\n this.comp = elem.comp\n this.finalS = 0\n this.finalE = 0\n this.initDynamicPropertyContainer(elem)\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this)\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this)\n } else {\n this.e = { v: 100 }\n }\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this)\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this)\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this)\n this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this)\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this)\n if (!this.dynamicProperties.length) {\n this.getValue()\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function (ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue()\n }\n var x1 = 0\n var y1 = 0\n var x2 = 1\n var y2 = 1\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0\n } else {\n y1 = -this.ne.v / 100.0\n }\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0\n } else {\n y2 = 1.0 + this.xe.v / 100.0\n }\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get\n\n var mult = 0\n var s = this.finalS\n var e = this.finalE\n var type = this.data.sh\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1))\n }\n mult = easer(mult)\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1))\n }\n\n mult = easer(mult)\n } else if (type === 4) {\n if (e === s) {\n mult = 0\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1))\n if (mult < 0.5) {\n mult *= 2\n } else {\n mult = 1 - 2 * (mult - 0.5)\n }\n }\n mult = easer(mult)\n } else if (type === 5) {\n if (e === s) {\n mult = 0\n } else {\n var tot = e - s\n /* ind += 0.5;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n ind = min(max(0, ind + 0.5 - s), e - s)\n var x = -tot / 2 + ind\n var a = tot / 2\n mult = Math.sqrt(1 - (x * x) / (a * a))\n }\n mult = easer(mult)\n } else if (type === 6) {\n if (e === s) {\n mult = 0\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s)\n mult = (1 + Math.cos(Math.PI + (Math.PI * 2 * ind) / (e - s))) / 2 // eslint-disable-line\n }\n mult = easer(mult)\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1))\n } else {\n mult = max(0, min(e - ind, 1))\n }\n }\n mult = easer(mult)\n }\n // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01\n if (smoothness === 0) {\n smoothness = 0.00000001\n }\n var threshold = 0.5 - smoothness * 0.5\n if (mult < threshold) {\n mult = 0\n } else {\n mult = (mult - threshold) / smoothness\n if (mult > 1) {\n mult = 1\n }\n }\n }\n return mult * this.a.v\n },\n getValue: function (newCharsFlag) {\n this.iterateDynamicProperties()\n this._mdf = newCharsFlag || this._mdf\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength\n }\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars\n var o = this.o.v / divisor\n var s = this.s.v / divisor + o\n var e = this.e.v / divisor + o\n if (s > e) {\n var _s = s\n s = e\n e = _s\n }\n this.finalS = s\n this.finalE = e\n },\n }\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory)\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr)\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp,\n }\n })()\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = { propType: false }\n var getProp = PropertyFactory.getProp\n var textAnimatorAnimatables = animatorProps.a\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\n }\n\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container)\n this.s.t = animatorProps.s.t\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true\n this._hasMaskedPath = false\n this._frameId = -1\n this._textData = textData\n this._renderType = renderType\n this._elem = elem\n this._animatorsData = createSizedArray(this._textData.a.length)\n this._pathData = {}\n this._moreOptions = {\n alignment: {},\n }\n this.renderedLetters = []\n this.lettersChangedFlag = false\n this.initDynamicPropertyContainer(elem)\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i\n var len = this._textData.a.length\n var animatorProps\n var getProp = PropertyFactory.getProp\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i]\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this)\n }\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\n }\n this._hasMaskedPath = true\n } else {\n this._hasMaskedPath = false\n }\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this)\n }\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return\n }\n this._isFirstFrame = false\n var alignment = this._moreOptions.alignment.v\n var animators = this._animatorsData\n var textData = this._textData\n var matrixHelper = this.mHelper\n var renderType = this._renderType\n var renderedLettersCount = this.renderedLetters.length\n var xPos\n var yPos\n var i\n var len\n var letters = documentData.l\n var pathInfo\n var currentLength\n var currentPoint\n var segmentLength\n var flag\n var pointInd\n var segmentInd\n var prevPoint\n var points\n var segments\n var partialLength\n var totalLength\n var perc\n var tanAngle\n var mask\n if (this._hasMaskedPath) {\n mask = this._pathData.m\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v\n if (this._pathData.r.v) {\n paths = paths.reverse()\n }\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n pathInfo = {\n tLength: 0,\n segments: [],\n }\n len = paths._length - 1\n var bezierData\n totalLength = 0\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(\n paths.v[i],\n paths.v[i + 1],\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]],\n )\n pathInfo.tLength += bezierData.segmentLength\n pathInfo.segments.push(bezierData)\n totalLength += bezierData.segmentLength\n }\n i = len\n if (mask.v.c) {\n bezierData = bez.buildBezierData(\n paths.v[i],\n paths.v[0],\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]],\n )\n pathInfo.tLength += bezierData.segmentLength\n pathInfo.segments.push(bezierData)\n totalLength += bezierData.segmentLength\n }\n this._pathData.pi = pathInfo\n }\n pathInfo = this._pathData.pi\n\n currentLength = this._pathData.f.v\n segmentInd = 0\n pointInd = 1\n segmentLength = 0\n flag = true\n segments = pathInfo.segments\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength\n }\n segmentInd = segments.length - 1\n points = segments[segmentInd].points\n pointInd = points.length - 1\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength\n pointInd -= 1\n if (pointInd < 0) {\n segmentInd -= 1\n points = segments[segmentInd].points\n pointInd = points.length - 1\n }\n }\n }\n points = segments[segmentInd].points\n prevPoint = points[pointInd - 1]\n currentPoint = points[pointInd]\n partialLength = currentPoint.partialLength\n }\n\n len = letters.length\n xPos = 0\n yPos = 0\n var yOff = documentData.finalSize * 1.2 * 0.714\n var firstLine = true\n var animatorProps\n var animatorSelector\n var j\n var jLen\n var letterValue\n\n jLen = animators.length\n\n var mult\n var ind = -1\n var offf\n var xPathPos\n var yPathPos\n var initPathPos = currentLength\n var initSegmentInd = segmentInd\n var initPointInd = pointInd\n var currentLine = -1\n var elemOpacity\n var sc\n var sw\n var fc\n var k\n var letterSw\n var letterSc\n var letterFc\n var letterM = ''\n var letterP = this.defaultPropsArray\n var letterO\n\n //\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0\n var animatorFirstCharOffset = 0\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1\n var lastIndex = 0\n var isNewLine = true\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset\n lastIndex += 1\n }\n animatorJustifyOffset = 0\n isNewLine = true\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult\n }\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult\n }\n }\n }\n isNewLine = false\n }\n }\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset\n lastIndex += 1\n }\n }\n //\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset()\n elemOpacity = 1\n if (letters[i].n) {\n xPos = 0\n yPos += documentData.yOffset\n yPos += firstLine ? 1 : 0\n currentLength = initPathPos\n firstLine = false\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd\n pointInd = initPointInd\n points = segments[segmentInd].points\n prevPoint = points[pointInd - 1]\n currentPoint = points[pointInd]\n partialLength = currentPoint.partialLength\n segmentLength = 0\n }\n letterM = ''\n letterFc = ''\n letterSw = ''\n letterO = ''\n letterP = this.defaultPropsArray\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line]\n break\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2\n break\n default:\n break\n }\n currentLine = letters[i].line\n }\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra\n }\n currentLength += letters[i].an / 2\n ind = letters[i].ind\n }\n currentLength += alignment[0] * letters[i].an * 0.005\n var animatorOffset = 0\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0]\n } else {\n animatorOffset += animatorProps.p.v[0] * mult\n }\n }\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0]\n } else {\n animatorOffset += animatorProps.a.v[0] * mult\n }\n }\n }\n flag = true\n // Force alignment only works with a single line for now\n if (this._pathData.a.v) {\n currentLength =\n letters[0].an * 0.5 +\n ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) /\n (len - 1)\n currentLength += this._pathData.f.v\n }\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01)\n flag = false\n } else if (points) {\n segmentLength += currentPoint.partialLength\n pointInd += 1\n if (pointInd >= points.length) {\n pointInd = 0\n segmentInd += 1\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0\n segmentInd = 0\n points = segments[segmentInd].points\n } else {\n segmentLength -= currentPoint.partialLength\n points = null\n }\n } else {\n points = segments[segmentInd].points\n }\n }\n if (points) {\n prevPoint = currentPoint\n currentPoint = points[pointInd]\n partialLength = currentPoint.partialLength\n }\n }\n }\n offf = letters[i].an / 2 - letters[i].add\n matrixHelper.translate(-offf, 0, 0)\n } else {\n offf = letters[i].an / 2 - letters[i].add\n matrixHelper.translate(-offf, 0, 0)\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0)\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0]\n } else {\n currentLength += animatorProps.t.v * mult\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0]\n } else {\n xPos += animatorProps.t.v * mult\n }\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0\n }\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]]\n } else {\n sc = [0, 0, 0]\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]]\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n\n if (mult.length) {\n matrixHelper.translate(\n -animatorProps.a.v[0] * mult[0],\n -animatorProps.a.v[1] * mult[1],\n animatorProps.a.v[2] * mult[2],\n )\n } else {\n matrixHelper.translate(\n -animatorProps.a.v[0] * mult,\n -animatorProps.a.v[1] * mult,\n animatorProps.a.v[2] * mult,\n )\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1)\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1)\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1])\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult)\n }\n }\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2])\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult)\n }\n }\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1])\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult)\n }\n }\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0])\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult)\n }\n }\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0]\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult\n }\n }\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0]\n } else {\n sw += animatorProps.sw.v * mult\n }\n }\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0]\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult\n }\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0]\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult\n }\n }\n }\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0])\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult)\n }\n }\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0])\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult)\n }\n }\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0])\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult)\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1])\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult)\n }\n } else if (mult.length) {\n matrixHelper.translate(\n animatorProps.p.v[0] * mult[0],\n animatorProps.p.v[1] * mult[1],\n -animatorProps.p.v[2] * mult[2],\n )\n } else {\n matrixHelper.translate(\n animatorProps.p.v[0] * mult,\n animatorProps.p.v[1] * mult,\n -animatorProps.p.v[2] * mult,\n )\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw\n }\n if (documentData.strokeColorAnim) {\n letterSc =\n 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')'\n }\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc =\n 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')'\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls)\n\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0)\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0])\n var rot = (Math.atan(tanAngle) * 180) / Math.PI\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180\n }\n matrixHelper.rotate((-rot * Math.PI) / 180)\n }\n matrixHelper.translate(xPathPos, yPathPos, 0)\n currentLength -= alignment[0] * letters[i].an * 0.005\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2\n currentLength += documentData.tr * 0.001 * documentData.finalSize\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0)\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0)\n }\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(\n letters[i].animatorJustifyOffset +\n documentData.justifyOffset +\n (documentData.boxWidth - documentData.lineWidths[letters[i].line]),\n 0,\n 0,\n )\n break\n case 2:\n matrixHelper.translate(\n letters[i].animatorJustifyOffset +\n documentData.justifyOffset +\n (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2,\n 0,\n 0,\n )\n break\n default:\n break\n }\n matrixHelper.translate(0, -documentData.ls)\n matrixHelper.translate(offf, 0, 0)\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0)\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize\n }\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS()\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS()\n } else {\n letterP = [\n matrixHelper.props[0],\n matrixHelper.props[1],\n matrixHelper.props[2],\n matrixHelper.props[3],\n matrixHelper.props[4],\n matrixHelper.props[5],\n matrixHelper.props[6],\n matrixHelper.props[7],\n matrixHelper.props[8],\n matrixHelper.props[9],\n matrixHelper.props[10],\n matrixHelper.props[11],\n matrixHelper.props[12],\n matrixHelper.props[13],\n matrixHelper.props[14],\n matrixHelper.props[15],\n ]\n }\n letterO = elemOpacity\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP)\n this.renderedLetters.push(letterValue)\n renderedLettersCount += 1\n this.lettersChangedFlag = true\n } else {\n letterValue = this.renderedLetters[i]\n this.lettersChangedFlag =\n letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag\n }\n }\n }\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return\n }\n this._frameId = this._elem.globalData.frameId\n this.iterateDynamicProperties()\n }\n\n TextAnimatorProperty.prototype.mHelper = new Matrix()\n TextAnimatorProperty.prototype.defaultPropsArray = []\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty)\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties)\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this)\n this.initTransform(data, globalData, comp)\n this.initHierarchy()\n this.initRenderable()\n this.initRendererElement()\n this.createContainerElements()\n this.createRenderableComponents()\n this.createContent()\n this.hide()\n this.textAnimator.searchProperties(this.dynamicProperties)\n }\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText()\n this.textProperty._isFirstFrame = false\n this.textProperty._mdf = false\n }\n }\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j\n var jLen = shapes.length\n var pathNodes\n var shapeStr = ''\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper)\n }\n }\n return shapeStr\n }\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index)\n }\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize)\n }\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize)\n }\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0)\n }\n matrixHelper.translate(0, -documentData.ls, 0)\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(\n documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]),\n 0,\n 0,\n )\n break\n case 2:\n matrixHelper.translate(\n documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2,\n 0,\n 0,\n )\n break\n default:\n break\n }\n matrixHelper.translate(xPos, yPos, 0)\n }\n\n ITextElement.prototype.buildColor = function (colorData) {\n return (\n 'rgb(' +\n Math.round(colorData[0] * 255) +\n ',' +\n Math.round(colorData[1] * 255) +\n ',' +\n Math.round(colorData[2] * 255) +\n ')'\n )\n }\n\n ITextElement.prototype.emptyProp = new LetterProps()\n\n ITextElement.prototype.destroy = function () {}\n\n var emptyShapeData = {\n shapes: [],\n }\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = []\n this.renderType = 'svg'\n this.initElement(data, globalData, comp)\n }\n\n extendPrototype(\n [BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement],\n SVGTextLottieElement,\n )\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text')\n }\n }\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0\n var len = textArray.length\n var textContents = []\n var currentTextContent = ''\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent)\n currentTextContent = ''\n } else {\n currentTextContent += textArray[i]\n }\n i += 1\n }\n textContents.push(currentTextContent)\n return textContents\n }\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0]\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1]\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale\n shapeItem.s.k[1] = scale\n }\n }\n }\n return data\n }\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this)\n var i\n var len\n\n var documentData = this.textProperty.currentData\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0)\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc))\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)')\n }\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc))\n this.layerElement.setAttribute('stroke-width', documentData.sw)\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize)\n var fontData = this.globalData.fontManager.getFontByName(documentData.f)\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass)\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily)\n var fWeight = documentData.fWeight\n var fStyle = documentData.fStyle\n this.layerElement.setAttribute('font-style', fStyle)\n this.layerElement.setAttribute('font-weight', fWeight)\n }\n this.layerElement.setAttribute('aria-label', documentData.t)\n\n var letters = documentData.l || []\n var usesGlyphs = !!this.globalData.fontManager.chars\n len = letters.length\n\n var tSpan\n var matrixHelper = this.mHelper\n var shapeStr = ''\n var singleShape = this.data.singleShape\n var xPos = 0\n var yPos = 0\n var firstLine = true\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer\n var justify = 'start'\n switch (documentData.j) {\n case 1:\n justify = 'end'\n break\n case 2:\n justify = 'middle'\n break\n default:\n justify = 'start'\n break\n }\n tElement.setAttribute('text-anchor', justify)\n tElement.setAttribute('letter-spacing', trackingOffset)\n var textContent = this.buildTextContents(documentData.finalText)\n len = textContent.length\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan')\n tSpan.textContent = textContent[i]\n tSpan.setAttribute('x', 0)\n tSpan.setAttribute('y', yPos)\n tSpan.style.display = 'inherit'\n tElement.appendChild(tSpan)\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null,\n }\n }\n this.textSpans[i].span = tSpan\n yPos += documentData.finalLineHeight\n }\n\n this.layerElement.appendChild(tElement)\n } else {\n var cachedSpansLength = this.textSpans.length\n var charData\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null,\n }\n }\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text')\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt')\n tSpan.setAttribute('stroke-linejoin', 'round')\n tSpan.setAttribute('stroke-miterlimit', '4')\n this.textSpans[i].span = tSpan\n if (usesGlyphs) {\n var childSpan = createNS('g')\n tSpan.appendChild(childSpan)\n this.textSpans[i].childSpan = childSpan\n }\n this.textSpans[i].span = tSpan\n this.layerElement.appendChild(tSpan)\n }\n tSpan.style.display = 'inherit'\n }\n\n matrixHelper.reset()\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset\n yPos += documentData.yOffset\n yPos += firstLine ? 1 : 0\n firstLine = false\n }\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos)\n xPos += letters[i].l || 0\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset\n }\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(\n documentData.finalText[i],\n fontData.fStyle,\n this.globalData.fontManager.getFontByName(documentData.f).fFamily,\n )\n var glyphElement\n // t === 1 means the character has been replaced with an animated shaped\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this)\n } else {\n var data = emptyShapeData\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize)\n }\n glyphElement = new SVGShapeElement(data, this.globalData, this)\n }\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph\n this.textSpans[i].childSpan.removeChild(glyph.layerElement)\n glyph.destroy()\n }\n this.textSpans[i].glyph = glyphElement\n glyphElement._debug = true\n glyphElement.prepareFrame(0)\n glyphElement.renderFrame()\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement)\n // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute(\n 'transform',\n 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')',\n )\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')')\n }\n tSpan.textContent = letters[i].val\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve')\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr)\n }\n }\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none'\n i += 1\n }\n\n this._sizeChanged = true\n }\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st)\n this.renderInnerContent()\n if (this._sizeChanged) {\n this._sizeChanged = false\n var textBox = this.layerElement.getBBox()\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height,\n }\n }\n return this.bbox\n }\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i\n var len = this.textSpans.length\n var glyphElement\n this.renderedFrame = this.comp.renderedFrame\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st)\n if (glyphElement._mdf) {\n this._mdf = true\n }\n }\n }\n }\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag)\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true\n var i\n var len\n var renderedLetters = this.textAnimator.renderedLetters\n\n var letters = this.textProperty.currentData.l\n\n len = letters.length\n var renderedLetter\n var textSpan\n var glyphElement\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i]\n textSpan = this.textSpans[i].span\n glyphElement = this.textSpans[i].glyph\n if (glyphElement) {\n glyphElement.renderFrame()\n }\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m)\n }\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o)\n }\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw)\n }\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc)\n }\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc)\n }\n }\n }\n }\n }\n }\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp)\n }\n extendPrototype([IImageElement], ISolidElement)\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect')\n /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n rect.setAttribute('width', this.data.sw)\n rect.setAttribute('height', this.data.sh)\n rect.setAttribute('fill', this.data.sc)\n this.layerElement.appendChild(rect)\n }\n\n function NullElement(data, globalData, comp) {\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.initFrame()\n this.initTransform(data, globalData, comp)\n this.initHierarchy()\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true)\n }\n\n NullElement.prototype.renderFrame = function () {}\n\n NullElement.prototype.getBaseElement = function () {\n return null\n }\n\n NullElement.prototype.destroy = function () {}\n\n NullElement.prototype.sourceRectAtTime = function () {}\n\n NullElement.prototype.hide = function () {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement)\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase)\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize)\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h)\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w)\n this.svgElement.setAttribute('height', animData.h)\n this.svgElement.style.width = '100%'\n this.svgElement.style.height = '100%'\n this.svgElement.style.transform = 'translate3d(0,0,0)'\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility\n }\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width)\n }\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height)\n }\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className)\n }\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id)\n }\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable)\n }\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio)\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n this.animationItem.wrapper.appendChild(this.svgElement)\n // Mask animation\n var defs = this.globalData.defs\n\n this.setupGlobalData(animData, defs)\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad\n this.data = animData\n\n var maskElement = createNS('clipPath')\n var rect = createNS('rect')\n rect.setAttribute('width', animData.w)\n rect.setAttribute('height', animData.h)\n rect.setAttribute('x', 0)\n rect.setAttribute('y', 0)\n var maskId = createElementID()\n maskElement.setAttribute('id', maskId)\n maskElement.appendChild(rect)\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')')\n\n defs.appendChild(maskElement)\n this.layers = animData.layers\n this.elements = createSizedArray(animData.layers.length)\n }\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = ''\n }\n this.layerElement = null\n this.globalData.defs = null\n var i\n var len = this.layers ? this.layers.length : 0\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n this.elements.length = 0\n this.destroyed = true\n this.animationItem = null\n }\n\n SVGRendererBase.prototype.updateContainerSize = function () {}\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements\n if (elements[pos] || this.layers[pos].ty === 99) {\n return\n }\n elements[pos] = true\n var element = this.createItem(this.layers[pos])\n\n elements[pos] = element\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element)\n }\n element.initExpressions()\n }\n this.appendElementInPos(element, pos)\n if (this.layers[pos].tt) {\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\n this.buildItem(pos - 1)\n this.addPendingElement(element)\n } else {\n element.setMatte(elements[pos - 1].layerId)\n }\n }\n }\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop()\n element.checkParenting()\n if (element.data.tt) {\n var i = 0\n var len = this.elements.length\n while (i < len) {\n if (this.elements[i] === element) {\n element.setMatte(this.elements[i - 1].layerId)\n break\n }\n i += 1\n }\n }\n }\n }\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return\n }\n if (num === null) {\n num = this.renderedFrame\n } else {\n this.renderedFrame = num\n }\n // console.log('-------');\n // console.log('FRAME ',num);\n this.globalData.frameNum = num\n this.globalData.frameId += 1\n this.globalData.projectInterface.currentFrame = num\n this.globalData._mdf = false\n var i\n var len = this.layers.length\n if (!this.completeLayers) {\n this.checkLayers(num)\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st)\n }\n }\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n }\n }\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement()\n if (!newElement) {\n return\n }\n var i = 0\n var nextElement\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement()\n }\n i += 1\n }\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement)\n } else {\n this.layerElement.appendChild(newElement)\n }\n }\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none'\n }\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block'\n }\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement)\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.initTransform(data, globalData, comp)\n this.initRenderable()\n this.initHierarchy()\n this.initRendererElement()\n this.createContainerElements()\n this.createRenderableComponents()\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems()\n }\n this.hide()\n }\n\n /* ICompElement.prototype.hide = function(){\n if(!this.hidden){\n this.hideElement();\n var i,len = this.elements.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].hide();\n }\n }\n }\n}; */\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n if (!this.isInRange && !this.data.xt) {\n return\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1\n }\n this.renderedFrame = timeRemapped\n } else {\n this.renderedFrame = num / this.data.sr\n }\n var i\n var len = this.elements.length\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame)\n }\n // This iteration needs to be backwards because of how expressions connect between each other\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st)\n if (this.elements[i]._mdf) {\n this._mdf = true\n }\n }\n }\n }\n\n ICompElement.prototype.renderInnerContent = function () {\n var i\n var len = this.layers.length\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n }\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems\n }\n\n ICompElement.prototype.getElements = function () {\n return this.elements\n }\n\n ICompElement.prototype.destroyElements = function () {\n var i\n var len = this.layers.length\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n }\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements()\n this.destroyBaseElement()\n }\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers\n this.supports3d = true\n this.completeLayers = false\n this.pendingElements = []\n this.elements = this.layers ? createSizedArray(this.layers.length) : []\n this.initElement(data, globalData, comp)\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement)\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this)\n }\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem\n this.layers = null\n this.renderedFrame = -1\n this.svgElement = createNS('svg')\n var ariaLabel = ''\n if (config && config.title) {\n var titleElement = createNS('title')\n var titleId = createElementID()\n titleElement.setAttribute('id', titleId)\n titleElement.textContent = config.title\n this.svgElement.appendChild(titleElement)\n ariaLabel += titleId\n }\n if (config && config.description) {\n var descElement = createNS('desc')\n var descId = createElementID()\n descElement.setAttribute('id', descId)\n descElement.textContent = config.description\n this.svgElement.appendChild(descElement)\n ariaLabel += ' ' + descId\n }\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel)\n }\n var defs = createNS('defs')\n this.svgElement.appendChild(defs)\n var maskElement = createNS('g')\n this.svgElement.appendChild(maskElement)\n this.layerElement = maskElement\n this.renderConfig = {\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\n contentVisibility: (config && config.contentVisibility) || 'visible',\n progressiveLoad: (config && config.progressiveLoad) || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: (config && config.viewBoxOnly) || false,\n viewBoxSize: (config && config.viewBoxSize) || false,\n className: (config && config.className) || '',\n id: (config && config.id) || '',\n focusable: config && config.focusable,\n filterSize: {\n width: (config && config.filterSize && config.filterSize.width) || '100%',\n height: (config && config.filterSize && config.filterSize.height) || '100%',\n x: (config && config.filterSize && config.filterSize.x) || '0%',\n y: (config && config.filterSize && config.filterSize.y) || '0%',\n },\n width: config && config.width,\n height: config && config.height,\n }\n\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig,\n }\n this.elements = []\n this.pendingElements = []\n this.destroyed = false\n this.rendererType = 'svg'\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer)\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this)\n }\n\n function CVContextData() {\n this.saved = []\n this.cArrPos = 0\n this.cTr = new Matrix()\n this.cO = 1\n var i\n var len = 15\n this.savedOp = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n this.saved[i] = createTypedArray('float32', 16)\n }\n this._length = len\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2\n var currentSavedOp = this.savedOp\n this.savedOp = createTypedArray('float32', newLength)\n this.savedOp.set(currentSavedOp)\n var i = 0\n for (i = this._length; i < newLength; i += 1) {\n this.saved[i] = createTypedArray('float32', 16)\n }\n this._length = newLength\n }\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0\n this.cTr.reset()\n this.cO = 1\n }\n\n function ShapeTransformManager() {\n this.sequences = {}\n this.sequenceList = []\n this.transform_key_count = 0\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function (transforms) {\n var i\n var len = transforms.length\n var key = '_'\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_'\n }\n var sequence = this.sequences[key]\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false,\n }\n this.sequences[key] = sequence\n this.sequenceList.push(sequence)\n }\n return sequence\n },\n processSequence: function (sequence, isFirstFrame) {\n var i = 0\n var len = sequence.transforms.length\n var _mdf = isFirstFrame\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true\n break\n }\n i += 1\n }\n if (_mdf) {\n var props\n sequence.finalTransform.reset()\n for (i = len - 1; i >= 0; i -= 1) {\n props = sequence.transforms[i].transform.mProps.v.props\n sequence.finalTransform.transform(\n props[0],\n props[1],\n props[2],\n props[3],\n props[4],\n props[5],\n props[6],\n props[7],\n props[8],\n props[9],\n props[10],\n props[11],\n props[12],\n props[13],\n props[14],\n props[15],\n )\n }\n }\n sequence._mdf = _mdf\n },\n processSequences: function (isFirstFrame) {\n var i\n var len = this.sequenceList.length\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame)\n }\n },\n getNewKey: function () {\n this.transform_key_count += 1\n return '_' + this.transform_key_count\n },\n }\n\n function CVEffects() {}\n CVEffects.prototype.renderFrame = function () {}\n\n function CVMaskElement(data, element) {\n this.data = data\n this.element = element\n this.masksProperties = this.data.masksProperties || []\n this.viewData = createSizedArray(this.masksProperties.length)\n var i\n var len = this.masksProperties.length\n var hasMasks = false\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true\n }\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3)\n }\n this.hasMasks = hasMasks\n if (hasMasks) {\n this.element.addRenderableComponent(this)\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return\n }\n var transform = this.element.finalTransform.mat\n var ctx = this.element.canvasContext\n var i\n var len = this.masksProperties.length\n var pt\n var pts\n var data\n ctx.beginPath()\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0)\n ctx.lineTo(this.element.globalData.compSize.w, 0)\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h)\n ctx.lineTo(0, this.element.globalData.compSize.h)\n ctx.lineTo(0, 0)\n }\n data = this.viewData[i].v\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0)\n ctx.moveTo(pt[0], pt[1])\n var j\n var jLen = data._length\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j])\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5])\n }\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0])\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5])\n }\n }\n this.element.globalData.renderer.save(true)\n ctx.clip()\n }\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null\n }\n\n function CVBaseElement() {}\n\n CVBaseElement.prototype = {\n createElements: function () {},\n initRendererElement: function () {},\n createContainerElements: function () {\n this.canvasContext = this.globalData.canvasContext\n this.renderableEffectsManager = new CVEffects(this)\n },\n createContent: function () {},\n setBlendMode: function () {\n var globalData = this.globalData\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm\n var blendModeValue = getBlendMode(this.data.bm)\n globalData.canvasContext.globalCompositeOperation = blendModeValue\n }\n },\n createRenderableComponents: function () {\n this.maskManager = new CVMaskElement(this.data, this)\n },\n hideElement: function () {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true\n }\n },\n showElement: function () {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false\n this._isFirstFrame = true\n this.maskManager._isFirstFrame = true\n }\n },\n renderFrame: function () {\n if (this.hidden || this.data.hd) {\n return\n }\n this.renderTransform()\n this.renderRenderable()\n this.setBlendMode()\n var forceRealStack = this.data.ty === 0\n this.globalData.renderer.save(forceRealStack)\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props)\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v)\n this.renderInnerContent()\n this.globalData.renderer.restore(forceRealStack)\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true)\n }\n if (this._isFirstFrame) {\n this._isFirstFrame = false\n }\n },\n destroy: function () {\n this.canvasContext = null\n this.data = null\n this.globalData = null\n this.maskManager.destroy()\n },\n mHelper: new Matrix(),\n }\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = []\n this.tr = [0, 0, 0, 0, 0, 0]\n var ty = 4\n if (data.ty === 'rc') {\n ty = 5\n } else if (data.ty === 'el') {\n ty = 6\n } else if (data.ty === 'sr') {\n ty = 7\n }\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element)\n var i\n var len = styles.length\n var styledShape\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: [],\n }\n this.styledShapes.push(styledShape)\n styles[i].elements.push(styledShape)\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = []\n this.shapesData = data.shapes\n this.stylesList = []\n this.itemsData = []\n this.prevViewData = []\n this.shapeModifiers = []\n this.processedElements = []\n this.transformsManager = new ShapeTransformManager()\n this.initElement(data, globalData, comp)\n }\n\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement],\n CVShapeElement,\n )\n\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement\n\n CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false }\n\n CVShapeElement.prototype.dashResetter = []\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, [])\n }\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true,\n }\n var elementData = {}\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this)\n if (!elementData.c.k) {\n styleElem.co =\n 'rgb(' +\n bmFloor(elementData.c.v[0]) +\n ',' +\n bmFloor(elementData.c.v[1]) +\n ',' +\n bmFloor(elementData.c.v[2]) +\n ')'\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this)\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this)\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this)\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this)\n elementData.g = new GradientProperty(this, data.g, this)\n }\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this)\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2]\n styleElem.lj = lineJoinEnum[data.lj || 2]\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml\n }\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this)\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v\n }\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this)\n elementData.d = d\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray\n styleElem.do = elementData.d.dashoffset[0]\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero'\n }\n this.stylesList.push(styleElem)\n elementData.style = styleElem\n return elementData\n }\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: [],\n }\n return elementData\n }\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\n },\n }\n return elementData\n }\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager)\n\n this.shapes.push(elementData)\n this.addShapeToModifiers(elementData)\n return elementData\n }\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true\n var i\n var len = this.itemsData.length\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i]\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, [])\n len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue()\n }\n this.renderModifiers()\n this.transformsManager.processSequences(this._isFirstFrame)\n }\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i\n var len = this.stylesList.length\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform)\n }\n }\n }\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i\n var len = this.stylesList.length\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop()\n }\n }\n }\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i\n var len = styles.length\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true\n }\n }\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i\n var len = arr.length - 1\n var j\n var jLen\n var ownStyles = []\n var ownModifiers = []\n var processedPos\n var modifier\n var currentTransform\n var ownTransforms = [].concat(transforms)\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i])\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender\n } else {\n itemsData[i] = prevViewData[processedPos - 1]\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms)\n } else {\n itemsData[i].style.closed = false\n }\n\n ownStyles.push(itemsData[i].style)\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i])\n } else {\n jLen = itemsData[i].it.length\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j]\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms)\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i])\n itemsData[i] = currentTransform\n }\n ownTransforms.push(itemsData[i])\n this.addTransformToStyleList(itemsData[i])\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i])\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n modifier.init(this, arr[i])\n itemsData[i] = modifier\n this.shapeModifiers.push(modifier)\n } else {\n modifier = itemsData[i]\n modifier.closed = false\n }\n ownModifiers.push(modifier)\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n itemsData[i] = modifier\n modifier.init(this, arr, i, itemsData)\n this.shapeModifiers.push(modifier)\n shouldRender = false\n } else {\n modifier = itemsData[i]\n modifier.closed = true\n }\n ownModifiers.push(modifier)\n }\n this.addProcessedElement(arr[i], i + 1)\n }\n this.removeTransformFromStyleList()\n this.closeStyles(ownStyles)\n len = ownModifiers.length\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true\n }\n }\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1\n this.transformHelper._opMdf = false\n this.renderModifiers()\n this.transformsManager.processSequences(this._isFirstFrame)\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true)\n }\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity\n groupTransform.opacity *= groupTransform.op.v\n groupTransform._opMdf = true\n }\n }\n\n CVShapeElement.prototype.drawLayer = function () {\n var i\n var len = this.stylesList.length\n var j\n var jLen\n var k\n var kLen\n var elems\n var nodes\n var renderer = this.globalData.renderer\n var ctx = this.globalData.canvasContext\n var type\n var currentStyle\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i]\n type = currentStyle.type\n\n // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n if (\n !(\n ((type === 'st' || type === 'gs') && currentStyle.wi === 0) ||\n !currentStyle.data._shouldRender ||\n currentStyle.coOp === 0 ||\n this.globalData.currentGlobalAlpha === 0\n )\n ) {\n renderer.save()\n elems = currentStyle.elements\n if (type === 'st' || type === 'gs') {\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd\n ctx.lineWidth = currentStyle.wi\n ctx.lineCap = currentStyle.lc\n ctx.lineJoin = currentStyle.lj\n ctx.miterLimit = currentStyle.ml || 0\n } else {\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd\n }\n renderer.ctxOpacity(currentStyle.coOp)\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath()\n }\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props)\n jLen = elems.length\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath()\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da)\n ctx.lineDashOffset = currentStyle.do\n }\n }\n nodes = elems[j].trNodes\n kLen = nodes.length\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1])\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(\n nodes[k].pts[0],\n nodes[k].pts[1],\n nodes[k].pts[2],\n nodes[k].pts[3],\n nodes[k].pts[4],\n nodes[k].pts[5],\n )\n } else {\n ctx.closePath()\n }\n }\n if (type === 'st' || type === 'gs') {\n ctx.stroke()\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter)\n }\n }\n }\n if (type !== 'st' && type !== 'gs') {\n ctx.fill(currentStyle.r)\n }\n renderer.restore()\n }\n }\n }\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i\n var len = items.length - 1\n var groupTransform\n groupTransform = parentTransform\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform\n this.renderShapeTransform(parentTransform, groupTransform)\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i])\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform)\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform)\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform)\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it)\n } else if (items[i].ty === 'tm') {\n //\n }\n }\n if (isMain) {\n this.drawLayer()\n }\n }\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes\n var paths = shape.paths\n var i\n var len\n var j\n var jLen = paths._length\n shapeNodes.length = 0\n var groupTransformMat = styledShape.transforms.finalTransform\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j]\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n })\n }\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\n })\n }\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n })\n }\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\n })\n shapeNodes.push({\n t: 'z',\n })\n }\n }\n }\n styledShape.trNodes = shapeNodes\n }\n }\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i\n var len = itemData.styledShapes.length\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh)\n }\n }\n }\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co =\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity\n }\n }\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style\n var grd\n if (\n !styleElem.grd ||\n itemData.g._mdf ||\n itemData.s._mdf ||\n itemData.e._mdf ||\n (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))\n ) {\n var ctx = this.globalData.canvasContext\n var pt1 = itemData.s.v\n var pt2 = itemData.e.v\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1])\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2))\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0])\n\n var percent = itemData.h.v\n if (percent >= 1) {\n percent = 0.99\n } else if (percent <= -1) {\n percent = -0.99\n }\n var dist = rad * percent\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad)\n }\n\n var i\n var len = styleData.g.p\n var cValues = itemData.g.c\n var opacity = 1\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1]\n }\n grd.addColorStop(\n cValues[i * 4] / 100,\n 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')',\n )\n }\n styleElem.grd = grd\n }\n styleElem.coOp = itemData.o.v * groupTransform.opacity\n }\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style\n var d = itemData.d\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray\n styleElem.do = d.dashoffset[0]\n }\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co =\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity\n }\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v\n }\n }\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null\n this.globalData = null\n this.canvasContext = null\n this.stylesList.length = 0\n this.itemsData.length = 0\n }\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = []\n this.yOffset = 0\n this.fillColorAnim = false\n this.strokeColorAnim = false\n this.strokeWidthAnim = false\n this.stroke = false\n this.fill = false\n this.justifyOffset = 0\n this.currentRender = null\n this.renderType = 'canvas'\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: '',\n }\n this.initElement(data, globalData, comp)\n }\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement],\n CVTextElement,\n )\n\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d')\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0)\n\n var hasFill = false\n if (documentData.fc) {\n hasFill = true\n this.values.fill = this.buildColor(documentData.fc)\n } else {\n this.values.fill = 'rgba(0,0,0,0)'\n }\n this.fill = hasFill\n var hasStroke = false\n if (documentData.sc) {\n hasStroke = true\n this.values.stroke = this.buildColor(documentData.sc)\n this.values.sWidth = documentData.sw\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f)\n var i\n var len\n var letters = documentData.l\n var matrixHelper = this.mHelper\n this.stroke = hasStroke\n this.values.fValue =\n documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily\n len = documentData.finalText.length\n // this.tHelper.font = this.values.fValue;\n var charData\n var shapeData\n var k\n var kLen\n var shapes\n var j\n var jLen\n var pathNodes\n var commands\n var pathArr\n var singleShape = this.data.singleShape\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize\n var xPos = 0\n var yPos = 0\n var firstLine = true\n var cnt = 0\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(\n documentData.finalText[i],\n fontData.fStyle,\n this.globalData.fontManager.getFontByName(documentData.f).fFamily,\n )\n shapeData = (charData && charData.data) || {}\n matrixHelper.reset()\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset\n yPos += documentData.yOffset\n yPos += firstLine ? 1 : 0\n firstLine = false\n }\n shapes = shapeData.shapes ? shapeData.shapes[0].it : []\n jLen = shapes.length\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100)\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos)\n }\n commands = createSizedArray(jLen - 1)\n var commandsCounter = 0\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length\n pathNodes = shapes[j].ks.k\n pathArr = []\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(\n matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n )\n }\n pathArr.push(\n matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0),\n matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0),\n matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0),\n matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0),\n )\n }\n pathArr.push(\n matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0),\n matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0),\n matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n )\n commands[commandsCounter] = pathArr\n commandsCounter += 1\n }\n }\n if (singleShape) {\n xPos += letters[i].l\n xPos += trackingOffset\n }\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands\n } else {\n this.textSpans[cnt] = { elem: commands }\n }\n cnt += 1\n }\n }\n\n CVTextElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext\n ctx.font = this.values.fValue\n ctx.lineCap = 'butt'\n ctx.lineJoin = 'miter'\n ctx.miterLimit = 4\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag)\n }\n\n var i\n var len\n var j\n var jLen\n var k\n var kLen\n var renderedLetters = this.textAnimator.renderedLetters\n\n var letters = this.textProperty.currentData.l\n\n len = letters.length\n var renderedLetter\n var lastFill = null\n var lastStroke = null\n var lastStrokeW = null\n var commands\n var pathArr\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i]\n if (renderedLetter) {\n this.globalData.renderer.save()\n this.globalData.renderer.ctxTransform(renderedLetter.p)\n this.globalData.renderer.ctxOpacity(renderedLetter.o)\n }\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n lastFill = renderedLetter.fc\n ctx.fillStyle = renderedLetter.fc\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill\n ctx.fillStyle = this.values.fill\n }\n commands = this.textSpans[i].elem\n jLen = commands.length\n this.globalData.canvasContext.beginPath()\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j]\n kLen = pathArr.length\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1])\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(\n pathArr[k],\n pathArr[k + 1],\n pathArr[k + 2],\n pathArr[k + 3],\n pathArr[k + 4],\n pathArr[k + 5],\n )\n }\n }\n this.globalData.canvasContext.closePath()\n this.globalData.canvasContext.fill()\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw\n ctx.lineWidth = renderedLetter.sw\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth\n ctx.lineWidth = this.values.sWidth\n }\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc\n ctx.strokeStyle = renderedLetter.sc\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke\n ctx.strokeStyle = this.values.stroke\n }\n commands = this.textSpans[i].elem\n jLen = commands.length\n this.globalData.canvasContext.beginPath()\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j]\n kLen = pathArr.length\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1])\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(\n pathArr[k],\n pathArr[k + 1],\n pathArr[k + 2],\n pathArr[k + 3],\n pathArr[k + 4],\n pathArr[k + 5],\n )\n }\n }\n this.globalData.canvasContext.closePath()\n this.globalData.canvasContext.stroke()\n /// ctx.strokeText(letters[i].val,0,0);\n }\n if (renderedLetter) {\n this.globalData.renderer.restore()\n }\n }\n }\n }\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId)\n this.img = globalData.imageLoader.getAsset(this.assetData)\n this.initElement(data, globalData, comp)\n }\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement],\n CVImageElement,\n )\n\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas')\n canvas.width = this.assetData.w\n canvas.height = this.assetData.h\n var ctx = canvas.getContext('2d')\n\n var imgW = this.img.width\n var imgH = this.img.height\n var imgRel = imgW / imgH\n var canvasRel = this.assetData.w / this.assetData.h\n var widthCrop\n var heightCrop\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\n heightCrop = imgH\n widthCrop = heightCrop * canvasRel\n } else {\n widthCrop = imgW\n heightCrop = widthCrop / canvasRel\n }\n ctx.drawImage(\n this.img,\n (imgW - widthCrop) / 2,\n (imgH - heightCrop) / 2,\n widthCrop,\n heightCrop,\n 0,\n 0,\n this.assetData.w,\n this.assetData.h,\n )\n this.img = canvas\n }\n }\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0)\n }\n\n CVImageElement.prototype.destroy = function () {\n this.img = null\n }\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp)\n }\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement],\n CVSolidElement,\n )\n\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame\n\n CVSolidElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext\n ctx.fillStyle = this.data.sc\n ctx.fillRect(0, 0, this.data.sw, this.data.sh)\n //\n }\n\n function CanvasRendererBase(animationItem, config) {\n this.animationItem = animationItem\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: (config && config.context) || null,\n progressiveLoad: (config && config.progressiveLoad) || false,\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\n contentVisibility: (config && config.contentVisibility) || 'visible',\n className: (config && config.className) || '',\n id: (config && config.id) || '',\n }\n this.renderConfig.dpr = (config && config.dpr) || 1\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1\n }\n this.renderedFrame = -1\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1,\n }\n this.contextData = new CVContextData()\n this.elements = []\n this.pendingElements = []\n this.transformMat = new Matrix()\n this.completeLayers = false\n this.rendererType = 'canvas'\n }\n extendPrototype([BaseRenderer], CanvasRendererBase)\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return\n }\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13])\n return\n }\n this.transformMat.cloneFromProps(props)\n var cProps = this.contextData.cTr.props\n this.transformMat.transform(\n cProps[0],\n cProps[1],\n cProps[2],\n cProps[3],\n cProps[4],\n cProps[5],\n cProps[6],\n cProps[7],\n cProps[8],\n cProps[9],\n cProps[10],\n cProps[11],\n cProps[12],\n cProps[13],\n cProps[14],\n cProps[15],\n )\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]);\n this.contextData.cTr.cloneFromProps(this.transformMat.props)\n var trProps = this.contextData.cTr.props\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13])\n }\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n /* if(op === 1){\n return;\n } */\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op\n this.globalData.currentGlobalAlpha = this.contextData.cO\n return\n }\n this.contextData.cO *= op < 0 ? 0 : op\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\n this.canvasContext.globalAlpha = this.contextData.cO\n this.globalData.currentGlobalAlpha = this.contextData.cO\n }\n }\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore()\n return\n }\n this.contextData.reset()\n }\n\n CanvasRendererBase.prototype.save = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.save()\n return\n }\n if (actionFlag) {\n this.canvasContext.save()\n }\n var props = this.contextData.cTr.props\n if (this.contextData._length <= this.contextData.cArrPos) {\n this.contextData.duplicate()\n }\n var i\n var arr = this.contextData.saved[this.contextData.cArrPos]\n for (i = 0; i < 16; i += 1) {\n arr[i] = props[i]\n }\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO\n this.contextData.cArrPos += 1\n }\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore()\n return\n }\n if (actionFlag) {\n this.canvasContext.restore()\n this.globalData.blendMode = 'source-over'\n }\n this.contextData.cArrPos -= 1\n var popped = this.contextData.saved[this.contextData.cArrPos]\n var i\n var arr = this.contextData.cTr.props\n for (i = 0; i < 16; i += 1) {\n arr[i] = popped[i]\n }\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13])\n popped = this.contextData.savedOp[this.contextData.cArrPos]\n this.contextData.cO = popped\n if (this.globalData.currentGlobalAlpha !== popped) {\n this.canvasContext.globalAlpha = popped\n this.globalData.currentGlobalAlpha = popped\n }\n }\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas')\n var containerStyle = this.animationItem.container.style\n containerStyle.width = '100%'\n containerStyle.height = '100%'\n var origin = '0px 0px 0px'\n containerStyle.transformOrigin = origin\n containerStyle.mozTransformOrigin = origin\n containerStyle.webkitTransformOrigin = origin\n containerStyle['-webkit-transform'] = origin\n containerStyle.contentVisibility = this.renderConfig.contentVisibility\n this.animationItem.wrapper.appendChild(this.animationItem.container)\n this.canvasContext = this.animationItem.container.getContext('2d')\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className)\n }\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id)\n }\n } else {\n this.canvasContext = this.renderConfig.context\n }\n this.data = animData\n this.layers = animData.layers\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0,\n }\n this.setupGlobalData(animData, document.body)\n this.globalData.canvasContext = this.canvasContext\n this.globalData.renderer = this\n this.globalData.isDashed = false\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad\n this.globalData.transformCanvas = this.transformCanvas\n this.elements = createSizedArray(animData.layers.length)\n\n this.updateContainerSize()\n }\n\n CanvasRendererBase.prototype.updateContainerSize = function () {\n this.reset()\n var elementWidth\n var elementHeight\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth\n elementHeight = this.animationItem.wrapper.offsetHeight\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr)\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr)\n } else {\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr\n }\n var elementRel\n var animationRel\n if (\n this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 ||\n this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1\n ) {\n var par = this.renderConfig.preserveAspectRatio.split(' ')\n var fillType = par[1] || 'meet'\n var pos = par[0] || 'xMidYMid'\n var xPos = pos.substr(0, 4)\n var yPos = pos.substr(4)\n elementRel = elementWidth / elementHeight\n animationRel = this.transformCanvas.w / this.transformCanvas.h\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr)\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr)\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr)\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr)\n }\n\n if (\n xPos === 'xMid' &&\n ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.tx =\n ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) *\n this.renderConfig.dpr\n } else if (\n xPos === 'xMax' &&\n ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.tx =\n (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr\n } else {\n this.transformCanvas.tx = 0\n }\n if (\n yPos === 'YMid' &&\n ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.ty =\n ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) *\n this.renderConfig.dpr\n } else if (\n yPos === 'YMax' &&\n ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.ty =\n (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr\n } else {\n this.transformCanvas.ty = 0\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr)\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr)\n this.transformCanvas.tx = 0\n this.transformCanvas.ty = 0\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr\n this.transformCanvas.sy = this.renderConfig.dpr\n this.transformCanvas.tx = 0\n this.transformCanvas.ty = 0\n }\n this.transformCanvas.props = [\n this.transformCanvas.sx,\n 0,\n 0,\n 0,\n 0,\n this.transformCanvas.sy,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n this.transformCanvas.tx,\n this.transformCanvas.ty,\n 0,\n 1,\n ]\n /* var i, len = this.elements.length;\n for(i=0;i<len;i+=1){\n if(this.elements[i] && this.elements[i].data.ty === 0){\n this.elements[i].resize(this.globalData.transformCanvas);\n }\n } */\n this.ctxTransform(this.transformCanvas.props)\n this.canvasContext.beginPath()\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h)\n this.canvasContext.closePath()\n this.canvasContext.clip()\n\n this.renderFrame(this.renderedFrame, true)\n }\n\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = ''\n }\n var i\n var len = this.layers ? this.layers.length : 0\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n this.elements.length = 0\n this.globalData.canvasContext = null\n this.animationItem.container = null\n this.destroyed = true\n }\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (\n (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) ||\n this.destroyed ||\n num === -1\n ) {\n return\n }\n this.renderedFrame = num\n this.globalData.frameNum = num - this.animationItem._isFirstFrame\n this.globalData.frameId += 1\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender\n this.globalData.projectInterface.currentFrame = num\n\n // console.log('--------');\n // console.log('NEW: ',num);\n var i\n var len = this.layers.length\n if (!this.completeLayers) {\n this.checkLayers(num)\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st)\n }\n }\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h)\n } else {\n this.save()\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n if (this.renderConfig.clearCanvas !== true) {\n this.restore()\n }\n }\n }\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements\n if (elements[pos] || this.layers[pos].ty === 99) {\n return\n }\n var element = this.createItem(this.layers[pos], this, this.globalData)\n elements[pos] = element\n element.initExpressions()\n /* if(this.layers[pos].ty === 0){\n element.resize(this.globalData.transformCanvas);\n } */\n }\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop()\n element.checkParenting()\n }\n }\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none'\n }\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block'\n }\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false\n this.layers = data.layers\n this.pendingElements = []\n this.elements = createSizedArray(this.layers.length)\n this.initElement(data, globalData, comp)\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement)\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext\n ctx.beginPath()\n ctx.moveTo(0, 0)\n ctx.lineTo(this.data.w, 0)\n ctx.lineTo(this.data.w, this.data.h)\n ctx.lineTo(0, this.data.h)\n ctx.lineTo(0, 0)\n ctx.clip()\n var i\n var len = this.layers.length\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n }\n\n CVCompElement.prototype.destroy = function () {\n var i\n var len = this.layers.length\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n this.layers = null\n this.elements = null\n }\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this)\n }\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: (config && config.context) || null,\n progressiveLoad: (config && config.progressiveLoad) || false,\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\n contentVisibility: (config && config.contentVisibility) || 'visible',\n className: (config && config.className) || '',\n id: (config && config.id) || '',\n }\n this.renderConfig.dpr = (config && config.dpr) || 1\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1\n }\n this.renderedFrame = -1\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1,\n }\n this.contextData = new CVContextData()\n this.elements = []\n this.pendingElements = []\n this.transformMat = new Matrix()\n this.completeLayers = false\n this.rendererType = 'canvas'\n }\n extendPrototype([CanvasRendererBase], CanvasRenderer)\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this)\n }\n\n // Registering renderers\n registerRenderer('canvas', CanvasRenderer)\n\n // Registering shape modifiers\n ShapeModifiers.registerModifier('tm', TrimModifier)\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier)\n ShapeModifiers.registerModifier('rp', RepeaterModifier)\n ShapeModifiers.registerModifier('rd', RoundCornersModifier)\n\n const Expressions = (function () {\n var ob = {}\n ob.initExpressions = initExpressions\n\n function initExpressions(animation) {\n var stackCount = 0\n var registers = []\n\n function pushExpression() {\n stackCount += 1\n }\n\n function popExpression() {\n stackCount -= 1\n if (stackCount === 0) {\n releaseInstances()\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression)\n }\n }\n\n function releaseInstances() {\n var i\n var len = registers.length\n for (i = 0; i < len; i += 1) {\n registers[i].release()\n }\n registers.length = 0\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer)\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer)\n animation.renderer.globalData.pushExpression = pushExpression\n animation.renderer.globalData.popExpression = popExpression\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty\n }\n return ob\n })()\n\n /* eslint-disable */\n /*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\n\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto // node.js crypto module, initialized at the bottom.\n\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n function seedrandom(seed, options, callback) {\n var key = []\n options = options === true ? { entropy: true } : options || {}\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(\n flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3),\n key,\n )\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key)\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function () {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0 // and no 'extra last byte'.\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width // shifting numerator and\n d *= width // denominator and generating a\n x = arc4.g(1) // new least-significant-byte.\n }\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2 // last byte, shift everything\n d /= 2 // right using integer math until\n x >>>= 1 // we have exactly the desired bits.\n }\n return (n + x) / d // Form the number within [0, 1).\n }\n\n prng.int32 = function () {\n return arc4.g(4) | 0\n }\n prng.quick = function () {\n return arc4.g(4) / 0x100000000\n }\n prng.double = prng\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool)\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (\n options.pass ||\n callback ||\n function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4)\n }\n // Only provide the .state method if requested via options.state.\n prng.state = function () {\n return copy(arc4, {})\n }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) {\n math[rngname] = prng\n return seed\n }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng\n }\n )(prng, shortseed, 'global' in options ? options.global : this == math, options.state)\n }\n math['seed' + rngname] = seedrandom\n\n //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = (me.i = me.j = 0),\n s = (me.S = [])\n\n // The empty key [] is treated as [0].\n if (!keylen) {\n key = [keylen++]\n }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++\n }\n for (i = 0; i < width; i++) {\n s[i] = s[(j = mask & (j + key[i % keylen] + (t = s[i])))]\n s[j] = t\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S\n while (count--) {\n t = s[(i = mask & (i + 1))]\n r = r * width + s[mask & ((s[i] = s[(j = mask & (j + t))]) + (s[j] = t))]\n }\n me.i = i\n me.j = j\n return r\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n }\n }\n\n //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n function copy(f, t) {\n t.i = f.i\n t.j = f.j\n t.S = f.S.slice()\n return t\n }\n\n //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n function flatten(obj, depth) {\n var result = [],\n typ = typeof obj,\n prop\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1))\n } catch (e) {}\n }\n }\n return result.length ? result : typ == 'string' ? obj : obj + '\\0'\n }\n\n //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0\n while (j < stringseed.length) {\n key[mask & j] = mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++))\n }\n return tostring(key)\n }\n\n //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width))\n }\n var out = new Uint8Array(width)\n ;(global.crypto || global.msCrypto).getRandomValues(out)\n return tostring(out)\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins\n return [+new Date(), global, plugins, global.screen, tostring(pool)]\n }\n }\n\n //\n // tostring()\n // Converts an array of charcodes to a string\n //\n function tostring(a) {\n return String.fromCharCode.apply(0, a)\n }\n\n //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n mixkey(math.random(), pool)\n\n //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n\n // End anonymous scope, and pass initial values.\n }\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath)\n }\n\n var propTypes = {\n SHAPE: 'shape',\n }\n\n /* eslint-disable camelcase */\n\n const ExpressionManager = (function () {\n 'use strict'\n\n var ob = {}\n var Math = BMMath\n var window = null\n var document = null\n var XMLHttpRequest = null\n var fetch = null\n var frames = null\n initialize$2(BMMath)\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number\n }\n\n function $bm_neg(a) {\n var tOfA = typeof a\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\n return -a\n }\n if ($bm_isInstanceOfArray(a)) {\n var i\n var lenA = a.length\n var retArr = []\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i]\n }\n return retArr\n }\n if (a.propType) {\n return a.v\n }\n return -a\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get\n\n function sum(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n if (tOfA === 'string' || tOfB === 'string') {\n return a + b\n }\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a + b\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0)\n a[0] += b\n return a\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0)\n b[0] = a + b[0]\n return b\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0\n var lenA = a.length\n var lenB = b.length\n var retArr = []\n while (i < lenA || i < lenB) {\n if (\n (typeof a[i] === 'number' || a[i] instanceof Number) &&\n (typeof b[i] === 'number' || b[i] instanceof Number)\n ) {\n retArr[i] = a[i] + b[i]\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]\n }\n i += 1\n }\n return retArr\n }\n return 0\n }\n var add = sum\n\n function sub(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10)\n }\n if (tOfB === 'string') {\n b = parseInt(b, 10)\n }\n return a - b\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0)\n a[0] -= b\n return a\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0)\n b[0] = a - b[0]\n return b\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0\n var lenA = a.length\n var lenB = b.length\n var retArr = []\n while (i < lenA || i < lenB) {\n if (\n (typeof a[i] === 'number' || a[i] instanceof Number) &&\n (typeof b[i] === 'number' || b[i] instanceof Number)\n ) {\n retArr[i] = a[i] - b[i]\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]\n }\n i += 1\n }\n return retArr\n }\n return 0\n }\n\n function mul(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n var arr\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b\n }\n\n var i\n var len\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b\n }\n return arr\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i]\n }\n return arr\n }\n return 0\n }\n\n function div(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n var arr\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b\n }\n var i\n var len\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b\n }\n return arr\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i]\n }\n return arr\n }\n return 0\n }\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10)\n }\n if (typeof b === 'string') {\n b = parseInt(b, 10)\n }\n return a % b\n }\n var $bm_sum = sum\n var $bm_sub = sub\n var $bm_mul = mul\n var $bm_div = div\n var $bm_mod = mod\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max\n max = min\n min = mm\n }\n return Math.min(Math.max(num, min), max)\n }\n\n function radiansToDegrees(val) {\n return val / degToRads\n }\n var radians_to_degrees = radiansToDegrees\n\n function degreesToRadians(val) {\n return val * degToRads\n }\n var degrees_to_radians = radiansToDegrees\n\n var helperLengthArray = [0, 0, 0, 0, 0, 0]\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0\n return Math.abs(arr1 - arr2)\n }\n if (!arr2) {\n arr2 = helperLengthArray\n }\n var i\n var len = Math.min(arr1.length, arr2.length)\n var addedLength = 0\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2)\n }\n return Math.sqrt(addedLength)\n }\n\n function normalize(vec) {\n return div(vec, length(vec))\n }\n\n function rgbToHsl(val) {\n var r = val[0]\n var g = val[1]\n var b = val[2]\n var max = Math.max(r, g, b)\n var min = Math.min(r, g, b)\n var h\n var s\n var l = (max + min) / 2\n\n if (max === min) {\n h = 0 // achromatic\n s = 0 // achromatic\n } else {\n var d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0)\n break\n case g:\n h = (b - r) / d + 2\n break\n case b:\n h = (r - g) / d + 4\n break\n default:\n break\n }\n h /= 6\n }\n\n return [h, s, l, val[3]]\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1\n if (t > 1) t -= 1\n if (t < 1 / 6) return p + (q - p) * 6 * t\n if (t < 1 / 2) return q\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n return p\n }\n\n function hslToRgb(val) {\n var h = val[0]\n var s = val[1]\n var l = val[2]\n\n var r\n var g\n var b\n\n if (s === 0) {\n r = l // achromatic\n b = l // achromatic\n g = l // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s\n var p = 2 * l - q\n r = hue2rgb(p, q, h + 1 / 3)\n g = hue2rgb(p, q, h)\n b = hue2rgb(p, q, h - 1 / 3)\n }\n\n return [r, g, b, val[3]]\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin\n value2 = tMax\n tMin = 0\n tMax = 1\n }\n if (tMax < tMin) {\n var _tMin = tMax\n tMax = tMin\n tMin = _tMin\n }\n if (t <= tMin) {\n return value1\n }\n if (t >= tMax) {\n return value2\n }\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin)\n if (!value1.length) {\n return value1 + (value2 - value1) * perc\n }\n var i\n var len = value1.length\n var arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc\n }\n return arr\n }\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0\n max = 1\n } else {\n max = min\n min = undefined\n }\n }\n if (max.length) {\n var i\n var len = max.length\n if (!min) {\n min = createTypedArray('float32', len)\n }\n var arr = createTypedArray('float32', len)\n var rnd = BMMath.random()\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i])\n }\n return arr\n }\n if (min === undefined) {\n min = 0\n }\n var rndm = BMMath.random()\n return min + rndm * (max - min)\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i\n var len = points.length\n var path = shapePool.newElement()\n path.setPathData(!!closed, len)\n var arrPlaceholder = [0, 0]\n var inVertexPoint\n var outVertexPoint\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder\n path.setTripleAt(\n points[i][0],\n points[i][1],\n outVertexPoint[0] + points[i][0],\n outVertexPoint[1] + points[i][1],\n inVertexPoint[0] + points[i][0],\n inVertexPoint[1] + points[i][1],\n i,\n true,\n )\n }\n return path\n }\n\n function initiateExpression(elem, data, property) {\n var val = data.x\n var needsVelocity = /velocity(?![\\w\\d])/.test(val)\n var _needsRandom = val.indexOf('random') !== -1\n var elemType = elem.data.ty\n var transform\n var $bm_transform\n var content\n var effect\n var thisProperty = property\n thisProperty.valueAtTime = thisProperty.getValueAtTime\n Object.defineProperty(thisProperty, 'value', {\n get: function () {\n return thisProperty.v\n },\n })\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate\n elem.comp.displayStartTime = 0\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate\n var outPoint = elem.data.op / elem.comp.globalData.frameRate\n var width = elem.data.sw ? elem.data.sw : 0\n var height = elem.data.sh ? elem.data.sh : 0\n var name = elem.data.nm\n var loopIn\n var loop_in\n var loopOut\n var loop_out\n var smooth\n var toWorld\n var fromWorld\n var fromComp\n var toComp\n var fromCompToSurface\n var position\n var rotation\n var anchorPoint\n var scale\n var thisLayer\n var thisComp\n var mask\n var valueAtTime\n var velocityAtTime\n\n var scoped_bm_rt\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0] // eslint-disable-line no-eval\n var numKeys = property.kf ? data.k.length : 0\n\n var active = !this.data || this.data.hd !== true\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle\n var j\n var lenWiggle = this.pv.length ? this.pv.length : 1\n var addedAmps = createTypedArray('float32', lenWiggle)\n freq = 5\n var iterations = Math.floor(time * freq)\n iWiggle = 0\n j = 0\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random()\n // addedAmps[j] += -amp + amp*2*rnd;\n }\n iWiggle += 1\n }\n // var rnd2 = BMMath.random();\n var periods = time * freq\n var perc = periods - Math.floor(periods)\n var arr = createTypedArray('float32', lenWiggle)\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n return arr\n }\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc\n }.bind(this)\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty)\n loop_in = loopIn\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty)\n loop_out = loopOut\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty)\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true)\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true)\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this)\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this)\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface)\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]]\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads\n return [yaw, pitch, 0]\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2)\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2)\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2)\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin\n val2 = tMax\n } else {\n t = (t - tMin) / (tMax - tMin)\n }\n if (t > 1) {\n t = 1\n } else if (t < 0) {\n t = 0\n }\n var mult = fn(t)\n if ($bm_isInstanceOfArray(val1)) {\n var iKey\n var lenKey = val1.length\n var arr = createTypedArray('float32', lenKey)\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey]\n }\n return arr\n }\n return (val2 - val1) * mult + val1\n }\n\n function nearestKey(time) {\n var iKey\n var lenKey = data.k.length\n var index\n var keyTime\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0\n keyTime = 0\n } else {\n index = -1\n time *= elem.comp.globalData.frameRate\n if (time < data.k[0].t) {\n index = 1\n keyTime = data.k[0].t\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1\n keyTime = data.k[iKey].t\n break\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2\n keyTime = data.k[iKey + 1].t\n } else {\n index = iKey + 1\n keyTime = data.k[iKey].t\n }\n break\n }\n }\n if (index === -1) {\n index = iKey + 1\n keyTime = data.k[iKey].t\n }\n }\n }\n var obKey = {}\n obKey.index = index\n obKey.time = keyTime / elem.comp.globalData.frameRate\n return obKey\n }\n\n function key(ind) {\n var obKey\n var iKey\n var lenKey\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind)\n }\n ind -= 1\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: [],\n }\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e\n\n lenKey = arr.length\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey]\n obKey.value[iKey] = arr[iKey]\n }\n return obKey\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate\n }\n return fr / fps\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time\n }\n if (!fps) {\n fps = elem.comp.globalData.frameRate\n }\n return t * fps\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed)\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime()\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init)\n }\n return value.substring(init, end)\n }\n return ''\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init)\n }\n return value.substr(init, end)\n }\n return ''\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond\n value = valueAtTime(time)\n }\n\n var time\n var velocity\n var value\n var text\n var textIndex\n var textTotal\n var selectorValue\n var index = elem.data.ind\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length)\n var parent\n var randSeed = Math.floor(Math.random() * 1000000)\n var globalData = elem.globalData\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value\n }\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex\n textTotal = this.textTotal\n selectorValue = this.selectorValue\n }\n if (!thisLayer) {\n text = elem.layerInterface.text\n thisLayer = elem.layerInterface\n thisComp = elem.comp.compInterface\n toWorld = thisLayer.toWorld.bind(thisLayer)\n fromWorld = thisLayer.fromWorld.bind(thisLayer)\n fromComp = thisLayer.fromComp.bind(thisLayer)\n toComp = thisLayer.toComp.bind(thisLayer)\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null\n fromCompToSurface = fromComp\n }\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group')\n $bm_transform = transform\n if (transform) {\n anchorPoint = transform.anchorPoint\n /* position = transform.position;\n rotation = transform.rotation;\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group')\n }\n if (!effect) {\n effect = thisLayer(4)\n }\n hasParent = !!(elem.hierarchy && elem.hierarchy.length)\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface\n }\n time = this.comp.renderedFrame / this.comp.globalData.frameRate\n if (_needsRandom) {\n seedRandom(randSeed + time)\n }\n if (needsVelocity) {\n velocity = velocityAtTime(time)\n }\n expression_function()\n this.frameExpressionId = elem.globalData.frameId\n\n // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt\n return scoped_bm_rt\n }\n // Bundlers will see these as dead code and unless we reference them\n executeExpression.__preventDeadCodeRemoval = [\n $bm_transform,\n anchorPoint,\n time,\n velocity,\n inPoint,\n outPoint,\n width,\n height,\n name,\n loop_in,\n loop_out,\n smooth,\n toComp,\n fromCompToSurface,\n toWorld,\n fromWorld,\n mask,\n position,\n rotation,\n scale,\n thisComp,\n numKeys,\n active,\n wiggle,\n loopInDuration,\n loopOutDuration,\n comp,\n lookAt,\n easeOut,\n easeIn,\n ease,\n nearestKey,\n key,\n text,\n textIndex,\n textTotal,\n selectorValue,\n framesToTime,\n timeToFrames,\n sourceRectAtTime,\n substring,\n substr,\n posterizeTime,\n index,\n globalData,\n ]\n return executeExpression\n }\n\n ob.initiateExpression = initiateExpression\n ob.__preventDeadCodeRemoval = [\n window,\n document,\n XMLHttpRequest,\n fetch,\n frames,\n $bm_neg,\n add,\n $bm_sum,\n $bm_sub,\n $bm_mul,\n $bm_div,\n $bm_mod,\n clamp,\n radians_to_degrees,\n degreesToRadians,\n degrees_to_radians,\n normalize,\n rgbToHsl,\n hslToRgb,\n linear,\n random,\n createPath,\n ]\n return ob\n })()\n\n const expressionHelpers = (function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true\n prop.x = true\n prop.initiateExpression = ExpressionManager.initiateExpression\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop))\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate\n frameNum -= this.offsetTime\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime)\n this._cachingAtTime.lastFrame = frameNum\n }\n return this._cachingAtTime.value\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01\n var v1 = this.getValueAtTime(frameNum)\n var v2 = this.getValueAtTime(frameNum + delta)\n var speed = 0\n if (v1.length) {\n var i\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2)\n }\n speed = Math.sqrt(speed) * 100\n } else {\n speed = 0\n }\n return speed\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel\n }\n var delta = -0.001\n // frameNum += this.elem.data.st;\n var v1 = this.getValueAtTime(frameNum)\n var v2 = this.getValueAtTime(frameNum + delta)\n var velocity\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length)\n var i\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta\n }\n } else {\n velocity = (v2 - v1) / delta\n }\n return velocity\n }\n\n function getStaticValueAtTime() {\n return this.pv\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty,\n }\n })()\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv\n }\n type = type ? type.toLowerCase() : ''\n var currentFrame = this.comp.renderedFrame\n var keyframes = this.keyframes\n var lastKeyFrame = keyframes[keyframes.length - 1].t\n if (currentFrame <= lastKeyFrame) {\n return this.pv\n }\n var cycleDuration\n var firstKeyFrame\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1\n }\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t\n cycleDuration = lastKeyFrame - firstKeyFrame\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip)\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration)\n }\n firstKeyFrame = lastKeyFrame - cycleDuration\n }\n var i\n var len\n var ret\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration)\n if (iterations % 2 !== 0) {\n return this.getValueAtTime(\n (cycleDuration - ((currentFrame - firstKeyFrame) % cycleDuration) + firstKeyFrame) /\n this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0)\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0)\n var current = this.getValueAtTime(\n (((currentFrame - firstKeyFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration)\n if (this.pv.length) {\n ret = new Array(initV.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i]\n }\n return ret\n }\n return (endV - initV) * repeats + current\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0)\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0)\n if (this.pv.length) {\n ret = new Array(lastValue.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] =\n lastValue[i] +\n ((lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate)) /\n 0.0005 // eslint-disable-line\n }\n return ret\n }\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001)\n }\n return this.getValueAtTime(\n (((currentFrame - firstKeyFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv\n }\n type = type ? type.toLowerCase() : ''\n var currentFrame = this.comp.renderedFrame\n var keyframes = this.keyframes\n var firstKeyFrame = keyframes[0].t\n if (currentFrame >= firstKeyFrame) {\n return this.pv\n }\n var cycleDuration\n var lastKeyFrame\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1\n }\n lastKeyFrame = keyframes[duration].t\n cycleDuration = lastKeyFrame - firstKeyFrame\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame)\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration)\n }\n lastKeyFrame = firstKeyFrame + cycleDuration\n }\n var i\n var len\n var ret\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration)\n if (iterations % 2 === 0) {\n return this.getValueAtTime(\n (((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0)\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0)\n var current = this.getValueAtTime(\n (cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) /\n this.comp.globalData.frameRate,\n 0,\n )\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1\n if (this.pv.length) {\n ret = new Array(initV.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats\n }\n return ret\n }\n return current - (endV - initV) * repeats\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0)\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0)\n if (this.pv.length) {\n ret = new Array(firstValue.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001\n }\n return ret\n }\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001\n }\n return this.getValueAtTime(\n (cycleDuration - (((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame)) /\n this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv\n }\n width = (width || 0.4) * 0.5\n samples = Math.floor(samples || 5)\n if (samples <= 1) {\n return this.pv\n }\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate\n var initFrame = currentTime - width\n var endFrame = currentTime + width\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1\n var i = 0\n var j = 0\n var value\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length)\n } else {\n value = 0\n }\n var sampleValue\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency)\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j]\n }\n } else {\n value += sampleValue\n }\n i += 1\n }\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples\n }\n } else {\n value /= samples\n }\n return value\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix(),\n }\n }\n /// /\n var matrix = this._transformCachingAtTime.v\n matrix.cloneFromProps(this.pre.props)\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time)\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult)\n }\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time)\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult)\n }\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time)\n var skewAxis = this.sa.getValueAtTime(time)\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult)\n }\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time)\n matrix.rotate(-rotation * this.r.mult)\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time)\n var rotationY = this.ry.getValueAtTime(time)\n var rotationX = this.rx.getValueAtTime(time)\n var orientation = this.or.getValueAtTime(time)\n matrix\n .rotateZ(-rotationZ * this.rz.mult)\n .rotateY(rotationY * this.ry.mult)\n .rotateX(rotationX * this.rx.mult)\n .rotateZ(-orientation[2] * this.or.mult)\n .rotateY(orientation[1] * this.or.mult)\n .rotateX(orientation[0] * this.or.mult)\n }\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time)\n var positionY = this.py.getValueAtTime(time)\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time)\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult)\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0)\n }\n } else {\n var position = this.p.getValueAtTime(time)\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult)\n }\n return matrix\n /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix())\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container)\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop)\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop)\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty\n return prop\n }\n\n var propertyGetProp = PropertyFactory.getProp\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container)\n // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop)\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop)\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty\n prop.loopOut = loopOut\n prop.loopIn = loopIn\n prop.smooth = smooth\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop)\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop)\n prop.numKeys = data.a === 1 ? data.k.length : 0\n prop.propertyIndex = data.ix\n var value = 0\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length)\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value,\n }\n expressionHelpers.searchExpressions(elem, data, prop)\n if (prop.k) {\n container.addDynamicProperty(prop)\n }\n\n return prop\n }\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame,\n }\n }\n\n frameNum *= this.elem.globalData.frameRate\n frameNum -= this.offsetTime\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0\n this._cachingAtTime.lastTime = frameNum\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime)\n }\n return this._cachingAtTime.shapeValue\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction()\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction()\n\n function ShapeExpressions() {}\n ShapeExpressions.prototype = {\n vertices: function (prop, time) {\n if (this.k) {\n this.getValue()\n }\n var shapePath = this.v\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0)\n }\n var i\n var len = shapePath._length\n var vertices = shapePath[prop]\n var points = shapePath.v\n var arr = createSizedArray(len)\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]]\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]]\n }\n }\n return arr\n },\n points: function (time) {\n return this.vertices('v', time)\n },\n inTangents: function (time) {\n return this.vertices('i', time)\n },\n outTangents: function (time) {\n return this.vertices('o', time)\n },\n isClosed: function () {\n return this.v.c\n },\n pointOnPath: function (perc, time) {\n var shapePath = this.v\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0)\n }\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath)\n }\n\n var segmentsLength = this._segmentsLength\n var lengths = segmentsLength.lengths\n var lengthPos = segmentsLength.totalLength * perc\n var i = 0\n var len = lengths.length\n var accumulatedLength = 0\n var pt\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength\n pt = bez.getPointInSegment(\n shapePath.v[initIndex],\n shapePath.v[endIndex],\n shapePath.o[initIndex],\n shapePath.i[endIndex],\n segmentPerc,\n lengths[i],\n )\n break\n } else {\n accumulatedLength += lengths[i].addedLength\n }\n i += 1\n }\n if (!pt) {\n pt = shapePath.c\n ? [shapePath.v[0][0], shapePath.v[0][1]]\n : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]]\n }\n return pt\n },\n vectorOnPath: function (perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999\n }\n var pt1 = this.pointOnPath(perc, time)\n var pt2 = this.pointOnPath(perc + 0.001, time)\n var xLength = pt2[0] - pt1[0]\n var yLength = pt2[1] - pt1[1]\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2))\n if (magnitude === 0) {\n return [0, 0]\n }\n var unitVector =\n vectorType === 'tangent'\n ? [xLength / magnitude, yLength / magnitude]\n : [-yLength / magnitude, xLength / magnitude]\n return unitVector\n },\n tangentOnPath: function (perc, time) {\n return this.vectorOnPath(perc, time, 'tangent')\n },\n normalOnPath: function (perc, time) {\n return this.vectorOnPath(perc, time, 'normal')\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\n }\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction)\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction)\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression\n\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims)\n prop.propertyIndex = data.ix\n prop.lock = false\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop)\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop)\n }\n if (prop.k) {\n elem.addDynamicProperty(prop)\n }\n return prop\n }\n }\n\n function initialize$1() {\n addPropertyDecorator()\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this)\n this.addEffect(this.getExpressionValue.bind(this))\n return true\n }\n return null\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text)\n if (currentValue.t !== newValue) {\n var newData = {}\n this.copyData(newData, currentValue)\n newData.t = newValue.toString()\n newData.__complete = false\n return newData\n }\n return currentValue\n }\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes()\n var hasExpressions = this.searchExpressions()\n this.kf = isKeyframed || hasExpressions\n return this.kf\n }\n\n TextProperty.prototype.searchExpressions = searchExpressions\n }\n\n function initialize() {\n addDecorator()\n }\n\n // Registering expression plugin\n setExpressionsPlugin(Expressions)\n initialize$1()\n initialize()\n\n return lottie\n})()\n\nexport { lottie as default }\n"],"names":["value","val","data","comp","loadAnimation","ob","name","key","expressionsPlugin","index","searchAnimations","div","length","time","elem","scale","transform","width","text","sum","mask","property","toWorld","fromWorld","fromComp","i","len","content","globalData","position","prng","seed","t","j","s","BMMath","wiggle","velocity","loopOut","loopIn","smooth","rotation"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"lottie.cjs","sources":["../../src/libs/lottie.js"],"sourcesContent":["const lottie = /* @__PURE__ */ (() => {\n if (typeof navigator === 'undefined' || typeof document === 'undefined') return {}\n\n const svgNS = 'http://www.w3.org/2000/svg'\n\n let locationHref = ''\n let _useWebWorker = false\n\n const initialDefaultFrame = -999999\n\n const setWebWorker = (flag) => {\n _useWebWorker = !!flag\n }\n const getWebWorker = () => _useWebWorker\n\n const setLocationHref = (value) => {\n locationHref = value\n }\n const getLocationHref = () => locationHref\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type)\n }\n\n function extendPrototype(sources, destination) {\n var i\n var len = sources.length\n var sourcePrototype\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr))\n destination.prototype[attr] = sourcePrototype[attr]\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop)\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n ProxyFunction.prototype = prototype\n return ProxyFunction\n }\n\n // import Howl from '../../3rd_party/howler';\n\n const audioControllerFactory = (function () {\n function AudioController(audioFactory) {\n this.audios = []\n this.audioFactory = audioFactory\n this._volume = 1\n this._isMuted = false\n }\n\n AudioController.prototype = {\n addAudio: function (audio) {\n this.audios.push(audio)\n },\n pause: function () {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause()\n }\n },\n resume: function () {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume()\n }\n },\n setRate: function (rateValue) {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue)\n }\n },\n createAudio: function (assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath)\n }\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath],\n })\n }\n return {\n isPlaying: false,\n play: function () {\n this.isPlaying = true\n },\n seek: function () {\n this.isPlaying = false\n },\n playing: function () {},\n rate: function () {},\n setVolume: function () {},\n }\n },\n setAudioFactory: function (audioFactory) {\n this.audioFactory = audioFactory\n },\n setVolume: function (value) {\n this._volume = value\n this._updateVolume()\n },\n mute: function () {\n this._isMuted = true\n this._updateVolume()\n },\n unmute: function () {\n this._isMuted = false\n this._updateVolume()\n },\n getVolume: function () {\n return this._volume\n },\n _updateVolume: function () {\n var i\n var len = this.audios.length\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1))\n }\n },\n }\n\n return function () {\n return new AudioController()\n }\n })()\n\n const createTypedArray = (function () {\n function createRegularArray(type, len) {\n var i = 0\n var arr = []\n var value\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1\n break\n default:\n value = 1.1\n break\n }\n for (i = 0; i < len; i += 1) {\n arr.push(value)\n }\n return arr\n }\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len)\n }\n if (type === 'int16') {\n return new Int16Array(len)\n }\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len)\n }\n return createRegularArray(type, len)\n }\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory\n }\n return createRegularArray\n })()\n\n function createSizedArray(len) {\n return Array.apply(null, { length: len })\n }\n\n let subframeEnabled = true\n let expressionsPlugin = null\n let idPrefix$1 = ''\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n let _shouldRoundValues = false\n const bmPow = Math.pow\n const bmSqrt = Math.sqrt\n const bmFloor = Math.floor\n const bmMax = Math.max\n const bmMin = Math.min\n\n const BMMath = {}\n ;(function () {\n var propertyNames = [\n 'abs',\n 'acos',\n 'acosh',\n 'asin',\n 'asinh',\n 'atan',\n 'atanh',\n 'atan2',\n 'ceil',\n 'cbrt',\n 'expm1',\n 'clz32',\n 'cos',\n 'cosh',\n 'exp',\n 'floor',\n 'fround',\n 'hypot',\n 'imul',\n 'log',\n 'log1p',\n 'log2',\n 'log10',\n 'max',\n 'min',\n 'pow',\n 'random',\n 'round',\n 'sign',\n 'sin',\n 'sinh',\n 'sqrt',\n 'tan',\n 'tanh',\n 'trunc',\n 'E',\n 'LN10',\n 'LN2',\n 'LOG10E',\n 'LOG2E',\n 'PI',\n 'SQRT1_2',\n 'SQRT2',\n ]\n var i\n var len = propertyNames.length\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]]\n }\n })()\n\n function ProjectInterface$1() {\n return {}\n }\n BMMath.random = Math.random\n BMMath.abs = function (val) {\n var tOfVal = typeof val\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length)\n var i\n var len = val.length\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i])\n }\n return absArr\n }\n return Math.abs(val)\n }\n let defaultCurveSegments = 150\n const degToRads = Math.PI / 180\n const roundCorner = 0.5519\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value)\n }\n return value\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute'\n element.style.top = 0\n element.style.left = 0\n element.style.display = 'block'\n element.style.transformOrigin = '0 0'\n element.style.webkitTransformOrigin = '0 0'\n element.style.backfaceVisibility = 'visible'\n element.style.webkitBackfaceVisibility = 'visible'\n element.style.transformStyle = 'preserve-3d'\n element.style.webkitTransformStyle = 'preserve-3d'\n element.style.mozTransformStyle = 'preserve-3d'\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type\n this.currentTime = currentTime\n this.totalTime = totalTime\n this.direction = frameMultiplier < 0 ? -1 : 1\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type\n this.direction = frameMultiplier < 0 ? -1 : 1\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type\n this.currentLoop = currentLoop\n this.totalLoops = totalLoops\n this.direction = frameMultiplier < 0 ? -1 : 1\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type\n this.firstFrame = firstFrame\n this.totalFrames = totalFrames\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type\n this.target = target\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError'\n this.nativeError = nativeError\n this.currentTime = currentTime\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError'\n this.nativeError = nativeError\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type\n this.nativeError = nativeError\n }\n\n const createElementID = (function () {\n var _count = 0\n return function createID() {\n _count += 1\n return idPrefix$1 + '__lottie_element_' + _count\n }\n })()\n\n function HSVtoRGB(h, s, v) {\n var r\n var g\n var b\n var i\n var f\n var p\n var q\n var t\n i = Math.floor(h * 6)\n f = h * 6 - i\n p = v * (1 - s)\n q = v * (1 - f * s)\n t = v * (1 - (1 - f) * s)\n switch (i % 6) {\n case 0:\n r = v\n g = t\n b = p\n break\n case 1:\n r = q\n g = v\n b = p\n break\n case 2:\n r = p\n g = v\n b = t\n break\n case 3:\n r = p\n g = q\n b = v\n break\n case 4:\n r = t\n g = p\n b = v\n break\n case 5:\n r = v\n g = p\n b = q\n break\n default:\n break\n }\n return [r, g, b]\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b)\n var min = Math.min(r, g, b)\n var d = max - min\n var h\n var s = max === 0 ? 0 : d / max\n var v = max / 255\n\n switch (max) {\n case min:\n h = 0\n break\n case r:\n h = g - b + d * (g < b ? 6 : 0)\n h /= 6 * d\n break\n case g:\n h = b - r + d * 2\n h /= 6 * d\n break\n case b:\n h = r - g + d * 4\n h /= 6 * d\n break\n default:\n break\n }\n\n return [h, s, v]\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255)\n hsv[1] += offset\n if (hsv[1] > 1) {\n hsv[1] = 1\n } else if (hsv[1] <= 0) {\n hsv[1] = 0\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2])\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255)\n hsv[2] += offset\n if (hsv[2] > 1) {\n hsv[2] = 1\n } else if (hsv[2] < 0) {\n hsv[2] = 0\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2])\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255)\n hsv[0] += offset / 360\n if (hsv[0] > 1) {\n hsv[0] -= 1\n } else if (hsv[0] < 0) {\n hsv[0] += 1\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2])\n }\n\n const rgbToHex = (function () {\n var colorMap = []\n var i\n var hex\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16)\n colorMap[i] = hex.length === 1 ? '0' + hex : hex\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0\n }\n if (g < 0) {\n g = 0\n }\n if (b < 0) {\n b = 0\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b]\n }\n })()\n\n const setSubframeEnabled = (flag) => {\n subframeEnabled = !!flag\n }\n const getSubframeEnabled = () => subframeEnabled\n const setExpressionsPlugin = (value) => {\n expressionsPlugin = value\n }\n const getExpressionsPlugin = () => expressionsPlugin\n const setDefaultCurveSegments = (value) => {\n defaultCurveSegments = value\n }\n const getDefaultCurveSegments = () => defaultCurveSegments\n const setIdPrefix = (value) => {\n idPrefix$1 = value\n }\n const getIdPrefix = () => idPrefix$1\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type)\n }\n\n const dataManager = (function () {\n var _counterId = 1\n var processes = []\n var workerFn\n var workerInstance\n var workerProxy = {\n onmessage: function () {},\n postMessage: function (path) {\n workerFn({\n data: path,\n })\n },\n }\n var _workerSelf = {\n postMessage: function (data) {\n workerProxy.onmessage({\n data: data,\n })\n },\n }\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' })\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n var url = URL.createObjectURL(blob)\n return new Worker(url)\n }\n workerFn = fn\n return workerProxy\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData\n var i\n var len = layers.length\n var j\n var jLen\n var k\n var kLen\n for (i = 0; i < len; i += 1) {\n layerData = layers[i]\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true\n if (layerData.tt) {\n layers[i - 1].td = layerData.tt\n }\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties\n jLen = maskProps.length\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k)\n } else {\n kLen = maskProps[j].pt.k.length\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0])\n }\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0])\n }\n }\n }\n }\n }\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps)\n completeLayers(layerData.layers, comps)\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes)\n } else if (layerData.ty === 5) {\n completeText(layerData)\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0\n var len = chars.length\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets)\n // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n completeLayers(chars[i].data.layers, assets)\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0\n var len = comps.length\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i]\n }\n i += 1\n }\n return null\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps)\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true\n return comp.layers\n }\n return JSON.parse(JSON.stringify(comp.layers))\n }\n return null\n }\n\n function completeShapes(arr) {\n var i\n var len = arr.length\n var j\n var jLen\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k)\n } else {\n jLen = arr[i].ks.k.length\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0])\n }\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0])\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it)\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i\n var len = path.i.length\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0]\n path.i[i][1] += path.v[i][1]\n path.o[i][0] += path.v[i][0]\n path.o[i][1] += path.v[i][1]\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100]\n if (minimum[0] > animVersion[0]) {\n return true\n }\n if (animVersion[0] > minimum[0]) {\n return false\n }\n if (minimum[1] > animVersion[1]) {\n return true\n }\n if (animVersion[1] > minimum[1]) {\n return false\n }\n if (minimum[2] > animVersion[2]) {\n return true\n }\n if (animVersion[2] > minimum[2]) {\n return false\n }\n return null\n }\n\n var checkText = (function () {\n var minimumVersion = [4, 4, 14]\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d\n textLayer.t.d = {\n k: [\n {\n s: documentData,\n t: 0,\n },\n ],\n }\n }\n\n function iterateLayers(layers) {\n var i\n var len = layers.length\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i])\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n var checkChars = (function () {\n var minimumVersion = [4, 7, 99]\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i\n var len = animationData.chars.length\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i]\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes)\n charData.data.ip = 0\n charData.data.op = 99999\n charData.data.st = 0\n charData.data.sr = 1\n charData.data.ks = {\n p: { k: [0, 0], a: 0 },\n s: { k: [100, 100], a: 0 },\n a: { k: [0, 0], a: 0 },\n r: { k: 0, a: 0 },\n o: { k: 100, a: 0 },\n }\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no',\n })\n charData.data.shapes[0].it.push({\n p: { k: [0, 0], a: 0 },\n s: { k: [100, 100], a: 0 },\n a: { k: [0, 0], a: 0 },\n r: { k: 0, a: 0 },\n o: { k: 100, a: 0 },\n sk: { k: 0, a: 0 },\n sa: { k: 0, a: 0 },\n ty: 'tr',\n })\n }\n }\n }\n }\n }\n })()\n\n var checkPathProperties = (function () {\n var minimumVersion = [5, 7, 15]\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a,\n }\n }\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p,\n }\n }\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r,\n }\n }\n }\n\n function iterateLayers(layers) {\n var i\n var len = layers.length\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i])\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n var checkColors = (function () {\n var minimumVersion = [4, 1, 9]\n\n function iterateShapes(shapes) {\n var i\n var len = shapes.length\n var j\n var jLen\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it)\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255\n shapes[i].c.k[j].s[1] /= 255\n shapes[i].c.k[j].s[2] /= 255\n shapes[i].c.k[j].s[3] /= 255\n }\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255\n shapes[i].c.k[j].e[1] /= 255\n shapes[i].c.k[j].e[2] /= 255\n shapes[i].c.k[j].e[3] /= 255\n }\n }\n } else {\n shapes[i].c.k[0] /= 255\n shapes[i].c.k[1] /= 255\n shapes[i].c.k[2] /= 255\n shapes[i].c.k[3] /= 255\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i\n var len = layers.length\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes)\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n var checkShapes = (function () {\n var minimumVersion = [4, 4, 18]\n\n function completeClosingShapes(arr) {\n var i\n var len = arr.length\n var j\n var jLen\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed\n } else {\n jLen = arr[i].ks.k.length\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed\n }\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it)\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData\n var i\n var len = layers.length\n var j\n var jLen\n var k\n var kLen\n for (i = 0; i < len; i += 1) {\n layerData = layers[i]\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties\n jLen = maskProps.length\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl\n } else {\n kLen = maskProps[j].pt.k.length\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl\n }\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl\n }\n }\n }\n }\n }\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes)\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers)\n if (animationData.assets) {\n var i\n var len = animationData.assets.length\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers)\n }\n }\n }\n }\n }\n })()\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return\n }\n checkColors(animationData)\n checkText(animationData)\n checkChars(animationData)\n checkPathProperties(animationData)\n checkShapes(animationData)\n completeLayers(animationData.layers, animationData.assets)\n completeChars(animationData.chars, animationData.assets)\n animationData.__complete = true\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\n // data.singleShape = true;\n }\n }\n\n var moduleOb = {}\n moduleOb.completeData = completeData\n moduleOb.checkColors = checkColors\n moduleOb.checkChars = checkChars\n moduleOb.checkPathProperties = checkPathProperties\n moduleOb.checkShapes = checkShapes\n moduleOb.completeLayers = completeLayers\n\n return moduleOb\n }\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager()\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = (function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type')\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response\n }\n if (xhr.response && typeof xhr.response === 'object') {\n return xhr.response\n }\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response)\n }\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText)\n }\n return null\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response\n var xhr = new XMLHttpRequest()\n // set responseType after calling open or IE will break.\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json'\n } catch (err) {} // eslint-disable-line no-empty\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr)\n callback(response)\n } else {\n try {\n response = formatResponse(xhr)\n callback(response)\n } catch (err) {\n if (errorCallback) {\n errorCallback(err)\n }\n }\n }\n }\n }\n try {\n xhr.open('GET', path, true)\n } catch (error) {\n xhr.open('GET', fullPath + '/' + path, true)\n }\n xhr.send()\n }\n return {\n load: loadAsset,\n }\n })()\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(\n e.data.path,\n e.data.fullPath,\n function (data) {\n _workerSelf.dataManager.completeData(data)\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success',\n })\n },\n function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error',\n })\n },\n )\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation\n _workerSelf.dataManager.completeData(animation)\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success',\n })\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(\n e.data.path,\n e.data.fullPath,\n function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success',\n })\n },\n function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error',\n })\n },\n )\n }\n })\n\n workerInstance.onmessage = function (event) {\n var data = event.data\n var id = data.id\n var process = processes[id]\n processes[id] = null\n if (data.status === 'success') {\n process.onComplete(data.payload)\n } else if (process.onError) {\n process.onError()\n }\n }\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1\n var id = 'processId_' + _counterId\n processes[id] = {\n onComplete: onComplete,\n onError: onError,\n }\n return id\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker()\n var processId = createProcess(onComplete, onError)\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId,\n })\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker()\n var processId = createProcess(onComplete, onError)\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId,\n })\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker()\n var processId = createProcess(onComplete, onError)\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId,\n })\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation,\n }\n })()\n\n const ImagePreloader = (function () {\n var proxyImage = (function () {\n var canvas = createTag('canvas')\n canvas.width = 1\n canvas.height = 1\n var ctx = canvas.getContext('2d')\n ctx.fillStyle = 'rgba(0,0,0,0)'\n ctx.fillRect(0, 0, 1, 1)\n return canvas\n })()\n\n function imageLoaded() {\n this.loadedAssets += 1\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null)\n }\n }\n }\n function footageLoaded() {\n this.loadedFootagesCount += 1\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null)\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = ''\n if (assetData.e) {\n path = assetData.p\n } else if (assetsPath) {\n var imagePath = assetData.p\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1]\n }\n path = assetsPath + imagePath\n } else {\n path = originalPath\n path += assetData.u ? assetData.u : ''\n path += assetData.p\n }\n return path\n }\n\n function testImageLoaded(img) {\n var _count = 0\n var intervalId = setInterval(\n function () {\n var box = img.getBBox()\n if (box.width || _count > 500) {\n this._imageLoaded()\n clearInterval(intervalId)\n }\n _count += 1\n }.bind(this),\n 50,\n )\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path)\n var img = createNS('image')\n if (isSafari) {\n this.testImageLoaded(img)\n } else {\n img.addEventListener('load', this._imageLoaded, false)\n }\n img.addEventListener(\n 'error',\n function () {\n ob.img = proxyImage\n this._imageLoaded()\n }.bind(this),\n false,\n )\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path)\n if (this._elementHelper.append) {\n this._elementHelper.append(img)\n } else {\n this._elementHelper.appendChild(img)\n }\n var ob = {\n img: img,\n assetData: assetData,\n }\n return ob\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path)\n var img = createTag('img')\n img.crossOrigin = 'anonymous'\n img.addEventListener('load', this._imageLoaded, false)\n img.addEventListener(\n 'error',\n function () {\n ob.img = proxyImage\n this._imageLoaded()\n }.bind(this),\n false,\n )\n img.src = path\n var ob = {\n img: img,\n assetData: assetData,\n }\n return ob\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data,\n }\n var path = getAssetsPath(data, this.assetsPath, this.path)\n dataManager.loadData(\n path,\n function (footageData) {\n ob.img = footageData\n this._footageLoaded()\n }.bind(this),\n function () {\n ob.img = {}\n this._footageLoaded()\n }.bind(this),\n )\n return ob\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb\n var i\n var len = assets.length\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1\n this.images.push(this._createImageData(assets[i]))\n } else if (assets[i].t === 3) {\n this.totalFootages += 1\n this.images.push(this.createFootageData(assets[i]))\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || ''\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || ''\n }\n\n function getAsset(assetData) {\n var i = 0\n var len = this.images.length\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img\n }\n i += 1\n }\n return null\n }\n\n function destroy() {\n this.imagesLoadedCb = null\n this.images.length = 0\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper\n this._createImageData = this.createImageData.bind(this)\n } else {\n this._createImageData = this.createImgData.bind(this)\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this)\n this._footageLoaded = footageLoaded.bind(this)\n this.testImageLoaded = testImageLoaded.bind(this)\n this.createFootageData = createFootageData.bind(this)\n this.assetsPath = ''\n this.path = ''\n this.totalImages = 0\n this.totalFootages = 0\n this.loadedAssets = 0\n this.loadedFootagesCount = 0\n this.imagesLoadedCb = null\n this.images = []\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType,\n }\n\n return ImagePreloaderFactory\n })()\n\n function BaseEvent() {}\n BaseEvent.prototype = {\n triggerEvent: function (eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName]\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args)\n }\n }\n },\n addEventListener: function (eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = []\n }\n this._cbs[eventName].push(callback)\n\n return function () {\n this.removeEventListener(eventName, callback)\n }.bind(this)\n },\n removeEventListener: function (eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null\n } else if (this._cbs[eventName]) {\n var i = 0\n var len = this._cbs[eventName].length\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1)\n i -= 1\n len -= 1\n }\n i += 1\n }\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null\n }\n }\n },\n }\n\n const markerParser = (function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n')\n var keys = {}\n var line\n var keysCount = 0\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':')\n if (line.length === 2) {\n keys[line[0]] = line[1].trim()\n keysCount += 1\n }\n }\n if (keysCount === 0) {\n throw new Error()\n }\n return keys\n }\n\n return function (_markers) {\n var markers = []\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i]\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr,\n }\n try {\n markerData.payload = JSON.parse(_markers[i].cm)\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm)\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm,\n }\n }\n }\n markers.push(markerData)\n }\n return markers\n }\n })()\n\n const ProjectInterface = (function () {\n function registerComposition(comp) {\n this.compositions.push(comp)\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0\n var len = this.compositions.length\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame)\n }\n return this.compositions[i].compInterface\n }\n i += 1\n }\n return null\n }\n\n _thisProjectFunction.compositions = []\n _thisProjectFunction.currentFrame = 0\n\n _thisProjectFunction.registerComposition = registerComposition\n\n return _thisProjectFunction\n }\n })()\n\n const renderers = {}\n\n const registerRenderer = (key, value) => {\n renderers[key] = value\n }\n\n function getRenderer(key) {\n return renderers[key]\n }\n\n const AnimationItem = function () {\n this._cbs = []\n this.name = ''\n this.path = ''\n this.isLoaded = false\n this.currentFrame = 0\n this.currentRawFrame = 0\n this.firstFrame = 0\n this.totalFrames = 0\n this.frameRate = 0\n this.frameMult = 0\n this.playSpeed = 1\n this.playDirection = 1\n this.playCount = 0\n this.animationData = {}\n this.assets = []\n this.isPaused = true\n this.autoplay = false\n this.loop = true\n this.renderer = null\n this.animationID = createElementID()\n this.assetsPath = ''\n this.timeCompleted = 0\n this.segmentPos = 0\n this.isSubframeEnabled = getSubframeEnabled()\n this.segments = []\n this._idle = true\n this._completedLoop = false\n this.projectInterface = ProjectInterface()\n this.imagePreloader = new ImagePreloader()\n this.audioController = audioControllerFactory()\n this.markers = []\n this.configAnimation = this.configAnimation.bind(this)\n this.onSetupError = this.onSetupError.bind(this)\n this.onSegmentComplete = this.onSegmentComplete.bind(this)\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0)\n }\n\n extendPrototype([BaseEvent], AnimationItem)\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container\n }\n var animType = 'svg'\n if (params.animType) {\n animType = params.animType\n } else if (params.renderer) {\n animType = params.renderer\n }\n const RendererClass = getRenderer(animType)\n this.renderer = new RendererClass(this, params.rendererSettings)\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs)\n this.renderer.setProjectInterface(this.projectInterface)\n this.animType = animType\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true\n } else if (params.loop === false) {\n this.loop = false\n } else {\n this.loop = parseInt(params.loop, 10)\n }\n this.autoplay = 'autoplay' in params ? params.autoplay : true\n this.name = params.name ? params.name : ''\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments')\n ? params.autoloadSegments\n : true\n this.assetsPath = params.assetsPath\n this.initialSegment = params.initialSegment\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory)\n }\n if (params.animationData) {\n this.setupAnimation(params.animationData)\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1)\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1)\n }\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1)\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'))\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError)\n }\n }\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed')\n }\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation)\n }\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (typeof animationData !== 'object') {\n animationData = JSON.parse(animationData)\n }\n }\n var params = {\n wrapper: wrapper,\n animationData: animationData,\n }\n var wrapperAttributes = wrapper.attributes\n\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value\n : wrapperAttributes.getNamedItem('bm-path')\n ? wrapperAttributes.getNamedItem('bm-path').value\n : ''\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\n : wrapperAttributes.getNamedItem('bm-renderer')\n ? wrapperAttributes.getNamedItem('bm-renderer').value\n : 'canvas'\n\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\n : wrapperAttributes.getNamedItem('bm-loop')\n ? wrapperAttributes.getNamedItem('bm-loop').value\n : ''\n if (loop === 'false') {\n params.loop = false\n } else if (loop === 'true') {\n params.loop = true\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10)\n }\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\n : wrapperAttributes.getNamedItem('bm-autoplay')\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\n : true\n params.autoplay = autoplay !== 'false'\n\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value\n : wrapperAttributes.getNamedItem('bm-name')\n ? wrapperAttributes.getNamedItem('bm-name').value\n : ''\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\n : wrapperAttributes.getNamedItem('bm-prerender')\n ? wrapperAttributes.getNamedItem('bm-prerender').value\n : ''\n\n if (prerender === 'false') {\n params.prerender = false\n }\n this.setParams(params)\n }\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op\n this.totalFrames = Math.floor(data.op - this.animationData.ip)\n }\n var layers = this.animationData.layers\n var i\n var len = layers.length\n var newLayers = data.layers\n var j\n var jLen = newLayers.length\n for (j = 0; j < jLen; j += 1) {\n i = 0\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j]\n break\n }\n i += 1\n }\n }\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars)\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs)\n }\n if (data.assets) {\n len = data.assets.length\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i])\n }\n }\n this.animationData.__complete = false\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete)\n }\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data\n var expressionsPlugin = getExpressionsPlugin()\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this)\n }\n this.loadNextSegment()\n }\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready')\n this.timeCompleted = this.totalFrames\n return\n }\n var segment = segments.shift()\n this.timeCompleted = segment.time * this.frameRate\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json'\n this.segmentPos += 1\n dataManager.loadData(\n segmentPath,\n this.includeLayers.bind(this),\n function () {\n this.trigger('data_failed')\n }.bind(this),\n )\n }\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments\n if (!segments) {\n this.timeCompleted = this.totalFrames\n }\n this.loadNextSegment()\n }\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images')\n this.checkLoaded()\n }\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath)\n this.imagePreloader.setPath(this.path)\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this))\n }\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return\n }\n try {\n this.animationData = animData\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0])\n this.firstFrame = Math.round(this.initialSegment[0])\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip)\n this.firstFrame = Math.round(this.animationData.ip)\n }\n this.renderer.configAnimation(animData)\n if (!animData.assets) {\n animData.assets = []\n }\n\n this.assets = this.animationData.assets\n this.frameRate = this.animationData.fr\n this.frameMult = this.animationData.fr / 1000\n this.renderer.searchExtraCompositions(animData.assets)\n this.markers = markerParser(animData.markers || [])\n this.trigger('config_ready')\n this.preloadImages()\n this.loadSegments()\n this.updaFrameModifier()\n this.waitForFontsLoaded()\n if (this.isPaused) {\n this.audioController.pause()\n }\n } catch (error) {\n this.triggerConfigError(error)\n }\n }\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return\n }\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded()\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20)\n }\n }\n\n AnimationItem.prototype.checkLoaded = function () {\n if (\n !this.isLoaded &&\n this.renderer.globalData.fontManager.isLoaded &&\n (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') &&\n this.imagePreloader.loadedFootages()\n ) {\n this.isLoaded = true\n var expressionsPlugin = getExpressionsPlugin()\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this)\n }\n this.renderer.initItems()\n setTimeout(\n function () {\n this.trigger('DOMLoaded')\n }.bind(this),\n 0,\n )\n this.gotoFrame()\n if (this.autoplay) {\n this.play()\n }\n }\n }\n\n AnimationItem.prototype.resize = function () {\n this.renderer.updateContainerSize()\n }\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag\n }\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted\n }\n this.trigger('enterFrame')\n this.renderFrame()\n this.trigger('drawnFrame')\n }\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return\n }\n try {\n this.renderer.renderFrame(this.currentFrame + this.firstFrame)\n } catch (error) {\n this.triggerRenderFrameError(error)\n }\n }\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return\n }\n if (this.isPaused === true) {\n this.isPaused = false\n this.trigger('_pause')\n this.audioController.resume()\n if (this._idle) {\n this._idle = false\n this.trigger('_active')\n }\n }\n }\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return\n }\n if (this.isPaused === false) {\n this.isPaused = true\n this.trigger('_play')\n this._idle = true\n this.trigger('_idle')\n this.audioController.pause()\n }\n }\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return\n }\n if (this.isPaused === true) {\n this.play()\n } else {\n this.pause()\n }\n }\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return\n }\n this.pause()\n this.playCount = 0\n this._completedLoop = false\n this.setCurrentRawFrameValue(0)\n }\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i]\n if (marker.payload && marker.payload.name === markerName) {\n return marker\n }\n }\n return null\n }\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return\n }\n var numValue = Number(value)\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value)\n if (marker) {\n this.goToAndStop(marker.time, true)\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value)\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier)\n }\n this.pause()\n }\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return\n }\n var numValue = Number(value)\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value)\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true)\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true)\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name)\n }\n this.play()\n }\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier\n var _isComplete = false\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\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.\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true\n nextValue = this.totalFrames - 1\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames)\n this._completedLoop = true\n this.trigger('loopComplete')\n }\n } else {\n this.setCurrentRawFrameValue(nextValue)\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames))\n if (!this._completedLoop) {\n this._completedLoop = true\n } else {\n this.trigger('loopComplete')\n }\n } else {\n _isComplete = true\n nextValue = 0\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue)\n }\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue)\n this.pause()\n this.trigger('complete')\n }\n }\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed)\n } else {\n this.setDirection(-1)\n }\n }\n this.totalFrames = arr[0] - arr[1]\n this.timeCompleted = this.totalFrames\n this.firstFrame = arr[1]\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset)\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed)\n } else {\n this.setDirection(1)\n }\n }\n this.totalFrames = arr[1] - arr[0]\n this.timeCompleted = this.totalFrames\n this.firstFrame = arr[0]\n this.setCurrentRawFrameValue(0.001 + offset)\n }\n this.trigger('segmentStart')\n }\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init\n }\n }\n\n this.firstFrame = init\n this.totalFrames = end - init\n this.timeCompleted = this.totalFrames\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true)\n }\n }\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0\n }\n if (typeof arr[0] === 'object') {\n var i\n var len = arr.length\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i])\n }\n } else {\n this.segments.push(arr)\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0)\n }\n if (this.isPaused) {\n this.play()\n }\n }\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0\n this.segments.push([this.animationData.ip, this.animationData.op])\n if (forceFlag) {\n this.checkSegments(0)\n }\n }\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset)\n return true\n }\n return false\n }\n\n AnimationItem.prototype.destroy = function (name) {\n if ((name && this.name !== name) || !this.renderer) {\n return\n }\n this.renderer.destroy()\n this.imagePreloader.destroy()\n this.trigger('destroy')\n this._cbs = null\n this.onEnterFrame = null\n this.onLoopComplete = null\n this.onComplete = null\n this.onSegmentStart = null\n this.onDestroy = null\n this.renderer = null\n this.renderer = null\n this.imagePreloader = null\n this.projectInterface = null\n }\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value\n this.gotoFrame()\n }\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val\n this.updaFrameModifier()\n }\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1\n this.updaFrameModifier()\n }\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return\n }\n this.audioController.setVolume(val)\n }\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume()\n }\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return\n }\n this.audioController.mute()\n }\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return\n }\n this.audioController.unmute()\n }\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection\n this.audioController.setRate(this.playSpeed * this.playDirection)\n }\n\n AnimationItem.prototype.getPath = function () {\n return this.path\n }\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = ''\n if (assetData.e) {\n path = assetData.p\n } else if (this.assetsPath) {\n var imagePath = assetData.p\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1]\n }\n path = this.assetsPath + imagePath\n } else {\n path = this.path\n path += assetData.u ? assetData.u : ''\n path += assetData.p\n }\n return path\n }\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0\n var len = this.assets.length\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i]\n }\n i += 1\n }\n return null\n }\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide()\n }\n\n AnimationItem.prototype.show = function () {\n this.renderer.show()\n }\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate\n }\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path)\n element.updateDocumentData(documentData, index)\n } catch (error) {\n // TODO: decide how to handle catch case\n }\n }\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier))\n break\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame\n this.drawnFrameEvent.totalTime = this.totalFrames\n this.drawnFrameEvent.direction = this.frameModifier\n this.triggerEvent(name, this.drawnFrameEvent)\n break\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult))\n break\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult))\n break\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames))\n break\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this))\n break\n default:\n this.triggerEvent(name)\n }\n }\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult))\n }\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult))\n }\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult))\n }\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames))\n }\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this))\n }\n }\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame)\n this.triggerEvent('error', error)\n\n if (this.onError) {\n this.onError.call(this, error)\n }\n }\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame)\n this.triggerEvent('error', error)\n\n if (this.onError) {\n this.onError.call(this, error)\n }\n }\n\n const animationManager = (function () {\n var moduleOb = {}\n var registeredAnimations = []\n var initTime = 0\n var len = 0\n var playingAnimationsNum = 0\n var _stopped = true\n var _isFrozen = false\n\n function removeElement(ev) {\n var i = 0\n var animItem = ev.target\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1)\n i -= 1\n len -= 1\n if (!animItem.isPaused) {\n subtractPlayingCount()\n }\n }\n i += 1\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null\n }\n var i = 0\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation\n }\n i += 1\n }\n var animItem = new AnimationItem()\n setupAnimation(animItem, element)\n animItem.setData(element, animationData)\n return animItem\n }\n\n function getRegisteredAnimations() {\n var i\n var lenAnims = registeredAnimations.length\n var animations = []\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation)\n }\n return animations\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1\n activate()\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement)\n animItem.addEventListener('_active', addPlayingCount)\n animItem.addEventListener('_idle', subtractPlayingCount)\n registeredAnimations.push({ elem: element, animation: animItem })\n len += 1\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem()\n setupAnimation(animItem, null)\n animItem.setParams(params)\n return animItem\n }\n\n function setSpeed(val, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation)\n }\n }\n\n function setDirection(val, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation)\n }\n }\n\n function play(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation)\n }\n }\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime)\n }\n initTime = nowTime\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume)\n } else {\n _stopped = true\n }\n }\n\n function first(nowTime) {\n initTime = nowTime\n window.requestAnimationFrame(resume)\n }\n\n function pause(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation)\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation)\n }\n }\n\n function stop(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation)\n }\n }\n\n function togglePause(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation)\n }\n }\n\n function destroy(animation) {\n var i\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation)\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat(\n [].slice.call(document.getElementsByClassName('lottie')),\n [].slice.call(document.getElementsByClassName('bodymovin')),\n )\n var i\n var lenAnims = animElements.length\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer)\n }\n registerAnimation(animElements[i], animationData)\n }\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg'\n }\n var body = document.getElementsByTagName('body')[0]\n body.innerText = ''\n var div = createTag('div')\n div.style.width = '100%'\n div.style.height = '100%'\n div.setAttribute('data-bm-type', renderer)\n body.appendChild(div)\n registerAnimation(div, animationData)\n }\n }\n\n function resize() {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize()\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first)\n _stopped = false\n }\n }\n }\n\n function freeze() {\n _isFrozen = true\n }\n\n function unfreeze() {\n _isFrozen = false\n activate()\n }\n\n function setVolume(val, animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation)\n }\n }\n\n function mute(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation)\n }\n }\n\n function unmute(animation) {\n var i\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation)\n }\n }\n\n moduleOb.registerAnimation = registerAnimation\n moduleOb.loadAnimation = loadAnimation\n moduleOb.setSpeed = setSpeed\n moduleOb.setDirection = setDirection\n moduleOb.play = play\n moduleOb.pause = pause\n moduleOb.stop = stop\n moduleOb.togglePause = togglePause\n moduleOb.searchAnimations = searchAnimations\n moduleOb.resize = resize\n // moduleOb.start = start;\n moduleOb.goToAndStop = goToAndStop\n moduleOb.destroy = destroy\n moduleOb.freeze = freeze\n moduleOb.unfreeze = unfreeze\n moduleOb.setVolume = setVolume\n moduleOb.mute = mute\n moduleOb.unmute = unmute\n moduleOb.getRegisteredAnimations = getRegisteredAnimations\n return moduleOb\n })()\n\n /* eslint-disable */\n const BezierFactory = (function () {\n /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\n\n var ob = {}\n ob.getBezierEasing = getBezierEasing\n var beziers = {}\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p')\n if (beziers[str]) {\n return beziers[str]\n }\n var bezEasing = new BezierEasing([a, b, c, d])\n beziers[str] = bezEasing\n return bezEasing\n }\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4\n var NEWTON_MIN_SLOPE = 0.001\n var SUBDIVISION_PRECISION = 0.0000001\n var SUBDIVISION_MAX_ITERATIONS = 10\n\n var kSplineTableSize = 11\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0)\n\n var float32ArraySupported = typeof Float32Array === 'function'\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1\n }\n function C(aA1) {\n return 3.0 * aA1\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1)\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n 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 } else {\n aA = currentT\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS)\n return currentT\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2)\n if (currentSlope === 0.0) return aGuessT\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX\n aGuessT -= currentX / currentSlope\n }\n return aGuessT\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\n */\n function BezierEasing(points) {\n this._p = points\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize)\n this._precomputed = false\n\n this.get = this.get.bind(this)\n }\n\n BezierEasing.prototype = {\n get: function (x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3]\n if (!this._precomputed) this._precompute()\n if (mX1 === mY1 && mX2 === mY2) return x // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) return 0\n if (x === 1) return 1\n return calcBezier(this._getTForX(x), mY1, mY2)\n },\n\n // Private part\n\n _precompute: function () {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3]\n this._precomputed = true\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues()\n }\n },\n\n _calcSampleValues: function () {\n var mX1 = this._p[0],\n mX2 = this._p[2]\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2)\n }\n },\n\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\n */\n _getTForX: function (aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues\n\n var intervalStart = 0.0\n var currentSample = 1\n var lastSample = kSplineTableSize - 1\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize\n }\n --currentSample\n\n // Interpolate to provide an initial guess for t\n var dist =\n (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample])\n var guessForT = intervalStart + dist * kSampleStepSize\n\n var initialSlope = getSlope(guessForT, mX1, mX2)\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2)\n }\n if (initialSlope === 0.0) {\n return guessForT\n }\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2)\n },\n }\n\n return ob\n })()\n\n const pooling = (function () {\n function double(arr) {\n return arr.concat(createSizedArray(arr.length))\n }\n\n return {\n double: double,\n }\n })()\n\n const poolFactory = (function () {\n return function (initialLength, _create, _release) {\n var _length = 0\n var _maxLength = initialLength\n var pool = createSizedArray(_maxLength)\n\n var ob = {\n newElement: newElement,\n release: release,\n }\n\n function newElement() {\n var element\n if (_length) {\n _length -= 1\n element = pool[_length]\n } else {\n element = _create()\n }\n return element\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling.double(pool)\n _maxLength *= 2\n }\n if (_release) {\n _release(element)\n }\n pool[_length] = element\n _length += 1\n }\n\n return ob\n }\n })()\n\n const bezierLengthPool = (function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments()),\n }\n }\n return poolFactory(8, create)\n })()\n\n const segmentsLengthPool = (function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0,\n }\n }\n\n function release(element) {\n var i\n var len = element.lengths.length\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i])\n }\n element.lengths.length = 0\n }\n\n return poolFactory(8, create, release)\n })()\n\n function bezFunction() {\n var math = Math\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1\n return det1 > -0.001 && det1 < 0.001\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3)\n }\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2))\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2))\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2))\n var diffDist\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3\n } else {\n diffDist = dist3 - dist2 - dist1\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1\n } else {\n diffDist = dist2 - dist1 - dist3\n }\n return diffDist > -0.0001 && diffDist < 0.0001\n }\n\n var getBezierLength = (function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments()\n var k\n var i\n var len\n var ptCoord\n var perc\n var addedLength = 0\n var ptDistance\n var point = []\n var lastPoint = []\n var lengthData = bezierLengthPool.newElement()\n len = pt3.length\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1)\n ptDistance = 0\n for (i = 0; i < len; i += 1) {\n ptCoord =\n bmPow(1 - perc, 3) * pt1[i] +\n 3 * bmPow(1 - perc, 2) * perc * pt3[i] +\n 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] +\n bmPow(perc, 3) * pt2[i]\n point[i] = ptCoord\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2)\n }\n lastPoint[i] = point[i]\n }\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance)\n addedLength += ptDistance\n }\n lengthData.percents[k] = perc\n lengthData.lengths[k] = addedLength\n }\n lengthData.addedLength = addedLength\n return lengthData\n }\n })()\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement()\n var closed = shapeData.c\n var pathV = shapeData.v\n var pathO = shapeData.o\n var pathI = shapeData.i\n var i\n var len = shapeData._length\n var lengths = segmentsLength.lengths\n var totalLength = 0\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1])\n totalLength += lengths[i].addedLength\n }\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0])\n totalLength += lengths[i].addedLength\n }\n segmentsLength.totalLength = totalLength\n return segmentsLength\n }\n\n function BezierData(length) {\n this.segmentLength = 0\n this.points = new Array(length)\n }\n\n function PointData(partial, point) {\n this.partialLength = partial\n this.point = point\n }\n\n var buildBezierData = (function () {\n var storedData = {}\n\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (\n pt1[0] +\n '_' +\n pt1[1] +\n '_' +\n pt2[0] +\n '_' +\n pt2[1] +\n '_' +\n pt3[0] +\n '_' +\n pt3[1] +\n '_' +\n pt4[0] +\n '_' +\n pt4[1]\n ).replace(/\\./g, 'p')\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments()\n var k\n var i\n var len\n var ptCoord\n var perc\n var addedLength = 0\n var ptDistance\n var point\n var lastPoint = null\n if (\n pt1.length === 2 &&\n (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) &&\n pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) &&\n pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])\n ) {\n curveSegments = 2\n }\n var bezierData = new BezierData(curveSegments)\n len = pt3.length\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len)\n perc = k / (curveSegments - 1)\n ptDistance = 0\n for (i = 0; i < len; i += 1) {\n ptCoord =\n bmPow(1 - perc, 3) * pt1[i] +\n 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) +\n 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) +\n bmPow(perc, 3) * pt2[i]\n point[i] = ptCoord\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2)\n }\n }\n ptDistance = bmSqrt(ptDistance)\n addedLength += ptDistance\n bezierData.points[k] = new PointData(ptDistance, point)\n lastPoint = point\n }\n bezierData.segmentLength = addedLength\n storedData[bezierName] = bezierData\n }\n return storedData[bezierName]\n }\n })()\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents\n var lengths = bezierData.lengths\n var len = percents.length\n var initPos = bmFloor((len - 1) * perc)\n var lengthPos = perc * bezierData.addedLength\n var lPerc = 0\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos]\n }\n var dir = lengths[initPos] > lengthPos ? -1 : 1\n var flag = true\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos])\n flag = false\n } else {\n initPos += dir\n }\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos]\n }\n flag = false\n }\n }\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData)\n var u1 = 1 - t1\n var ptX =\n math.round(\n (u1 * u1 * u1 * pt1[0] +\n (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] +\n (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] +\n t1 * t1 * t1 * pt2[0]) *\n 1000,\n ) / 1000\n var ptY =\n math.round(\n (u1 * u1 * u1 * pt1[1] +\n (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] +\n (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] +\n t1 * t1 * t1 * pt2[1]) *\n 1000,\n ) / 1000\n return [ptX, ptY]\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8)\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0\n } else if (startPerc > 1) {\n startPerc = 1\n }\n var t0 = getDistancePerc(startPerc, bezierData)\n endPerc = endPerc > 1 ? 1 : endPerc\n var t1 = getDistancePerc(endPerc, bezierData)\n var i\n var len = pt1.length\n var u0 = 1 - t0\n var u1 = 1 - t1\n var u0u0u0 = u0 * u0 * u0\n var t0u0u0_3 = t0 * u0 * u0 * 3 // eslint-disable-line camelcase\n var t0t0u0_3 = t0 * t0 * u0 * 3 // eslint-disable-line camelcase\n var t0t0t0 = t0 * t0 * t0\n //\n var u0u0u1 = u0 * u0 * u1\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1 // eslint-disable-line camelcase\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1 // eslint-disable-line camelcase\n var t0t0t1 = t0 * t0 * t1\n //\n var u0u1u1 = u0 * u1 * u1\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1 // eslint-disable-line camelcase\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1 // eslint-disable-line camelcase\n var t0t1t1 = t0 * t1 * t1\n //\n var u1u1u1 = u1 * u1 * u1\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1 // eslint-disable-line camelcase\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1 // eslint-disable-line camelcase\n var t1t1t1 = t1 * t1 * t1\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] =\n math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 1] =\n math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 2] =\n math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 3] =\n math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000 // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D,\n }\n }\n\n const bez = bezFunction()\n\n const PropertyFactory = (function () {\n var initFrame = initialDefaultFrame\n var mathAbs = Math.abs\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime\n var newValue\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length)\n }\n var iterationIndex = caching.lastIndex\n var i = iterationIndex\n var len = this.keyframes.length - 1\n var flag = true\n var keyData\n var nextKeyData\n var keyframeMetadata\n\n while (flag) {\n keyData = this.keyframes[i]\n nextKeyData = this.keyframes[i + 1]\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData\n }\n iterationIndex = 0\n break\n }\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i\n break\n }\n if (i < len - 1) {\n i += 1\n } else {\n iterationIndex = 0\n flag = false\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {}\n\n var k\n var kLen\n var perc\n var jLen\n var j\n var fnc\n var nextKeyTime = nextKeyData.t - offsetTime\n var keyTime = keyData.t - offsetTime\n var endValue\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(\n keyData.s,\n nextKeyData.s || keyData.e,\n keyData.to,\n keyData.ti,\n )\n }\n var bezierData = keyframeMetadata.bezierData\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0\n kLen = bezierData.points[ind].point.length\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k]\n }\n // caching._lastKeyframeIndex = -1;\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get\n keyframeMetadata.__fnct = fnc\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime))\n var distanceInLine = bezierData.segmentLength * perc\n\n var segmentPerc\n var addedLength =\n caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0\n flag = true\n jLen = bezierData.points.length\n while (flag) {\n addedLength += bezierData.points[j].partialLength\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k]\n }\n break\n } else if (\n distanceInLine >= addedLength &&\n distanceInLine < addedLength + bezierData.points[j + 1].partialLength\n ) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength\n kLen = bezierData.points[j].point.length\n for (k = 0; k < kLen; k += 1) {\n newValue[k] =\n bezierData.points[j].point[k] +\n (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc\n }\n break\n }\n if (j < jLen - 1) {\n j += 1\n } else {\n flag = false\n }\n }\n caching._lastPoint = j\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength\n caching._lastKeyframeIndex = i\n }\n } else {\n var outX\n var outY\n var inX\n var inY\n var keyValue\n len = keyData.s.length\n endValue = nextKeyData.s || keyData.e\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0]\n newValue[1] = endValue[1]\n newValue[2] = endValue[2]\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0]\n newValue[1] = keyData.s[1]\n newValue[2] = keyData.s[2]\n } else {\n var quatStart = createQuaternion(keyData.s)\n var quatEnd = createQuaternion(endValue)\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime)\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time))\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1\n } else if (frameNum < keyTime) {\n perc = 0\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = []\n }\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i]\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i]\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i]\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i]\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get\n keyframeMetadata.__fnct[i] = fnc\n } else {\n fnc = keyframeMetadata.__fnct[i]\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x\n outY = keyData.o.y\n inX = keyData.i.x\n inY = keyData.i.y\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get\n keyData.keyframeMetadata = fnc\n } else {\n fnc = keyframeMetadata.__fnct\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime))\n }\n }\n\n endValue = nextKeyData.s || keyData.e\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue\n } else {\n newValue = keyValue\n }\n }\n }\n }\n caching.lastIndex = iterationIndex\n return newValue\n }\n\n // based on @Toji's https://github.com/toji/gl-matrix/\n function slerp(a, b, t) {\n var out = []\n var ax = a[0]\n var ay = a[1]\n var az = a[2]\n var aw = a[3]\n var bx = b[0]\n var by = b[1]\n var bz = b[2]\n var bw = b[3]\n\n var omega\n var cosom\n var sinom\n var scale0\n var scale1\n\n cosom = ax * bx + ay * by + az * bz + aw * bw\n if (cosom < 0.0) {\n cosom = -cosom\n bx = -bx\n by = -by\n bz = -bz\n bw = -bw\n }\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom)\n sinom = Math.sin(omega)\n scale0 = Math.sin((1.0 - t) * omega) / sinom\n scale1 = Math.sin(t * omega) / sinom\n } else {\n scale0 = 1.0 - t\n scale1 = t\n }\n out[0] = scale0 * ax + scale1 * bx\n out[1] = scale0 * ay + scale1 * by\n out[2] = scale0 * az + scale1 * bz\n out[3] = scale0 * aw + scale1 * bw\n\n return out\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0]\n var qy = quat[1]\n var qz = quat[2]\n var qw = quat[3]\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz)\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw)\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz)\n out[0] = heading / degToRads\n out[1] = attitude / degToRads\n out[2] = bank / degToRads\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads\n var attitude = values[1] * degToRads\n var bank = values[2] * degToRads\n var c1 = Math.cos(heading / 2)\n var c2 = Math.cos(attitude / 2)\n var c3 = Math.cos(bank / 2)\n var s1 = Math.sin(heading / 2)\n var s2 = Math.sin(attitude / 2)\n var s3 = Math.sin(bank / 2)\n var w = c1 * c2 * c3 - s1 * s2 * s3\n var x = s1 * s2 * c3 + c1 * c2 * s3\n var y = s1 * c2 * c3 + c1 * s2 * s3\n var z = c1 * s2 * c3 - s1 * c2 * s3\n\n return [x, y, z, w]\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime\n var initTime = this.keyframes[0].t - this.offsetTime\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime\n if (\n !(\n frameNum === this._caching.lastFrame ||\n (this._caching.lastFrame !== initFrame &&\n ((this._caching.lastFrame >= endTime && frameNum >= endTime) ||\n (this._caching.lastFrame < initTime && frameNum < initTime)))\n )\n ) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1\n this._caching.lastIndex = 0\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching)\n this.pv = renderResult\n }\n this._caching.lastFrame = frameNum\n return this.pv\n }\n\n function setVValue(val) {\n var multipliedValue\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue\n this._mdf = true\n }\n } else {\n var i = 0\n var len = this.v.length\n while (i < len) {\n multipliedValue = val[i] * this.mult\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue\n this._mdf = true\n }\n i += 1\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return\n }\n if (this.lock) {\n this.setVValue(this.pv)\n return\n }\n this.lock = true\n this._mdf = this._isFirstFrame\n var i\n var len = this.effectsSequence.length\n var finalValue = this.kf ? this.pv : this.data.k\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue)\n }\n this.setVValue(finalValue)\n this._isFirstFrame = false\n this.lock = false\n this.frameId = this.elem.globalData.frameId\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction)\n this.container.addDynamicProperty(this)\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional'\n this.mult = mult || 1\n this.data = data\n this.v = mult ? data.k * mult : data.k\n this.pv = data.k\n this._mdf = false\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.k = false\n this.kf = false\n this.vel = 0\n this.effectsSequence = []\n this._isFirstFrame = true\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.addEffect = addEffect\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional'\n this.mult = mult || 1\n this.data = data\n this._mdf = false\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.k = false\n this.kf = false\n this.frameId = -1\n var i\n var len = data.k.length\n this.v = createTypedArray('float32', len)\n this.pv = createTypedArray('float32', len)\n this.vel = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult\n this.pv[i] = data.k[i]\n }\n this._isFirstFrame = true\n this.effectsSequence = []\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.addEffect = addEffect\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional'\n this.keyframes = data.k\n this.keyframesMetadata = []\n this.offsetTime = elem.data.st\n this.frameId = -1\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1,\n }\n this.k = true\n this.kf = true\n this.data = data\n this.mult = mult || 1\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.v = initFrame\n this.pv = initFrame\n this._isFirstFrame = true\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.interpolateValue = interpolateValue\n this.effectsSequence = [getValueAtCurrentTime.bind(this)]\n this.addEffect = addEffect\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional'\n var i\n var len = data.k.length\n var s\n var e\n var to\n var ti\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s\n e = data.k[i + 1].s\n to = data.k[i].to\n ti = data.k[i].ti\n if (\n (s.length === 2 &&\n !(s[0] === e[0] && s[1] === e[1]) &&\n bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) &&\n bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) ||\n (s.length === 3 &&\n !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) &&\n 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]) &&\n 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]))\n ) {\n data.k[i].to = null\n data.k[i].ti = null\n }\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\n data.k[i].to = null\n data.k[i].ti = null\n }\n }\n }\n }\n this.effectsSequence = [getValueAtCurrentTime.bind(this)]\n this.data = data\n this.keyframes = data.k\n this.keyframesMetadata = []\n this.offsetTime = elem.data.st\n this.k = true\n this.kf = true\n this._isFirstFrame = true\n this.mult = mult || 1\n this.elem = elem\n this.container = container\n this.comp = elem.comp\n this.getValue = processEffectsSequence\n this.setVValue = setVValue\n this.interpolateValue = interpolateValue\n this.frameId = -1\n var arrLen = data.k[0].s.length\n this.v = createTypedArray('float32', arrLen)\n this.pv = createTypedArray('float32', arrLen)\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame\n this.pv[i] = initFrame\n }\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) }\n this.addEffect = addEffect\n }\n\n function getProp(elem, data, type, mult, container) {\n var p\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container)\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container)\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container)\n break\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container)\n break\n default:\n break\n }\n }\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p)\n }\n return p\n }\n\n var ob = {\n getProp: getProp,\n }\n return ob\n })()\n\n function DynamicPropertyContainer() {}\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function (prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop)\n this.container.addDynamicProperty(this)\n this._isAnimated = true\n }\n },\n iterateDynamicProperties: function () {\n this._mdf = false\n var i\n var len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue()\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true\n }\n }\n },\n initDynamicPropertyContainer: function (container) {\n this.container = container\n this.dynamicProperties = []\n this._mdf = false\n this._isAnimated = false\n },\n }\n\n const pointPool = (function () {\n function create() {\n return createTypedArray('float32', 2)\n }\n return poolFactory(8, create)\n })()\n\n function ShapePath() {\n this.c = false\n this._length = 0\n this._maxLength = 8\n this.v = createSizedArray(this._maxLength)\n this.o = createSizedArray(this._maxLength)\n this.i = createSizedArray(this._maxLength)\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed\n this.setLength(len)\n var i = 0\n while (i < len) {\n this.v[i] = pointPool.newElement()\n this.o[i] = pointPool.newElement()\n this.i[i] = pointPool.newElement()\n i += 1\n }\n }\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength()\n }\n this._length = len\n }\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength))\n this.i = this.i.concat(createSizedArray(this._maxLength))\n this.o = this.o.concat(createSizedArray(this._maxLength))\n this._maxLength *= 2\n }\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr\n this._length = Math.max(this._length, pos + 1)\n if (this._length >= this._maxLength) {\n this.doubleArrayLength()\n }\n switch (type) {\n case 'v':\n arr = this.v\n break\n case 'i':\n arr = this.i\n break\n case 'o':\n arr = this.o\n break\n default:\n arr = []\n break\n }\n if (!arr[pos] || (arr[pos] && !replace)) {\n arr[pos] = pointPool.newElement()\n }\n arr[pos][0] = x\n arr[pos][1] = y\n }\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace)\n this.setXYAt(oX, oY, 'o', pos, replace)\n this.setXYAt(iX, iY, 'i', pos, replace)\n }\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath()\n newPath.setPathData(this.c, this._length)\n var vertices = this.v\n var outPoints = this.o\n var inPoints = this.i\n var init = 0\n if (this.c) {\n newPath.setTripleAt(\n vertices[0][0],\n vertices[0][1],\n inPoints[0][0],\n inPoints[0][1],\n outPoints[0][0],\n outPoints[0][1],\n 0,\n false,\n )\n init = 1\n }\n var cnt = this._length - 1\n var len = this._length\n\n var i\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(\n vertices[cnt][0],\n vertices[cnt][1],\n inPoints[cnt][0],\n inPoints[cnt][1],\n outPoints[cnt][0],\n outPoints[cnt][1],\n i,\n false,\n )\n cnt -= 1\n }\n return newPath\n }\n\n const shapePool = (function () {\n function create() {\n return new ShapePath()\n }\n\n function release(shapePath) {\n var len = shapePath._length\n var i\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i])\n pointPool.release(shapePath.i[i])\n pointPool.release(shapePath.o[i])\n shapePath.v[i] = null\n shapePath.i[i] = null\n shapePath.o[i] = null\n }\n shapePath._length = 0\n shapePath.c = false\n }\n\n function clone(shape) {\n var cloned = factory.newElement()\n var i\n var len = shape._length === undefined ? shape.v.length : shape._length\n cloned.setLength(len)\n cloned.c = shape.c\n\n for (i = 0; i < len; i += 1) {\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)\n }\n return cloned\n }\n\n var factory = poolFactory(4, create, release)\n factory.clone = clone\n\n return factory\n })()\n\n function ShapeCollection() {\n this._length = 0\n this._maxLength = 4\n this.shapes = createSizedArray(this._maxLength)\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength))\n this._maxLength *= 2\n }\n this.shapes[this._length] = shapeData\n this._length += 1\n }\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i])\n }\n this._length = 0\n }\n\n const shapeCollectionPool = (function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release,\n }\n\n var _length = 0\n var _maxLength = 4\n var pool = createSizedArray(_maxLength)\n\n function newShapeCollection() {\n var shapeCollection\n if (_length) {\n _length -= 1\n shapeCollection = pool[_length]\n } else {\n shapeCollection = new ShapeCollection()\n }\n return shapeCollection\n }\n\n function release(shapeCollection) {\n var i\n var len = shapeCollection._length\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i])\n }\n shapeCollection._length = 0\n\n if (_length === _maxLength) {\n pool = pooling.double(pool)\n _maxLength *= 2\n }\n pool[_length] = shapeCollection\n _length += 1\n }\n\n return ob\n })()\n\n const ShapePropertyFactory = (function () {\n var initFrame = -999999\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex\n var keyPropS\n var keyPropE\n var isHold\n var j\n var k\n var jLen\n var kLen\n var perc\n var vertexValue\n var kf = this.keyframes\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0]\n isHold = true\n iterationIndex = 0\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0]\n /* if(kf[kf.length - 1].s){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\n } */\n isHold = true\n } else {\n var i = iterationIndex\n var len = kf.length - 1\n var flag = true\n var keyData\n var nextKeyData\n var keyframeMetadata\n while (flag) {\n keyData = kf[i]\n nextKeyData = kf[i + 1]\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break\n }\n if (i < len - 1) {\n i += 1\n } else {\n flag = false\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {}\n isHold = keyData.h === 1\n iterationIndex = i\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0\n } else {\n var fnc\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get\n keyframeMetadata.__fnct = fnc\n }\n perc = fnc(\n (frameNum - (keyData.t - this.offsetTime)) /\n (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)),\n )\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0]\n }\n keyPropS = keyData.s[0]\n }\n jLen = previousValue._length\n kLen = keyPropS.i[0].length\n caching.lastIndex = iterationIndex\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc\n previousValue.i[j][k] = vertexValue\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc\n previousValue.o[j][k] = vertexValue\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc\n previousValue.v[j][k] = vertexValue\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime\n var initTime = this.keyframes[0].t - this.offsetTime\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime\n var lastFrame = this._caching.lastFrame\n if (\n !(\n lastFrame !== initFrame &&\n ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime))\n )\n ) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0\n this.interpolateShape(frameNum, this.pv, this._caching)\n /// /\n }\n this._caching.lastFrame = frameNum\n return this.pv\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false\n }\n var i\n var len = shape1._length\n for (i = 0; i < len; i += 1) {\n if (\n shape1.v[i][0] !== shape2.v[i][0] ||\n shape1.v[i][1] !== shape2.v[i][1] ||\n shape1.o[i][0] !== shape2.o[i][0] ||\n shape1.o[i][1] !== shape2.o[i][1] ||\n shape1.i[i][0] !== shape2.i[i][0] ||\n shape1.i[i][1] !== shape2.i[i][1]\n ) {\n return false\n }\n }\n return true\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath)\n this.localShapeCollection.releaseShapes()\n this.localShapeCollection.addShape(this.v)\n this._mdf = true\n this.paths = this.localShapeCollection\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n if (!this.effectsSequence.length) {\n this._mdf = false\n return\n }\n if (this.lock) {\n this.setVValue(this.pv)\n return\n }\n this.lock = true\n this._mdf = false\n var finalValue\n if (this.kf) {\n finalValue = this.pv\n } else if (this.data.ks) {\n finalValue = this.data.ks.k\n } else {\n finalValue = this.data.pt.k\n }\n var i\n var len = this.effectsSequence.length\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue)\n }\n this.setVValue(finalValue)\n this.lock = false\n this.frameId = this.elem.globalData.frameId\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape'\n this.comp = elem.comp\n this.container = elem\n this.elem = elem\n this.data = data\n this.k = false\n this.kf = false\n this._mdf = false\n var pathData = type === 3 ? data.pt.k : data.ks.k\n this.v = shapePool.clone(pathData)\n this.pv = shapePool.clone(this.v)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.paths = this.localShapeCollection\n this.paths.addShape(this.v)\n this.reset = resetShape\n this.effectsSequence = []\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction)\n this.container.addDynamicProperty(this)\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape\n ShapeProperty.prototype.getValue = processEffectsSequence\n ShapeProperty.prototype.setVValue = setVValue\n ShapeProperty.prototype.addEffect = addEffect\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape'\n this.comp = elem.comp\n this.elem = elem\n this.container = elem\n this.offsetTime = elem.data.st\n this.keyframes = type === 3 ? data.pt.k : data.ks.k\n this.keyframesMetadata = []\n this.k = true\n this.kf = true\n var len = this.keyframes[0].s[0].i.length\n this.v = shapePool.newElement()\n this.v.setPathData(this.keyframes[0].s[0].c, len)\n this.pv = shapePool.clone(this.v)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.paths = this.localShapeCollection\n this.paths.addShape(this.v)\n this.lastFrame = initFrame\n this.reset = resetShape\n this._caching = { lastFrame: initFrame, lastIndex: 0 }\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]\n }\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape\n KeyframedShapeProperty.prototype.setVValue = setVValue\n KeyframedShapeProperty.prototype.addEffect = addEffect\n\n var EllShapeProperty = (function () {\n var cPoint = roundCorner\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement()\n this.v.setPathData(true, 4)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.paths = this.localShapeCollection\n this.localShapeCollection.addShape(this.v)\n this.d = data.d\n this.elem = elem\n this.comp = elem.comp\n this.frameId = -1\n this.initDynamicPropertyContainer(elem)\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this)\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this)\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.k = false\n this.convertEllToPath()\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n\n if (this._mdf) {\n this.convertEllToPath()\n }\n },\n convertEllToPath: function () {\n var p0 = this.p.v[0]\n var p1 = this.p.v[1]\n var s0 = this.s.v[0] / 2\n var s1 = this.s.v[1] / 2\n var _cw = this.d !== 3\n var _v = this.v\n _v.v[0][0] = p0\n _v.v[0][1] = p1 - s1\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0\n _v.v[1][1] = p1\n _v.v[2][0] = p0\n _v.v[2][1] = p1 + s1\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0\n _v.v[3][1] = p1\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint\n _v.i[0][1] = p1 - s1\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0\n _v.i[1][1] = p1 - s1 * cPoint\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint\n _v.i[2][1] = p1 + s1\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0\n _v.i[3][1] = p1 + s1 * cPoint\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint\n _v.o[0][1] = p1 - s1\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0\n _v.o[1][1] = p1 + s1 * cPoint\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint\n _v.o[2][1] = p1 + s1\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0\n _v.o[3][1] = p1 - s1 * cPoint\n },\n }\n\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory)\n\n return EllShapePropertyFactory\n })()\n\n var StarShapeProperty = (function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement()\n this.v.setPathData(true, 0)\n this.elem = elem\n this.comp = elem.comp\n this.data = data\n this.frameId = -1\n this.d = data.d\n this.initDynamicPropertyContainer(elem)\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this)\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this)\n this.convertToPath = this.convertStarToPath\n } else {\n this.convertToPath = this.convertPolygonToPath\n }\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this)\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this)\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this)\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this)\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this)\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.localShapeCollection.addShape(this.v)\n this.paths = this.localShapeCollection\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.k = false\n this.convertToPath()\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n if (this._mdf) {\n this.convertToPath()\n }\n },\n convertStarToPath: function () {\n var numPts = Math.floor(this.pt.v) * 2\n var angle = (Math.PI * 2) / numPts\n /* this.v.v.length = numPts;\n this.v.i.length = numPts;\n this.v.o.length = numPts; */\n var longFlag = true\n var longRad = this.or.v\n var shortRad = this.ir.v\n var longRound = this.os.v\n var shortRound = this.is.v\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2)\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2)\n var i\n var rad\n var roundness\n var perimSegment\n var currentAng = -Math.PI / 2\n currentAng += this.r.v\n var dir = this.data.d === 3 ? -1 : 1\n this.v._length = 0\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad\n roundness = longFlag ? longRound : shortRound\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment\n var x = rad * Math.cos(currentAng)\n var y = rad * Math.sin(currentAng)\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y)\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y)\n x += +this.p.v[0]\n y += +this.p.v[1]\n this.v.setTripleAt(\n x,\n y,\n x - ox * perimSegment * roundness * dir,\n y - oy * perimSegment * roundness * dir,\n x + ox * perimSegment * roundness * dir,\n y + oy * perimSegment * roundness * dir,\n i,\n true,\n )\n\n /* this.v.v[i] = [x,y];\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n this.v._length = numPts; */\n longFlag = !longFlag\n currentAng += angle * dir\n }\n },\n convertPolygonToPath: function () {\n var numPts = Math.floor(this.pt.v)\n var angle = (Math.PI * 2) / numPts\n var rad = this.or.v\n var roundness = this.os.v\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4)\n var i\n var currentAng = -Math.PI * 0.5\n var dir = this.data.d === 3 ? -1 : 1\n currentAng += this.r.v\n this.v._length = 0\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng)\n var y = rad * Math.sin(currentAng)\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y)\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y)\n x += +this.p.v[0]\n y += +this.p.v[1]\n this.v.setTripleAt(\n x,\n y,\n x - ox * perimSegment * roundness * dir,\n y - oy * perimSegment * roundness * dir,\n x + ox * perimSegment * roundness * dir,\n y + oy * perimSegment * roundness * dir,\n i,\n true,\n )\n currentAng += angle * dir\n }\n this.paths.length = 0\n this.paths[0] = this.v\n },\n }\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory)\n\n return StarShapePropertyFactory\n })()\n\n var RectShapeProperty = (function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement()\n this.v.c = true\n this.localShapeCollection = shapeCollectionPool.newShapeCollection()\n this.localShapeCollection.addShape(this.v)\n this.paths = this.localShapeCollection\n this.elem = elem\n this.comp = elem.comp\n this.frameId = -1\n this.d = data.d\n this.initDynamicPropertyContainer(elem)\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this)\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this)\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this)\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.k = false\n this.convertRectToPath()\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function () {\n var p0 = this.p.v[0]\n var p1 = this.p.v[1]\n var v0 = this.s.v[0] / 2\n var v1 = this.s.v[1] / 2\n var round = bmMin(v0, v1, this.r.v)\n var cPoint = round * (1 - roundCorner)\n this.v._length = 0\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true)\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true)\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true)\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true)\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true)\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true)\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true)\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true)\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2)\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3)\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true)\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true)\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true)\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true)\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true)\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true)\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true)\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true)\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true)\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true)\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true)\n }\n }\n },\n getValue: function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n if (this._mdf) {\n this.convertRectToPath()\n }\n },\n reset: resetShape,\n }\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory)\n\n return RectShapePropertyFactory\n })()\n\n function getShapeProp(elem, data, type) {\n var prop\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks\n var keys = dataProp.k\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type)\n } else {\n prop = new ShapeProperty(elem, data, type)\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data)\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data)\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data)\n }\n if (prop.k) {\n elem.addDynamicProperty(prop)\n }\n return prop\n }\n\n function getConstructorFunction() {\n return ShapeProperty\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty\n }\n\n var ob = {}\n ob.getShapeProp = getShapeProp\n ob.getConstructorFunction = getConstructorFunction\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction\n return ob\n })()\n\n /*!\n Transformation Matrix v2.0\n (c) Epistemex 2014-2015\n www.epistemex.com\n By Ken Fyrstenberg\n Contributions by leeoniya.\n License: MIT, header required.\n */\n\n /**\n * 2D transformation matrix object initialized with identity matrix.\n *\n * The matrix can synchronize a canvas context by supplying the context\n * as an argument, or later apply current absolute transform to an\n * existing context.\n *\n * All values are handled as floating point values.\n *\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n * @prop {number} a - scale x\n * @prop {number} b - shear y\n * @prop {number} c - shear x\n * @prop {number} d - scale y\n * @prop {number} e - translate x\n * @prop {number} f - translate y\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n * @constructor\n */\n\n const Matrix = (function () {\n var _cos = Math.cos\n var _sin = Math.sin\n var _tan = Math.tan\n var _rnd = Math.round\n\n function reset() {\n this.props[0] = 1\n this.props[1] = 0\n this.props[2] = 0\n this.props[3] = 0\n this.props[4] = 0\n this.props[5] = 1\n this.props[6] = 0\n this.props[7] = 0\n this.props[8] = 0\n this.props[9] = 0\n this.props[10] = 1\n this.props[11] = 0\n this.props[12] = 0\n this.props[13] = 0\n this.props[14] = 0\n this.props[15] = 1\n return this\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1)\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1)\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this\n }\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0)\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay))\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle)\n var mSin = _sin(angle)\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\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);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1\n }\n if (sx === 1 && sy === 1 && sz === 1) {\n return this\n }\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1)\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a\n this.props[1] = b\n this.props[2] = c\n this.props[3] = d\n this.props[4] = e\n this.props[5] = f\n this.props[6] = g\n this.props[7] = h\n this.props[8] = i\n this.props[9] = j\n this.props[10] = k\n this.props[11] = l\n this.props[12] = m\n this.props[13] = n\n this.props[14] = o\n this.props[15] = p\n return this\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1)\n }\n return this\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props\n\n if (\n a2 === 1 &&\n b2 === 0 &&\n c2 === 0 &&\n d2 === 0 &&\n e2 === 0 &&\n f2 === 1 &&\n g2 === 0 &&\n h2 === 0 &&\n i2 === 0 &&\n j2 === 0 &&\n k2 === 1 &&\n l2 === 0\n ) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2\n _p[13] = _p[13] * f2 + _p[15] * n2\n _p[14] = _p[14] * k2 + _p[15] * o2\n _p[15] *= p2\n // }\n this._identityCalculated = false\n return this\n }\n\n var a1 = _p[0]\n var b1 = _p[1]\n var c1 = _p[2]\n var d1 = _p[3]\n var e1 = _p[4]\n var f1 = _p[5]\n var g1 = _p[6]\n var h1 = _p[7]\n var i1 = _p[8]\n var j1 = _p[9]\n var k1 = _p[10]\n var l1 = _p[11]\n var m1 = _p[12]\n var n1 = _p[13]\n var o1 = _p[14]\n var p1 = _p[15]\n\n /* matrix order (canvas compatible):\n * ace\n * bdf\n * 001\n */\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2\n\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2\n\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2\n\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2\n\n this._identityCalculated = false\n return this\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(\n this.props[0] !== 1 ||\n this.props[1] !== 0 ||\n this.props[2] !== 0 ||\n this.props[3] !== 0 ||\n this.props[4] !== 0 ||\n this.props[5] !== 1 ||\n this.props[6] !== 0 ||\n this.props[7] !== 0 ||\n this.props[8] !== 0 ||\n this.props[9] !== 0 ||\n this.props[10] !== 1 ||\n this.props[11] !== 0 ||\n this.props[12] !== 0 ||\n this.props[13] !== 0 ||\n this.props[14] !== 0 ||\n this.props[15] !== 1\n )\n this._identityCalculated = true\n }\n return this._identity\n }\n\n function equals(matr) {\n var i = 0\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false\n }\n i += 1\n }\n return true\n }\n\n function clone(matr) {\n var i\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i]\n }\n return matr\n }\n\n function cloneFromProps(props) {\n var i\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i]\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\n }\n /* return {\n x: x * me.a + y * me.c + me.e,\n y: x * me.b + y * me.d + me.f\n }; */\n }\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12]\n }\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13]\n }\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4]\n var a = this.props[5] / determinant\n var b = -this.props[1] / determinant\n var c = -this.props[4] / determinant\n var d = this.props[0] / determinant\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant\n var inverseMatrix = new Matrix()\n inverseMatrix.props[0] = a\n inverseMatrix.props[1] = b\n inverseMatrix.props[4] = c\n inverseMatrix.props[5] = d\n inverseMatrix.props[12] = e\n inverseMatrix.props[13] = f\n return inverseMatrix\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix()\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0)\n }\n\n function inversePoints(pts) {\n var i\n var len = pts.length\n var retPts = []\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i])\n }\n return retPts\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6)\n if (this.isIdentity()) {\n arr[0] = pt1[0]\n arr[1] = pt1[1]\n arr[2] = pt2[0]\n arr[3] = pt2[1]\n arr[4] = pt3[0]\n arr[5] = pt3[1]\n } else {\n var p0 = this.props[0]\n var p1 = this.props[1]\n var p4 = this.props[4]\n var p5 = this.props[5]\n var p12 = this.props[12]\n var p13 = this.props[13]\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13\n }\n return arr\n }\n\n function applyToPointArray(x, y, z) {\n var arr\n if (this.isIdentity()) {\n arr = [x, y, z]\n } else {\n arr = [\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\n ]\n }\n return arr\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y\n }\n var _p = this.props\n return (\n Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 +\n ',' +\n Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100\n )\n }\n\n function toCSS() {\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.\n /* if(this.isIdentity()) {\n return '';\n } */\n var i = 0\n var props = this.props\n var cssValue = 'matrix3d('\n var v = 10000\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v\n cssValue += i === 15 ? ')' : ','\n i += 1\n }\n return cssValue\n }\n\n function roundMatrixProperty(val) {\n var v = 10000\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\n return _rnd(val * v) / v\n }\n return val\n }\n\n function to2dCSS() {\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.\n /* if(this.isIdentity()) {\n return '';\n } */\n var props = this.props\n var _a = roundMatrixProperty(props[0])\n var _b = roundMatrixProperty(props[1])\n var _c = roundMatrixProperty(props[4])\n var _d = roundMatrixProperty(props[5])\n var _e = roundMatrixProperty(props[12])\n var _f = roundMatrixProperty(props[13])\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')'\n }\n\n return function () {\n this.reset = reset\n this.rotate = rotate\n this.rotateX = rotateX\n this.rotateY = rotateY\n this.rotateZ = rotateZ\n this.skew = skew\n this.skewFromAxis = skewFromAxis\n this.shear = shear\n this.scale = scale\n this.setTransform = setTransform\n this.translate = translate\n this.transform = transform\n this.applyToPoint = applyToPoint\n this.applyToX = applyToX\n this.applyToY = applyToY\n this.applyToZ = applyToZ\n this.applyToPointArray = applyToPointArray\n this.applyToTriplePoints = applyToTriplePoints\n this.applyToPointStringified = applyToPointStringified\n this.toCSS = toCSS\n this.to2dCSS = to2dCSS\n this.clone = clone\n this.cloneFromProps = cloneFromProps\n this.equals = equals\n this.inversePoints = inversePoints\n this.inversePoint = inversePoint\n this.getInverseMatrix = getInverseMatrix\n this._t = this.transform\n this.isIdentity = isIdentity\n this._identity = true\n this._identityCalculated = false\n\n this.props = createTypedArray('float32', 16)\n this.reset()\n }\n })()\n\n const lottie = {}\n var standalone = '__[STANDALONE]__'\n var animationData = '__[ANIMATIONDATA]__'\n var renderer = ''\n\n function setLocation(href) {\n setLocationHref(href)\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer)\n } else {\n animationManager.searchAnimations()\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag)\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix)\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData)\n }\n return animationManager.loadAnimation(params)\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200)\n break\n default:\n case 'medium':\n setDefaultCurveSegments(50)\n break\n case 'low':\n setDefaultCurveSegments(10)\n break\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value)\n }\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false)\n } else {\n roundValues(true)\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined'\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin)\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory\n case 'shapePropertyFactory':\n return ShapePropertyFactory\n case 'matrix':\n return Matrix\n default:\n return null\n }\n }\n\n lottie.play = animationManager.play\n lottie.pause = animationManager.pause\n lottie.setLocationHref = setLocation\n lottie.togglePause = animationManager.togglePause\n lottie.setSpeed = animationManager.setSpeed\n lottie.setDirection = animationManager.setDirection\n lottie.stop = animationManager.stop\n lottie.searchAnimations = searchAnimations\n lottie.registerAnimation = animationManager.registerAnimation\n lottie.loadAnimation = loadAnimation\n lottie.setSubframeRendering = setSubframeRendering\n lottie.resize = animationManager.resize\n // lottie.start = start;\n lottie.goToAndStop = animationManager.goToAndStop\n lottie.destroy = animationManager.destroy\n lottie.setQuality = setQuality\n lottie.inBrowser = inBrowser\n lottie.installPlugin = installPlugin\n lottie.freeze = animationManager.freeze\n lottie.unfreeze = animationManager.unfreeze\n lottie.setVolume = animationManager.setVolume\n lottie.mute = animationManager.mute\n lottie.unmute = animationManager.unmute\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations\n lottie.useWebWorker = setWebWorker\n lottie.setIDPrefix = setPrefix\n lottie.__getFactory = getFactory\n lottie.version = '[[BM_VERSION]]'\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval)\n searchAnimations()\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&')\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=')\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1])\n }\n }\n return null\n }\n var queryString = ''\n if (standalone) {\n var scripts = document.getElementsByTagName('script')\n var index = scripts.length - 1\n var myScript = scripts[index] || {\n src: '',\n }\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : '' // eslint-disable-line no-useless-escape\n renderer = getQueryVariable('renderer')\n }\n var readyStateCheckInterval = setInterval(checkReady, 100)\n\n // this adds bodymovin to the window object for backwards compatibility\n try {\n if (\n !(typeof exports === 'object' && typeof module !== 'undefined') &&\n !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie\n }\n } catch (err) {\n //\n }\n\n const ShapeModifiers = (function () {\n var ob = {}\n var modifiers = {}\n ob.registerModifier = registerModifier\n ob.getModifier = getModifier\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data)\n }\n\n return ob\n })()\n\n function ShapeModifier() {}\n ShapeModifier.prototype.initModifierProperties = function () {}\n ShapeModifier.prototype.addShapeToModifier = function () {}\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\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.\n data.sh.container.addDynamicProperty(data.sh)\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() }\n this.shapes.push(shapeData)\n this.addShapeToModifier(shapeData)\n if (this._isAnimated) {\n data.setAsAnimated()\n }\n }\n }\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = []\n this.elem = elem\n this.initDynamicPropertyContainer(elem)\n this.initModifierProperties(elem, data)\n this.frameId = initialDefaultFrame\n this.closed = false\n this.k = false\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.getValue(true)\n }\n }\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n }\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier)\n\n function TrimModifier() {}\n extendPrototype([ShapeModifier], TrimModifier)\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this)\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this)\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this)\n this.sValue = 0\n this.eValue = 0\n this.getValue = this.processKeys\n this.m = data.m\n this._isAnimated =\n !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length\n }\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = []\n }\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = []\n if (e <= 1) {\n segments.push({\n s: s,\n e: e,\n })\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1,\n })\n } else {\n segments.push({\n s: s,\n e: 1,\n })\n segments.push({\n s: 0,\n e: e - 1,\n })\n }\n var shapeSegments = []\n var i\n var len = segments.length\n var segmentOb\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i]\n if (\n !(\n segmentOb.e * totalModifierLength < addedLength ||\n segmentOb.s * totalModifierLength > addedLength + shapeLength\n )\n ) {\n var shapeS\n var shapeE\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength\n }\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength\n }\n shapeSegments.push([shapeS, shapeE])\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0])\n }\n return shapeSegments\n }\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i\n var len = pathsData.length\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i])\n }\n pathsData.length = 0\n return pathsData\n }\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s\n var e\n if (this._mdf || _isFirstFrame) {\n var o = (this.o.v % 360) / 360\n if (o < 0) {\n o += 1\n }\n if (this.s.v > 1) {\n s = 1 + o\n } else if (this.s.v < 0) {\n s = 0 + o\n } else {\n s = this.s.v + o\n }\n if (this.e.v > 1) {\n e = 1 + o\n } else if (this.e.v < 0) {\n e = 0 + o\n } else {\n e = this.e.v + o\n }\n\n if (s > e) {\n var _s = s\n s = e\n e = _s\n }\n s = Math.round(s * 10000) * 0.0001\n e = Math.round(e * 10000) * 0.0001\n this.sValue = s\n this.eValue = e\n } else {\n s = this.sValue\n e = this.eValue\n }\n var shapePaths\n var i\n var len = this.shapes.length\n var j\n var jLen\n var pathsData\n var pathData\n var totalShapeLength\n var totalModifierLength = 0\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes()\n this.shapes[i].shape._mdf = true\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0\n }\n }\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\n var segments = []\n var shapeData\n var localShapeCollection\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection\n } else {\n shapePaths = shapeData.shape.paths\n jLen = shapePaths._length\n totalShapeLength = 0\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData)\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j])\n pathsData.push(pathData)\n totalShapeLength += pathData.totalLength\n }\n shapeData.totalShapeLength = totalShapeLength\n shapeData.pathsData = pathsData\n }\n\n totalModifierLength += totalShapeLength\n shapeData.shape._mdf = true\n }\n }\n var shapeS = s\n var shapeE = e\n var addedLength = 0\n var edges\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i]\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection\n localShapeCollection.releaseShapes()\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength)\n addedLength += shapeData.totalShapeLength\n } else {\n edges = [[shapeS, shapeE]]\n }\n jLen = edges.length\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0]\n shapeE = edges[j][1]\n segments.length = 0\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE,\n })\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1),\n })\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength,\n })\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1),\n })\n }\n var newShapesData = this.addShapes(shapeData, segments[0])\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1]\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop()\n this.addPaths(newShapesData, localShapeCollection)\n newShapesData = this.addShapes(shapeData, segments[1], lastShape)\n } else {\n this.addPaths(newShapesData, localShapeCollection)\n newShapesData = this.addShapes(shapeData, segments[1])\n }\n }\n this.addPaths(newShapesData, localShapeCollection)\n }\n }\n shapeData.shape.paths = localShapeCollection\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0\n this.shapes[i].shape._mdf = true\n }\n }\n }\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i\n var len = newPaths.length\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i])\n }\n }\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos)\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1)\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos)\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1)\n }\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos)\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1)\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos)\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1)\n }\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData\n var shapePaths = shapeData.shape.paths.shapes\n var i\n var len = shapeData.shape.paths._length\n var j\n var jLen\n var addedLength = 0\n var currentLengthData\n var segmentCount\n var lengths\n var segment\n var shapes = []\n var initPos\n var newShape = true\n if (!shapePath) {\n shapePath = shapePool.newElement()\n segmentCount = 0\n initPos = 0\n } else {\n segmentCount = shapePath._length\n initPos = shapePath._length\n }\n shapes.push(shapePath)\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths\n shapePath.c = shapePaths[i].c\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1]\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength\n shapePath.c = false\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false\n break\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[j],\n shapePaths[i].v[j],\n shapePath,\n segmentCount,\n newShape,\n )\n newShape = false\n } else {\n segment = bez.getNewSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].v[j],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[j],\n (shapeSegment.s - addedLength) / currentLengthData.addedLength,\n (shapeSegment.e - addedLength) / currentLengthData.addedLength,\n lengths[j - 1],\n )\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape)\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false\n shapePath.c = false\n }\n addedLength += currentLengthData.addedLength\n segmentCount += 1\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1]\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[0],\n shapePaths[i].v[0],\n shapePath,\n segmentCount,\n newShape,\n )\n newShape = false\n } else {\n segment = bez.getNewSegment(\n shapePaths[i].v[j - 1],\n shapePaths[i].v[0],\n shapePaths[i].o[j - 1],\n shapePaths[i].i[0],\n (shapeSegment.s - addedLength) / segmentLength,\n (shapeSegment.e - addedLength) / segmentLength,\n lengths[j - 1],\n )\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape)\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false\n shapePath.c = false\n }\n } else {\n shapePath.c = false\n }\n addedLength += currentLengthData.addedLength\n segmentCount += 1\n }\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos)\n shapePath.setXYAt(\n shapePath.v[shapePath._length - 1][0],\n shapePath.v[shapePath._length - 1][1],\n 'o',\n shapePath._length - 1,\n )\n }\n if (addedLength > shapeSegment.e) {\n break\n }\n if (i < len - 1) {\n shapePath = shapePool.newElement()\n newShape = true\n shapes.push(shapePath)\n segmentCount = 0\n }\n }\n return shapes\n }\n\n function PuckerAndBloatModifier() {}\n extendPrototype([ShapeModifier], PuckerAndBloatModifier)\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this)\n this._isAnimated = !!this.amount.effectsSequence.length\n }\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100\n var centerPoint = [0, 0]\n var pathLength = path._length\n var i = 0\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0]\n centerPoint[1] += path.v[i][1]\n }\n centerPoint[0] /= pathLength\n centerPoint[1] /= pathLength\n var clonedPath = shapePool.newElement()\n clonedPath.c = path.c\n var vX\n var vY\n var oX\n var oY\n var iX\n var iY\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i)\n }\n return clonedPath\n }\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths\n var i\n var len = this.shapes.length\n var j\n var jLen\n var amount = this.amount.v\n\n if (amount !== 0) {\n var shapeData\n var localShapeCollection\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]\n localShapeCollection = shapeData.localShapeCollection\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes()\n shapeData.shape._mdf = true\n shapePaths = shapeData.shape.paths.shapes\n jLen = shapeData.shape.paths._length\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount))\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false\n }\n }\n\n const TransformPropertyFactory = (function () {\n var defaultVector = [0, 0]\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf\n this.iterateDynamicProperties()\n this._mdf = this._mdf || _mdf\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2])\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2])\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v)\n }\n if (this.r) {\n mat.rotate(-this.r.v)\n } else {\n mat\n .rotateZ(-this.rz.v)\n .rotateY(this.ry.v)\n .rotateX(this.rx.v)\n .rotateZ(-this.or.v[2])\n .rotateY(this.or.v[1])\n .rotateX(this.or.v[0])\n }\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v)\n } else {\n mat.translate(this.px.v, this.py.v, 0)\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2])\n }\n }\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return\n }\n if (this._isDirty) {\n this.precalculateMatrix()\n this._isDirty = false\n }\n\n this.iterateDynamicProperties()\n\n if (this._mdf || forceRender) {\n var frameRate\n this.v.cloneFromProps(this.pre.props)\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2])\n }\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2])\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v)\n }\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v)\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v\n .rotateZ(-this.rz.v)\n .rotateY(this.ry.v)\n .rotateX(this.rx.v)\n .rotateZ(-this.or.v[2])\n .rotateY(this.or.v[1])\n .rotateX(this.or.v[0])\n }\n if (this.autoOriented) {\n var v1\n var v2\n frameRate = this.elem.globalData.frameRate\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0)\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0)\n } else if (\n this.p._caching.lastFrame + this.p.offsetTime >=\n this.p.keyframes[this.p.keyframes.length - 1].t\n ) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0)\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0)\n } else {\n v1 = this.p.pv\n v2 = this.p.getValueAtTime(\n (this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate,\n this.p.offsetTime,\n )\n }\n } else if (\n this.px &&\n this.px.keyframes &&\n this.py.keyframes &&\n this.px.getValueAtTime &&\n this.py.getValueAtTime\n ) {\n v1 = []\n v2 = []\n var px = this.px\n var py = this.py\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0)\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0)\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0)\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0)\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0)\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0)\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0)\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0)\n } else {\n v1 = [px.pv, py.pv]\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime)\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime)\n }\n } else {\n v2 = defaultVector\n v1 = v2\n }\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]))\n }\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v)\n } else {\n this.v.translate(this.px.v, this.py.v, 0)\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2])\n }\n }\n this.frameId = this.elem.globalData.frameId\n }\n\n function precalculateMatrix() {\n if (!this.a.k) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2])\n this.appliedTransformations = 1\n } else {\n return\n }\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2])\n this.appliedTransformations = 2\n } else {\n return\n }\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v)\n this.appliedTransformations = 3\n } else {\n return\n }\n }\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v)\n this.appliedTransformations = 4\n }\n } else if (\n !this.rz.effectsSequence.length &&\n !this.ry.effectsSequence.length &&\n !this.rx.effectsSequence.length &&\n !this.or.effectsSequence.length\n ) {\n this.pre\n .rotateZ(-this.rz.v)\n .rotateY(this.ry.v)\n .rotateX(this.rx.v)\n .rotateZ(-this.or.v[2])\n .rotateY(this.or.v[1])\n .rotateX(this.or.v[0])\n this.appliedTransformations = 4\n }\n }\n\n function autoOrient() {\n //\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop)\n this.elem.addDynamicProperty(prop)\n this._isDirty = true\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem\n this.frameId = -1\n this.propType = 'transform'\n this.data = data\n this.v = new Matrix()\n // Precalculated matrix with non animated properties\n this.pre = new Matrix()\n this.appliedTransformations = 0\n this.initDynamicPropertyContainer(container || elem)\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this)\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this)\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this)\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this)\n }\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this)\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this)\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this)\n if (data.or.k[0].ti) {\n var i\n var len = data.or.k.length\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null\n data.or.k[i].ti = null\n }\n }\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this)\n // sh Indicates it needs to be capped between -180 and 180\n this.or.sh = true\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this)\n }\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this)\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this)\n }\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this)\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this)\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.\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem)\n } else {\n this.o = { _mdf: false, v: 1 }\n }\n this._isDirty = true\n if (!this.dynamicProperties.length) {\n this.getValue(true)\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient,\n }\n\n extendPrototype([DynamicPropertyContainer], TransformProperty)\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container)\n }\n\n return {\n getTransformProperty: getTransformProperty,\n }\n })()\n\n function RepeaterModifier() {}\n extendPrototype([ShapeModifier], RepeaterModifier)\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this)\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this)\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this)\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this)\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this)\n this.data = data\n if (!this.dynamicProperties.length) {\n this.getValue(true)\n }\n this._isAnimated = !!this.dynamicProperties.length\n this.pMatrix = new Matrix()\n this.rMatrix = new Matrix()\n this.sMatrix = new Matrix()\n this.tMatrix = new Matrix()\n this.matrix = new Matrix()\n }\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc)\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc)\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2])\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2])\n rMatrix.rotate(-transform.r.v * dir * perc)\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2])\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2])\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY)\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2])\n }\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem\n this.arr = arr\n this.pos = pos\n this.elemsData = elemsData\n this._currentCopies = 0\n this._elements = []\n this._groups = []\n this.frameId = -1\n this.initDynamicPropertyContainer(elem)\n this.initModifierProperties(elem, arr[pos])\n while (pos > 0) {\n pos -= 1\n // this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos])\n }\n if (this.dynamicProperties.length) {\n this.k = true\n } else {\n this.getValue(true)\n }\n }\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i\n var len = elements.length\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it)\n }\n }\n }\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements))\n this.resetElements(newElements)\n return newElements\n }\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i\n var len = elements.length\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag)\n }\n }\n }\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items\n var itemsTransform\n var i\n var dir\n var cont\n var hasReloaded = false\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v)\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr',\n }\n group.it.push({\n a: { a: 0, ix: 1, k: [0, 0] },\n nm: 'Transform',\n o: { a: 0, ix: 7, k: 100 },\n p: { a: 0, ix: 2, k: [0, 0] },\n r: {\n a: 1,\n ix: 6,\n k: [\n { s: 0, e: 0, t: 0 },\n { s: 0, e: 0, t: 1 },\n ],\n },\n s: { a: 0, ix: 3, k: [100, 100] },\n sa: { a: 0, ix: 5, k: 0 },\n sk: { a: 0, ix: 4, k: 0 },\n ty: 'tr',\n })\n\n this.arr.splice(0, 0, group)\n this._groups.splice(0, 0, group)\n this._currentCopies += 1\n }\n this.elem.reloadShapes()\n hasReloaded = true\n }\n cont = 0\n var renderFlag\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies\n this._groups[i]._render = renderFlag\n this.changeGroupRender(this._groups[i].it, renderFlag)\n if (!renderFlag) {\n var elems = this.elemsData[i].it\n var transformData = elems[elems.length - 1]\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true\n transformData.transform.op.v = 0\n } else {\n transformData.transform.op._mdf = false\n }\n }\n cont += 1\n }\n\n this._currentCopies = copies\n /// /\n\n var offset = this.o.v\n var offsetModulo = offset % 1\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset)\n var pProps = this.pMatrix.props\n var rProps = this.rMatrix.props\n var sProps = this.sMatrix.props\n this.pMatrix.reset()\n this.rMatrix.reset()\n this.sMatrix.reset()\n this.tMatrix.reset()\n this.matrix.reset()\n var iteration = 0\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false)\n iteration += 1\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false)\n iteration += offsetModulo\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true)\n iteration -= 1\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true)\n iteration -= offsetModulo\n }\n }\n i = this.data.m === 1 ? 0 : this._currentCopies - 1\n dir = this.data.m === 1 ? 1 : -1\n cont = this._currentCopies\n var j\n var jLen\n while (cont) {\n items = this.elemsData[i].it\n itemsTransform = items[items.length - 1].transform.mProps.v.props\n jLen = itemsTransform.length\n items[items.length - 1].transform.mProps._mdf = true\n items[items.length - 1].transform.op._mdf = true\n items[items.length - 1].transform.op.v =\n this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1))\n\n if (iteration !== 0) {\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false)\n }\n this.matrix.transform(\n rProps[0],\n rProps[1],\n rProps[2],\n rProps[3],\n rProps[4],\n rProps[5],\n rProps[6],\n rProps[7],\n rProps[8],\n rProps[9],\n rProps[10],\n rProps[11],\n rProps[12],\n rProps[13],\n rProps[14],\n rProps[15],\n )\n this.matrix.transform(\n sProps[0],\n sProps[1],\n sProps[2],\n sProps[3],\n sProps[4],\n sProps[5],\n sProps[6],\n sProps[7],\n sProps[8],\n sProps[9],\n sProps[10],\n sProps[11],\n sProps[12],\n sProps[13],\n sProps[14],\n sProps[15],\n )\n this.matrix.transform(\n pProps[0],\n pProps[1],\n pProps[2],\n pProps[3],\n pProps[4],\n pProps[5],\n pProps[6],\n pProps[7],\n pProps[8],\n pProps[9],\n pProps[10],\n pProps[11],\n pProps[12],\n pProps[13],\n pProps[14],\n pProps[15],\n )\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j]\n }\n this.matrix.reset()\n } else {\n this.matrix.reset()\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j]\n }\n }\n iteration += 1\n cont -= 1\n i += dir\n }\n } else {\n cont = this._currentCopies\n i = 0\n dir = 1\n while (cont) {\n items = this.elemsData[i].it\n itemsTransform = items[items.length - 1].transform.mProps.v.props\n items[items.length - 1].transform.mProps._mdf = false\n items[items.length - 1].transform.op._mdf = false\n cont -= 1\n i += dir\n }\n }\n return hasReloaded\n }\n\n RepeaterModifier.prototype.addShape = function () {}\n\n function RoundCornersModifier() {}\n extendPrototype([ShapeModifier], RoundCornersModifier)\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this)\n this._isAnimated = !!this.rd.effectsSequence.length\n }\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement()\n clonedPath.c = path.c\n var i\n var len = path._length\n var currentV\n var currentI\n var currentO\n var closerV\n var distance\n var newPosPerc\n var index = 0\n var vX\n var vY\n var oX\n var oY\n var iX\n var iY\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i]\n currentO = path.o[i]\n currentI = path.i[i]\n if (\n currentV[0] === currentO[0] &&\n currentV[1] === currentO[1] &&\n currentV[0] === currentI[0] &&\n currentV[1] === currentI[1]\n ) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index)\n /* clonedPath.v[index] = currentV;\n clonedPath.o[index] = currentO;\n clonedPath.i[index] = currentI; */\n index += 1\n } else {\n if (i === 0) {\n closerV = path.v[len - 1]\n } else {\n closerV = path.v[i - 1]\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2))\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc\n vX = iX\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc\n vY = iY\n oX = vX - (vX - currentV[0]) * roundCorner\n oY = vY - (vY - currentV[1]) * roundCorner\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index)\n index += 1\n\n if (i === len - 1) {\n closerV = path.v[0]\n } else {\n closerV = path.v[i + 1]\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2))\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc\n vX = oX\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc\n vY = oY\n iX = vX - (vX - currentV[0]) * roundCorner\n iY = vY - (vY - currentV[1]) * roundCorner\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index)\n index += 1\n }\n } else {\n clonedPath.setTripleAt(\n path.v[i][0],\n path.v[i][1],\n path.o[i][0],\n path.o[i][1],\n path.i[i][0],\n path.i[i][1],\n index,\n )\n index += 1\n }\n }\n return clonedPath\n }\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths\n var i\n var len = this.shapes.length\n var j\n var jLen\n var rd = this.rd.v\n\n if (rd !== 0) {\n var shapeData\n var localShapeCollection\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]\n localShapeCollection = shapeData.localShapeCollection\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes()\n shapeData.shape._mdf = true\n shapePaths = shapeData.shape.paths.shapes\n jLen = shapeData.shape.paths._length\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd))\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false\n }\n }\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : []\n\n var fWeight = 'normal'\n var fStyle = 'normal'\n var len = styles.length\n var styleName\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase()\n switch (styleName) {\n case 'italic':\n fStyle = 'italic'\n break\n case 'bold':\n fWeight = '700'\n break\n case 'black':\n fWeight = '900'\n break\n case 'medium':\n fWeight = '500'\n break\n case 'regular':\n case 'normal':\n fWeight = '400'\n break\n case 'light':\n case 'thin':\n fWeight = '200'\n break\n default:\n break\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight,\n }\n }\n\n const FontManager = (function () {\n var maxWaitingTime = 5000\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: [],\n },\n }\n var combinedCharacters = []\n // Hindi characters\n combinedCharacters = combinedCharacters.concat([\n 2304,\n 2305,\n 2306,\n 2307,\n 2362,\n 2363,\n 2364,\n 2364,\n 2366,\n 2367,\n 2368,\n 2369,\n 2370,\n 2371,\n 2372,\n 2373,\n 2374,\n 2375,\n 2376,\n 2377,\n 2378,\n 2379,\n 2380,\n 2381,\n 2382,\n 2383,\n 2387,\n 2388,\n 2389,\n 2390,\n 2391,\n 2402,\n 2403,\n ])\n\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff']\n\n var zeroWidthJoiner = [65039, 8205]\n\n function trimFontOptions(font) {\n var familyArray = font.split(',')\n var i\n var len = familyArray.length\n var enabledFamilies = []\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i])\n }\n }\n return enabledFamilies.join(',')\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span')\n // Node is invisible to screen readers.\n parentNode.setAttribute('aria-hidden', true)\n parentNode.style.fontFamily = family\n var node = createTag('span')\n // Characters that vary significantly among different fonts\n node.innerText = 'giItT1WQy@!-/#'\n // Visible - so we can measure it - but not on the screen\n parentNode.style.position = 'absolute'\n parentNode.style.left = '-10000px'\n parentNode.style.top = '-10000px'\n // Large font size makes even subtle changes obvious\n parentNode.style.fontSize = '300px'\n // Reset any font properties\n parentNode.style.fontVariant = 'normal'\n parentNode.style.fontStyle = 'normal'\n parentNode.style.fontWeight = 'normal'\n parentNode.style.letterSpacing = '0'\n parentNode.appendChild(node)\n document.body.appendChild(parentNode)\n\n // Remember width with no applied web font\n var width = node.offsetWidth\n node.style.fontFamily = trimFontOptions(font) + ', ' + family\n return { node: node, w: width, parent: parentNode }\n }\n\n function checkLoadedFonts() {\n var i\n var len = this.fonts.length\n var node\n var w\n var loadedCount = len\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true\n } else {\n node = this.fonts[i].monoCase.node\n w = this.fonts[i].monoCase.w\n if (node.offsetWidth !== w) {\n loadedCount -= 1\n this.fonts[i].loaded = true\n } else {\n node = this.fonts[i].sansCase.node\n w = this.fonts[i].sansCase.w\n if (node.offsetWidth !== w) {\n loadedCount -= 1\n this.fonts[i].loaded = true\n }\n }\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent)\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent)\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20)\n } else {\n setTimeout(this.setIsLoadedBinded, 10)\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas'\n var helper\n var fontProps = getFontProperties(fontData)\n if (engine === 'svg') {\n var tHelper = createNS('text')\n tHelper.style.fontSize = '100px'\n // tHelper.style.fontFamily = fontData.fFamily;\n tHelper.setAttribute('font-family', fontData.fFamily)\n tHelper.setAttribute('font-style', fontProps.style)\n tHelper.setAttribute('font-weight', fontProps.weight)\n tHelper.textContent = '1'\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit'\n tHelper.setAttribute('class', fontData.fClass)\n } else {\n tHelper.style.fontFamily = fontData.fFamily\n }\n def.appendChild(tHelper)\n helper = tHelper\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d')\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily\n helper = tCanvasHelper\n }\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text\n return helper.getComputedTextLength()\n }\n return helper.measureText(text).width\n }\n return {\n measureText: measure,\n }\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true\n return\n }\n if (this.chars) {\n this.isLoaded = true\n this.fonts = fontData.list\n return\n }\n if (!document.body) {\n this.isLoaded = true\n fontData.list.forEach((data) => {\n data.helper = createHelper(data)\n data.cache = {}\n })\n this.fonts = fontData.list\n return\n }\n\n var fontArr = fontData.list\n var i\n var len = fontArr.length\n var _pendingFonts = len\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true\n var loadedSelector\n var j\n fontArr[i].loaded = false\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace')\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif')\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true\n _pendingFonts -= 1\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll(\n 'style[f-forigin=\"p\"][f-family=\"' +\n fontArr[i].fFamily +\n '\"], style[f-origin=\"3\"][f-family=\"' +\n fontArr[i].fFamily +\n '\"]',\n )\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false\n }\n\n if (shouldLoadFont) {\n var s = createTag('style')\n s.setAttribute('f-forigin', fontArr[i].fOrigin)\n s.setAttribute('f-origin', fontArr[i].origin)\n s.setAttribute('f-family', fontArr[i].fFamily)\n s.type = 'text/css'\n s.innerText =\n '@font-face {font-family: ' +\n fontArr[i].fFamily +\n \"; font-style: normal; src: url('\" +\n fontArr[i].fPath +\n \"');}\"\n defs.appendChild(s)\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]')\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link')\n l.setAttribute('f-forigin', fontArr[i].fOrigin)\n l.setAttribute('f-origin', fontArr[i].origin)\n l.type = 'text/css'\n l.rel = 'stylesheet'\n l.href = fontArr[i].fPath\n document.body.appendChild(l)\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]')\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link')\n sc.setAttribute('f-forigin', fontArr[i].fOrigin)\n sc.setAttribute('f-origin', fontArr[i].origin)\n sc.setAttribute('rel', 'stylesheet')\n sc.setAttribute('href', fontArr[i].fPath)\n defs.appendChild(sc)\n }\n }\n fontArr[i].helper = createHelper(fontArr[i], defs)\n fontArr[i].cache = {}\n this.fonts.push(fontArr[i])\n }\n if (_pendingFonts === 0) {\n this.isLoaded = true\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100)\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return\n }\n if (!this.chars) {\n this.chars = []\n }\n var i\n var len = chars.length\n var j\n var jLen = this.chars.length\n var found\n for (i = 0; i < len; i += 1) {\n j = 0\n found = false\n while (j < jLen) {\n if (\n this.chars[j].style === chars[i].style &&\n this.chars[j].fFamily === chars[i].fFamily &&\n this.chars[j].ch === chars[i].ch\n ) {\n found = true\n }\n j += 1\n }\n if (!found) {\n this.chars.push(chars[i])\n jLen += 1\n }\n }\n }\n\n function getCharData(char, style, font) {\n var i = 0\n var len = this.chars.length\n while (i < len) {\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i]\n }\n i += 1\n }\n if (\n ((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char) &&\n console &&\n console.warn && // eslint-disable-line no-console\n !this._warned\n ) {\n this._warned = true\n console.warn('Missing character from exported characters list: ', char, style, font) // eslint-disable-line no-console\n }\n return emptyChar\n }\n\n function measureText(char, fontName, size) {\n var fontData = this.getFontByName(fontName)\n var index = char.charCodeAt(0)\n if (!fontData.cache[index + 1]) {\n var tHelper = fontData.helper\n if (char === ' ') {\n var doubleSize = tHelper.measureText('|' + char + '|')\n var singleSize = tHelper.measureText('||')\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100\n } else {\n fontData.cache[index + 1] = tHelper.measureText(char) / 100\n }\n }\n return fontData.cache[index + 1] * size\n }\n\n function getFontByName(name) {\n var i = 0\n var len = this.fonts.length\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i]\n }\n i += 1\n }\n return this.fonts[0]\n }\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16)\n return surrogateModifiers.indexOf(sum) !== -1\n }\n\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\n if (!secondCharCode) {\n return firstCharCode === zeroWidthJoiner[1]\n }\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1]\n }\n\n function isCombinedCharacter(char) {\n return combinedCharacters.indexOf(char) !== -1\n }\n\n function setIsLoaded() {\n this.isLoaded = true\n }\n\n var Font = function () {\n this.fonts = []\n this.chars = null\n this.typekitLoaded = 0\n this.isLoaded = false\n this._warned = false\n this.initTime = Date.now()\n this.setIsLoadedBinded = this.setIsLoaded.bind(this)\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this)\n }\n Font.isModifier = isModifier\n Font.isZeroWidthJoiner = isZeroWidthJoiner\n Font.isCombinedCharacter = isCombinedCharacter\n\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded,\n }\n\n Font.prototype = fontPrototype\n\n return Font\n })()\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function () {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false\n // layer's display state\n this.hidden = false\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false\n // list of animated components\n this.renderableComponents = []\n },\n addRenderableComponent: function (component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component)\n }\n },\n removeRenderableComponent: function (component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1)\n }\n },\n prepareRenderableFrame: function (num) {\n this.checkLayerLimits(num)\n },\n checkTransparency: function () {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true\n this.hide()\n }\n } else if (this.isTransparent) {\n this.isTransparent = false\n this.show()\n }\n },\n /**\n * @function\n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n *\n */\n checkLayerLimits: function (num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true\n this._mdf = true\n this.isInRange = true\n this.show()\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true\n this.isInRange = false\n this.hide()\n }\n },\n renderRenderable: function () {\n var i\n var len = this.renderableComponents.length\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame)\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n },\n sourceRectAtTime: function () {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100,\n }\n },\n getLayerSize: function () {\n if (this.data.ty === 5) {\n return { w: this.data.textData.width, h: this.data.textData.height }\n }\n return { w: this.data.width, h: this.data.height }\n },\n }\n\n const MaskManagerInterface = (function () {\n function MaskInterface(mask, data) {\n this._mask = mask\n this._data = data\n }\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function () {\n if (this._mask.prop.k) {\n this._mask.prop.getValue()\n }\n return this._mask.prop\n },\n })\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function () {\n if (this._mask.op.k) {\n this._mask.op.getValue()\n }\n return this._mask.op.v * 100\n },\n })\n\n var MaskManager = function (maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length)\n var i\n var len = maskManager.viewData.length\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i])\n }\n\n var maskFunction = function (name) {\n i = 0\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i]\n }\n i += 1\n }\n return null\n }\n return maskFunction\n }\n return MaskManager\n })()\n\n const ExpressionPropertyInterface = (function () {\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 }\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 }\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function () {\n return property.getVelocityAtTime(property.comp.currentFrame)\n },\n })\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0\n }\n var value = ''\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e\n } else {\n value = property.keyframes[pos - 2].s\n }\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value) // eslint-disable-line no-new-wrappers\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate\n valueProp.value = type === 'unidimensional' ? value[0] : value\n return valueProp\n }\n expressionValue.valueAtTime = property.getValueAtTime\n expressionValue.speedAtTime = property.getSpeedAtTime\n expressionValue.velocityAtTime = property.getVelocityAtTime\n expressionValue.propertyGroup = property.propertyGroup\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue\n }\n var mult = 1 / property.mult\n var val = property.pv * mult\n var expressionValue = new Number(val) // eslint-disable-line no-new-wrappers\n expressionValue.value = val\n completeProperty(expressionValue, property, 'unidimensional')\n\n return function () {\n if (property.k) {\n property.getValue()\n }\n val = property.v * mult\n if (expressionValue.value !== val) {\n expressionValue = new Number(val) // eslint-disable-line no-new-wrappers\n expressionValue.value = val\n completeProperty(expressionValue, property, 'unidimensional')\n }\n return expressionValue\n }\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue\n }\n var mult = 1 / property.mult\n var len = (property.data && property.data.l) || property.pv.length\n var expressionValue = createTypedArray('float32', len)\n var arrValue = createTypedArray('float32', len)\n expressionValue.value = arrValue\n completeProperty(expressionValue, property, 'multidimensional')\n\n return function () {\n if (property.k) {\n property.getValue()\n }\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult\n expressionValue[i] = arrValue[i]\n }\n return expressionValue\n }\n }\n\n // TODO: try to avoid using this getter\n function defaultGetter() {\n return defaultUnidimensionalValue\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter\n }\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property)\n }\n return MultidimensionalPropertyInterface(property)\n }\n })()\n\n const TransformExpressionInterface = (function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation\n case 'ADBE Rotate X':\n return _thisFunction.xRotation\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position\n case 'ADBE Position_0':\n return _thisFunction.xPosition\n case 'ADBE Position_1':\n return _thisFunction.yPosition\n case 'ADBE Position_2':\n return _thisFunction.zPosition\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity\n default:\n return null\n }\n }\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz),\n })\n\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r),\n })\n\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx),\n })\n\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry),\n })\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s),\n })\n var _px\n var _py\n var _pz\n var _transformFactory\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p)\n } else {\n _px = ExpressionPropertyInterface(transform.px)\n _py = ExpressionPropertyInterface(transform.py)\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz)\n }\n }\n Object.defineProperty(_thisFunction, 'position', {\n get: function () {\n if (transform.p) {\n return _transformFactory()\n }\n return [_px(), _py(), _pz ? _pz() : 0]\n },\n })\n\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px),\n })\n\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py),\n })\n\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz),\n })\n\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a),\n })\n\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o),\n })\n\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk),\n })\n\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa),\n })\n\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or),\n })\n\n return _thisFunction\n }\n })()\n\n const LayerExpressionInterface = (function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix()\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time)\n propMatrix.clone(toWorldMat)\n } else {\n var transformMat = this._elem.finalTransform.mProp\n transformMat.applyToMatrix(toWorldMat)\n }\n return toWorldMat\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time)\n toWorldMat.props[12] = 0\n toWorldMat.props[13] = 0\n toWorldMat.props[14] = 0\n return this.applyPoint(toWorldMat, arr)\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time)\n return this.applyPoint(toWorldMat, arr)\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time)\n toWorldMat.props[12] = 0\n toWorldMat.props[13] = 0\n toWorldMat.props[14] = 0\n return this.invertPoint(toWorldMat, arr)\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time)\n return this.invertPoint(toWorldMat, arr)\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i\n var len = this._elem.hierarchy.length\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix)\n }\n }\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0)\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i\n var len = this._elem.hierarchy.length\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix)\n }\n }\n return matrix.inversePoint(arr)\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix()\n toWorldMat.reset()\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat)\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i\n var len = this._elem.hierarchy.length\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat)\n }\n return toWorldMat.inversePoint(arr)\n }\n return toWorldMat.inversePoint(arr)\n }\n\n function sampleImage() {\n return [1, 1, 1, 1]\n }\n\n return function (elem) {\n var transformInterface\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem)\n }\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface\n default:\n return null\n }\n }\n _thisLayerFunction.getMatrix = getMatrix\n _thisLayerFunction.invertPoint = invertPoint\n _thisLayerFunction.applyPoint = applyPoint\n _thisLayerFunction.toWorld = toWorld\n _thisLayerFunction.toWorldVec = toWorldVec\n _thisLayerFunction.fromWorld = fromWorld\n _thisLayerFunction.fromWorldVec = fromWorldVec\n _thisLayerFunction.toComp = toWorld\n _thisLayerFunction.fromComp = fromComp\n _thisLayerFunction.sampleImage = sampleImage\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem)\n _thisLayerFunction._elem = elem\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp)\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint')\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function () {\n return elem.hierarchy.length\n },\n },\n parent: {\n get: function () {\n return elem.hierarchy[0].layerInterface\n },\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function () {\n return transformInterface\n },\n },\n active: {\n get: function () {\n return elem.isInRange\n },\n },\n })\n\n _thisLayerFunction.startTime = elem.data.st\n _thisLayerFunction.index = elem.data.ind\n _thisLayerFunction.source = elem.data.refId\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate\n _thisLayerFunction._name = elem.data.nm\n\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface\n return _thisLayerFunction\n }\n })()\n\n const propertyGroupFactory = (function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val\n if (val <= 0) {\n return interfaceFunction\n }\n return parentPropertyGroup(val - 1)\n }\n }\n })()\n\n const PropertyInterface = (function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName,\n }\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val\n if (val <= 0) {\n return interfaceFunction\n }\n return propertyGroup(val - 1)\n }\n\n return _propertyGroup\n }\n })()\n\n const EffectsExpressionInterface = (function () {\n var ob = {\n createEffectsInterface: createEffectsInterface,\n }\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = []\n var effectsData = elem.data.ef\n var i\n var len = elem.effectsManager.effectElements.length\n for (i = 0; i < len; i += 1) {\n effectElements.push(\n createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem),\n )\n }\n\n var effects = elem.data.ef || []\n var groupInterface = function (name) {\n i = 0\n len = effects.length\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i]\n }\n i += 1\n }\n return null\n }\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function () {\n return effects.length\n },\n })\n return groupInterface\n }\n return null\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef\n var i = 0\n var len = effects.length\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i]\n }\n return effectElements[i]()\n }\n i += 1\n }\n throw new Error()\n }\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup)\n\n var effectElements = []\n var i\n var len = data.ef.length\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(\n createGroupInterface(\n data.ef[i],\n elements.effectElements[i],\n elements.effectElements[i].propertyGroup,\n elem,\n ),\n )\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup))\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function () {\n return effectElements[0]()\n },\n })\n }\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function () {\n return data.np\n },\n },\n _name: { value: data.nm },\n propertyGroup: { value: _propertyGroup },\n })\n groupInterface.enabled = data.en !== 0\n groupInterface.active = groupInterface.enabled\n return groupInterface\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p)\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v)\n }\n return expressionProperty()\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup))\n }\n\n return interfaceFunction\n }\n\n return ob\n })()\n\n const CompExpressionInterface = (function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0\n var len = comp.layers.length\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface\n }\n i += 1\n }\n return null\n // return {active:false};\n }\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm })\n _thisLayerFunction.layer = _thisLayerFunction\n _thisLayerFunction.pixelAspect = 1\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w\n _thisLayerFunction.pixelAspect = 1\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate\n _thisLayerFunction.displayStartTime = 0\n _thisLayerFunction.numLayers = comp.layers.length\n return _thisLayerFunction\n }\n })()\n\n const ShapePathInterface = (function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh\n\n function interfaceFunction(val) {\n if (\n val === 'Shape' ||\n val === 'shape' ||\n val === 'Path' ||\n val === 'path' ||\n val === 'ADBE Vector Shape' ||\n val === 2\n ) {\n return interfaceFunction.path\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup))\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function () {\n if (prop.k) {\n prop.getValue()\n }\n return prop\n },\n },\n shape: {\n get: function () {\n if (prop.k) {\n prop.getValue()\n }\n return prop\n },\n },\n _name: { value: shape.nm },\n ix: { value: shape.ix },\n propertyIndex: { value: shape.ix },\n mn: { value: shape.mn },\n propertyGroup: { value: propertyGroup },\n })\n return interfaceFunction\n }\n })()\n\n const ShapeExpressionInterface = (function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = []\n var i\n var len = shapes ? shapes.length : 0\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'tr') {\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup))\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup))\n }\n }\n return arr\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0\n var len = interfaces.length\n while (i < len) {\n if (\n interfaces[i]._name === value ||\n interfaces[i].mn === value ||\n interfaces[i].propertyIndex === value ||\n interfaces[i].ix === value ||\n interfaces[i].ind === value\n ) {\n return interfaces[i]\n }\n i += 1\n }\n if (typeof value === 'number') {\n return interfaces[value - 1]\n }\n return null\n }\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup)\n interfaceFunction.numProperties = interfaces.length\n var transformInterface = transformInterfaceFactory(\n shape.it[shape.it.length - 1],\n view.it[view.it.length - 1],\n interfaceFunction.propertyGroup,\n )\n interfaceFunction.transform = transformInterface\n interfaceFunction.propertyIndex = shape.cix\n interfaceFunction._name = shape.nm\n\n return interfaceFunction\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n default:\n return interfaceFunction.transform\n }\n }\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup)\n var transformInterface = transformInterfaceFactory(\n shape.it[shape.it.length - 1],\n view.it[view.it.length - 1],\n interfaceFunction.propertyGroup,\n )\n interfaceFunction.content = content\n interfaceFunction.transform = transformInterface\n Object.defineProperty(interfaceFunction, '_name', {\n get: function () {\n return shape.nm\n },\n })\n // interfaceFunction.content = interfaceFunction;\n interfaceFunction.numProperties = shape.np\n interfaceFunction.propertyIndex = shape.ix\n interfaceFunction.nm = shape.nm\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity\n }\n return null\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c),\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o),\n },\n _name: { value: shape.nm },\n mn: { value: shape.mn },\n })\n\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup))\n return interfaceFunction\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint\n }\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity\n }\n return null\n }\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s),\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e),\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o),\n },\n type: {\n get: function () {\n return 'a'\n },\n },\n _name: { value: shape.nm },\n mn: { value: shape.mn },\n })\n\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup))\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup))\n return interfaceFunction\n }\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null\n }\n return interfaceFunction\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup)\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\n })\n }\n var i\n var len = shape.d ? shape.d.length : 0\n var dashOb = {}\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i)\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup)\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity\n }\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth\n }\n return null\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c),\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o),\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w),\n },\n dash: {\n get: function () {\n return dashOb\n },\n },\n _name: { value: shape.nm },\n mn: { value: shape.mn },\n })\n\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup))\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup))\n return interfaceFunction\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end\n }\n if (val === shape.s.ix) {\n return interfaceFunction.start\n }\n if (val === shape.o.ix) {\n return interfaceFunction.offset\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n interfaceFunction.propertyIndex = shape.ix\n\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup))\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup))\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup))\n interfaceFunction.propertyIndex = shape.ix\n interfaceFunction.propertyGroup = propertyGroup\n\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s),\n },\n end: {\n get: ExpressionPropertyInterface(view.e),\n },\n offset: {\n get: ExpressionPropertyInterface(view.o),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint\n }\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity\n }\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position\n }\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation\n }\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale\n }\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\n return interfaceFunction.skew\n }\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\n return interfaceFunction.skewAxis\n }\n return null\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup))\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup))\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup))\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup))\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup))\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup))\n }\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup))\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o),\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p),\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a),\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s),\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r),\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.ty = 'tr'\n interfaceFunction.mn = shape.mn\n interfaceFunction.propertyGroup = propertyGroup\n return interfaceFunction\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position\n }\n if (shape.s.ix === value) {\n return interfaceFunction.size\n }\n return null\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n interfaceFunction.propertyIndex = shape.ix\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup))\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s),\n },\n position: {\n get: ExpressionPropertyInterface(prop.p),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position\n }\n if (shape.r.ix === value) {\n return interfaceFunction.rotation\n }\n if (shape.pt.ix === value) {\n return interfaceFunction.points\n }\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius\n }\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness\n }\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius\n }\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh\n interfaceFunction.propertyIndex = shape.ix\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup))\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup))\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup))\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup))\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup))\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup))\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p),\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r),\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt),\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or),\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os),\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir),\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position\n }\n if (shape.r.ix === value) {\n return interfaceFunction.roundness\n }\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size\n }\n return null\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh\n interfaceFunction.propertyIndex = shape.ix\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup))\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup))\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup))\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p),\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r),\n },\n size: {\n get: ExpressionPropertyInterface(prop.s),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var prop = view\n interfaceFunction.propertyIndex = shape.ix\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup))\n\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies\n }\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset\n }\n return null\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup)\n var prop = view\n interfaceFunction.propertyIndex = shape.ix\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup))\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup))\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c),\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o),\n },\n _name: { value: shape.nm },\n })\n interfaceFunction.mn = shape.mn\n return interfaceFunction\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value\n if (value === 0) {\n return propertyGroup\n }\n return interfaces[value - 1]\n }\n var i = 0\n var len = interfaces.length\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i]\n }\n i += 1\n }\n return null\n }\n function parentGroupWrapper() {\n return propertyGroup\n }\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper)\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup)\n _interfaceFunction.numProperties = interfaces.length\n _interfaceFunction._name = 'Contents'\n return _interfaceFunction\n }\n })()\n\n const TextExpressionInterface = (function () {\n return function (elem) {\n var _prevValue\n var _sourceText\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText\n default:\n return null\n }\n }\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function () {\n elem.textProperty.getValue()\n var stringValue = elem.textProperty.currentData.t\n if (stringValue !== _prevValue) {\n elem.textProperty.currentData.t = _prevValue\n _sourceText = new String(stringValue) // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n _sourceText.value = stringValue || new String(stringValue) // eslint-disable-line no-new-wrappers\n }\n return _sourceText\n },\n })\n return _thisLayerFunction\n }\n })()\n\n const getBlendMode = (function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity',\n }\n\n return function (mode) {\n return blendModeEnums[mode] || ''\n }\n })()\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container)\n }\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container)\n }\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container)\n }\n function NoValueEffect() {\n this.p = {}\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || []\n this.effectElements = []\n var i\n var len = effects.length\n var effectItem\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element)\n this.effectElements.push(effectItem)\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element)\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect)\n\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data\n this.effectElements = []\n this.initDynamicPropertyContainer(element)\n var i\n var len = this.data.ef.length\n var eff\n var effects = this.data.ef\n for (i = 0; i < len; i += 1) {\n eff = null\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this)\n break\n case 1:\n eff = new AngleEffect(effects[i], element, this)\n break\n case 2:\n eff = new ColorEffect(effects[i], element, this)\n break\n case 3:\n eff = new PointEffect(effects[i], element, this)\n break\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this)\n break\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this)\n break\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this)\n break\n case 5:\n eff = new EffectsManager(effects[i], element, this)\n break\n // case 6:\n default:\n eff = new NoValueEffect(effects[i], element, this)\n break\n }\n if (eff) {\n this.effectElements.push(eff)\n }\n }\n }\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function () {\n if (!this.data.hasMask) {\n return false\n }\n var i = 0\n var len = this.data.masksProperties.length\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true\n }\n i += 1\n }\n return false\n },\n initExpressions: function () {\n this.layerInterface = LayerExpressionInterface(this)\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager)\n }\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface)\n this.layerInterface.registerEffectsInterface(effectsInterface)\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this)\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(\n this.shapesData,\n this.itemsData,\n this.layerInterface,\n )\n this.layerInterface.content = this.layerInterface.shapeInterface\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this)\n this.layerInterface.text = this.layerInterface.textInterface\n }\n },\n setBlendMode: function () {\n var blendModeValue = getBlendMode(this.data.bm)\n var elem = this.baseElement || this.layerElement\n\n elem.style['mix-blend-mode'] = blendModeValue\n },\n initBaseData: function (data, globalData, comp) {\n this.globalData = globalData\n this.comp = comp\n this.data = data\n this.layerId = createElementID()\n\n // Stretch factor for old animations missing this property.\n if (!this.data.sr) {\n this.data.sr = 1\n }\n // effects manager\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties)\n },\n getType: function () {\n return this.type\n },\n sourceRectAtTime: function () {},\n }\n\n /**\n * @file\n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\n * @function\n * Initializes frame related properties.\n *\n */\n initFrame: function () {\n // set to true when inpoint is rendered\n this._isFirstFrame = false\n // list of animated properties\n this.dynamicProperties = []\n // If layer has been modified in current tick this will be true\n this._mdf = false\n },\n /**\n * @function\n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n *\n */\n prepareProperties: function (num, isVisible) {\n var i\n var len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\n this.dynamicProperties[i].getValue()\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true\n this._mdf = true\n }\n }\n }\n },\n addDynamicProperty: function (prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop)\n }\n },\n }\n\n const FootageInterface = (function () {\n var outlineInterfaceFactory = function (elem) {\n var currentPropertyName = ''\n var currentProperty = elem.getFootageData()\n function init() {\n currentPropertyName = ''\n currentProperty = elem.getFootageData()\n return searchProperty\n }\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value\n currentProperty = currentProperty[value]\n if (typeof currentProperty === 'object') {\n return searchProperty\n }\n return currentProperty\n }\n var propertyNameIndex = value.indexOf(currentPropertyName)\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10)\n currentProperty = currentProperty[index]\n if (typeof currentProperty === 'object') {\n return searchProperty\n }\n return currentProperty\n }\n return ''\n }\n return init\n }\n\n var dataInterfaceFactory = function (elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface()\n }\n return null\n }\n\n interfaceFunction._name = 'Outline'\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem)\n return interfaceFunction\n }\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface\n }\n return null\n }\n\n _interfaceFunction._name = 'Data'\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem)\n return _interfaceFunction\n }\n })()\n\n function FootageElement(data, globalData, comp) {\n this.initFrame()\n this.initRenderable()\n this.assetData = globalData.getAssetData(data.refId)\n this.footageData = globalData.imageLoader.getAsset(this.assetData)\n this.initBaseData(data, globalData, comp)\n }\n\n FootageElement.prototype.prepareFrame = function () {}\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement)\n\n FootageElement.prototype.getBaseElement = function () {\n return null\n }\n\n FootageElement.prototype.renderFrame = function () {}\n\n FootageElement.prototype.destroy = function () {}\n\n FootageElement.prototype.initExpressions = function () {\n this.layerInterface = FootageInterface(this)\n }\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData\n }\n\n function AudioElement(data, globalData, comp) {\n this.initFrame()\n this.initRenderable()\n this.assetData = globalData.getAssetData(data.refId)\n this.initBaseData(data, globalData, comp)\n this._isPlaying = false\n this._canPlay = false\n var assetPath = this.globalData.getAssetsPath(this.assetData)\n this.audio = this.globalData.audioController.createAudio(assetPath)\n this._currentTime = 0\n this.globalData.audioController.addAudio(this)\n this._volumeMultiplier = 1\n this._volume = 1\n this._previousVolume = null\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, 0.01, this)\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true)\n this.prepareProperties(num, true)\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v\n this._currentTime = timeRemapped\n } else {\n this._currentTime = num / this.data.sr\n }\n this._volume = this.lv.v[0]\n var totalVolume = this._volume * this._volumeMultiplier\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume\n this.audio.volume(totalVolume)\n }\n }\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement)\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play()\n this.audio.seek(this._currentTime / this.globalData.frameRate)\n this._isPlaying = true\n } else if (\n !this.audio.playing() ||\n Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\n ) {\n this.audio.seek(this._currentTime / this.globalData.frameRate)\n }\n }\n }\n\n AudioElement.prototype.show = function () {\n // this.audio.play()\n }\n\n AudioElement.prototype.hide = function () {\n this.audio.pause()\n this._isPlaying = false\n }\n\n AudioElement.prototype.pause = function () {\n this.audio.pause()\n this._isPlaying = false\n this._canPlay = false\n }\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true\n }\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue)\n }\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue\n this._previousVolume = volumeValue * this._volume\n this.audio.volume(this._previousVolume)\n }\n\n AudioElement.prototype.getBaseElement = function () {\n return null\n }\n\n AudioElement.prototype.destroy = function () {}\n\n AudioElement.prototype.sourceRectAtTime = function () {}\n\n AudioElement.prototype.initExpressions = function () {}\n\n function BaseRenderer() {}\n BaseRenderer.prototype.checkLayers = function (num) {\n var i\n var len = this.layers.length\n var data\n this.completeLayers = true\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i]\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i)\n }\n }\n this.completeLayers = this.elements[i] ? this.completeLayers : false\n }\n this.checkPendingElements()\n }\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer)\n case 0:\n return this.createComp(layer)\n case 1:\n return this.createSolid(layer)\n case 3:\n return this.createNull(layer)\n case 4:\n return this.createShape(layer)\n case 5:\n return this.createText(layer)\n case 6:\n return this.createAudio(layer)\n case 13:\n return this.createCamera(layer)\n case 15:\n return this.createFootage(layer)\n default:\n return this.createNull(layer)\n }\n }\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error(\"You're using a 3d camera. Try the html renderer.\")\n }\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this)\n }\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this)\n }\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i\n var len = this.layers.length\n for (i = 0; i < len; i += 1) {\n this.buildItem(i)\n }\n this.checkPendingElements()\n }\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false\n var i\n var len = newLayers.length\n var j\n var jLen = this.layers.length\n for (i = 0; i < len; i += 1) {\n j = 0\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i]\n break\n }\n j += 1\n }\n }\n }\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface\n }\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems()\n }\n }\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements\n var layers = this.layers\n var i = 0\n var len = layers.length\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i)\n this.addPendingElement(element)\n } else {\n hierarchy.push(elements[i])\n elements[i].setAsParent()\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy)\n } else {\n element.setHierarchy(hierarchy)\n }\n }\n }\n i += 1\n }\n }\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element)\n }\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i\n var len = assets.length\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i])\n comp.initExpressions()\n this.globalData.projectInterface.registerComposition(comp)\n }\n }\n }\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift()\n var element\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue]\n } else {\n var i\n var len = this.elements.length\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i]\n break\n }\n }\n }\n if (path.length === 0) {\n return element\n }\n return element.getElementByPath(path)\n }\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager()\n this.globalData.fontManager.addChars(animData.chars)\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer)\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem)\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem)\n this.globalData.imageLoader = this.animationItem.imagePreloader\n this.globalData.audioController = this.animationItem.audioController\n this.globalData.frameId = 0\n this.globalData.frameRate = animData.fr\n this.globalData.nm = animData.nm\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h,\n }\n }\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function () {\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\n _matMdf: false,\n _opMdf: false,\n mat: new Matrix(),\n }\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true\n }\n\n // TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n // this.createElements();\n }\n },\n renderTransform: function () {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame\n\n if (this.hierarchy) {\n var mat\n var finalMat = this.finalTransform.mat\n var i = 0\n var len = this.hierarchy.length\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true\n break\n }\n i += 1\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props\n finalMat.cloneFromProps(mat)\n for (i = 0; i < len; i += 1) {\n mat = this.hierarchy[i].finalTransform.mProp.v.props\n finalMat.transform(\n mat[0],\n mat[1],\n mat[2],\n mat[3],\n mat[4],\n mat[5],\n mat[6],\n mat[7],\n mat[8],\n mat[9],\n mat[10],\n mat[11],\n mat[12],\n mat[13],\n mat[14],\n mat[15],\n )\n }\n }\n }\n },\n globalToLocal: function (pt) {\n var transforms = []\n transforms.push(this.finalTransform)\n var flag = true\n var comp = this.comp\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform)\n }\n comp = comp.comp\n } else {\n flag = false\n }\n }\n var i\n var len = transforms.length\n var ptNew\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0)\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0]\n }\n return pt\n },\n mHelper: new Matrix(),\n }\n\n function MaskElement(data, element, globalData) {\n this.data = data\n this.element = element\n this.globalData = globalData\n this.storedData = []\n this.masksProperties = this.data.masksProperties || []\n this.maskElement = null\n var defs = this.globalData.defs\n var i\n var len = this.masksProperties ? this.masksProperties.length : 0\n this.viewData = createSizedArray(len)\n this.solidPath = ''\n\n var path\n var properties = this.masksProperties\n var count = 0\n var currentMasks = []\n var j\n var jLen\n var layerId = createElementID()\n var rect\n var expansor\n var feMorph\n var x\n var maskType = 'clipPath'\n var maskRef = 'clip-path'\n for (i = 0; i < len; i += 1) {\n if (\n (properties[i].mode !== 'a' && properties[i].mode !== 'n') ||\n properties[i].inv ||\n properties[i].o.k !== 100 ||\n properties[i].o.x\n ) {\n maskType = 'mask'\n maskRef = 'mask'\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect')\n rect.setAttribute('fill', '#ffffff')\n rect.setAttribute('width', this.element.comp.data.w || 0)\n rect.setAttribute('height', this.element.comp.data.h || 0)\n currentMasks.push(rect)\n } else {\n rect = null\n }\n\n path = createNS('path')\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: '',\n }\n defs.appendChild(path)\n } else {\n count += 1\n\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff')\n path.setAttribute('clip-rule', 'nonzero')\n var filterID\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask'\n maskRef = 'mask'\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element)\n filterID = createElementID()\n expansor = createNS('filter')\n expansor.setAttribute('id', filterID)\n feMorph = createNS('feMorphology')\n feMorph.setAttribute('operator', 'erode')\n feMorph.setAttribute('in', 'SourceGraphic')\n feMorph.setAttribute('radius', '0')\n expansor.appendChild(feMorph)\n defs.appendChild(expansor)\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff')\n } else {\n feMorph = null\n x = null\n }\n\n // TODO move this to a factory or to a constructor\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0,\n }\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length\n var g = createNS('g')\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j])\n }\n var mask = createNS('mask')\n mask.setAttribute('mask-type', 'alpha')\n mask.setAttribute('id', layerId + '_' + count)\n mask.appendChild(path)\n defs.appendChild(mask)\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')')\n\n currentMasks.length = 0\n currentMasks.push(g)\n } else {\n currentMasks.push(path)\n }\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath()\n }\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect,\n }\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i])\n }\n }\n }\n\n this.maskElement = createNS(maskType)\n\n len = currentMasks.length\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i])\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId)\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')')\n defs.appendChild(this.maskElement)\n }\n if (this.viewData.length) {\n this.element.addRenderableComponent(this)\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop\n }\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat\n var i\n var len = this.masksProperties.length\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i])\n }\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v)\n }\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS())\n }\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode'\n this.storedData[i].elem.setAttribute(\n 'filter',\n 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')',\n )\n }\n feMorph.setAttribute('radius', -this.storedData[i].x.v)\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate'\n this.storedData[i].elem.setAttribute('filter', null)\n }\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2)\n }\n }\n }\n }\n }\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement\n }\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 '\n path += ' h' + this.globalData.compSize.w\n path += ' v' + this.globalData.compSize.h\n path += ' h-' + this.globalData.compSize.w\n path += ' v-' + this.globalData.compSize.h + ' '\n return path\n }\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1]\n var i\n var len\n len = pathNodes._length\n for (i = 1; i < len; i += 1) {\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];\n pathString +=\n ' C' +\n pathNodes.o[i - 1][0] +\n ',' +\n pathNodes.o[i - 1][1] +\n ' ' +\n pathNodes.i[i][0] +\n ',' +\n pathNodes.i[i][1] +\n ' ' +\n pathNodes.v[i][0] +\n ',' +\n pathNodes.v[i][1]\n }\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];\n if (pathNodes.c && len > 1) {\n pathString +=\n ' C' +\n pathNodes.o[i - 1][0] +\n ',' +\n pathNodes.o[i - 1][1] +\n ' ' +\n pathNodes.i[0][0] +\n ',' +\n pathNodes.i[0][1] +\n ' ' +\n pathNodes.v[0][0] +\n ',' +\n pathNodes.v[0][1]\n }\n // pathNodes.__renderedString = pathString;\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = ''\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString\n }\n viewData.elem.setAttribute('d', pathShapeValue)\n }\n viewData.lastPath = pathString\n }\n }\n\n MaskElement.prototype.destroy = function () {\n this.element = null\n this.globalData = null\n this.maskElement = null\n this.data = null\n this.masksProperties = null\n }\n\n const filtersFactory = (function () {\n var ob = {}\n ob.createFilter = createFilter\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter')\n fil.setAttribute('id', filId)\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox')\n fil.setAttribute('x', '0%')\n fil.setAttribute('y', '0%')\n fil.setAttribute('width', '100%')\n fil.setAttribute('height', '100%')\n }\n return fil\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix')\n feColorMatrix.setAttribute('type', 'matrix')\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB')\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1')\n return feColorMatrix\n }\n\n return ob\n })()\n\n const featureSupport = (function () {\n var ob = {\n maskType: true,\n }\n if (\n /MSIE 10/i.test(navigator.userAgent) ||\n /MSIE 9/i.test(navigator.userAgent) ||\n /rv:11.0/i.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent)\n ) {\n ob.maskType = false\n }\n return ob\n })()\n\n var registeredEffects = {}\n var idPrefix = 'filter_result_'\n\n function SVGEffects(elem) {\n var i\n var source = 'SourceGraphic'\n var len = elem.data.ef ? elem.data.ef.length : 0\n var filId = createElementID()\n var fil = filtersFactory.createFilter(filId, true)\n var count = 0\n this.filters = []\n var filterManager\n for (i = 0; i < len; i += 1) {\n filterManager = null\n var type = elem.data.ef[i].ty\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source)\n source = idPrefix + count\n if (registeredEffects[type].countsAsEffect) {\n count += 1\n }\n }\n if (filterManager) {\n this.filters.push(filterManager)\n }\n }\n if (count) {\n elem.globalData.defs.appendChild(fil)\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')')\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this)\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i\n var len = this.filters.length\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame)\n }\n }\n\n function registerEffect(id, effect, countsAsEffect) {\n registeredEffects[id] = {\n effect,\n countsAsEffect,\n }\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function () {\n this.layerElement = createNS('g')\n },\n createContainerElements: function () {\n this.matteElement = createNS('g')\n this.transformedElement = this.layerElement\n this.maskedElement = this.layerElement\n this._sizeChanged = false\n var layerElementParent = null\n // If this layer acts as a mask for the following layer\n var filId\n var fil\n var gg\n if (this.data.td) {\n if (this.data.td == 3 || this.data.td == 1) {\n // eslint-disable-line eqeqeq\n var masker = createNS('mask')\n masker.setAttribute('id', this.layerId)\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha') // eslint-disable-line eqeqeq\n masker.appendChild(this.layerElement)\n layerElementParent = masker\n this.globalData.defs.appendChild(masker)\n // This is only for IE and Edge when mask if of type alpha\n if (!featureSupport.maskType && this.data.td == 1) {\n // eslint-disable-line eqeqeq\n masker.setAttribute('mask-type', 'luminance')\n filId = createElementID()\n fil = filtersFactory.createFilter(filId)\n this.globalData.defs.appendChild(fil)\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter())\n gg = createNS('g')\n gg.appendChild(this.layerElement)\n layerElementParent = gg\n masker.appendChild(gg)\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')')\n }\n } else if (this.data.td == 2) {\n // eslint-disable-line eqeqeq\n var maskGroup = createNS('mask')\n maskGroup.setAttribute('id', this.layerId)\n maskGroup.setAttribute('mask-type', 'alpha')\n var maskGrouper = createNS('g')\n maskGroup.appendChild(maskGrouper)\n filId = createElementID()\n fil = filtersFactory.createFilter(filId)\n /// /\n\n // This solution doesn't work on Android when meta tag with viewport attribute is set\n /* var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\n fil.appendChild(feColorMatrix); */\n /// /\n var feCTr = createNS('feComponentTransfer')\n feCTr.setAttribute('in', 'SourceGraphic')\n fil.appendChild(feCTr)\n var feFunc = createNS('feFuncA')\n feFunc.setAttribute('type', 'table')\n feFunc.setAttribute('tableValues', '1.0 0.0')\n feCTr.appendChild(feFunc)\n /// /\n this.globalData.defs.appendChild(fil)\n var alphaRect = createNS('rect')\n alphaRect.setAttribute('width', this.comp.data.w)\n alphaRect.setAttribute('height', this.comp.data.h)\n alphaRect.setAttribute('x', '0')\n alphaRect.setAttribute('y', '0')\n alphaRect.setAttribute('fill', '#ffffff')\n alphaRect.setAttribute('opacity', '0')\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')')\n maskGrouper.appendChild(alphaRect)\n maskGrouper.appendChild(this.layerElement)\n layerElementParent = maskGrouper\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance')\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter())\n gg = createNS('g')\n maskGrouper.appendChild(alphaRect)\n gg.appendChild(this.layerElement)\n layerElementParent = gg\n maskGrouper.appendChild(gg)\n }\n this.globalData.defs.appendChild(maskGroup)\n }\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement)\n layerElementParent = this.matteElement\n this.baseElement = this.matteElement\n } else {\n this.baseElement = this.layerElement\n }\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln)\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl)\n }\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath')\n var pt = createNS('path')\n pt.setAttribute(\n 'd',\n 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z',\n )\n var clipId = createElementID()\n cp.setAttribute('id', clipId)\n cp.appendChild(pt)\n this.globalData.defs.appendChild(cp)\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g')\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')')\n cpGroup.appendChild(this.layerElement)\n this.transformedElement = cpGroup\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement)\n } else {\n this.baseElement = this.transformedElement\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')')\n }\n }\n if (this.data.bm !== 0) {\n this.setBlendMode()\n }\n },\n renderElement: function () {\n if (this.finalTransform._matMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS())\n }\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v)\n }\n },\n destroyBaseElement: function () {\n this.layerElement = null\n this.matteElement = null\n this.maskManager.destroy()\n },\n getBaseElement: function () {\n if (this.data.hd) {\n return null\n }\n return this.baseElement\n },\n createRenderableComponents: function () {\n this.maskManager = new MaskElement(this.data, this, this.globalData)\n this.renderableEffectsManager = new SVGEffects(this)\n },\n setMatte: function (id) {\n if (!this.matteElement) {\n return\n }\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')')\n },\n }\n\n /**\n * @file\n * Handles AE's layer parenting property.\n *\n */\n\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\n * @function\n * Initializes hierarchy properties\n *\n */\n initHierarchy: function () {\n // element's parent list\n this.hierarchy = []\n // if element is parent of another layer _isParent will be true\n this._isParent = false\n this.checkParenting()\n },\n /**\n * @function\n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */\n setHierarchy: function (hierarchy) {\n this.hierarchy = hierarchy\n },\n /**\n * @function\n * Sets layer as parent.\n *\n */\n setAsParent: function () {\n this._isParent = true\n },\n /**\n * @function\n * Searches layer's parenting chain\n *\n */\n checkParenting: function () {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, [])\n }\n },\n }\n\n function RenderableDOMElement() {}\n\n ;(function () {\n var _prototype = {\n initElement: function (data, globalData, comp) {\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.initTransform(data, globalData, comp)\n this.initHierarchy()\n this.initRenderable()\n this.initRendererElement()\n this.createContainerElements()\n this.createRenderableComponents()\n this.createContent()\n this.hide()\n },\n hide: function () {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement\n elem.style.display = 'none'\n this.hidden = true\n }\n },\n show: function () {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement\n elem.style.display = 'block'\n }\n this.hidden = false\n this._isFirstFrame = true\n }\n },\n renderFrame: function () {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return\n }\n this.renderTransform()\n this.renderRenderable()\n this.renderElement()\n this.renderInnerContent()\n if (this._isFirstFrame) {\n this._isFirstFrame = false\n }\n },\n renderInnerContent: function () {},\n prepareFrame: function (num) {\n this._mdf = false\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n this.checkTransparency()\n },\n destroy: function () {\n this.innerElem = null\n this.destroyBaseElement()\n },\n }\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement)\n })()\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId)\n this.initElement(data, globalData, comp)\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h,\n }\n }\n\n extendPrototype(\n [BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement],\n IImageElement,\n )\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData)\n\n this.innerElem = createNS('image')\n this.innerElem.setAttribute('width', this.assetData.w + 'px')\n this.innerElem.setAttribute('height', this.assetData.h + 'px')\n this.innerElem.setAttribute(\n 'preserveAspectRatio',\n this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio,\n )\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath)\n\n this.layerElement.appendChild(this.innerElem)\n }\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect\n }\n\n function ProcessedElement(element, position) {\n this.elem = element\n this.pos = position\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function (data) {\n var i\n var len = this.shapeModifiers.length\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data)\n }\n },\n isShapeInAnimatedModifiers: function (data) {\n var i = 0\n var len = this.shapeModifiers.length\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true\n }\n }\n return false\n },\n renderModifiers: function () {\n if (!this.shapeModifiers.length) {\n return\n }\n var i\n var len = this.shapes.length\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset()\n }\n\n len = this.shapeModifiers.length\n var shouldBreakProcess\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame)\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n if (shouldBreakProcess) {\n break\n }\n }\n },\n\n searchProcessedElement: function (elem) {\n var elements = this.processedElements\n var i = 0\n var len = elements.length\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos\n }\n i += 1\n }\n return 0\n },\n addProcessedElement: function (elem, pos) {\n var elements = this.processedElements\n var i = elements.length\n while (i) {\n i -= 1\n if (elements[i].elem === elem) {\n elements[i].pos = pos\n return\n }\n }\n elements.push(new ProcessedElement(elem, pos))\n },\n prepareFrame: function (num) {\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n },\n }\n\n const lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square',\n }\n\n const lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel',\n }\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = []\n this.styles = []\n this.transformers = transformers\n this.lStr = ''\n this.sh = shape\n this.lvl = level\n // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n this._isAnimated = !!shape.k\n // TODO: commenting this for now since all shapes are animated\n var i = 0\n var len = transformers.length\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true\n break\n }\n i += 1\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true\n }\n\n function SVGStyleData(data, level) {\n this.data = data\n this.type = data.ty\n this.d = ''\n this.lvl = level\n this._mdf = false\n this.closed = data.hd === true\n this.pElem = createNS('path')\n this.msElem = null\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = ''\n this._mdf = false\n }\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem\n this.frameId = -1\n this.dataProps = createSizedArray(data.length)\n this.renderer = renderer\n this.k = false\n this.dashStr = ''\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0)\n this.dashoffset = createTypedArray('float32', 1)\n this.initDynamicPropertyContainer(container)\n var i\n var len = data.length || 0\n var prop\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this)\n this.k = prop.k || this.k\n this.dataProps[i] = { n: data[i].n, p: prop }\n }\n if (!this.k) {\n this.getValue(true)\n }\n this._isAnimated = this.k\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return\n }\n this.frameId = this.elem.globalData.frameId\n this.iterateDynamicProperties()\n this._mdf = this._mdf || forceRender\n if (this._mdf) {\n var i = 0\n var len = this.dataProps.length\n if (this.renderer === 'svg') {\n this.dashStr = ''\n }\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v\n } else {\n this.dashArray[i] = this.dataProps[i].p.v\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v\n }\n }\n }\n }\n extendPrototype([DynamicPropertyContainer], DashProperty)\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this)\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this)\n this.d = new DashProperty(elem, data.d || {}, 'svg', this)\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this)\n this.style = styleOb\n this._isAnimated = !!this._isAnimated\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData)\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this)\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this)\n this.style = styleOb\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData)\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.style = styleOb\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData)\n\n function GradientProperty(elem, data, container) {\n this.data = data\n this.c = createTypedArray('uint8c', data.p * 4)\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4\n this.o = createTypedArray('float32', cLength)\n this._cmdf = false\n this._omdf = false\n this._collapsable = this.checkCollapsable()\n this._hasOpacity = cLength\n this.initDynamicPropertyContainer(container)\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this)\n this.k = this.prop.k\n this.getValue(true)\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0\n var len = this.o.length / 2\n var diff\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2])\n if (diff > 0.01) {\n return false\n }\n i += 1\n }\n return true\n }\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false\n }\n if (this.data.k.k[0].s) {\n var i = 0\n var len = this.data.k.k.length\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false\n }\n i += 1\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false\n }\n return true\n }\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue()\n this._mdf = false\n this._cmdf = false\n this._omdf = false\n if (this.prop._mdf || forceRender) {\n var i\n var len = this.data.p * 4\n var mult\n var val\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255\n val = Math.round(this.prop.v[i] * mult)\n if (this.c[i] !== val) {\n this.c[i] = val\n this._cmdf = !forceRender\n }\n }\n if (this.o.length) {\n len = this.prop.v.length\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i]\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val\n this._omdf = !forceRender\n }\n }\n }\n this._mdf = !forceRender\n }\n }\n\n extendPrototype([DynamicPropertyContainer], GradientProperty)\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.initGradientData(elem, data, styleOb)\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this)\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this)\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this)\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this)\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this)\n this.g = new GradientProperty(elem, data.g, this)\n this.style = styleOb\n this.stops = []\n this.setGradientData(styleOb.pElem, data)\n this.setGradientOpacity(data, styleOb)\n this._isAnimated = !!this._isAnimated\n }\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID()\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient')\n gfill.setAttribute('id', gradientId)\n gfill.setAttribute('spreadMethod', 'pad')\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse')\n var stops = []\n var stop\n var j\n var jLen\n jLen = data.g.p * 4\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop')\n gfill.appendChild(stop)\n stops.push(stop)\n }\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')')\n this.gf = gfill\n this.cst = stops\n }\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop\n var j\n var jLen\n var mask = createNS('mask')\n var maskElement = createNS('path')\n mask.appendChild(maskElement)\n var opacityId = createElementID()\n var maskId = createElementID()\n mask.setAttribute('id', maskId)\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient')\n opFill.setAttribute('id', opacityId)\n opFill.setAttribute('spreadMethod', 'pad')\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse')\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length\n var stops = this.stops\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop')\n stop.setAttribute('stop-color', 'rgb(255,255,255)')\n opFill.appendChild(stop)\n stops.push(stop)\n }\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')')\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2])\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2])\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml)\n }\n }\n this.of = opFill\n this.ms = mask\n this.ost = stops\n this.maskId = maskId\n styleOb.msElem = maskElement\n }\n }\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData)\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem)\n this.getValue = this.iterateDynamicProperties\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this)\n this.d = new DashProperty(elem, data.d || {}, 'svg', this)\n this.initGradientData(elem, data, styleOb)\n this._isAnimated = !!this._isAnimated\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData)\n\n function ShapeGroupData() {\n this.it = []\n this.prevViewData = []\n this.gr = createNS('g')\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container,\n }\n this.elements = []\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length\n }\n\n const buildShapeString = function (pathNodes, length, closed, mat) {\n if (length === 0) {\n return ''\n }\n var _o = pathNodes.o\n var _i = pathNodes.i\n var _v = pathNodes.v\n var i\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1])\n for (i = 1; i < length; i += 1) {\n shapeString +=\n ' C' +\n mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) +\n ' ' +\n mat.applyToPointStringified(_i[i][0], _i[i][1]) +\n ' ' +\n mat.applyToPointStringified(_v[i][0], _v[i][1])\n }\n if (closed && length) {\n shapeString +=\n ' C' +\n mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) +\n ' ' +\n mat.applyToPointStringified(_i[0][0], _i[0][1]) +\n ' ' +\n mat.applyToPointStringified(_v[0][0], _v[0][1])\n shapeString += 'z'\n }\n return shapeString\n }\n\n const SVGElementsRenderer = (function () {\n var _identityMatrix = new Matrix()\n var _matrixHelper = new Matrix()\n\n var ob = {\n createRenderFunction: createRenderFunction,\n }\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill\n case 'gf':\n return renderGradient\n case 'gs':\n return renderGradientStroke\n case 'st':\n return renderStroke\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath\n case 'tr':\n return renderContentTransform\n case 'no':\n return renderNoop\n default:\n return null\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v)\n }\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS())\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j\n var jLen\n var pathStringTransformed\n var redraw\n var pathNodes\n var l\n var lLen = itemData.styles.length\n var lvl = itemData.lvl\n var paths\n var mat\n var props\n var iterations\n var k\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset()\n iterations = lvl - itemData.styles[l].lvl\n k = itemData.transformers.length - 1\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw\n iterations -= 1\n k -= 1\n }\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl\n k = itemData.transformers.length - 1\n while (iterations > 0) {\n props = itemData.transformers[k].mProps.v.props\n mat.transform(\n props[0],\n props[1],\n props[2],\n props[3],\n props[4],\n props[5],\n props[6],\n props[7],\n props[8],\n props[9],\n props[10],\n props[11],\n props[12],\n props[13],\n props[14],\n props[15],\n )\n iterations -= 1\n k -= 1\n }\n }\n } else {\n mat = _identityMatrix\n }\n paths = itemData.sh.paths\n jLen = paths._length\n if (redraw) {\n pathStringTransformed = ''\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j]\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat)\n }\n }\n itemData.caches[l] = pathStringTransformed\n } else {\n pathStringTransformed = itemData.caches[l]\n }\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute(\n 'fill',\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')',\n )\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v)\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame)\n renderStroke(styleData, itemData, isFirstFrame)\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf\n var hasOpacity = itemData.g._hasOpacity\n var pt1 = itemData.s.v\n var pt2 = itemData.e.v\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity'\n itemData.style.pElem.setAttribute(attr, itemData.o.v)\n }\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx'\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy'\n gfill.setAttribute(attr1, pt1[0])\n gfill.setAttribute(attr2, pt1[1])\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0])\n itemData.of.setAttribute(attr2, pt1[1])\n }\n }\n var stops\n var i\n var len\n var stop\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst\n var cValues = itemData.g.c\n len = stops.length\n for (i = 0; i < len; i += 1) {\n stop = stops[i]\n stop.setAttribute('offset', cValues[i * 4] + '%')\n stop.setAttribute(\n 'stop-color',\n 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')',\n )\n }\n }\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o\n if (itemData.g._collapsable) {\n stops = itemData.cst\n } else {\n stops = itemData.ost\n }\n len = stops.length\n for (i = 0; i < len; i += 1) {\n stop = stops[i]\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%')\n }\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1])\n }\n }\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0])\n gfill.setAttribute('y2', pt2[1])\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0])\n itemData.of.setAttribute('y2', pt2[1])\n }\n }\n } else {\n var rad\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2))\n gfill.setAttribute('r', rad)\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad)\n }\n }\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2))\n }\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0])\n\n var percent = itemData.h.v\n if (percent >= 1) {\n percent = 0.99\n } else if (percent <= -1) {\n percent = -0.99\n }\n var dist = rad * percent\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]\n gfill.setAttribute('fx', x)\n gfill.setAttribute('fy', y)\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x)\n itemData.of.setAttribute('fy', y)\n }\n }\n // gfill.setAttribute('fy','200');\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style\n var d = itemData.d\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr)\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0])\n }\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute(\n 'stroke',\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')',\n )\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v)\n }\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v)\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v)\n }\n }\n }\n\n return ob\n })()\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []\n // Full shape data\n this.shapesData = data.shapes\n // List of styles that will be applied to shapes\n this.stylesList = []\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = []\n // List of items in shape tree\n this.itemsData = []\n // List of items in previous shape tree\n this.processedElements = []\n // List of animated components\n this.animatedContents = []\n this.initElement(data, globalData, comp)\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n this.prevViewData = []\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype(\n [\n BaseElement,\n TransformElement,\n SVGBaseElement,\n IShapeElement,\n HierarchyElement,\n FrameElement,\n RenderableDOMElement,\n ],\n SVGShapeElement,\n )\n\n SVGShapeElement.prototype.initSecondaryElement = function () {}\n\n SVGShapeElement.prototype.identityMatrix = new Matrix()\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {}\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true)\n this.filterUniqueShapes()\n }\n\n /*\nThis method searches for multiple shapes that affect a single element and one of them is animated\n*/\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i\n var len = this.shapes.length\n var shape\n var j\n var jLen = this.stylesList.length\n var style\n var tempShapes = []\n var areAnimated = false\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j]\n areAnimated = false\n tempShapes.length = 0\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i]\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape)\n areAnimated = shape._isAnimated || areAnimated\n }\n }\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes)\n }\n }\n }\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i\n var len = shapes.length\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated()\n }\n }\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData\n var styleOb = new SVGStyleData(data, level)\n\n var pathElement = styleOb.pElem\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb)\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb)\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData\n elementData = new GradientConstructor(this, data, styleOb)\n this.globalData.defs.appendChild(elementData.gf)\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms)\n this.globalData.defs.appendChild(elementData.of)\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')')\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb)\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2])\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2])\n pathElement.setAttribute('fill-opacity', '0')\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml)\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd')\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln)\n }\n if (data.cl) {\n pathElement.setAttribute('class', data.cl)\n }\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm)\n }\n this.stylesList.push(styleOb)\n this.addToAnimatedContents(data, elementData)\n return elementData\n }\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData()\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln)\n }\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl)\n }\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm)\n }\n return elementData\n }\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this)\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container)\n this.addToAnimatedContents(data, elementData)\n return elementData\n }\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4\n if (data.ty === 'rc') {\n ty = 5\n } else if (data.ty === 'el') {\n ty = 6\n } else if (data.ty === 'sr') {\n ty = 7\n }\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this)\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty)\n this.shapes.push(elementData)\n this.addShapeToModifiers(elementData)\n this.addToAnimatedContents(data, elementData)\n return elementData\n }\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0\n var len = this.animatedContents.length\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return\n }\n i += 1\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data,\n })\n }\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles\n var j\n var jLen = this.stylesList.length\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j])\n }\n }\n }\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true\n var i\n var len = this.itemsData.length\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i]\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true)\n this.filterUniqueShapes()\n len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue()\n }\n this.renderModifiers()\n }\n\n SVGShapeElement.prototype.searchShapes = function (\n arr,\n itemsData,\n prevViewData,\n container,\n level,\n transformers,\n render,\n ) {\n var ownTransformers = [].concat(transformers)\n var i\n var len = arr.length - 1\n var j\n var jLen\n var ownStyles = []\n var ownModifiers = []\n var currentTransform\n var modifier\n var processedPos\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i])\n if (!processedPos) {\n arr[i]._render = render\n } else {\n itemsData[i] = prevViewData[processedPos - 1]\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level)\n } else {\n itemsData[i].style.closed = false\n }\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem)\n }\n }\n ownStyles.push(itemsData[i].style)\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i])\n } else {\n jLen = itemsData[i].it.length\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j]\n }\n }\n this.searchShapes(\n arr[i].it,\n itemsData[i].it,\n itemsData[i].prevViewData,\n itemsData[i].gr,\n level + 1,\n ownTransformers,\n render,\n )\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr)\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container)\n }\n currentTransform = itemsData[i].transform\n ownTransformers.push(currentTransform)\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level)\n }\n this.setElementStyles(itemsData[i])\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n modifier.init(this, arr[i])\n itemsData[i] = modifier\n this.shapeModifiers.push(modifier)\n } else {\n modifier = itemsData[i]\n modifier.closed = false\n }\n ownModifiers.push(modifier)\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n itemsData[i] = modifier\n modifier.init(this, arr, i, itemsData)\n this.shapeModifiers.push(modifier)\n render = false\n } else {\n modifier = itemsData[i]\n modifier.closed = true\n }\n ownModifiers.push(modifier)\n }\n this.addProcessedElement(arr[i], i + 1)\n }\n len = ownStyles.length\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true\n }\n len = ownModifiers.length\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true\n }\n }\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers()\n var i\n var len = this.stylesList.length\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset()\n }\n this.renderShape()\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d)\n // Adding M0 0 fixes same mask bug on all browsers\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d\n }\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0')\n }\n }\n }\n\n SVGShapeElement.prototype.renderShape = function () {\n var i\n var len = this.animatedContents.length\n var animatedContent\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i]\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame)\n }\n }\n }\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement()\n this.shapesData = null\n this.itemsData = null\n }\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o\n this.sw = sw\n this.sc = sc\n this.fc = fc\n this.m = m\n this.p = p\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true,\n }\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false\n this._mdf.sw = false\n this._mdf.sc = false\n this._mdf.fc = false\n this._mdf.m = false\n this._mdf.p = false\n var updated = false\n\n if (this.o !== o) {\n this.o = o\n this._mdf.o = true\n updated = true\n }\n if (this.sw !== sw) {\n this.sw = sw\n this._mdf.sw = true\n updated = true\n }\n if (this.sc !== sc) {\n this.sc = sc\n this._mdf.sc = true\n updated = true\n }\n if (this.fc !== fc) {\n this.fc = fc\n this._mdf.fc = true\n updated = true\n }\n if (this.m !== m) {\n this.m = m\n this._mdf.m = true\n updated = true\n }\n if (\n p.length &&\n (this.p[0] !== p[0] ||\n this.p[1] !== p[1] ||\n this.p[4] !== p[4] ||\n this.p[5] !== p[5] ||\n this.p[12] !== p[12] ||\n this.p[13] !== p[13])\n ) {\n this.p = p\n this._mdf.p = true\n updated = true\n }\n return updated\n }\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame\n this.pv = ''\n this.v = ''\n this.kf = false\n this._isFirstFrame = true\n this._mdf = false\n this.data = data\n this.elem = elem\n this.comp = this.elem.comp\n this.keysIndex = 0\n this.canResize = false\n this.minimumFontSize = 1\n this.effectsSequence = []\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false,\n }\n this.copyData(this.currentData, this.data.d.k[0].s)\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData)\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0]\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s]\n }\n }\n return obj\n }\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data)\n }\n this.currentData = data\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth\n this._mdf = true\n }\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes()\n }\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this))\n }\n return this.kf\n }\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction)\n this.elem.addDynamicProperty(this)\n }\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t\n var currentValue = this.currentData\n var currentIndex = this.keysIndex\n if (this.lock) {\n this.setCurrentData(this.currentData)\n return\n }\n this.lock = true\n this._mdf = false\n var i\n var len = this.effectsSequence.length\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t)\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t)\n }\n }\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue)\n }\n this.v = this.currentData\n this.pv = this.v\n this.lock = false\n this.frameId = this.elem.globalData.frameId\n }\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k\n var frameNum = this.elem.comp.renderedFrame\n var i = 0\n var len = textKeys.length\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break\n }\n i += 1\n }\n if (this.keysIndex !== i) {\n this.keysIndex = i\n }\n return this.data.d.k[this.keysIndex].s\n }\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = []\n var i = 0\n var len = text.length\n var charCode\n var secondCharCode\n var shouldCombine = false\n while (i < len) {\n charCode = text.charCodeAt(i)\n if (FontManager.isCombinedCharacter(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i)\n } else if (charCode >= 0xd800 && charCode <= 0xdbff) {\n secondCharCode = text.charCodeAt(i + 1)\n if (secondCharCode >= 0xdc00 && secondCharCode <= 0xdfff) {\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\n charactersArray[charactersArray.length - 1] += text.substr(i, 2)\n shouldCombine = false\n } else {\n charactersArray.push(text.substr(i, 2))\n }\n i += 1\n } else {\n charactersArray.push(text.charAt(i))\n }\n } else if (charCode > 0xdbff) {\n secondCharCode = text.charCodeAt(i + 1)\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\n shouldCombine = true\n charactersArray[charactersArray.length - 1] += text.substr(i, 2)\n i += 1\n } else {\n charactersArray.push(text.charAt(i))\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i)\n shouldCombine = true\n } else {\n charactersArray.push(text.charAt(i))\n }\n i += 1\n }\n return charactersArray\n }\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true\n var fontManager = this.elem.globalData.fontManager\n var data = this.data\n var letters = []\n var i\n var len\n var newLineFlag\n var index = 0\n var val\n var anchorGrouping = data.m.g\n var currentSize = 0\n var currentPos = 0\n var currentLine = 0\n var lineWidths = []\n var lineWidth = 0\n var maxLineWidth = 0\n var j\n var jLen\n var fontData = fontManager.getFontByName(documentData.f)\n var charData\n var cLength = 0\n\n var fontProps = getFontProperties(fontData)\n documentData.fWeight = fontProps.weight\n documentData.fStyle = fontProps.style\n documentData.finalSize = documentData.s\n documentData.finalText = this.buildFinalText(documentData.t)\n len = documentData.finalText.length\n documentData.finalLineHeight = documentData.lh\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize\n var charCode\n if (documentData.sz) {\n var flag = true\n var boxWidth = documentData.sz[0]\n var boxHeight = documentData.sz[1]\n var currentHeight\n var finalText\n while (flag) {\n finalText = this.buildFinalText(documentData.t)\n currentHeight = 0\n lineWidth = 0\n len = finalText.length\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize\n var lastSpaceIndex = -1\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0)\n newLineFlag = false\n if (finalText[i] === ' ') {\n lastSpaceIndex = i\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0\n newLineFlag = true\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily)\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize)\n }\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1\n } else {\n i = lastSpaceIndex\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r')\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1\n lineWidth = 0\n } else {\n lineWidth += cLength\n lineWidth += trackingOffset\n }\n }\n currentHeight += (fontData.ascent * documentData.finalSize) / 100\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s\n } else {\n documentData.finalText = finalText\n len = documentData.finalText.length\n flag = false\n }\n }\n }\n lineWidth = -trackingOffset\n cLength = 0\n var uncollapsedSpaces = 0\n var currentChar\n for (i = 0; i < len; i += 1) {\n newLineFlag = false\n currentChar = documentData.finalText[i]\n charCode = currentChar.charCodeAt(0)\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0\n lineWidths.push(lineWidth)\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth\n lineWidth = -2 * trackingOffset\n val = ''\n newLineFlag = true\n currentLine += 1\n } else {\n val = currentChar\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(\n currentChar,\n fontData.fStyle,\n fontManager.getFontByName(documentData.f).fFamily,\n )\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize)\n }\n\n //\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces\n uncollapsedSpaces = 0\n }\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0,\n })\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize\n letters[currentPos].ind = index\n letters[currentPos].extra = cLength\n currentPos += 1\n }\n index += 1\n currentSize = 0\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize\n letters[currentPos].ind = index\n letters[currentPos].extra = cLength\n currentPos += 1\n }\n currentSize = 0\n index += 1\n }\n } else {\n letters[index].ind = index\n letters[index].extra = 0\n index += 1\n }\n }\n documentData.l = letters\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth\n lineWidths.push(lineWidth)\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0]\n documentData.justifyOffset = 0\n } else {\n documentData.boxWidth = maxLineWidth\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth\n break\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2\n break\n default:\n documentData.justifyOffset = 0\n }\n }\n documentData.lineWidths = lineWidths\n\n var animators = data.a\n var animatorData\n var letterData\n jLen = animators.length\n var based\n var ind\n var indexes = []\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j]\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true\n }\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true\n }\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true\n }\n ind = 0\n based = animatorData.s.b\n for (i = 0; i < len; i += 1) {\n letterData = letters[i]\n letterData.anIndexes[j] = ind\n if (\n (based == 1 && letterData.val !== '') ||\n (based == 2 && letterData.val !== '' && letterData.val !== ' ') ||\n (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) ||\n (based == 4 && (letterData.n || i == len - 1))\n ) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind)\n }\n ind += 1\n }\n }\n data.a[j].s.totalChars = ind\n var currentInd = -1\n var newInd\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i]\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j]\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0]\n }\n letterData.anIndexes[j] = newInd\n }\n }\n }\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2\n documentData.ls = documentData.ls || 0\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100\n }\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index\n var dData = this.copyData({}, this.data.d.k[index].s)\n dData = this.copyData(dData, newData)\n this.data.d.k[index].s = dData\n this.recalculate(index)\n this.elem.addDynamicProperty(this)\n }\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s\n dData.__complete = false\n this.keysIndex = 0\n this._isFirstFrame = true\n this.getValue(dData)\n }\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize\n this.recalculate(this.keysIndex)\n this.elem.addDynamicProperty(this)\n }\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1\n this.recalculate(this.keysIndex)\n this.elem.addDynamicProperty(this)\n }\n\n const TextSelectorProp = (function () {\n var max = Math.max\n var min = Math.min\n var floor = Math.floor\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1\n this.k = false\n this.data = data\n this.elem = elem\n this.comp = elem.comp\n this.finalS = 0\n this.finalE = 0\n this.initDynamicPropertyContainer(elem)\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this)\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this)\n } else {\n this.e = { v: 100 }\n }\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this)\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this)\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this)\n this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this)\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this)\n if (!this.dynamicProperties.length) {\n this.getValue()\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function (ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue()\n }\n var x1 = 0\n var y1 = 0\n var x2 = 1\n var y2 = 1\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0\n } else {\n y1 = -this.ne.v / 100.0\n }\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0\n } else {\n y2 = 1.0 + this.xe.v / 100.0\n }\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get\n\n var mult = 0\n var s = this.finalS\n var e = this.finalE\n var type = this.data.sh\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1))\n }\n mult = easer(mult)\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1))\n }\n\n mult = easer(mult)\n } else if (type === 4) {\n if (e === s) {\n mult = 0\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1))\n if (mult < 0.5) {\n mult *= 2\n } else {\n mult = 1 - 2 * (mult - 0.5)\n }\n }\n mult = easer(mult)\n } else if (type === 5) {\n if (e === s) {\n mult = 0\n } else {\n var tot = e - s\n /* ind += 0.5;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n ind = min(max(0, ind + 0.5 - s), e - s)\n var x = -tot / 2 + ind\n var a = tot / 2\n mult = Math.sqrt(1 - (x * x) / (a * a))\n }\n mult = easer(mult)\n } else if (type === 6) {\n if (e === s) {\n mult = 0\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s)\n mult = (1 + Math.cos(Math.PI + (Math.PI * 2 * ind) / (e - s))) / 2 // eslint-disable-line\n }\n mult = easer(mult)\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1))\n } else {\n mult = max(0, min(e - ind, 1))\n }\n }\n mult = easer(mult)\n }\n // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01\n if (smoothness === 0) {\n smoothness = 0.00000001\n }\n var threshold = 0.5 - smoothness * 0.5\n if (mult < threshold) {\n mult = 0\n } else {\n mult = (mult - threshold) / smoothness\n if (mult > 1) {\n mult = 1\n }\n }\n }\n return mult * this.a.v\n },\n getValue: function (newCharsFlag) {\n this.iterateDynamicProperties()\n this._mdf = newCharsFlag || this._mdf\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength\n }\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars\n var o = this.o.v / divisor\n var s = this.s.v / divisor + o\n var e = this.e.v / divisor + o\n if (s > e) {\n var _s = s\n s = e\n e = _s\n }\n this.finalS = s\n this.finalE = e\n },\n }\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory)\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr)\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp,\n }\n })()\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = { propType: false }\n var getProp = PropertyFactory.getProp\n var textAnimatorAnimatables = animatorProps.a\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\n }\n\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container)\n this.s.t = animatorProps.s.t\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true\n this._hasMaskedPath = false\n this._frameId = -1\n this._textData = textData\n this._renderType = renderType\n this._elem = elem\n this._animatorsData = createSizedArray(this._textData.a.length)\n this._pathData = {}\n this._moreOptions = {\n alignment: {},\n }\n this.renderedLetters = []\n this.lettersChangedFlag = false\n this.initDynamicPropertyContainer(elem)\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i\n var len = this._textData.a.length\n var animatorProps\n var getProp = PropertyFactory.getProp\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i]\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this)\n }\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\n }\n this._hasMaskedPath = true\n } else {\n this._hasMaskedPath = false\n }\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this)\n }\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return\n }\n this._isFirstFrame = false\n var alignment = this._moreOptions.alignment.v\n var animators = this._animatorsData\n var textData = this._textData\n var matrixHelper = this.mHelper\n var renderType = this._renderType\n var renderedLettersCount = this.renderedLetters.length\n var xPos\n var yPos\n var i\n var len\n var letters = documentData.l\n var pathInfo\n var currentLength\n var currentPoint\n var segmentLength\n var flag\n var pointInd\n var segmentInd\n var prevPoint\n var points\n var segments\n var partialLength\n var totalLength\n var perc\n var tanAngle\n var mask\n if (this._hasMaskedPath) {\n mask = this._pathData.m\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v\n if (this._pathData.r.v) {\n paths = paths.reverse()\n }\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n pathInfo = {\n tLength: 0,\n segments: [],\n }\n len = paths._length - 1\n var bezierData\n totalLength = 0\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(\n paths.v[i],\n paths.v[i + 1],\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]],\n )\n pathInfo.tLength += bezierData.segmentLength\n pathInfo.segments.push(bezierData)\n totalLength += bezierData.segmentLength\n }\n i = len\n if (mask.v.c) {\n bezierData = bez.buildBezierData(\n paths.v[i],\n paths.v[0],\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]],\n )\n pathInfo.tLength += bezierData.segmentLength\n pathInfo.segments.push(bezierData)\n totalLength += bezierData.segmentLength\n }\n this._pathData.pi = pathInfo\n }\n pathInfo = this._pathData.pi\n\n currentLength = this._pathData.f.v\n segmentInd = 0\n pointInd = 1\n segmentLength = 0\n flag = true\n segments = pathInfo.segments\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength\n }\n segmentInd = segments.length - 1\n points = segments[segmentInd].points\n pointInd = points.length - 1\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength\n pointInd -= 1\n if (pointInd < 0) {\n segmentInd -= 1\n points = segments[segmentInd].points\n pointInd = points.length - 1\n }\n }\n }\n points = segments[segmentInd].points\n prevPoint = points[pointInd - 1]\n currentPoint = points[pointInd]\n partialLength = currentPoint.partialLength\n }\n\n len = letters.length\n xPos = 0\n yPos = 0\n var yOff = documentData.finalSize * 1.2 * 0.714\n var firstLine = true\n var animatorProps\n var animatorSelector\n var j\n var jLen\n var letterValue\n\n jLen = animators.length\n\n var mult\n var ind = -1\n var offf\n var xPathPos\n var yPathPos\n var initPathPos = currentLength\n var initSegmentInd = segmentInd\n var initPointInd = pointInd\n var currentLine = -1\n var elemOpacity\n var sc\n var sw\n var fc\n var k\n var letterSw\n var letterSc\n var letterFc\n var letterM = ''\n var letterP = this.defaultPropsArray\n var letterO\n\n //\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0\n var animatorFirstCharOffset = 0\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1\n var lastIndex = 0\n var isNewLine = true\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset\n lastIndex += 1\n }\n animatorJustifyOffset = 0\n isNewLine = true\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult\n }\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult\n }\n }\n }\n isNewLine = false\n }\n }\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset\n lastIndex += 1\n }\n }\n //\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset()\n elemOpacity = 1\n if (letters[i].n) {\n xPos = 0\n yPos += documentData.yOffset\n yPos += firstLine ? 1 : 0\n currentLength = initPathPos\n firstLine = false\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd\n pointInd = initPointInd\n points = segments[segmentInd].points\n prevPoint = points[pointInd - 1]\n currentPoint = points[pointInd]\n partialLength = currentPoint.partialLength\n segmentLength = 0\n }\n letterM = ''\n letterFc = ''\n letterSw = ''\n letterO = ''\n letterP = this.defaultPropsArray\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line]\n break\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2\n break\n default:\n break\n }\n currentLine = letters[i].line\n }\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra\n }\n currentLength += letters[i].an / 2\n ind = letters[i].ind\n }\n currentLength += alignment[0] * letters[i].an * 0.005\n var animatorOffset = 0\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0]\n } else {\n animatorOffset += animatorProps.p.v[0] * mult\n }\n }\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0]\n } else {\n animatorOffset += animatorProps.a.v[0] * mult\n }\n }\n }\n flag = true\n // Force alignment only works with a single line for now\n if (this._pathData.a.v) {\n currentLength =\n letters[0].an * 0.5 +\n ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) /\n (len - 1)\n currentLength += this._pathData.f.v\n }\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01)\n flag = false\n } else if (points) {\n segmentLength += currentPoint.partialLength\n pointInd += 1\n if (pointInd >= points.length) {\n pointInd = 0\n segmentInd += 1\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0\n segmentInd = 0\n points = segments[segmentInd].points\n } else {\n segmentLength -= currentPoint.partialLength\n points = null\n }\n } else {\n points = segments[segmentInd].points\n }\n }\n if (points) {\n prevPoint = currentPoint\n currentPoint = points[pointInd]\n partialLength = currentPoint.partialLength\n }\n }\n }\n offf = letters[i].an / 2 - letters[i].add\n matrixHelper.translate(-offf, 0, 0)\n } else {\n offf = letters[i].an / 2 - letters[i].add\n matrixHelper.translate(-offf, 0, 0)\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0)\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0]\n } else {\n currentLength += animatorProps.t.v * mult\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0]\n } else {\n xPos += animatorProps.t.v * mult\n }\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0\n }\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]]\n } else {\n sc = [0, 0, 0]\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]]\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n\n if (mult.length) {\n matrixHelper.translate(\n -animatorProps.a.v[0] * mult[0],\n -animatorProps.a.v[1] * mult[1],\n animatorProps.a.v[2] * mult[2],\n )\n } else {\n matrixHelper.translate(\n -animatorProps.a.v[0] * mult,\n -animatorProps.a.v[1] * mult,\n animatorProps.a.v[2] * mult,\n )\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1)\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1)\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1])\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult)\n }\n }\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2])\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult)\n }\n }\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1])\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult)\n }\n }\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0])\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult)\n }\n }\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0]\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult\n }\n }\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0]\n } else {\n sw += animatorProps.sw.v * mult\n }\n }\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0]\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult\n }\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0]\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult\n }\n }\n }\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0])\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult)\n }\n }\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0])\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult)\n }\n }\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0])\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult)\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars)\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1])\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult)\n }\n } else if (mult.length) {\n matrixHelper.translate(\n animatorProps.p.v[0] * mult[0],\n animatorProps.p.v[1] * mult[1],\n -animatorProps.p.v[2] * mult[2],\n )\n } else {\n matrixHelper.translate(\n animatorProps.p.v[0] * mult,\n animatorProps.p.v[1] * mult,\n -animatorProps.p.v[2] * mult,\n )\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw\n }\n if (documentData.strokeColorAnim) {\n letterSc =\n 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')'\n }\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc =\n 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')'\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls)\n\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0)\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0])\n var rot = (Math.atan(tanAngle) * 180) / Math.PI\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180\n }\n matrixHelper.rotate((-rot * Math.PI) / 180)\n }\n matrixHelper.translate(xPathPos, yPathPos, 0)\n currentLength -= alignment[0] * letters[i].an * 0.005\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2\n currentLength += documentData.tr * 0.001 * documentData.finalSize\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0)\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0)\n }\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(\n letters[i].animatorJustifyOffset +\n documentData.justifyOffset +\n (documentData.boxWidth - documentData.lineWidths[letters[i].line]),\n 0,\n 0,\n )\n break\n case 2:\n matrixHelper.translate(\n letters[i].animatorJustifyOffset +\n documentData.justifyOffset +\n (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2,\n 0,\n 0,\n )\n break\n default:\n break\n }\n matrixHelper.translate(0, -documentData.ls)\n matrixHelper.translate(offf, 0, 0)\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0)\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize\n }\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS()\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS()\n } else {\n letterP = [\n matrixHelper.props[0],\n matrixHelper.props[1],\n matrixHelper.props[2],\n matrixHelper.props[3],\n matrixHelper.props[4],\n matrixHelper.props[5],\n matrixHelper.props[6],\n matrixHelper.props[7],\n matrixHelper.props[8],\n matrixHelper.props[9],\n matrixHelper.props[10],\n matrixHelper.props[11],\n matrixHelper.props[12],\n matrixHelper.props[13],\n matrixHelper.props[14],\n matrixHelper.props[15],\n ]\n }\n letterO = elemOpacity\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP)\n this.renderedLetters.push(letterValue)\n renderedLettersCount += 1\n this.lettersChangedFlag = true\n } else {\n letterValue = this.renderedLetters[i]\n this.lettersChangedFlag =\n letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag\n }\n }\n }\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return\n }\n this._frameId = this._elem.globalData.frameId\n this.iterateDynamicProperties()\n }\n\n TextAnimatorProperty.prototype.mHelper = new Matrix()\n TextAnimatorProperty.prototype.defaultPropsArray = []\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty)\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties)\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this)\n this.initTransform(data, globalData, comp)\n this.initHierarchy()\n this.initRenderable()\n this.initRendererElement()\n this.createContainerElements()\n this.createRenderableComponents()\n this.createContent()\n this.hide()\n this.textAnimator.searchProperties(this.dynamicProperties)\n }\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText()\n this.textProperty._isFirstFrame = false\n this.textProperty._mdf = false\n }\n }\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j\n var jLen = shapes.length\n var pathNodes\n var shapeStr = ''\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper)\n }\n }\n return shapeStr\n }\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index)\n }\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize)\n }\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize)\n }\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0)\n }\n matrixHelper.translate(0, -documentData.ls, 0)\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(\n documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]),\n 0,\n 0,\n )\n break\n case 2:\n matrixHelper.translate(\n documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2,\n 0,\n 0,\n )\n break\n default:\n break\n }\n matrixHelper.translate(xPos, yPos, 0)\n }\n\n ITextElement.prototype.buildColor = function (colorData) {\n return (\n 'rgb(' +\n Math.round(colorData[0] * 255) +\n ',' +\n Math.round(colorData[1] * 255) +\n ',' +\n Math.round(colorData[2] * 255) +\n ')'\n )\n }\n\n ITextElement.prototype.emptyProp = new LetterProps()\n\n ITextElement.prototype.destroy = function () {}\n\n var emptyShapeData = {\n shapes: [],\n }\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = []\n this.renderType = 'svg'\n this.initElement(data, globalData, comp)\n }\n\n extendPrototype(\n [BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement],\n SVGTextLottieElement,\n )\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text')\n }\n }\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0\n var len = textArray.length\n var textContents = []\n var currentTextContent = ''\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent)\n currentTextContent = ''\n } else {\n currentTextContent += textArray[i]\n }\n i += 1\n }\n textContents.push(currentTextContent)\n return textContents\n }\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0]\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1]\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale\n shapeItem.s.k[1] = scale\n }\n }\n }\n return data\n }\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this)\n var i\n var len\n\n var documentData = this.textProperty.currentData\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0)\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc))\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)')\n }\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc))\n this.layerElement.setAttribute('stroke-width', documentData.sw)\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize)\n var fontData = this.globalData.fontManager.getFontByName(documentData.f)\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass)\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily)\n var fWeight = documentData.fWeight\n var fStyle = documentData.fStyle\n this.layerElement.setAttribute('font-style', fStyle)\n this.layerElement.setAttribute('font-weight', fWeight)\n }\n this.layerElement.setAttribute('aria-label', documentData.t)\n\n var letters = documentData.l || []\n var usesGlyphs = !!this.globalData.fontManager.chars\n len = letters.length\n\n var tSpan\n var matrixHelper = this.mHelper\n var shapeStr = ''\n var singleShape = this.data.singleShape\n var xPos = 0\n var yPos = 0\n var firstLine = true\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer\n var justify = 'start'\n switch (documentData.j) {\n case 1:\n justify = 'end'\n break\n case 2:\n justify = 'middle'\n break\n default:\n justify = 'start'\n break\n }\n tElement.setAttribute('text-anchor', justify)\n tElement.setAttribute('letter-spacing', trackingOffset)\n var textContent = this.buildTextContents(documentData.finalText)\n len = textContent.length\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan')\n tSpan.textContent = textContent[i]\n tSpan.setAttribute('x', 0)\n tSpan.setAttribute('y', yPos)\n tSpan.style.display = 'inherit'\n tElement.appendChild(tSpan)\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null,\n }\n }\n this.textSpans[i].span = tSpan\n yPos += documentData.finalLineHeight\n }\n\n this.layerElement.appendChild(tElement)\n } else {\n var cachedSpansLength = this.textSpans.length\n var charData\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null,\n }\n }\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text')\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt')\n tSpan.setAttribute('stroke-linejoin', 'round')\n tSpan.setAttribute('stroke-miterlimit', '4')\n this.textSpans[i].span = tSpan\n if (usesGlyphs) {\n var childSpan = createNS('g')\n tSpan.appendChild(childSpan)\n this.textSpans[i].childSpan = childSpan\n }\n this.textSpans[i].span = tSpan\n this.layerElement.appendChild(tSpan)\n }\n tSpan.style.display = 'inherit'\n }\n\n matrixHelper.reset()\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset\n yPos += documentData.yOffset\n yPos += firstLine ? 1 : 0\n firstLine = false\n }\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos)\n xPos += letters[i].l || 0\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset\n }\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(\n documentData.finalText[i],\n fontData.fStyle,\n this.globalData.fontManager.getFontByName(documentData.f).fFamily,\n )\n var glyphElement\n // t === 1 means the character has been replaced with an animated shaped\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this)\n } else {\n var data = emptyShapeData\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize)\n }\n glyphElement = new SVGShapeElement(data, this.globalData, this)\n }\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph\n this.textSpans[i].childSpan.removeChild(glyph.layerElement)\n glyph.destroy()\n }\n this.textSpans[i].glyph = glyphElement\n glyphElement._debug = true\n glyphElement.prepareFrame(0)\n glyphElement.renderFrame()\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement)\n // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute(\n 'transform',\n 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')',\n )\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')')\n }\n tSpan.textContent = letters[i].val\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve')\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr)\n }\n }\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none'\n i += 1\n }\n\n this._sizeChanged = true\n }\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st)\n this.renderInnerContent()\n if (this._sizeChanged) {\n this._sizeChanged = false\n var textBox = this.layerElement.getBBox()\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height,\n }\n }\n return this.bbox\n }\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i\n var len = this.textSpans.length\n var glyphElement\n this.renderedFrame = this.comp.renderedFrame\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st)\n if (glyphElement._mdf) {\n this._mdf = true\n }\n }\n }\n }\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag)\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true\n var i\n var len\n var renderedLetters = this.textAnimator.renderedLetters\n\n var letters = this.textProperty.currentData.l\n\n len = letters.length\n var renderedLetter\n var textSpan\n var glyphElement\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i]\n textSpan = this.textSpans[i].span\n glyphElement = this.textSpans[i].glyph\n if (glyphElement) {\n glyphElement.renderFrame()\n }\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m)\n }\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o)\n }\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw)\n }\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc)\n }\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc)\n }\n }\n }\n }\n }\n }\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp)\n }\n extendPrototype([IImageElement], ISolidElement)\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect')\n /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n rect.setAttribute('width', this.data.sw)\n rect.setAttribute('height', this.data.sh)\n rect.setAttribute('fill', this.data.sc)\n this.layerElement.appendChild(rect)\n }\n\n function NullElement(data, globalData, comp) {\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.initFrame()\n this.initTransform(data, globalData, comp)\n this.initHierarchy()\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true)\n }\n\n NullElement.prototype.renderFrame = function () {}\n\n NullElement.prototype.getBaseElement = function () {\n return null\n }\n\n NullElement.prototype.destroy = function () {}\n\n NullElement.prototype.sourceRectAtTime = function () {}\n\n NullElement.prototype.hide = function () {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement)\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase)\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this)\n }\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize)\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h)\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w)\n this.svgElement.setAttribute('height', animData.h)\n this.svgElement.style.width = '100%'\n this.svgElement.style.height = '100%'\n this.svgElement.style.transform = 'translate3d(0,0,0)'\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility\n }\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width)\n }\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height)\n }\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className)\n }\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id)\n }\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable)\n }\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio)\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n this.animationItem.wrapper.appendChild(this.svgElement)\n // Mask animation\n var defs = this.globalData.defs\n\n this.setupGlobalData(animData, defs)\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad\n this.data = animData\n\n var maskElement = createNS('clipPath')\n var rect = createNS('rect')\n rect.setAttribute('width', animData.w)\n rect.setAttribute('height', animData.h)\n rect.setAttribute('x', 0)\n rect.setAttribute('y', 0)\n var maskId = createElementID()\n maskElement.setAttribute('id', maskId)\n maskElement.appendChild(rect)\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')')\n\n defs.appendChild(maskElement)\n this.layers = animData.layers\n this.elements = createSizedArray(animData.layers.length)\n }\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = ''\n }\n this.layerElement = null\n this.globalData.defs = null\n var i\n var len = this.layers ? this.layers.length : 0\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n this.elements.length = 0\n this.destroyed = true\n this.animationItem = null\n }\n\n SVGRendererBase.prototype.updateContainerSize = function () {}\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements\n if (elements[pos] || this.layers[pos].ty === 99) {\n return\n }\n elements[pos] = true\n var element = this.createItem(this.layers[pos])\n\n elements[pos] = element\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element)\n }\n element.initExpressions()\n }\n this.appendElementInPos(element, pos)\n if (this.layers[pos].tt) {\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\n this.buildItem(pos - 1)\n this.addPendingElement(element)\n } else {\n element.setMatte(elements[pos - 1].layerId)\n }\n }\n }\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop()\n element.checkParenting()\n if (element.data.tt) {\n var i = 0\n var len = this.elements.length\n while (i < len) {\n if (this.elements[i] === element) {\n element.setMatte(this.elements[i - 1].layerId)\n break\n }\n i += 1\n }\n }\n }\n }\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return\n }\n if (num === null) {\n num = this.renderedFrame\n } else {\n this.renderedFrame = num\n }\n // console.log('-------');\n // console.log('FRAME ',num);\n this.globalData.frameNum = num\n this.globalData.frameId += 1\n this.globalData.projectInterface.currentFrame = num\n this.globalData._mdf = false\n var i\n var len = this.layers.length\n if (!this.completeLayers) {\n this.checkLayers(num)\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st)\n }\n }\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n }\n }\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement()\n if (!newElement) {\n return\n }\n var i = 0\n var nextElement\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement()\n }\n i += 1\n }\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement)\n } else {\n this.layerElement.appendChild(newElement)\n }\n }\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none'\n }\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block'\n }\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement)\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame()\n this.initBaseData(data, globalData, comp)\n this.initTransform(data, globalData, comp)\n this.initRenderable()\n this.initHierarchy()\n this.initRendererElement()\n this.createContainerElements()\n this.createRenderableComponents()\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems()\n }\n this.hide()\n }\n\n /* ICompElement.prototype.hide = function(){\n if(!this.hidden){\n this.hideElement();\n var i,len = this.elements.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].hide();\n }\n }\n }\n}; */\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false\n this.prepareRenderableFrame(num)\n this.prepareProperties(num, this.isInRange)\n if (!this.isInRange && !this.data.xt) {\n return\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1\n }\n this.renderedFrame = timeRemapped\n } else {\n this.renderedFrame = num / this.data.sr\n }\n var i\n var len = this.elements.length\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame)\n }\n // This iteration needs to be backwards because of how expressions connect between each other\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st)\n if (this.elements[i]._mdf) {\n this._mdf = true\n }\n }\n }\n }\n\n ICompElement.prototype.renderInnerContent = function () {\n var i\n var len = this.layers.length\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n }\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems\n }\n\n ICompElement.prototype.getElements = function () {\n return this.elements\n }\n\n ICompElement.prototype.destroyElements = function () {\n var i\n var len = this.layers.length\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n }\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements()\n this.destroyBaseElement()\n }\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers\n this.supports3d = true\n this.completeLayers = false\n this.pendingElements = []\n this.elements = this.layers ? createSizedArray(this.layers.length) : []\n this.initElement(data, globalData, comp)\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement)\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this)\n }\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem\n this.layers = null\n this.renderedFrame = -1\n this.svgElement = createNS('svg')\n var ariaLabel = ''\n if (config && config.title) {\n var titleElement = createNS('title')\n var titleId = createElementID()\n titleElement.setAttribute('id', titleId)\n titleElement.textContent = config.title\n this.svgElement.appendChild(titleElement)\n ariaLabel += titleId\n }\n if (config && config.description) {\n var descElement = createNS('desc')\n var descId = createElementID()\n descElement.setAttribute('id', descId)\n descElement.textContent = config.description\n this.svgElement.appendChild(descElement)\n ariaLabel += ' ' + descId\n }\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel)\n }\n var defs = createNS('defs')\n this.svgElement.appendChild(defs)\n var maskElement = createNS('g')\n this.svgElement.appendChild(maskElement)\n this.layerElement = maskElement\n this.renderConfig = {\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\n contentVisibility: (config && config.contentVisibility) || 'visible',\n progressiveLoad: (config && config.progressiveLoad) || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: (config && config.viewBoxOnly) || false,\n viewBoxSize: (config && config.viewBoxSize) || false,\n className: (config && config.className) || '',\n id: (config && config.id) || '',\n focusable: config && config.focusable,\n filterSize: {\n width: (config && config.filterSize && config.filterSize.width) || '100%',\n height: (config && config.filterSize && config.filterSize.height) || '100%',\n x: (config && config.filterSize && config.filterSize.x) || '0%',\n y: (config && config.filterSize && config.filterSize.y) || '0%',\n },\n width: config && config.width,\n height: config && config.height,\n }\n\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig,\n }\n this.elements = []\n this.pendingElements = []\n this.destroyed = false\n this.rendererType = 'svg'\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer)\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this)\n }\n\n function CVContextData() {\n this.saved = []\n this.cArrPos = 0\n this.cTr = new Matrix()\n this.cO = 1\n var i\n var len = 15\n this.savedOp = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n this.saved[i] = createTypedArray('float32', 16)\n }\n this._length = len\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2\n var currentSavedOp = this.savedOp\n this.savedOp = createTypedArray('float32', newLength)\n this.savedOp.set(currentSavedOp)\n var i = 0\n for (i = this._length; i < newLength; i += 1) {\n this.saved[i] = createTypedArray('float32', 16)\n }\n this._length = newLength\n }\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0\n this.cTr.reset()\n this.cO = 1\n }\n\n function ShapeTransformManager() {\n this.sequences = {}\n this.sequenceList = []\n this.transform_key_count = 0\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function (transforms) {\n var i\n var len = transforms.length\n var key = '_'\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_'\n }\n var sequence = this.sequences[key]\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false,\n }\n this.sequences[key] = sequence\n this.sequenceList.push(sequence)\n }\n return sequence\n },\n processSequence: function (sequence, isFirstFrame) {\n var i = 0\n var len = sequence.transforms.length\n var _mdf = isFirstFrame\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true\n break\n }\n i += 1\n }\n if (_mdf) {\n var props\n sequence.finalTransform.reset()\n for (i = len - 1; i >= 0; i -= 1) {\n props = sequence.transforms[i].transform.mProps.v.props\n sequence.finalTransform.transform(\n props[0],\n props[1],\n props[2],\n props[3],\n props[4],\n props[5],\n props[6],\n props[7],\n props[8],\n props[9],\n props[10],\n props[11],\n props[12],\n props[13],\n props[14],\n props[15],\n )\n }\n }\n sequence._mdf = _mdf\n },\n processSequences: function (isFirstFrame) {\n var i\n var len = this.sequenceList.length\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame)\n }\n },\n getNewKey: function () {\n this.transform_key_count += 1\n return '_' + this.transform_key_count\n },\n }\n\n function CVEffects() {}\n CVEffects.prototype.renderFrame = function () {}\n\n function CVMaskElement(data, element) {\n this.data = data\n this.element = element\n this.masksProperties = this.data.masksProperties || []\n this.viewData = createSizedArray(this.masksProperties.length)\n var i\n var len = this.masksProperties.length\n var hasMasks = false\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true\n }\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3)\n }\n this.hasMasks = hasMasks\n if (hasMasks) {\n this.element.addRenderableComponent(this)\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return\n }\n var transform = this.element.finalTransform.mat\n var ctx = this.element.canvasContext\n var i\n var len = this.masksProperties.length\n var pt\n var pts\n var data\n ctx.beginPath()\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0)\n ctx.lineTo(this.element.globalData.compSize.w, 0)\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h)\n ctx.lineTo(0, this.element.globalData.compSize.h)\n ctx.lineTo(0, 0)\n }\n data = this.viewData[i].v\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0)\n ctx.moveTo(pt[0], pt[1])\n var j\n var jLen = data._length\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j])\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5])\n }\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0])\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5])\n }\n }\n this.element.globalData.renderer.save(true)\n ctx.clip()\n }\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null\n }\n\n function CVBaseElement() {}\n\n CVBaseElement.prototype = {\n createElements: function () {},\n initRendererElement: function () {},\n createContainerElements: function () {\n this.canvasContext = this.globalData.canvasContext\n this.renderableEffectsManager = new CVEffects(this)\n },\n createContent: function () {},\n setBlendMode: function () {\n var globalData = this.globalData\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm\n var blendModeValue = getBlendMode(this.data.bm)\n globalData.canvasContext.globalCompositeOperation = blendModeValue\n }\n },\n createRenderableComponents: function () {\n this.maskManager = new CVMaskElement(this.data, this)\n },\n hideElement: function () {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true\n }\n },\n showElement: function () {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false\n this._isFirstFrame = true\n this.maskManager._isFirstFrame = true\n }\n },\n renderFrame: function () {\n if (this.hidden || this.data.hd) {\n return\n }\n this.renderTransform()\n this.renderRenderable()\n this.setBlendMode()\n var forceRealStack = this.data.ty === 0\n this.globalData.renderer.save(forceRealStack)\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props)\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v)\n this.renderInnerContent()\n this.globalData.renderer.restore(forceRealStack)\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true)\n }\n if (this._isFirstFrame) {\n this._isFirstFrame = false\n }\n },\n destroy: function () {\n this.canvasContext = null\n this.data = null\n this.globalData = null\n this.maskManager.destroy()\n },\n mHelper: new Matrix(),\n }\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = []\n this.tr = [0, 0, 0, 0, 0, 0]\n var ty = 4\n if (data.ty === 'rc') {\n ty = 5\n } else if (data.ty === 'el') {\n ty = 6\n } else if (data.ty === 'sr') {\n ty = 7\n }\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element)\n var i\n var len = styles.length\n var styledShape\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: [],\n }\n this.styledShapes.push(styledShape)\n styles[i].elements.push(styledShape)\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = []\n this.shapesData = data.shapes\n this.stylesList = []\n this.itemsData = []\n this.prevViewData = []\n this.shapeModifiers = []\n this.processedElements = []\n this.transformsManager = new ShapeTransformManager()\n this.initElement(data, globalData, comp)\n }\n\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement],\n CVShapeElement,\n )\n\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement\n\n CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false }\n\n CVShapeElement.prototype.dashResetter = []\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, [])\n }\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true,\n }\n var elementData = {}\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this)\n if (!elementData.c.k) {\n styleElem.co =\n 'rgb(' +\n bmFloor(elementData.c.v[0]) +\n ',' +\n bmFloor(elementData.c.v[1]) +\n ',' +\n bmFloor(elementData.c.v[2]) +\n ')'\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this)\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this)\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this)\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this)\n elementData.g = new GradientProperty(this, data.g, this)\n }\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this)\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2]\n styleElem.lj = lineJoinEnum[data.lj || 2]\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml\n }\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this)\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v\n }\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this)\n elementData.d = d\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray\n styleElem.do = elementData.d.dashoffset[0]\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero'\n }\n this.stylesList.push(styleElem)\n elementData.style = styleElem\n return elementData\n }\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: [],\n }\n return elementData\n }\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\n },\n }\n return elementData\n }\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager)\n\n this.shapes.push(elementData)\n this.addShapeToModifiers(elementData)\n return elementData\n }\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true\n var i\n var len = this.itemsData.length\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i]\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, [])\n len = this.dynamicProperties.length\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue()\n }\n this.renderModifiers()\n this.transformsManager.processSequences(this._isFirstFrame)\n }\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i\n var len = this.stylesList.length\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform)\n }\n }\n }\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i\n var len = this.stylesList.length\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop()\n }\n }\n }\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i\n var len = styles.length\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true\n }\n }\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i\n var len = arr.length - 1\n var j\n var jLen\n var ownStyles = []\n var ownModifiers = []\n var processedPos\n var modifier\n var currentTransform\n var ownTransforms = [].concat(transforms)\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i])\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender\n } else {\n itemsData[i] = prevViewData[processedPos - 1]\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms)\n } else {\n itemsData[i].style.closed = false\n }\n\n ownStyles.push(itemsData[i].style)\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i])\n } else {\n jLen = itemsData[i].it.length\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j]\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms)\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i])\n itemsData[i] = currentTransform\n }\n ownTransforms.push(itemsData[i])\n this.addTransformToStyleList(itemsData[i])\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i])\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n modifier.init(this, arr[i])\n itemsData[i] = modifier\n this.shapeModifiers.push(modifier)\n } else {\n modifier = itemsData[i]\n modifier.closed = false\n }\n ownModifiers.push(modifier)\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty)\n itemsData[i] = modifier\n modifier.init(this, arr, i, itemsData)\n this.shapeModifiers.push(modifier)\n shouldRender = false\n } else {\n modifier = itemsData[i]\n modifier.closed = true\n }\n ownModifiers.push(modifier)\n }\n this.addProcessedElement(arr[i], i + 1)\n }\n this.removeTransformFromStyleList()\n this.closeStyles(ownStyles)\n len = ownModifiers.length\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true\n }\n }\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1\n this.transformHelper._opMdf = false\n this.renderModifiers()\n this.transformsManager.processSequences(this._isFirstFrame)\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true)\n }\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity\n groupTransform.opacity *= groupTransform.op.v\n groupTransform._opMdf = true\n }\n }\n\n CVShapeElement.prototype.drawLayer = function () {\n var i\n var len = this.stylesList.length\n var j\n var jLen\n var k\n var kLen\n var elems\n var nodes\n var renderer = this.globalData.renderer\n var ctx = this.globalData.canvasContext\n var type\n var currentStyle\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i]\n type = currentStyle.type\n\n // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n if (\n !(\n ((type === 'st' || type === 'gs') && currentStyle.wi === 0) ||\n !currentStyle.data._shouldRender ||\n currentStyle.coOp === 0 ||\n this.globalData.currentGlobalAlpha === 0\n )\n ) {\n renderer.save()\n elems = currentStyle.elements\n if (type === 'st' || type === 'gs') {\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd\n ctx.lineWidth = currentStyle.wi\n ctx.lineCap = currentStyle.lc\n ctx.lineJoin = currentStyle.lj\n ctx.miterLimit = currentStyle.ml || 0\n } else {\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd\n }\n renderer.ctxOpacity(currentStyle.coOp)\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath()\n }\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props)\n jLen = elems.length\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath()\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da)\n ctx.lineDashOffset = currentStyle.do\n }\n }\n nodes = elems[j].trNodes\n kLen = nodes.length\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1])\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(\n nodes[k].pts[0],\n nodes[k].pts[1],\n nodes[k].pts[2],\n nodes[k].pts[3],\n nodes[k].pts[4],\n nodes[k].pts[5],\n )\n } else {\n ctx.closePath()\n }\n }\n if (type === 'st' || type === 'gs') {\n ctx.stroke()\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter)\n }\n }\n }\n if (type !== 'st' && type !== 'gs') {\n ctx.fill(currentStyle.r)\n }\n renderer.restore()\n }\n }\n }\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i\n var len = items.length - 1\n var groupTransform\n groupTransform = parentTransform\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform\n this.renderShapeTransform(parentTransform, groupTransform)\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i])\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform)\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform)\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform)\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it)\n } else if (items[i].ty === 'tm') {\n //\n }\n }\n if (isMain) {\n this.drawLayer()\n }\n }\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes\n var paths = shape.paths\n var i\n var len\n var j\n var jLen = paths._length\n shapeNodes.length = 0\n var groupTransformMat = styledShape.transforms.finalTransform\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j]\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n })\n }\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\n })\n }\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n })\n }\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\n })\n shapeNodes.push({\n t: 'z',\n })\n }\n }\n }\n styledShape.trNodes = shapeNodes\n }\n }\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i\n var len = itemData.styledShapes.length\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh)\n }\n }\n }\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co =\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity\n }\n }\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style\n var grd\n if (\n !styleElem.grd ||\n itemData.g._mdf ||\n itemData.s._mdf ||\n itemData.e._mdf ||\n (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))\n ) {\n var ctx = this.globalData.canvasContext\n var pt1 = itemData.s.v\n var pt2 = itemData.e.v\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1])\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2))\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0])\n\n var percent = itemData.h.v\n if (percent >= 1) {\n percent = 0.99\n } else if (percent <= -1) {\n percent = -0.99\n }\n var dist = rad * percent\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad)\n }\n\n var i\n var len = styleData.g.p\n var cValues = itemData.g.c\n var opacity = 1\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1]\n }\n grd.addColorStop(\n cValues[i * 4] / 100,\n 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')',\n )\n }\n styleElem.grd = grd\n }\n styleElem.coOp = itemData.o.v * groupTransform.opacity\n }\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style\n var d = itemData.d\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray\n styleElem.do = d.dashoffset[0]\n }\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co =\n 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity\n }\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v\n }\n }\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null\n this.globalData = null\n this.canvasContext = null\n this.stylesList.length = 0\n this.itemsData.length = 0\n }\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = []\n this.yOffset = 0\n this.fillColorAnim = false\n this.strokeColorAnim = false\n this.strokeWidthAnim = false\n this.stroke = false\n this.fill = false\n this.justifyOffset = 0\n this.currentRender = null\n this.renderType = 'canvas'\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: '',\n }\n this.initElement(data, globalData, comp)\n }\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement],\n CVTextElement,\n )\n\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d')\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0)\n\n var hasFill = false\n if (documentData.fc) {\n hasFill = true\n this.values.fill = this.buildColor(documentData.fc)\n } else {\n this.values.fill = 'rgba(0,0,0,0)'\n }\n this.fill = hasFill\n var hasStroke = false\n if (documentData.sc) {\n hasStroke = true\n this.values.stroke = this.buildColor(documentData.sc)\n this.values.sWidth = documentData.sw\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f)\n var i\n var len\n var letters = documentData.l\n var matrixHelper = this.mHelper\n this.stroke = hasStroke\n this.values.fValue =\n documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily\n len = documentData.finalText.length\n // this.tHelper.font = this.values.fValue;\n var charData\n var shapeData\n var k\n var kLen\n var shapes\n var j\n var jLen\n var pathNodes\n var commands\n var pathArr\n var singleShape = this.data.singleShape\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize\n var xPos = 0\n var yPos = 0\n var firstLine = true\n var cnt = 0\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(\n documentData.finalText[i],\n fontData.fStyle,\n this.globalData.fontManager.getFontByName(documentData.f).fFamily,\n )\n shapeData = (charData && charData.data) || {}\n matrixHelper.reset()\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset\n yPos += documentData.yOffset\n yPos += firstLine ? 1 : 0\n firstLine = false\n }\n shapes = shapeData.shapes ? shapeData.shapes[0].it : []\n jLen = shapes.length\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100)\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos)\n }\n commands = createSizedArray(jLen - 1)\n var commandsCounter = 0\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length\n pathNodes = shapes[j].ks.k\n pathArr = []\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(\n matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n )\n }\n pathArr.push(\n matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0),\n matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0),\n matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0),\n matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0),\n )\n }\n pathArr.push(\n matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0),\n matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0),\n matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0),\n matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0),\n )\n commands[commandsCounter] = pathArr\n commandsCounter += 1\n }\n }\n if (singleShape) {\n xPos += letters[i].l\n xPos += trackingOffset\n }\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands\n } else {\n this.textSpans[cnt] = { elem: commands }\n }\n cnt += 1\n }\n }\n\n CVTextElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext\n ctx.font = this.values.fValue\n ctx.lineCap = 'butt'\n ctx.lineJoin = 'miter'\n ctx.miterLimit = 4\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag)\n }\n\n var i\n var len\n var j\n var jLen\n var k\n var kLen\n var renderedLetters = this.textAnimator.renderedLetters\n\n var letters = this.textProperty.currentData.l\n\n len = letters.length\n var renderedLetter\n var lastFill = null\n var lastStroke = null\n var lastStrokeW = null\n var commands\n var pathArr\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i]\n if (renderedLetter) {\n this.globalData.renderer.save()\n this.globalData.renderer.ctxTransform(renderedLetter.p)\n this.globalData.renderer.ctxOpacity(renderedLetter.o)\n }\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n lastFill = renderedLetter.fc\n ctx.fillStyle = renderedLetter.fc\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill\n ctx.fillStyle = this.values.fill\n }\n commands = this.textSpans[i].elem\n jLen = commands.length\n this.globalData.canvasContext.beginPath()\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j]\n kLen = pathArr.length\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1])\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(\n pathArr[k],\n pathArr[k + 1],\n pathArr[k + 2],\n pathArr[k + 3],\n pathArr[k + 4],\n pathArr[k + 5],\n )\n }\n }\n this.globalData.canvasContext.closePath()\n this.globalData.canvasContext.fill()\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw\n ctx.lineWidth = renderedLetter.sw\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth\n ctx.lineWidth = this.values.sWidth\n }\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc\n ctx.strokeStyle = renderedLetter.sc\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke\n ctx.strokeStyle = this.values.stroke\n }\n commands = this.textSpans[i].elem\n jLen = commands.length\n this.globalData.canvasContext.beginPath()\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j]\n kLen = pathArr.length\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1])\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(\n pathArr[k],\n pathArr[k + 1],\n pathArr[k + 2],\n pathArr[k + 3],\n pathArr[k + 4],\n pathArr[k + 5],\n )\n }\n }\n this.globalData.canvasContext.closePath()\n this.globalData.canvasContext.stroke()\n /// ctx.strokeText(letters[i].val,0,0);\n }\n if (renderedLetter) {\n this.globalData.renderer.restore()\n }\n }\n }\n }\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId)\n this.img = globalData.imageLoader.getAsset(this.assetData)\n this.initElement(data, globalData, comp)\n }\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement],\n CVImageElement,\n )\n\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas')\n canvas.width = this.assetData.w\n canvas.height = this.assetData.h\n var ctx = canvas.getContext('2d')\n\n var imgW = this.img.width\n var imgH = this.img.height\n var imgRel = imgW / imgH\n var canvasRel = this.assetData.w / this.assetData.h\n var widthCrop\n var heightCrop\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\n heightCrop = imgH\n widthCrop = heightCrop * canvasRel\n } else {\n widthCrop = imgW\n heightCrop = widthCrop / canvasRel\n }\n ctx.drawImage(\n this.img,\n (imgW - widthCrop) / 2,\n (imgH - heightCrop) / 2,\n widthCrop,\n heightCrop,\n 0,\n 0,\n this.assetData.w,\n this.assetData.h,\n )\n this.img = canvas\n }\n }\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0)\n }\n\n CVImageElement.prototype.destroy = function () {\n this.img = null\n }\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp)\n }\n extendPrototype(\n [BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement],\n CVSolidElement,\n )\n\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame\n\n CVSolidElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext\n ctx.fillStyle = this.data.sc\n ctx.fillRect(0, 0, this.data.sw, this.data.sh)\n //\n }\n\n function CanvasRendererBase(animationItem, config) {\n this.animationItem = animationItem\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: (config && config.context) || null,\n progressiveLoad: (config && config.progressiveLoad) || false,\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\n contentVisibility: (config && config.contentVisibility) || 'visible',\n className: (config && config.className) || '',\n id: (config && config.id) || '',\n }\n this.renderConfig.dpr = (config && config.dpr) || 1\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1\n }\n this.renderedFrame = -1\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1,\n }\n this.contextData = new CVContextData()\n this.elements = []\n this.pendingElements = []\n this.transformMat = new Matrix()\n this.completeLayers = false\n this.rendererType = 'canvas'\n }\n extendPrototype([BaseRenderer], CanvasRendererBase)\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this)\n }\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return\n }\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13])\n return\n }\n this.transformMat.cloneFromProps(props)\n var cProps = this.contextData.cTr.props\n this.transformMat.transform(\n cProps[0],\n cProps[1],\n cProps[2],\n cProps[3],\n cProps[4],\n cProps[5],\n cProps[6],\n cProps[7],\n cProps[8],\n cProps[9],\n cProps[10],\n cProps[11],\n cProps[12],\n cProps[13],\n cProps[14],\n cProps[15],\n )\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]);\n this.contextData.cTr.cloneFromProps(this.transformMat.props)\n var trProps = this.contextData.cTr.props\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13])\n }\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n /* if(op === 1){\n return;\n } */\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op\n this.globalData.currentGlobalAlpha = this.contextData.cO\n return\n }\n this.contextData.cO *= op < 0 ? 0 : op\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\n this.canvasContext.globalAlpha = this.contextData.cO\n this.globalData.currentGlobalAlpha = this.contextData.cO\n }\n }\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore()\n return\n }\n this.contextData.reset()\n }\n\n CanvasRendererBase.prototype.save = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.save()\n return\n }\n if (actionFlag) {\n this.canvasContext.save()\n }\n var props = this.contextData.cTr.props\n if (this.contextData._length <= this.contextData.cArrPos) {\n this.contextData.duplicate()\n }\n var i\n var arr = this.contextData.saved[this.contextData.cArrPos]\n for (i = 0; i < 16; i += 1) {\n arr[i] = props[i]\n }\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO\n this.contextData.cArrPos += 1\n }\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore()\n return\n }\n if (actionFlag) {\n this.canvasContext.restore()\n this.globalData.blendMode = 'source-over'\n }\n this.contextData.cArrPos -= 1\n var popped = this.contextData.saved[this.contextData.cArrPos]\n var i\n var arr = this.contextData.cTr.props\n for (i = 0; i < 16; i += 1) {\n arr[i] = popped[i]\n }\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13])\n popped = this.contextData.savedOp[this.contextData.cArrPos]\n this.contextData.cO = popped\n if (this.globalData.currentGlobalAlpha !== popped) {\n this.canvasContext.globalAlpha = popped\n this.globalData.currentGlobalAlpha = popped\n }\n }\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas')\n var containerStyle = this.animationItem.container.style\n containerStyle.width = '100%'\n containerStyle.height = '100%'\n var origin = '0px 0px 0px'\n containerStyle.transformOrigin = origin\n containerStyle.mozTransformOrigin = origin\n containerStyle.webkitTransformOrigin = origin\n containerStyle['-webkit-transform'] = origin\n containerStyle.contentVisibility = this.renderConfig.contentVisibility\n this.animationItem.wrapper.appendChild(this.animationItem.container)\n this.canvasContext = this.animationItem.container.getContext('2d')\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className)\n }\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id)\n }\n } else {\n this.canvasContext = this.renderConfig.context\n }\n this.data = animData\n this.layers = animData.layers\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0,\n }\n this.setupGlobalData(animData, document.body)\n this.globalData.canvasContext = this.canvasContext\n this.globalData.renderer = this\n this.globalData.isDashed = false\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad\n this.globalData.transformCanvas = this.transformCanvas\n this.elements = createSizedArray(animData.layers.length)\n\n this.updateContainerSize()\n }\n\n CanvasRendererBase.prototype.updateContainerSize = function () {\n this.reset()\n var elementWidth\n var elementHeight\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth\n elementHeight = this.animationItem.wrapper.offsetHeight\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr)\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr)\n } else {\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr\n }\n var elementRel\n var animationRel\n if (\n this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 ||\n this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1\n ) {\n var par = this.renderConfig.preserveAspectRatio.split(' ')\n var fillType = par[1] || 'meet'\n var pos = par[0] || 'xMidYMid'\n var xPos = pos.substr(0, 4)\n var yPos = pos.substr(4)\n elementRel = elementWidth / elementHeight\n animationRel = this.transformCanvas.w / this.transformCanvas.h\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr)\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr)\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr)\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr)\n }\n\n if (\n xPos === 'xMid' &&\n ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.tx =\n ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) *\n this.renderConfig.dpr\n } else if (\n xPos === 'xMax' &&\n ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.tx =\n (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr\n } else {\n this.transformCanvas.tx = 0\n }\n if (\n yPos === 'YMid' &&\n ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.ty =\n ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) *\n this.renderConfig.dpr\n } else if (\n yPos === 'YMax' &&\n ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))\n ) {\n this.transformCanvas.ty =\n (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr\n } else {\n this.transformCanvas.ty = 0\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr)\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr)\n this.transformCanvas.tx = 0\n this.transformCanvas.ty = 0\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr\n this.transformCanvas.sy = this.renderConfig.dpr\n this.transformCanvas.tx = 0\n this.transformCanvas.ty = 0\n }\n this.transformCanvas.props = [\n this.transformCanvas.sx,\n 0,\n 0,\n 0,\n 0,\n this.transformCanvas.sy,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n this.transformCanvas.tx,\n this.transformCanvas.ty,\n 0,\n 1,\n ]\n /* var i, len = this.elements.length;\n for(i=0;i<len;i+=1){\n if(this.elements[i] && this.elements[i].data.ty === 0){\n this.elements[i].resize(this.globalData.transformCanvas);\n }\n } */\n this.ctxTransform(this.transformCanvas.props)\n this.canvasContext.beginPath()\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h)\n this.canvasContext.closePath()\n this.canvasContext.clip()\n\n this.renderFrame(this.renderedFrame, true)\n }\n\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = ''\n }\n var i\n var len = this.layers ? this.layers.length : 0\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n this.elements.length = 0\n this.globalData.canvasContext = null\n this.animationItem.container = null\n this.destroyed = true\n }\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (\n (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) ||\n this.destroyed ||\n num === -1\n ) {\n return\n }\n this.renderedFrame = num\n this.globalData.frameNum = num - this.animationItem._isFirstFrame\n this.globalData.frameId += 1\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender\n this.globalData.projectInterface.currentFrame = num\n\n // console.log('--------');\n // console.log('NEW: ',num);\n var i\n var len = this.layers.length\n if (!this.completeLayers) {\n this.checkLayers(num)\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st)\n }\n }\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h)\n } else {\n this.save()\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n if (this.renderConfig.clearCanvas !== true) {\n this.restore()\n }\n }\n }\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements\n if (elements[pos] || this.layers[pos].ty === 99) {\n return\n }\n var element = this.createItem(this.layers[pos], this, this.globalData)\n elements[pos] = element\n element.initExpressions()\n /* if(this.layers[pos].ty === 0){\n element.resize(this.globalData.transformCanvas);\n } */\n }\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop()\n element.checkParenting()\n }\n }\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none'\n }\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block'\n }\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false\n this.layers = data.layers\n this.pendingElements = []\n this.elements = createSizedArray(this.layers.length)\n this.initElement(data, globalData, comp)\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement)\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext\n ctx.beginPath()\n ctx.moveTo(0, 0)\n ctx.lineTo(this.data.w, 0)\n ctx.lineTo(this.data.w, this.data.h)\n ctx.lineTo(0, this.data.h)\n ctx.lineTo(0, 0)\n ctx.clip()\n var i\n var len = this.layers.length\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame()\n }\n }\n }\n\n CVCompElement.prototype.destroy = function () {\n var i\n var len = this.layers.length\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy()\n }\n }\n this.layers = null\n this.elements = null\n }\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this)\n }\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: (config && config.context) || null,\n progressiveLoad: (config && config.progressiveLoad) || false,\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\n contentVisibility: (config && config.contentVisibility) || 'visible',\n className: (config && config.className) || '',\n id: (config && config.id) || '',\n }\n this.renderConfig.dpr = (config && config.dpr) || 1\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1\n }\n this.renderedFrame = -1\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1,\n }\n this.contextData = new CVContextData()\n this.elements = []\n this.pendingElements = []\n this.transformMat = new Matrix()\n this.completeLayers = false\n this.rendererType = 'canvas'\n }\n extendPrototype([CanvasRendererBase], CanvasRenderer)\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this)\n }\n\n // Registering renderers\n registerRenderer('canvas', CanvasRenderer)\n\n // Registering shape modifiers\n ShapeModifiers.registerModifier('tm', TrimModifier)\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier)\n ShapeModifiers.registerModifier('rp', RepeaterModifier)\n ShapeModifiers.registerModifier('rd', RoundCornersModifier)\n\n const Expressions = (function () {\n var ob = {}\n ob.initExpressions = initExpressions\n\n function initExpressions(animation) {\n var stackCount = 0\n var registers = []\n\n function pushExpression() {\n stackCount += 1\n }\n\n function popExpression() {\n stackCount -= 1\n if (stackCount === 0) {\n releaseInstances()\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression)\n }\n }\n\n function releaseInstances() {\n var i\n var len = registers.length\n for (i = 0; i < len; i += 1) {\n registers[i].release()\n }\n registers.length = 0\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer)\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer)\n animation.renderer.globalData.pushExpression = pushExpression\n animation.renderer.globalData.popExpression = popExpression\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty\n }\n return ob\n })()\n\n /* eslint-disable */\n /*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\n\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto // node.js crypto module, initialized at the bottom.\n\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n function seedrandom(seed, options, callback) {\n var key = []\n options = options === true ? { entropy: true } : options || {}\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(\n flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3),\n key,\n )\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key)\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function () {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0 // and no 'extra last byte'.\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width // shifting numerator and\n d *= width // denominator and generating a\n x = arc4.g(1) // new least-significant-byte.\n }\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2 // last byte, shift everything\n d /= 2 // right using integer math until\n x >>>= 1 // we have exactly the desired bits.\n }\n return (n + x) / d // Form the number within [0, 1).\n }\n\n prng.int32 = function () {\n return arc4.g(4) | 0\n }\n prng.quick = function () {\n return arc4.g(4) / 0x100000000\n }\n prng.double = prng\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool)\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (\n options.pass ||\n callback ||\n function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4)\n }\n // Only provide the .state method if requested via options.state.\n prng.state = function () {\n return copy(arc4, {})\n }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) {\n math[rngname] = prng\n return seed\n }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng\n }\n )(prng, shortseed, 'global' in options ? options.global : this == math, options.state)\n }\n math['seed' + rngname] = seedrandom\n\n //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = (me.i = me.j = 0),\n s = (me.S = [])\n\n // The empty key [] is treated as [0].\n if (!keylen) {\n key = [keylen++]\n }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++\n }\n for (i = 0; i < width; i++) {\n s[i] = s[(j = mask & (j + key[i % keylen] + (t = s[i])))]\n s[j] = t\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S\n while (count--) {\n t = s[(i = mask & (i + 1))]\n r = r * width + s[mask & ((s[i] = s[(j = mask & (j + t))]) + (s[j] = t))]\n }\n me.i = i\n me.j = j\n return r\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n }\n }\n\n //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n function copy(f, t) {\n t.i = f.i\n t.j = f.j\n t.S = f.S.slice()\n return t\n }\n\n //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n function flatten(obj, depth) {\n var result = [],\n typ = typeof obj,\n prop\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1))\n } catch (e) {}\n }\n }\n return result.length ? result : typ == 'string' ? obj : obj + '\\0'\n }\n\n //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0\n while (j < stringseed.length) {\n key[mask & j] = mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++))\n }\n return tostring(key)\n }\n\n //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width))\n }\n var out = new Uint8Array(width)\n ;(global.crypto || global.msCrypto).getRandomValues(out)\n return tostring(out)\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins\n return [+new Date(), global, plugins, global.screen, tostring(pool)]\n }\n }\n\n //\n // tostring()\n // Converts an array of charcodes to a string\n //\n function tostring(a) {\n return String.fromCharCode.apply(0, a)\n }\n\n //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n mixkey(math.random(), pool)\n\n //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n\n // End anonymous scope, and pass initial values.\n }\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath)\n }\n\n var propTypes = {\n SHAPE: 'shape',\n }\n\n /* eslint-disable camelcase */\n\n const ExpressionManager = (function () {\n 'use strict'\n\n var ob = {}\n var Math = BMMath\n var window = null\n var document = null\n var XMLHttpRequest = null\n var fetch = null\n var frames = null\n initialize$2(BMMath)\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number\n }\n\n function $bm_neg(a) {\n var tOfA = typeof a\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\n return -a\n }\n if ($bm_isInstanceOfArray(a)) {\n var i\n var lenA = a.length\n var retArr = []\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i]\n }\n return retArr\n }\n if (a.propType) {\n return a.v\n }\n return -a\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get\n\n function sum(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n if (tOfA === 'string' || tOfB === 'string') {\n return a + b\n }\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a + b\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0)\n a[0] += b\n return a\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0)\n b[0] = a + b[0]\n return b\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0\n var lenA = a.length\n var lenB = b.length\n var retArr = []\n while (i < lenA || i < lenB) {\n if (\n (typeof a[i] === 'number' || a[i] instanceof Number) &&\n (typeof b[i] === 'number' || b[i] instanceof Number)\n ) {\n retArr[i] = a[i] + b[i]\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]\n }\n i += 1\n }\n return retArr\n }\n return 0\n }\n var add = sum\n\n function sub(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10)\n }\n if (tOfB === 'string') {\n b = parseInt(b, 10)\n }\n return a - b\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0)\n a[0] -= b\n return a\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0)\n b[0] = a - b[0]\n return b\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0\n var lenA = a.length\n var lenB = b.length\n var retArr = []\n while (i < lenA || i < lenB) {\n if (\n (typeof a[i] === 'number' || a[i] instanceof Number) &&\n (typeof b[i] === 'number' || b[i] instanceof Number)\n ) {\n retArr[i] = a[i] - b[i]\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]\n }\n i += 1\n }\n return retArr\n }\n return 0\n }\n\n function mul(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n var arr\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b\n }\n\n var i\n var len\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b\n }\n return arr\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i]\n }\n return arr\n }\n return 0\n }\n\n function div(a, b) {\n var tOfA = typeof a\n var tOfB = typeof b\n var arr\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b\n }\n var i\n var len\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b\n }\n return arr\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length\n arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i]\n }\n return arr\n }\n return 0\n }\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10)\n }\n if (typeof b === 'string') {\n b = parseInt(b, 10)\n }\n return a % b\n }\n var $bm_sum = sum\n var $bm_sub = sub\n var $bm_mul = mul\n var $bm_div = div\n var $bm_mod = mod\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max\n max = min\n min = mm\n }\n return Math.min(Math.max(num, min), max)\n }\n\n function radiansToDegrees(val) {\n return val / degToRads\n }\n var radians_to_degrees = radiansToDegrees\n\n function degreesToRadians(val) {\n return val * degToRads\n }\n var degrees_to_radians = radiansToDegrees\n\n var helperLengthArray = [0, 0, 0, 0, 0, 0]\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0\n return Math.abs(arr1 - arr2)\n }\n if (!arr2) {\n arr2 = helperLengthArray\n }\n var i\n var len = Math.min(arr1.length, arr2.length)\n var addedLength = 0\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2)\n }\n return Math.sqrt(addedLength)\n }\n\n function normalize(vec) {\n return div(vec, length(vec))\n }\n\n function rgbToHsl(val) {\n var r = val[0]\n var g = val[1]\n var b = val[2]\n var max = Math.max(r, g, b)\n var min = Math.min(r, g, b)\n var h\n var s\n var l = (max + min) / 2\n\n if (max === min) {\n h = 0 // achromatic\n s = 0 // achromatic\n } else {\n var d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0)\n break\n case g:\n h = (b - r) / d + 2\n break\n case b:\n h = (r - g) / d + 4\n break\n default:\n break\n }\n h /= 6\n }\n\n return [h, s, l, val[3]]\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1\n if (t > 1) t -= 1\n if (t < 1 / 6) return p + (q - p) * 6 * t\n if (t < 1 / 2) return q\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n return p\n }\n\n function hslToRgb(val) {\n var h = val[0]\n var s = val[1]\n var l = val[2]\n\n var r\n var g\n var b\n\n if (s === 0) {\n r = l // achromatic\n b = l // achromatic\n g = l // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s\n var p = 2 * l - q\n r = hue2rgb(p, q, h + 1 / 3)\n g = hue2rgb(p, q, h)\n b = hue2rgb(p, q, h - 1 / 3)\n }\n\n return [r, g, b, val[3]]\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin\n value2 = tMax\n tMin = 0\n tMax = 1\n }\n if (tMax < tMin) {\n var _tMin = tMax\n tMax = tMin\n tMin = _tMin\n }\n if (t <= tMin) {\n return value1\n }\n if (t >= tMax) {\n return value2\n }\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin)\n if (!value1.length) {\n return value1 + (value2 - value1) * perc\n }\n var i\n var len = value1.length\n var arr = createTypedArray('float32', len)\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc\n }\n return arr\n }\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0\n max = 1\n } else {\n max = min\n min = undefined\n }\n }\n if (max.length) {\n var i\n var len = max.length\n if (!min) {\n min = createTypedArray('float32', len)\n }\n var arr = createTypedArray('float32', len)\n var rnd = BMMath.random()\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i])\n }\n return arr\n }\n if (min === undefined) {\n min = 0\n }\n var rndm = BMMath.random()\n return min + rndm * (max - min)\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i\n var len = points.length\n var path = shapePool.newElement()\n path.setPathData(!!closed, len)\n var arrPlaceholder = [0, 0]\n var inVertexPoint\n var outVertexPoint\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder\n path.setTripleAt(\n points[i][0],\n points[i][1],\n outVertexPoint[0] + points[i][0],\n outVertexPoint[1] + points[i][1],\n inVertexPoint[0] + points[i][0],\n inVertexPoint[1] + points[i][1],\n i,\n true,\n )\n }\n return path\n }\n\n function initiateExpression(elem, data, property) {\n var val = data.x\n var needsVelocity = /velocity(?![\\w\\d])/.test(val)\n var _needsRandom = val.indexOf('random') !== -1\n var elemType = elem.data.ty\n var transform\n var $bm_transform\n var content\n var effect\n var thisProperty = property\n thisProperty.valueAtTime = thisProperty.getValueAtTime\n Object.defineProperty(thisProperty, 'value', {\n get: function () {\n return thisProperty.v\n },\n })\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate\n elem.comp.displayStartTime = 0\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate\n var outPoint = elem.data.op / elem.comp.globalData.frameRate\n var width = elem.data.sw ? elem.data.sw : 0\n var height = elem.data.sh ? elem.data.sh : 0\n var name = elem.data.nm\n var loopIn\n var loop_in\n var loopOut\n var loop_out\n var smooth\n var toWorld\n var fromWorld\n var fromComp\n var toComp\n var fromCompToSurface\n var position\n var rotation\n var anchorPoint\n var scale\n var thisLayer\n var thisComp\n var mask\n var valueAtTime\n var velocityAtTime\n\n var scoped_bm_rt\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0] // eslint-disable-line no-eval\n var numKeys = property.kf ? data.k.length : 0\n\n var active = !this.data || this.data.hd !== true\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle\n var j\n var lenWiggle = this.pv.length ? this.pv.length : 1\n var addedAmps = createTypedArray('float32', lenWiggle)\n freq = 5\n var iterations = Math.floor(time * freq)\n iWiggle = 0\n j = 0\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random()\n // addedAmps[j] += -amp + amp*2*rnd;\n }\n iWiggle += 1\n }\n // var rnd2 = BMMath.random();\n var periods = time * freq\n var perc = periods - Math.floor(periods)\n var arr = createTypedArray('float32', lenWiggle)\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n return arr\n }\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc\n }.bind(this)\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty)\n loop_in = loopIn\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty)\n loop_out = loopOut\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty)\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true)\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true)\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this)\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this)\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface)\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]]\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads\n return [yaw, pitch, 0]\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2)\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2)\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2)\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin\n val2 = tMax\n } else {\n t = (t - tMin) / (tMax - tMin)\n }\n if (t > 1) {\n t = 1\n } else if (t < 0) {\n t = 0\n }\n var mult = fn(t)\n if ($bm_isInstanceOfArray(val1)) {\n var iKey\n var lenKey = val1.length\n var arr = createTypedArray('float32', lenKey)\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey]\n }\n return arr\n }\n return (val2 - val1) * mult + val1\n }\n\n function nearestKey(time) {\n var iKey\n var lenKey = data.k.length\n var index\n var keyTime\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0\n keyTime = 0\n } else {\n index = -1\n time *= elem.comp.globalData.frameRate\n if (time < data.k[0].t) {\n index = 1\n keyTime = data.k[0].t\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1\n keyTime = data.k[iKey].t\n break\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2\n keyTime = data.k[iKey + 1].t\n } else {\n index = iKey + 1\n keyTime = data.k[iKey].t\n }\n break\n }\n }\n if (index === -1) {\n index = iKey + 1\n keyTime = data.k[iKey].t\n }\n }\n }\n var obKey = {}\n obKey.index = index\n obKey.time = keyTime / elem.comp.globalData.frameRate\n return obKey\n }\n\n function key(ind) {\n var obKey\n var iKey\n var lenKey\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind)\n }\n ind -= 1\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: [],\n }\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e\n\n lenKey = arr.length\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey]\n obKey.value[iKey] = arr[iKey]\n }\n return obKey\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate\n }\n return fr / fps\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time\n }\n if (!fps) {\n fps = elem.comp.globalData.frameRate\n }\n return t * fps\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed)\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime()\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init)\n }\n return value.substring(init, end)\n }\n return ''\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init)\n }\n return value.substr(init, end)\n }\n return ''\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond\n value = valueAtTime(time)\n }\n\n var time\n var velocity\n var value\n var text\n var textIndex\n var textTotal\n var selectorValue\n var index = elem.data.ind\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length)\n var parent\n var randSeed = Math.floor(Math.random() * 1000000)\n var globalData = elem.globalData\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value\n }\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex\n textTotal = this.textTotal\n selectorValue = this.selectorValue\n }\n if (!thisLayer) {\n text = elem.layerInterface.text\n thisLayer = elem.layerInterface\n thisComp = elem.comp.compInterface\n toWorld = thisLayer.toWorld.bind(thisLayer)\n fromWorld = thisLayer.fromWorld.bind(thisLayer)\n fromComp = thisLayer.fromComp.bind(thisLayer)\n toComp = thisLayer.toComp.bind(thisLayer)\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null\n fromCompToSurface = fromComp\n }\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group')\n $bm_transform = transform\n if (transform) {\n anchorPoint = transform.anchorPoint\n /* position = transform.position;\n rotation = transform.rotation;\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group')\n }\n if (!effect) {\n effect = thisLayer(4)\n }\n hasParent = !!(elem.hierarchy && elem.hierarchy.length)\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface\n }\n time = this.comp.renderedFrame / this.comp.globalData.frameRate\n if (_needsRandom) {\n seedRandom(randSeed + time)\n }\n if (needsVelocity) {\n velocity = velocityAtTime(time)\n }\n expression_function()\n this.frameExpressionId = elem.globalData.frameId\n\n // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt\n return scoped_bm_rt\n }\n // Bundlers will see these as dead code and unless we reference them\n executeExpression.__preventDeadCodeRemoval = [\n $bm_transform,\n anchorPoint,\n time,\n velocity,\n inPoint,\n outPoint,\n width,\n height,\n name,\n loop_in,\n loop_out,\n smooth,\n toComp,\n fromCompToSurface,\n toWorld,\n fromWorld,\n mask,\n position,\n rotation,\n scale,\n thisComp,\n numKeys,\n active,\n wiggle,\n loopInDuration,\n loopOutDuration,\n comp,\n lookAt,\n easeOut,\n easeIn,\n ease,\n nearestKey,\n key,\n text,\n textIndex,\n textTotal,\n selectorValue,\n framesToTime,\n timeToFrames,\n sourceRectAtTime,\n substring,\n substr,\n posterizeTime,\n index,\n globalData,\n ]\n return executeExpression\n }\n\n ob.initiateExpression = initiateExpression\n ob.__preventDeadCodeRemoval = [\n window,\n document,\n XMLHttpRequest,\n fetch,\n frames,\n $bm_neg,\n add,\n $bm_sum,\n $bm_sub,\n $bm_mul,\n $bm_div,\n $bm_mod,\n clamp,\n radians_to_degrees,\n degreesToRadians,\n degrees_to_radians,\n normalize,\n rgbToHsl,\n hslToRgb,\n linear,\n random,\n createPath,\n ]\n return ob\n })()\n\n const expressionHelpers = (function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true\n prop.x = true\n prop.initiateExpression = ExpressionManager.initiateExpression\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop))\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate\n frameNum -= this.offsetTime\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime)\n this._cachingAtTime.lastFrame = frameNum\n }\n return this._cachingAtTime.value\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01\n var v1 = this.getValueAtTime(frameNum)\n var v2 = this.getValueAtTime(frameNum + delta)\n var speed = 0\n if (v1.length) {\n var i\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2)\n }\n speed = Math.sqrt(speed) * 100\n } else {\n speed = 0\n }\n return speed\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel\n }\n var delta = -0.001\n // frameNum += this.elem.data.st;\n var v1 = this.getValueAtTime(frameNum)\n var v2 = this.getValueAtTime(frameNum + delta)\n var velocity\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length)\n var i\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta\n }\n } else {\n velocity = (v2 - v1) / delta\n }\n return velocity\n }\n\n function getStaticValueAtTime() {\n return this.pv\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty,\n }\n })()\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv\n }\n type = type ? type.toLowerCase() : ''\n var currentFrame = this.comp.renderedFrame\n var keyframes = this.keyframes\n var lastKeyFrame = keyframes[keyframes.length - 1].t\n if (currentFrame <= lastKeyFrame) {\n return this.pv\n }\n var cycleDuration\n var firstKeyFrame\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1\n }\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t\n cycleDuration = lastKeyFrame - firstKeyFrame\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip)\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration)\n }\n firstKeyFrame = lastKeyFrame - cycleDuration\n }\n var i\n var len\n var ret\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration)\n if (iterations % 2 !== 0) {\n return this.getValueAtTime(\n (cycleDuration - ((currentFrame - firstKeyFrame) % cycleDuration) + firstKeyFrame) /\n this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0)\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0)\n var current = this.getValueAtTime(\n (((currentFrame - firstKeyFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration)\n if (this.pv.length) {\n ret = new Array(initV.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i]\n }\n return ret\n }\n return (endV - initV) * repeats + current\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0)\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0)\n if (this.pv.length) {\n ret = new Array(lastValue.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] =\n lastValue[i] +\n ((lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate)) /\n 0.0005 // eslint-disable-line\n }\n return ret\n }\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001)\n }\n return this.getValueAtTime(\n (((currentFrame - firstKeyFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv\n }\n type = type ? type.toLowerCase() : ''\n var currentFrame = this.comp.renderedFrame\n var keyframes = this.keyframes\n var firstKeyFrame = keyframes[0].t\n if (currentFrame >= firstKeyFrame) {\n return this.pv\n }\n var cycleDuration\n var lastKeyFrame\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1\n }\n lastKeyFrame = keyframes[duration].t\n cycleDuration = lastKeyFrame - firstKeyFrame\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame)\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration)\n }\n lastKeyFrame = firstKeyFrame + cycleDuration\n }\n var i\n var len\n var ret\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration)\n if (iterations % 2 === 0) {\n return this.getValueAtTime(\n (((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0)\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0)\n var current = this.getValueAtTime(\n (cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) /\n this.comp.globalData.frameRate,\n 0,\n )\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1\n if (this.pv.length) {\n ret = new Array(initV.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats\n }\n return ret\n }\n return current - (endV - initV) * repeats\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0)\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0)\n if (this.pv.length) {\n ret = new Array(firstValue.length)\n len = ret.length\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001\n }\n return ret\n }\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001\n }\n return this.getValueAtTime(\n (cycleDuration - (((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame)) /\n this.comp.globalData.frameRate,\n 0,\n ) // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv\n }\n width = (width || 0.4) * 0.5\n samples = Math.floor(samples || 5)\n if (samples <= 1) {\n return this.pv\n }\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate\n var initFrame = currentTime - width\n var endFrame = currentTime + width\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1\n var i = 0\n var j = 0\n var value\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length)\n } else {\n value = 0\n }\n var sampleValue\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency)\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j]\n }\n } else {\n value += sampleValue\n }\n i += 1\n }\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples\n }\n } else {\n value /= samples\n }\n return value\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix(),\n }\n }\n /// /\n var matrix = this._transformCachingAtTime.v\n matrix.cloneFromProps(this.pre.props)\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time)\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult)\n }\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time)\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult)\n }\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time)\n var skewAxis = this.sa.getValueAtTime(time)\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult)\n }\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time)\n matrix.rotate(-rotation * this.r.mult)\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time)\n var rotationY = this.ry.getValueAtTime(time)\n var rotationX = this.rx.getValueAtTime(time)\n var orientation = this.or.getValueAtTime(time)\n matrix\n .rotateZ(-rotationZ * this.rz.mult)\n .rotateY(rotationY * this.ry.mult)\n .rotateX(rotationX * this.rx.mult)\n .rotateZ(-orientation[2] * this.or.mult)\n .rotateY(orientation[1] * this.or.mult)\n .rotateX(orientation[0] * this.or.mult)\n }\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time)\n var positionY = this.py.getValueAtTime(time)\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time)\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult)\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0)\n }\n } else {\n var position = this.p.getValueAtTime(time)\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult)\n }\n return matrix\n /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix())\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container)\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop)\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop)\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty\n return prop\n }\n\n var propertyGetProp = PropertyFactory.getProp\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container)\n // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop)\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop)\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty\n prop.loopOut = loopOut\n prop.loopIn = loopIn\n prop.smooth = smooth\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop)\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop)\n prop.numKeys = data.a === 1 ? data.k.length : 0\n prop.propertyIndex = data.ix\n var value = 0\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length)\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value,\n }\n expressionHelpers.searchExpressions(elem, data, prop)\n if (prop.k) {\n container.addDynamicProperty(prop)\n }\n\n return prop\n }\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame,\n }\n }\n\n frameNum *= this.elem.globalData.frameRate\n frameNum -= this.offsetTime\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0\n this._cachingAtTime.lastTime = frameNum\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime)\n }\n return this._cachingAtTime.shapeValue\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction()\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction()\n\n function ShapeExpressions() {}\n ShapeExpressions.prototype = {\n vertices: function (prop, time) {\n if (this.k) {\n this.getValue()\n }\n var shapePath = this.v\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0)\n }\n var i\n var len = shapePath._length\n var vertices = shapePath[prop]\n var points = shapePath.v\n var arr = createSizedArray(len)\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]]\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]]\n }\n }\n return arr\n },\n points: function (time) {\n return this.vertices('v', time)\n },\n inTangents: function (time) {\n return this.vertices('i', time)\n },\n outTangents: function (time) {\n return this.vertices('o', time)\n },\n isClosed: function () {\n return this.v.c\n },\n pointOnPath: function (perc, time) {\n var shapePath = this.v\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0)\n }\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath)\n }\n\n var segmentsLength = this._segmentsLength\n var lengths = segmentsLength.lengths\n var lengthPos = segmentsLength.totalLength * perc\n var i = 0\n var len = lengths.length\n var accumulatedLength = 0\n var pt\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength\n pt = bez.getPointInSegment(\n shapePath.v[initIndex],\n shapePath.v[endIndex],\n shapePath.o[initIndex],\n shapePath.i[endIndex],\n segmentPerc,\n lengths[i],\n )\n break\n } else {\n accumulatedLength += lengths[i].addedLength\n }\n i += 1\n }\n if (!pt) {\n pt = shapePath.c\n ? [shapePath.v[0][0], shapePath.v[0][1]]\n : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]]\n }\n return pt\n },\n vectorOnPath: function (perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999\n }\n var pt1 = this.pointOnPath(perc, time)\n var pt2 = this.pointOnPath(perc + 0.001, time)\n var xLength = pt2[0] - pt1[0]\n var yLength = pt2[1] - pt1[1]\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2))\n if (magnitude === 0) {\n return [0, 0]\n }\n var unitVector =\n vectorType === 'tangent'\n ? [xLength / magnitude, yLength / magnitude]\n : [-yLength / magnitude, xLength / magnitude]\n return unitVector\n },\n tangentOnPath: function (perc, time) {\n return this.vectorOnPath(perc, time, 'tangent')\n },\n normalOnPath: function (perc, time) {\n return this.vectorOnPath(perc, time, 'normal')\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\n }\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction)\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction)\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression\n\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims)\n prop.propertyIndex = data.ix\n prop.lock = false\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop)\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop)\n }\n if (prop.k) {\n elem.addDynamicProperty(prop)\n }\n return prop\n }\n }\n\n function initialize$1() {\n addPropertyDecorator()\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this)\n this.addEffect(this.getExpressionValue.bind(this))\n return true\n }\n return null\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text)\n if (currentValue.t !== newValue) {\n var newData = {}\n this.copyData(newData, currentValue)\n newData.t = newValue.toString()\n newData.__complete = false\n return newData\n }\n return currentValue\n }\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes()\n var hasExpressions = this.searchExpressions()\n this.kf = isKeyframed || hasExpressions\n return this.kf\n }\n\n TextProperty.prototype.searchExpressions = searchExpressions\n }\n\n function initialize() {\n addDecorator()\n }\n\n // Registering expression plugin\n setExpressionsPlugin(Expressions)\n initialize$1()\n initialize()\n\n return lottie\n})()\n\nexport { lottie as default }\n"],"names":["value","val","data","comp","loadAnimation","ob","name","key","expressionsPlugin","index","searchAnimations","div","length","time","elem","scale","transform","width","text","sum","mask","property","toWorld","fromWorld","fromComp","i","len","content","globalData","position","prng","seed","t","j","s","BMMath","wiggle","velocity","loopOut","loopIn","smooth","rotation"],"mappings":"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"}
|