@octane-xplat/lottie 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/README.md +36 -16
  2. package/dist/native/index.js +10 -9
  3. package/dist/native/octane-client-build.json +1 -1
  4. package/dist/web/index.js +39 -25
  5. package/dist/web/octane-client-build.json +1 -1
  6. package/package.json +25 -3
  7. package/platforms/macos/LICENSE-EpoxyCore-Apache-2.0.txt +201 -0
  8. package/platforms/macos/LICENSE-LRUCache-MIT.txt +22 -0
  9. package/platforms/macos/LICENSE-Lottie-Apache-2.0.txt +201 -0
  10. package/platforms/macos/LICENSE-ZIPFoundation-MIT.txt +21 -0
  11. package/platforms/macos/UPSTREAM.md +13 -0
  12. package/platforms/macos/resources/PrivacyInfo.xcprivacy +23 -0
  13. package/platforms/macos/resources/THIRD-PARTY-NOTICES.txt +10 -0
  14. package/platforms/macos/src/XplatAppKitLottie.swift +246 -0
  15. package/platforms/macos/src/vendor/Lottie/PrivacyInfo.xcprivacy +23 -0
  16. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +81 -0
  17. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +476 -0
  18. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CombinedShapeAnimation.swift +92 -0
  19. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CustomPathAnimation.swift +89 -0
  20. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/DropShadowAnimation.swift +179 -0
  21. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/EllipseAnimation.swift +53 -0
  22. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/GradientAnimations.swift +287 -0
  23. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/LayerProperty.swift +440 -0
  24. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/OpacityAnimation.swift +53 -0
  25. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/RectangleAnimation.swift +59 -0
  26. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/ShapeAnimation.swift +246 -0
  27. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/StarAnimation.swift +119 -0
  28. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/StrokeAnimation.swift +96 -0
  29. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/TransformAnimations.swift +380 -0
  30. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/VisibilityAnimation.swift +63 -0
  31. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/CompatibilityTracker.swift +129 -0
  32. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/CoreAnimationLayer.swift +645 -0
  33. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/CALayer+fillBounds.swift +35 -0
  34. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/KeyframeGroup+exactlyOneKeyframe.swift +28 -0
  35. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/Keyframes+combined.swift +345 -0
  36. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/Keyframes+timeRemapping.swift +46 -0
  37. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/AnimationLayer.swift +169 -0
  38. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/BaseAnimationLayer.swift +46 -0
  39. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +120 -0
  40. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/CALayer+setupLayerHierarchy.swift +169 -0
  41. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/GradientRenderLayer.swift +101 -0
  42. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/ImageLayer.swift +81 -0
  43. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/InfiniteOpaqueAnimationLayer.swift +57 -0
  44. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/LayerModel+makeAnimationLayer.swift +59 -0
  45. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/MaskCompositionLayer.swift +139 -0
  46. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/PreCompLayer.swift +107 -0
  47. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/RepeaterLayer.swift +113 -0
  48. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/ShapeItemLayer.swift +346 -0
  49. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/ShapeLayer.swift +569 -0
  50. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/SolidLayer.swift +66 -0
  51. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/TextLayer.swift +157 -0
  52. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/TransformLayer.swift +13 -0
  53. package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/ValueProviderStore.swift +157 -0
  54. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/Collection+Diff.swift +267 -0
  55. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/Diffable.swift +19 -0
  56. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/DiffableSection.swift +16 -0
  57. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/IndexChangeset.swift +187 -0
  58. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/SectionedChangeset.swift +22 -0
  59. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Logging/EpoxyLogger.swift +102 -0
  60. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/CallbackContextEpoxyModeled.swift +8 -0
  61. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModelArrayBuilder.swift +48 -0
  62. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModelProperty.swift +158 -0
  63. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModelStorage.swift +88 -0
  64. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModeled.swift +54 -0
  65. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Internal/AnyEpoxyModelProperty.swift +31 -0
  66. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Internal/ClassReference.swift +39 -0
  67. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/AnimatedProviding.swift +10 -0
  68. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DataIDProviding.swift +58 -0
  69. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DidDisplayProviding.swift +41 -0
  70. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DidEndDisplayingProviding.swift +42 -0
  71. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DidSelectProviding.swift +36 -0
  72. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/ErasedContentProviding.swift +49 -0
  73. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/MakeViewProviding.swift +61 -0
  74. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/SetBehaviorsProviding.swift +38 -0
  75. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/SetContentProviding.swift +38 -0
  76. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/StyleIDProviding.swift +38 -0
  77. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/TraitCollectionProviding.swift +14 -0
  78. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/ViewDifferentiatorProviding.swift +34 -0
  79. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/ViewProviding.swift +13 -0
  80. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/WillDisplayProviding.swift +41 -0
  81. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/ViewEpoxyModeled.swift +10 -0
  82. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/README.md +30 -0
  83. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/EpoxySwiftUIIntrinsicContentSizeInvalidator.swift +34 -0
  84. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/EpoxySwiftUILayoutMargins.swift +38 -0
  85. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/EpoxyableView+SwiftUIView.swift +165 -0
  86. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/LayoutUtilities/MeasuringViewRepresentable.swift +127 -0
  87. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/LayoutUtilities/SwiftUIMeasurementContainer.swift +468 -0
  88. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/SwiftUIView.swift +146 -0
  89. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/UIView+SwiftUIView.swift +39 -0
  90. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/UIViewConfiguringSwiftUIView.swift +41 -0
  91. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/BehaviorsConfigurableView.swift +45 -0
  92. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/ContentConfigurableView.swift +36 -0
  93. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/EpoxyableView.swift +5 -0
  94. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/StyledView.swift +43 -0
  95. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/ViewType.swift +47 -0
  96. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/LRUCache/LRUCache.swift +257 -0
  97. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/LRUCache/README.md +24 -0
  98. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/README.md +43 -0
  99. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+BackingConfiguration.swift +149 -0
  100. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Deprecated.swift +23 -0
  101. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Helpers.swift +361 -0
  102. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+MemoryFile.swift +205 -0
  103. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Progress.swift +66 -0
  104. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Reading.swift +160 -0
  105. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+ReadingDeprecated.swift +50 -0
  106. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Writing.swift +403 -0
  107. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+WritingDeprecated.swift +95 -0
  108. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+ZIP64.swift +191 -0
  109. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive.swift +404 -0
  110. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Data+Compression.swift +632 -0
  111. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Data+CompressionDeprecated.swift +43 -0
  112. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Data+Serialization.swift +146 -0
  113. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Date+ZIP.swift +101 -0
  114. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Entry+Serialization.swift +191 -0
  115. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Entry+ZIP64.swift +170 -0
  116. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Entry.swift +669 -0
  117. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/FileManager+ZIP.swift +405 -0
  118. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/FileManager+ZIPDeprecated.swift +28 -0
  119. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/README.md +24 -0
  120. package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/URL+ZIP.swift +34 -0
  121. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift +177 -0
  122. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/ImageCompositionLayer.swift +54 -0
  123. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/MaskContainerLayer.swift +191 -0
  124. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/NullCompositionLayer.swift +28 -0
  125. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/PreCompositionLayer.swift +137 -0
  126. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/ShapeCompositionLayer.swift +60 -0
  127. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/SolidCompositionLayer.swift +57 -0
  128. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/TextCompositionLayer.swift +247 -0
  129. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift +321 -0
  130. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/CachedImageProvider.swift +56 -0
  131. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/CompositionLayersInitializer.swift +103 -0
  132. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift +424 -0
  133. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/InvertedMatteLayer.swift +55 -0
  134. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerFontProvider.swift +39 -0
  135. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerImageProvider.swift +52 -0
  136. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerTextProvider.swift +38 -0
  137. package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerTransformNode.swift +149 -0
  138. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Extensions/ItemsExtension.swift +146 -0
  139. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/NodeProperty.swift +62 -0
  140. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/AnyNodeProperty.swift +53 -0
  141. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/AnyValueContainer.swift +26 -0
  142. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/KeypathSearchable.swift +23 -0
  143. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/NodePropertyMap.swift +43 -0
  144. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/ValueContainer.swift +47 -0
  145. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/ValueProviders/GroupInterpolator.swift +39 -0
  146. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/ValueProviders/SingleValueProvider.swift +43 -0
  147. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/LayerEffectNodes/DropShadowNode.swift +102 -0
  148. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/LayerEffectNodes/LayerEffectNode.swift +25 -0
  149. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/ModifierNodes/RoundedCornersNode.swift +85 -0
  150. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +281 -0
  151. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/GroupOutputNode.swift +74 -0
  152. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/PassThroughOutputNode.swift +47 -0
  153. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/PathOutputNode.swift +89 -0
  154. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/FillRenderer.swift +69 -0
  155. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift +253 -0
  156. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +64 -0
  157. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift +158 -0
  158. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +165 -0
  159. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +143 -0
  160. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +173 -0
  161. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +238 -0
  162. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/ShapeNode.swift +73 -0
  163. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +224 -0
  164. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +162 -0
  165. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/FillNode.swift +88 -0
  166. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/GradientFillNode.swift +103 -0
  167. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/GradientStrokeNode.swift +149 -0
  168. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +179 -0
  169. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/Text/TextAnimatorNode.swift +345 -0
  170. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Protocols/AnimatorNode.swift +197 -0
  171. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Protocols/PathNode.swift +20 -0
  172. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Protocols/RenderNode.swift +60 -0
  173. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +78 -0
  174. package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +98 -0
  175. package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/Asset.swift +51 -0
  176. package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/AssetLibrary.swift +75 -0
  177. package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/ImageAsset.swift +141 -0
  178. package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/PrecompAsset.swift +47 -0
  179. package/platforms/macos/src/vendor/Lottie/Private/Model/DictionaryInitializable.swift +73 -0
  180. package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieAnimation.swift +57 -0
  181. package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieImageProvider.swift +89 -0
  182. package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieManifest.swift +42 -0
  183. package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieUtils.swift +71 -0
  184. package/platforms/macos/src/vendor/Lottie/Private/Model/Extensions/Bundle.swift +58 -0
  185. package/platforms/macos/src/vendor/Lottie/Private/Model/Extensions/KeyedDecodingContainerExtensions.swift +71 -0
  186. package/platforms/macos/src/vendor/Lottie/Private/Model/Keyframes/KeyframeData.swift +111 -0
  187. package/platforms/macos/src/vendor/Lottie/Private/Model/Keyframes/KeyframeGroup.swift +265 -0
  188. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/DropShadowEffect.swift +52 -0
  189. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/EffectValues/ColorEffectValue.swift +45 -0
  190. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/EffectValues/EffectValue.swift +98 -0
  191. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/EffectValues/Vector1DEffectValue.swift +45 -0
  192. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/LayerEffect.swift +103 -0
  193. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerStyles/DropShadowStyle.swift +79 -0
  194. package/platforms/macos/src/vendor/Lottie/Private/Model/LayerStyles/LayerStyle.swift +85 -0
  195. package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/ImageLayerModel.swift +49 -0
  196. package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/LayerModel.swift +266 -0
  197. package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/PreCompLayerModel.swift +74 -0
  198. package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/ShapeLayerModel.swift +50 -0
  199. package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/SolidLayerModel.swift +63 -0
  200. package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/TextLayerModel.swift +65 -0
  201. package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/DashPattern.swift +42 -0
  202. package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/Marker.swift +35 -0
  203. package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/Mask.swift +80 -0
  204. package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/Transform.swift +261 -0
  205. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Ellipse.swift +79 -0
  206. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Fill.swift +79 -0
  207. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/GradientFill.swift +142 -0
  208. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/GradientStroke.swift +244 -0
  209. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Group.swift +55 -0
  210. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Merge.swift +63 -0
  211. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Rectangle.swift +79 -0
  212. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Repeater.swift +181 -0
  213. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/RoundedCorners.swift +53 -0
  214. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Shape.swift +63 -0
  215. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/ShapeItem.swift +171 -0
  216. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/ShapeTransform.swift +202 -0
  217. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Star.swift +136 -0
  218. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Stroke.swift +144 -0
  219. package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Trim.swift +90 -0
  220. package/platforms/macos/src/vendor/Lottie/Private/Model/Text/Font.swift +67 -0
  221. package/platforms/macos/src/vendor/Lottie/Private/Model/Text/Glyph.swift +94 -0
  222. package/platforms/macos/src/vendor/Lottie/Private/Model/Text/TextAnimator.swift +240 -0
  223. package/platforms/macos/src/vendor/Lottie/Private/Model/Text/TextDocument.swift +142 -0
  224. package/platforms/macos/src/vendor/Lottie/Private/RootAnimationLayer.swift +54 -0
  225. package/platforms/macos/src/vendor/Lottie/Private/Utility/Debugging/AnimatorNodeDebugging.swift +23 -0
  226. package/platforms/macos/src/vendor/Lottie/Private/Utility/Debugging/LayerDebugging.swift +231 -0
  227. package/platforms/macos/src/vendor/Lottie/Private/Utility/Debugging/TestHelpers.swift +10 -0
  228. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/AnimationKeypathExtension.swift +303 -0
  229. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/BlendMode+Filter.swift +31 -0
  230. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/CGColor+RGB.swift +45 -0
  231. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/CGFloatExtensions.swift +152 -0
  232. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/DataExtension.swift +33 -0
  233. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/MathKit.swift +454 -0
  234. package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/StringExtensions.swift +44 -0
  235. package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/AnimationContext.swift +95 -0
  236. package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/AnyEquatable.swift +23 -0
  237. package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/Binding+Map.swift +19 -0
  238. package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/View+ValueChanged.swift +35 -0
  239. package/platforms/macos/src/vendor/Lottie/Private/Utility/Interpolatable/InterpolatableExtensions.swift +143 -0
  240. package/platforms/macos/src/vendor/Lottie/Private/Utility/Interpolatable/KeyframeExtensions.swift +47 -0
  241. package/platforms/macos/src/vendor/Lottie/Private/Utility/Interpolatable/KeyframeInterpolator.swift +250 -0
  242. package/platforms/macos/src/vendor/Lottie/Private/Utility/LottieAnimationSource.swift +51 -0
  243. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/BezierPath.swift +509 -0
  244. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/BezierPathRoundExtension.swift +163 -0
  245. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/CGPointExtension.swift +35 -0
  246. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/ColorExtension.swift +101 -0
  247. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/CompoundBezierPath.swift +169 -0
  248. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/CurveVertex.swift +190 -0
  249. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/PathElement.swift +78 -0
  250. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/UnitBezier.swift +119 -0
  251. package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/VectorsExtensions.swift +368 -0
  252. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimation.swift +179 -0
  253. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationHelpers.swift +317 -0
  254. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationLayer.swift +1582 -0
  255. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationView.swift +1090 -0
  256. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationViewInitializers.swift +226 -0
  257. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottiePlaybackMode.swift +266 -0
  258. package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieView.swift +643 -0
  259. package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/AnimationCacheProvider.swift +21 -0
  260. package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/DefaultAnimationCache.swift +67 -0
  261. package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/LRUAnimationCache.swift +11 -0
  262. package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/LottieAnimationCache.swift +15 -0
  263. package/platforms/macos/src/vendor/Lottie/Public/Configuration/DecodingStrategy.swift +15 -0
  264. package/platforms/macos/src/vendor/Lottie/Public/Configuration/LottieConfiguration.swift +54 -0
  265. package/platforms/macos/src/vendor/Lottie/Public/Configuration/LottieURLSession.swift +31 -0
  266. package/platforms/macos/src/vendor/Lottie/Public/Configuration/ReducedMotionOption.swift +128 -0
  267. package/platforms/macos/src/vendor/Lottie/Public/Configuration/RenderingEngineOption.swift +117 -0
  268. package/platforms/macos/src/vendor/Lottie/Public/Controls/AnimatedButton.swift +128 -0
  269. package/platforms/macos/src/vendor/Lottie/Public/Controls/AnimatedControl.swift +248 -0
  270. package/platforms/macos/src/vendor/Lottie/Public/Controls/AnimatedSwitch.swift +271 -0
  271. package/platforms/macos/src/vendor/Lottie/Public/Controls/LottieButton.swift +119 -0
  272. package/platforms/macos/src/vendor/Lottie/Public/Controls/LottieSwitch.swift +144 -0
  273. package/platforms/macos/src/vendor/Lottie/Public/Controls/LottieViewType.swift +79 -0
  274. package/platforms/macos/src/vendor/Lottie/Public/DotLottie/Cache/DotLottieCache.swift +66 -0
  275. package/platforms/macos/src/vendor/Lottie/Public/DotLottie/Cache/DotLottieCacheProvider.swift +21 -0
  276. package/platforms/macos/src/vendor/Lottie/Public/DotLottie/DotLottieConfiguration.swift +72 -0
  277. package/platforms/macos/src/vendor/Lottie/Public/DotLottie/DotLottieFile.swift +186 -0
  278. package/platforms/macos/src/vendor/Lottie/Public/DotLottie/DotLottieFileHelpers.swift +386 -0
  279. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/AnimationKeypath.swift +57 -0
  280. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/AnyValueProvider.swift +132 -0
  281. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/ColorValueProvider.swift +96 -0
  282. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/FloatValueProvider.swift +81 -0
  283. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +138 -0
  284. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/PointValueProvider.swift +81 -0
  285. package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/SizeValueProvider.swift +81 -0
  286. package/platforms/macos/src/vendor/Lottie/Public/FontProvider/AnimationFontProvider.swift +41 -0
  287. package/platforms/macos/src/vendor/Lottie/Public/ImageProvider/AnimationImageProvider.swift +43 -0
  288. package/platforms/macos/src/vendor/Lottie/Public/Keyframes/Interpolatable.swift +285 -0
  289. package/platforms/macos/src/vendor/Lottie/Public/Keyframes/Keyframe.swift +98 -0
  290. package/platforms/macos/src/vendor/Lottie/Public/Logging/LottieLogger.swift +138 -0
  291. package/platforms/macos/src/vendor/Lottie/Public/Primitives/AnimationTime.swift +15 -0
  292. package/platforms/macos/src/vendor/Lottie/Public/Primitives/LottieColor.swift +43 -0
  293. package/platforms/macos/src/vendor/Lottie/Public/Primitives/Vectors.swift +36 -0
  294. package/platforms/macos/src/vendor/Lottie/Public/TextProvider/AnimationTextProvider.swift +135 -0
  295. package/platforms/macos/src/vendor/Lottie/Public/iOS/AnimationSubview.swift +19 -0
  296. package/platforms/macos/src/vendor/Lottie/Public/iOS/BundleImageProvider.swift +98 -0
  297. package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleAnimationKeypath.swift +33 -0
  298. package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleAnimationView.swift +567 -0
  299. package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleFontProvider.swift +41 -0
  300. package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleImageProvider.swift +43 -0
  301. package/platforms/macos/src/vendor/Lottie/Public/iOS/FilepathImageProvider.swift +78 -0
  302. package/platforms/macos/src/vendor/Lottie/Public/iOS/LottieAnimationViewBase.swift +85 -0
  303. package/platforms/macos/src/vendor/Lottie/Public/iOS/UIColorExtension.swift +23 -0
  304. package/platforms/macos/src/vendor/Lottie/Public/macOS/AnimationSubview.macOS.swift +19 -0
  305. package/platforms/macos/src/vendor/Lottie/Public/macOS/BundleImageProvider.macOS.swift +90 -0
  306. package/platforms/macos/src/vendor/Lottie/Public/macOS/FilepathImageProvider.macOS.swift +86 -0
  307. package/platforms/macos/src/vendor/Lottie/Public/macOS/LottieAnimationViewBase.macOS.swift +102 -0
  308. package/src/Lottie.macos.tsrx +129 -0
  309. package/src/Lottie.tsrx +6 -4
  310. package/src/Lottie.web.tsrx +28 -11
  311. package/src/index.macos.ts +2 -0
  312. package/src/props.ts +6 -1
  313. package/types/generated/props.d.ts +5 -1
@@ -0,0 +1,567 @@
1
+ //
2
+ // CompatibleAnimationView.swift
3
+ // Lottie_iOS
4
+ //
5
+ // Created by Tyler Hedrick on 3/6/19.
6
+ //
7
+
8
+ import Foundation
9
+ #if canImport(UIKit)
10
+ import UIKit
11
+
12
+ /// An Objective-C compatible wrapper around Lottie's Animation class.
13
+ /// Use in tandem with CompatibleAnimationView when using Lottie in Objective-C
14
+ @objc
15
+ public final class CompatibleAnimation: NSObject {
16
+
17
+ // MARK: Lifecycle
18
+
19
+ @objc
20
+ public init(
21
+ name: String,
22
+ subdirectory: String? = nil,
23
+ bundle: Bundle = Bundle.main
24
+ ) {
25
+ self.name = name
26
+ self.subdirectory = subdirectory
27
+ self.bundle = bundle
28
+ super.init()
29
+ }
30
+
31
+ // MARK: Internal
32
+
33
+ var animation: LottieAnimation? {
34
+ LottieAnimation.named(name, bundle: bundle, subdirectory: subdirectory)
35
+ }
36
+
37
+ @objc
38
+ static func named(_ name: String) -> CompatibleAnimation {
39
+ CompatibleAnimation(name: name)
40
+ }
41
+
42
+ // MARK: Private
43
+
44
+ private let name: String
45
+ private let subdirectory: String?
46
+ private let bundle: Bundle
47
+ }
48
+
49
+ /// An Objective-C compatible wrapper around Lottie's RenderingEngineOption enum. Pass in an option
50
+ /// to the CompatibleAnimationView initializers to configure the rendering engine for the view.
51
+ @objc
52
+ public enum CompatibleRenderingEngineOption: Int {
53
+ /// Uses the rendering engine specified in LottieConfiguration.shared.
54
+ case shared
55
+
56
+ /// Uses the library default rendering engine, coreAnimation.
57
+ case defaultEngine
58
+
59
+ /// Optimizes rendering performance by using the Core Animation rendering engine for animations it
60
+ /// can render while falling back to the main thread renderer for all other animations.
61
+ case automatic
62
+
63
+ /// Only renders animations using the main thread rendering engine.
64
+ case mainThread
65
+
66
+ /// Only renders animations using the Core Animation rendering engine. Those animations that use
67
+ /// features not yet supported on this renderer will not be rendered.
68
+ case coreAnimation
69
+
70
+ // MARK: Public
71
+
72
+ /// Converts a CompatibleRenderingEngineOption to the corresponding LottieConfiguration for
73
+ /// internal rendering engine configuration.
74
+ public static func generateLottieConfiguration(
75
+ _ configuration: CompatibleRenderingEngineOption
76
+ ) -> LottieConfiguration {
77
+ switch configuration {
78
+ case .shared:
79
+ LottieConfiguration.shared
80
+ case .defaultEngine:
81
+ LottieConfiguration(renderingEngine: .coreAnimation)
82
+ case .automatic:
83
+ LottieConfiguration(renderingEngine: .automatic)
84
+ case .mainThread:
85
+ LottieConfiguration(renderingEngine: .mainThread)
86
+ case .coreAnimation:
87
+ LottieConfiguration(renderingEngine: .coreAnimation)
88
+ }
89
+ }
90
+ }
91
+
92
+ /// An Objective-C compatible version of `LottieBackgroundBehavior`.
93
+ @objc
94
+ public enum CompatibleBackgroundBehavior: Int {
95
+ /// Stop the animation and reset it to the beginning of its current play time. The completion block is called.
96
+ case stop
97
+
98
+ /// Pause the animation in its current state. The completion block is called.
99
+ case pause
100
+
101
+ /// Pause the animation and restart it when the application moves to the foreground.
102
+ /// The completion block is stored and called when the animation completes.
103
+ /// - This is the default when using the Main Thread rendering engine.
104
+ case pauseAndRestore
105
+
106
+ /// Stops the animation and sets it to the end of its current play time. The completion block is called.
107
+ case forceFinish
108
+
109
+ /// The animation continues playing in the background.
110
+ /// - This is the default when using the Core Animation rendering engine.
111
+ /// Playing an animation using the Core Animation engine doesn't come with any CPU overhead,
112
+ /// so using `.continuePlaying` avoids the need to stop and then resume the animation
113
+ /// (which does come with some CPU overhead).
114
+ /// - This mode should not be used with the Main Thread rendering engine.
115
+ case continuePlaying
116
+ }
117
+
118
+ /// An Objective-C compatible wrapper around Lottie's LottieAnimationView.
119
+ @objc
120
+ public final class CompatibleAnimationView: UIView {
121
+
122
+ // MARK: Lifecycle
123
+
124
+ /// Initializes a compatible AnimationView with a given compatible animation. Defaults to using
125
+ /// the rendering engine specified in LottieConfiguration.shared.
126
+ @objc
127
+ public convenience init(compatibleAnimation: CompatibleAnimation) {
128
+ self.init(compatibleAnimation: compatibleAnimation, compatibleRenderingEngineOption: .shared)
129
+ }
130
+
131
+ /// Initializes a compatible AnimationView with a given compatible animation and rendering engine
132
+ /// configuration.
133
+ @objc
134
+ public init(
135
+ compatibleAnimation: CompatibleAnimation,
136
+ compatibleRenderingEngineOption: CompatibleRenderingEngineOption
137
+ ) {
138
+ animationView = LottieAnimationView(
139
+ animation: compatibleAnimation.animation,
140
+ configuration: CompatibleRenderingEngineOption.generateLottieConfiguration(compatibleRenderingEngineOption)
141
+ )
142
+ self.compatibleAnimation = compatibleAnimation
143
+ super.init(frame: .zero)
144
+ commonInit()
145
+ }
146
+
147
+ /// Initializes a compatible AnimationView with the resources asynchronously loaded from a given
148
+ /// URL. Defaults to using the rendering engine specified in LottieConfiguration.shared.
149
+ @objc
150
+ public convenience init(url: URL) {
151
+ self.init(url: url, compatibleRenderingEngineOption: .shared)
152
+ }
153
+
154
+ /// Initializes a compatible AnimationView with the resources asynchronously loaded from a given
155
+ /// URL using the given rendering engine configuration.
156
+ @objc
157
+ public init(url: URL, compatibleRenderingEngineOption: CompatibleRenderingEngineOption) {
158
+ animationView = LottieAnimationView(
159
+ url: url,
160
+ closure: { _ in },
161
+ configuration: CompatibleRenderingEngineOption.generateLottieConfiguration(compatibleRenderingEngineOption)
162
+ )
163
+ super.init(frame: .zero)
164
+ commonInit()
165
+ }
166
+
167
+ /// Initializes a compatible AnimationView from a given Data object specifying the Lottie
168
+ /// animation. Defaults to using the rendering engine specified in LottieConfiguration.shared.
169
+ @objc
170
+ public convenience init(data: Data) {
171
+ self.init(data: data, compatibleRenderingEngineOption: .shared)
172
+ }
173
+
174
+ /// Initializes a compatible AnimationView from a given Data object specifying the Lottie
175
+ /// animation using the given rendering engine configuration.
176
+ @objc
177
+ public init(data: Data, compatibleRenderingEngineOption: CompatibleRenderingEngineOption) {
178
+ if let animation = try? LottieAnimation.from(data: data) {
179
+ animationView = LottieAnimationView(
180
+ animation: animation,
181
+ configuration: CompatibleRenderingEngineOption.generateLottieConfiguration(compatibleRenderingEngineOption)
182
+ )
183
+ } else {
184
+ animationView = LottieAnimationView(
185
+ configuration: CompatibleRenderingEngineOption.generateLottieConfiguration(compatibleRenderingEngineOption)
186
+ )
187
+ }
188
+ super.init(frame: .zero)
189
+ commonInit()
190
+ }
191
+
192
+ @objc
193
+ public override init(frame: CGRect) {
194
+ animationView = LottieAnimationView()
195
+ super.init(frame: frame)
196
+ commonInit()
197
+ }
198
+
199
+ required init?(coder: NSCoder) {
200
+ animationView = LottieAnimationView()
201
+ super.init(coder: coder)
202
+ commonInit()
203
+ }
204
+
205
+ // MARK: Public
206
+
207
+ @objc public var compatibleAnimation: CompatibleAnimation? {
208
+ didSet {
209
+ animationView.animation = compatibleAnimation?.animation
210
+ }
211
+ }
212
+
213
+ @objc public var loopAnimationCount: CGFloat = 0 {
214
+ didSet {
215
+ animationView.loopMode = loopAnimationCount == -1 ? .loop : .repeat(Float(loopAnimationCount))
216
+ }
217
+ }
218
+
219
+ @objc public var compatibleDictionaryTextProvider: CompatibleDictionaryTextProvider? {
220
+ didSet {
221
+ animationView.textProvider = compatibleDictionaryTextProvider?.textProvider ?? DefaultTextProvider()
222
+ }
223
+ }
224
+
225
+ @objc public var compatibleAnimationFontProvider: CompatibleAnimationFontProvider? {
226
+ didSet {
227
+ animationView.fontProvider =
228
+ compatibleAnimationFontProvider.map(CompatibleFontProvider.init) ?? DefaultFontProvider()
229
+ }
230
+ }
231
+
232
+ @objc public var compatibleAnimationImageProvider: CompatibleAnimationImageProvider? {
233
+ didSet {
234
+ animationView.imageProvider = compatibleAnimationImageProvider
235
+ .map(CompatibleImageProvider.init)
236
+ ?? BundleImageProvider(bundle: Bundle.main, searchPath: nil)
237
+ }
238
+ }
239
+
240
+ @objc
241
+ public override var contentMode: UIView.ContentMode {
242
+ set { animationView.contentMode = newValue }
243
+ get { animationView.contentMode }
244
+ }
245
+
246
+ @objc
247
+ public var shouldRasterizeWhenIdle: Bool {
248
+ set { animationView.shouldRasterizeWhenIdle = newValue }
249
+ get { animationView.shouldRasterizeWhenIdle }
250
+ }
251
+
252
+ @objc
253
+ public var currentProgress: CGFloat {
254
+ set { animationView.currentProgress = newValue }
255
+ get { animationView.currentProgress }
256
+ }
257
+
258
+ @objc
259
+ public var duration: CGFloat {
260
+ animationView.animation?.duration ?? 0.0
261
+ }
262
+
263
+ @objc
264
+ public var currentTime: TimeInterval {
265
+ set { animationView.currentTime = newValue }
266
+ get { animationView.currentTime }
267
+ }
268
+
269
+ @objc
270
+ public var currentFrame: CGFloat {
271
+ set { animationView.currentFrame = newValue }
272
+ get { animationView.currentFrame }
273
+ }
274
+
275
+ @objc
276
+ public var realtimeAnimationFrame: CGFloat {
277
+ animationView.realtimeAnimationFrame
278
+ }
279
+
280
+ @objc
281
+ public var realtimeAnimationProgress: CGFloat {
282
+ animationView.realtimeAnimationProgress
283
+ }
284
+
285
+ @objc
286
+ public var animationSpeed: CGFloat {
287
+ set { animationView.animationSpeed = newValue }
288
+ get { animationView.animationSpeed }
289
+ }
290
+
291
+ @objc
292
+ public var respectAnimationFrameRate: Bool {
293
+ set { animationView.respectAnimationFrameRate = newValue }
294
+ get { animationView.respectAnimationFrameRate }
295
+ }
296
+
297
+ @objc
298
+ public var isAnimationPlaying: Bool {
299
+ animationView.isAnimationPlaying
300
+ }
301
+
302
+ @objc
303
+ public var backgroundMode: CompatibleBackgroundBehavior {
304
+ get {
305
+ switch animationView.backgroundBehavior {
306
+ case .stop:
307
+ .stop
308
+ case .pause:
309
+ .pause
310
+ case .pauseAndRestore:
311
+ .pauseAndRestore
312
+ case .forceFinish:
313
+ .forceFinish
314
+ case .continuePlaying:
315
+ .continuePlaying
316
+ }
317
+ }
318
+ set {
319
+ switch newValue {
320
+ case .stop:
321
+ animationView.backgroundBehavior = .stop
322
+ case .pause:
323
+ animationView.backgroundBehavior = .pause
324
+ case .pauseAndRestore:
325
+ animationView.backgroundBehavior = .pauseAndRestore
326
+ case .forceFinish:
327
+ animationView.backgroundBehavior = .forceFinish
328
+ case .continuePlaying:
329
+ animationView.backgroundBehavior = .continuePlaying
330
+ }
331
+ }
332
+ }
333
+
334
+ @objc
335
+ public func play() {
336
+ play(completion: nil)
337
+ }
338
+
339
+ @objc
340
+ public func play(completion: ((Bool) -> Void)?) {
341
+ animationView.play(completion: completion)
342
+ }
343
+
344
+ /// Note: When calling this code from Objective-C, the method signature is
345
+ /// playFromProgress:toProgress:completion which drops the standard "With" naming convention.
346
+ @objc
347
+ public func play(
348
+ fromProgress: CGFloat,
349
+ toProgress: CGFloat,
350
+ completion: ((Bool) -> Void)? = nil
351
+ ) {
352
+ animationView.play(
353
+ fromProgress: fromProgress,
354
+ toProgress: toProgress,
355
+ loopMode: nil,
356
+ completion: completion
357
+ )
358
+ }
359
+
360
+ /// Note: When calling this code from Objective-C, the method signature is
361
+ /// playFromFrame:toFrame:completion which drops the standard "With" naming convention.
362
+ @objc
363
+ public func play(
364
+ fromFrame: CGFloat,
365
+ toFrame: CGFloat,
366
+ completion: ((Bool) -> Void)? = nil
367
+ ) {
368
+ animationView.play(
369
+ fromFrame: fromFrame,
370
+ toFrame: toFrame,
371
+ loopMode: nil,
372
+ completion: completion
373
+ )
374
+ }
375
+
376
+ /// Note: When calling this code from Objective-C, the method signature is
377
+ /// playFromMarker:toMarker:completion which drops the standard "With" naming convention.
378
+ @objc
379
+ public func play(
380
+ fromMarker: String,
381
+ toMarker: String,
382
+ completion: ((Bool) -> Void)? = nil
383
+ ) {
384
+ animationView.play(
385
+ fromMarker: fromMarker,
386
+ toMarker: toMarker,
387
+ completion: completion
388
+ )
389
+ }
390
+
391
+ @objc
392
+ public func play(
393
+ marker: String,
394
+ completion: ((Bool) -> Void)? = nil
395
+ ) {
396
+ animationView.play(
397
+ marker: marker,
398
+ completion: completion
399
+ )
400
+ }
401
+
402
+ @objc
403
+ public func stop() {
404
+ animationView.stop()
405
+ }
406
+
407
+ @objc
408
+ public func pause() {
409
+ animationView.pause()
410
+ }
411
+
412
+ @objc
413
+ public func reloadImages() {
414
+ animationView.reloadImages()
415
+ }
416
+
417
+ @objc
418
+ public func forceDisplayUpdate() {
419
+ animationView.forceDisplayUpdate()
420
+ }
421
+
422
+ @objc
423
+ public func getValue(
424
+ for keypath: CompatibleAnimationKeypath,
425
+ atFrame: CGFloat
426
+ ) -> Any? {
427
+ animationView.getValue(
428
+ for: keypath.animationKeypath,
429
+ atFrame: atFrame
430
+ )
431
+ }
432
+
433
+ @objc
434
+ public func logHierarchyKeypaths() {
435
+ animationView.logHierarchyKeypaths()
436
+ }
437
+
438
+ @objc
439
+ public func setColorValue(_ color: UIColor, forKeypath keypath: CompatibleAnimationKeypath) {
440
+ var red: CGFloat = 0
441
+ var green: CGFloat = 0
442
+ var blue: CGFloat = 0
443
+ var alpha: CGFloat = 0
444
+
445
+ let colorspace = LottieConfiguration.shared.colorSpace
446
+
447
+ let convertedColor = color.cgColor.converted(to: colorspace, intent: .defaultIntent, options: nil)
448
+
449
+ if let components = convertedColor?.components, components.count == 4 {
450
+ red = components[0]
451
+ green = components[1]
452
+ blue = components[2]
453
+ alpha = components[3]
454
+ } else {
455
+ color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
456
+ }
457
+
458
+ let valueProvider = ColorValueProvider(LottieColor(r: Double(red), g: Double(green), b: Double(blue), a: Double(alpha)))
459
+ animationView.setValueProvider(valueProvider, keypath: keypath.animationKeypath)
460
+ }
461
+
462
+ @objc
463
+ public func getColorValue(for keypath: CompatibleAnimationKeypath, atFrame: CGFloat) -> UIColor? {
464
+ let value = animationView.getValue(for: keypath.animationKeypath, atFrame: atFrame)
465
+ guard let colorValue = value as? LottieColor else {
466
+ return nil
467
+ }
468
+
469
+ return UIColor(
470
+ red: CGFloat(colorValue.r),
471
+ green: CGFloat(colorValue.g),
472
+ blue: CGFloat(colorValue.b),
473
+ alpha: CGFloat(colorValue.a)
474
+ )
475
+ }
476
+
477
+ @objc
478
+ public func addSubview(
479
+ _ subview: AnimationSubview,
480
+ forLayerAt keypath: CompatibleAnimationKeypath
481
+ ) {
482
+ animationView.addSubview(
483
+ subview,
484
+ forLayerAt: keypath.animationKeypath
485
+ )
486
+ }
487
+
488
+ @objc
489
+ public func convert(
490
+ rect: CGRect,
491
+ toLayerAt keypath: CompatibleAnimationKeypath?
492
+ ) -> CGRect {
493
+ animationView.convert(
494
+ rect,
495
+ toLayerAt: keypath?.animationKeypath
496
+ ) ?? .zero
497
+ }
498
+
499
+ @objc
500
+ public func convert(
501
+ point: CGPoint,
502
+ toLayerAt keypath: CompatibleAnimationKeypath?
503
+ ) -> CGPoint {
504
+ animationView.convert(
505
+ point,
506
+ toLayerAt: keypath?.animationKeypath
507
+ ) ?? .zero
508
+ }
509
+
510
+ @objc
511
+ public func progressTime(forMarker named: String) -> CGFloat {
512
+ animationView.progressTime(forMarker: named) ?? 0
513
+ }
514
+
515
+ @objc
516
+ public func frameTime(forMarker named: String) -> CGFloat {
517
+ animationView.frameTime(forMarker: named) ?? 0
518
+ }
519
+
520
+ @objc
521
+ public func durationFrameTime(forMarker named: String) -> CGFloat {
522
+ animationView.durationFrameTime(forMarker: named) ?? 0
523
+ }
524
+
525
+ // MARK: Private
526
+
527
+ private let animationView: LottieAnimationView
528
+
529
+ private func commonInit() {
530
+ setUpViews()
531
+ }
532
+
533
+ private func setUpViews() {
534
+ animationView.translatesAutoresizingMaskIntoConstraints = false
535
+ addSubview(animationView)
536
+ animationView.topAnchor.constraint(equalTo: topAnchor).isActive = true
537
+ animationView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
538
+ animationView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
539
+ animationView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
540
+ }
541
+ }
542
+
543
+ /// An Objective-C compatible wrapper around Lottie's DictionaryTextProvider.
544
+ /// Use in tandem with CompatibleAnimationView to supply text to LottieAnimationView
545
+ /// when using Lottie in Objective-C.
546
+ @objc
547
+ public final class CompatibleDictionaryTextProvider: NSObject {
548
+
549
+ // MARK: Lifecycle
550
+
551
+ @objc
552
+ public init(values: [String: String]) {
553
+ self.values = values
554
+ super.init()
555
+ }
556
+
557
+ // MARK: Internal
558
+
559
+ var textProvider: AnimationKeypathTextProvider? {
560
+ DictionaryTextProvider(values)
561
+ }
562
+
563
+ // MARK: Private
564
+
565
+ private let values: [String: String]
566
+ }
567
+ #endif
@@ -0,0 +1,41 @@
1
+ //
2
+ // CompatibleFontProvider.swift
3
+ // Lottie_iOS
4
+ //
5
+
6
+ import CoreText
7
+ import Foundation
8
+
9
+ #if canImport(UIKit)
10
+ import UIKit
11
+ /// An Objective-C compatible protocol for providing fonts to Lottie.
12
+ @objc
13
+ public protocol CompatibleAnimationFontProvider: NSObjectProtocol {
14
+ @objc
15
+ func fontFor(family: String, size: CGFloat) -> CTFont?
16
+ }
17
+
18
+ /// An internal wrapper that converts a `CompatibleAnimationFontProvider` to a Lottie `AnimationFontProvider`.
19
+ final class CompatibleFontProvider: AnimationFontProvider {
20
+
21
+ // MARK: Lifecycle
22
+
23
+ init(fontProvider: CompatibleAnimationFontProvider) {
24
+ self.fontProvider = fontProvider
25
+ }
26
+
27
+ // MARK: Internal
28
+
29
+ let fontProvider: CompatibleAnimationFontProvider
30
+
31
+ func fontFor(family: String, size: CGFloat) -> CTFont? {
32
+ fontProvider.fontFor(family: family, size: size)
33
+ }
34
+ }
35
+
36
+ extension CompatibleFontProvider: Equatable {
37
+ static func ==(lhs: CompatibleFontProvider, rhs: CompatibleFontProvider) -> Bool {
38
+ lhs.fontProvider.isEqual(rhs.fontProvider)
39
+ }
40
+ }
41
+ #endif
@@ -0,0 +1,43 @@
1
+ //
2
+ // CompatibleImageProvider.swift
3
+ // Lottie_iOS
4
+ //
5
+
6
+ import CoreGraphics
7
+ import Foundation
8
+
9
+ #if canImport(UIKit)
10
+ import UIKit
11
+
12
+ /// An Objective-C compatible protocol for providing images to Lottie.
13
+ @objc
14
+ public protocol CompatibleAnimationImageProvider: NSObjectProtocol {
15
+ /// The image to display for the given asset name defined in the `LottieAnimation` JSON file.
16
+ @objc
17
+ func imageForAsset(name: String) -> CGImage?
18
+ }
19
+
20
+ /// An internal wrapper that converts a `CompatibleAnimationImageProvider` to a Lottie `AnimationImageProvider`.
21
+ final class CompatibleImageProvider: AnimationImageProvider {
22
+
23
+ // MARK: Lifecycle
24
+
25
+ init(imageProvider: CompatibleAnimationImageProvider) {
26
+ self.imageProvider = imageProvider
27
+ }
28
+
29
+ // MARK: Internal
30
+
31
+ let imageProvider: CompatibleAnimationImageProvider
32
+
33
+ func imageForAsset(asset: ImageAsset) -> CGImage? {
34
+ imageProvider.imageForAsset(name: asset.name)
35
+ }
36
+ }
37
+
38
+ extension CompatibleImageProvider: Equatable {
39
+ static func ==(lhs: CompatibleImageProvider, rhs: CompatibleImageProvider) -> Bool {
40
+ lhs.imageProvider.isEqual(rhs.imageProvider)
41
+ }
42
+ }
43
+ #endif