@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,31 @@
1
+ // Created by eric_horacek on 12/1/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - AnyEpoxyModelProperty
5
+
6
+ /// An erased `EpoxyModelProperty`, with the ability to call the `UpdateStrategy` even when the type
7
+ /// has been erased.
8
+ protocol AnyEpoxyModelProperty {
9
+ /// Returns the updated property from updating from given old to new property.
10
+ func update(old: Any, new: Any) -> Any
11
+ }
12
+
13
+ // MARK: - EpoxyModelProperty + AnyEpoxyModelProperty
14
+
15
+ extension EpoxyModelProperty: AnyEpoxyModelProperty {
16
+ func update(old: Any, new: Any) -> Any {
17
+ guard let typedOld = old as? Value else {
18
+ EpoxyLogger.shared.assertionFailure(
19
+ "Expected old to be of type \(Value.self), instead found \(old). This is programmer error."
20
+ )
21
+ return defaultValue()
22
+ }
23
+ guard let typedNew = new as? Value else {
24
+ EpoxyLogger.shared.assertionFailure(
25
+ "Expected new to be of type \(Value.self), instead found \(old). This is programmer error."
26
+ )
27
+ return defaultValue()
28
+ }
29
+ return updateStrategy.update(typedOld, typedNew)
30
+ }
31
+ }
@@ -0,0 +1,39 @@
1
+ // Created by Cal Stephens on 10/15/21.
2
+ // Copyright © 2021 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - ClassReference
5
+
6
+ /// A `Hashable` value wrapper around an `AnyClass` value
7
+ /// - Unlike `ObjectIdentifier(class)`, `ClassReference(class)`
8
+ /// preserves the `AnyClass` value and is more human-readable.
9
+ struct ClassReference {
10
+ init(_ class: AnyClass) {
11
+ self.class = `class`
12
+ }
13
+
14
+ let `class`: AnyClass
15
+ }
16
+
17
+ // MARK: Equatable
18
+
19
+ extension ClassReference: Equatable {
20
+ static func ==(_ lhs: Self, _ rhs: Self) -> Bool {
21
+ ObjectIdentifier(lhs.class) == ObjectIdentifier(rhs.class)
22
+ }
23
+ }
24
+
25
+ // MARK: Hashable
26
+
27
+ extension ClassReference: Hashable {
28
+ func hash(into hasher: inout Hasher) {
29
+ hasher.combine(ObjectIdentifier(`class`))
30
+ }
31
+ }
32
+
33
+ // MARK: CustomStringConvertible
34
+
35
+ extension ClassReference: CustomStringConvertible {
36
+ var description: String {
37
+ String(describing: `class`)
38
+ }
39
+ }
@@ -0,0 +1,10 @@
1
+ // Created by eric_horacek on 12/16/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ /// The capability of providing a flag indicating whether an operation should be animated.
5
+ ///
6
+ /// Typically conformed to by the `CallbackContext` of a `CallbackContextEpoxyModeled`.
7
+ protocol AnimatedProviding {
8
+ /// Whether this operation should be animated.
9
+ var animated: Bool { get }
10
+ }
@@ -0,0 +1,58 @@
1
+ // Created by eric_horacek on 12/1/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - DataIDProviding
5
+
6
+ /// The capability of providing a stable data identifier with an erased type.
7
+ ///
8
+ /// While it has similar semantics, this type cannot inherit from `Identifiable` as this would give
9
+ /// it an associated type, which would cause the `keyPath` used in its `EpoxyModelProperty` to not
10
+ /// be stable across types if written as `\Self.dataID` since the `KeyPath` `Root` would be
11
+ /// different for each type.
12
+ ///
13
+ /// - SeeAlso: `Identifiable`.
14
+ protocol DataIDProviding {
15
+ /// A stable identifier that uniquely identifies this instance, with its typed erased.
16
+ ///
17
+ /// Defaults to `DefaultDataID.noneProvided` if no data ID is provided.
18
+ var dataID: AnyHashable { get }
19
+ }
20
+
21
+ // MARK: - EpoxyModeled
22
+
23
+ extension EpoxyModeled where Self: DataIDProviding {
24
+
25
+ // MARK: Internal
26
+
27
+ /// A stable identifier that uniquely identifies this model, with its typed erased.
28
+ var dataID: AnyHashable {
29
+ get { self[dataIDProperty] }
30
+ set { self[dataIDProperty] = newValue }
31
+ }
32
+
33
+ /// Returns a copy of this model with the ID replaced with the provided ID.
34
+ func dataID(_ value: AnyHashable) -> Self {
35
+ copy(updating: dataIDProperty, to: value)
36
+ }
37
+
38
+ // MARK: Private
39
+
40
+ private var dataIDProperty: EpoxyModelProperty<AnyHashable> {
41
+ EpoxyModelProperty(
42
+ keyPath: \DataIDProviding.dataID,
43
+ defaultValue: DefaultDataID.noneProvided,
44
+ updateStrategy: .replace
45
+ )
46
+ }
47
+ }
48
+
49
+ // MARK: - DefaultDataID
50
+
51
+ /// The default data ID when none is provided.
52
+ enum DefaultDataID: Hashable, CustomDebugStringConvertible {
53
+ case noneProvided
54
+
55
+ var debugDescription: String {
56
+ "DefaultDataID.noneProvided"
57
+ }
58
+ }
@@ -0,0 +1,41 @@
1
+ // Created by eric_horacek on 1/6/21.
2
+ // Copyright © 2021 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - DidDisplayProviding
5
+
6
+ /// A sentinel protocol for enabling an `CallbackContextEpoxyModeled` to provide a `didDisplay`
7
+ /// closure property.
8
+ ///
9
+ /// - SeeAlso: `WillDisplayProviding`
10
+ /// - SeeAlso: `DidEndDisplayingProviding`
11
+ protocol DidDisplayProviding { }
12
+
13
+ // MARK: - CallbackContextEpoxyModeled
14
+
15
+ extension CallbackContextEpoxyModeled where Self: DidDisplayProviding {
16
+
17
+ // MARK: Internal
18
+
19
+ /// A closure that's called after a view has been added to the view hierarchy following any
20
+ /// appearance animations.
21
+ typealias DidDisplay = (_ context: CallbackContext) -> Void
22
+
23
+ /// A closure that's called after the view has been added to the view hierarchy following any
24
+ /// appearance animations.
25
+ var didDisplay: DidDisplay? {
26
+ get { self[didDisplayProperty] }
27
+ set { self[didDisplayProperty] = newValue }
28
+ }
29
+
30
+ /// Returns a copy of this model with the given did display closure called after the current did
31
+ /// display closure of this model, if there is one.
32
+ func didDisplay(_ value: DidDisplay?) -> Self {
33
+ copy(updating: didDisplayProperty, to: value)
34
+ }
35
+
36
+ // MARK: Private
37
+
38
+ private var didDisplayProperty: EpoxyModelProperty<DidDisplay?> {
39
+ .init(keyPath: \Self.didDisplay, defaultValue: nil, updateStrategy: .chain())
40
+ }
41
+ }
@@ -0,0 +1,42 @@
1
+ // Created by eric_horacek on 12/15/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - DidEndDisplayingProviding
5
+
6
+ /// A sentinel protocol for enabling an `CallbackContextEpoxyModeled` to provide a
7
+ /// `didEndDisplaying` closure property.
8
+ protocol DidEndDisplayingProviding { }
9
+
10
+ // MARK: - CallbackContextEpoxyModeled
11
+
12
+ extension CallbackContextEpoxyModeled where Self: DidEndDisplayingProviding {
13
+
14
+ // MARK: Internal
15
+
16
+ /// A closure that's called when a view is no longer displayed following any disappearance
17
+ /// animations and when it has been removed from the view hierarchy.
18
+ typealias DidEndDisplaying = (_ context: CallbackContext) -> Void
19
+
20
+ /// A closure that's called when the view is no longer displayed following any disappearance
21
+ /// animations and when it has been removed from the view hierarchy.
22
+ var didEndDisplaying: DidEndDisplaying? {
23
+ get { self[didEndDisplayingProperty] }
24
+ set { self[didEndDisplayingProperty] = newValue }
25
+ }
26
+
27
+ /// Returns a copy of this model with the given did end displaying closure called after the
28
+ /// current did end displaying closure of this model, if there is one.
29
+ func didEndDisplaying(_ value: DidEndDisplaying?) -> Self {
30
+ copy(updating: didEndDisplayingProperty, to: value)
31
+ }
32
+
33
+ // MARK: Private
34
+
35
+ private var didEndDisplayingProperty: EpoxyModelProperty<DidEndDisplaying?> {
36
+ .init(
37
+ keyPath: \Self.didEndDisplaying,
38
+ defaultValue: nil,
39
+ updateStrategy: .chain()
40
+ )
41
+ }
42
+ }
@@ -0,0 +1,36 @@
1
+ // Created by eric_horacek on 12/2/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - DidSelectProviding
5
+
6
+ /// A sentinel protocol for enabling an `CallbackContextEpoxyModeled` to provide a `didSelect`
7
+ /// closure property.
8
+ protocol DidSelectProviding { }
9
+
10
+ // MARK: - CallbackContextEpoxyModeled
11
+
12
+ extension CallbackContextEpoxyModeled where Self: DidSelectProviding {
13
+
14
+ // MARK: Internal
15
+
16
+ /// A closure that's called to handle this model's view being selected.
17
+ typealias DidSelect = (CallbackContext) -> Void
18
+
19
+ /// A closure that's called to handle this model's view being selected.
20
+ var didSelect: DidSelect? {
21
+ get { self[didSelectProperty] }
22
+ set { self[didSelectProperty] = newValue }
23
+ }
24
+
25
+ /// Returns a copy of this model with the given did select closure called after the current did
26
+ /// select closure of this model, if there is one.
27
+ func didSelect(_ value: DidSelect?) -> Self {
28
+ copy(updating: didSelectProperty, to: value)
29
+ }
30
+
31
+ // MARK: Private
32
+
33
+ private var didSelectProperty: EpoxyModelProperty<DidSelect?> {
34
+ .init(keyPath: \Self.didSelect, defaultValue: nil, updateStrategy: .chain())
35
+ }
36
+ }
@@ -0,0 +1,49 @@
1
+ // Created by eric_horacek on 12/2/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - ErasedContentProviding
5
+
6
+ /// The capability of providing an type-erased `Equatable` content instance.
7
+ protocol ErasedContentProviding {
8
+ /// The type-erased content instance of this model, else `nil` if there is no content.
9
+ ///
10
+ /// If there was an `AnyEquatable` type, we could store this property using it. Instead we need
11
+ /// need to store `isErasedContentEqual` to determine equality.
12
+ var erasedContent: Any? { get }
13
+
14
+ /// A closure that can be called to determine whether the given `model`'s `erasedContent` is equal
15
+ /// to this model's `erasedContent`, else `nil` if there is no content or the content is always
16
+ /// equal.
17
+ var isErasedContentEqual: ((ErasedContentProviding) -> Bool)? { get }
18
+ }
19
+
20
+ // MARK: - EpoxyModeled
21
+
22
+ extension EpoxyModeled where Self: ErasedContentProviding {
23
+
24
+ // MARK: Internal
25
+
26
+ /// The type-erased content instance of this model, else `nil` if there is no content.
27
+ var erasedContent: Any? {
28
+ get { self[contentProperty] }
29
+ set { self[contentProperty] = newValue }
30
+ }
31
+
32
+ /// A closure that can be called to determine whether the given `model`'s `erasedContent` is equal
33
+ /// to this model's `erasedContent`, else `nil` if there is no content or the content is always
34
+ /// equal.
35
+ var isErasedContentEqual: ((ErasedContentProviding) -> Bool)? {
36
+ get { self[isContentEqualProperty] }
37
+ set { self[isContentEqualProperty] = newValue }
38
+ }
39
+
40
+ // MARK: Private
41
+
42
+ private var contentProperty: EpoxyModelProperty<Any?> {
43
+ .init(keyPath: \ErasedContentProviding.erasedContent, defaultValue: nil, updateStrategy: .replace)
44
+ }
45
+
46
+ private var isContentEqualProperty: EpoxyModelProperty<((ErasedContentProviding) -> Bool)?> {
47
+ .init(keyPath: \ErasedContentProviding.isErasedContentEqual, defaultValue: nil, updateStrategy: .replace)
48
+ }
49
+ }
@@ -0,0 +1,61 @@
1
+ // Created by eric_horacek on 12/1/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - MakeViewProviding
5
+
6
+ /// The capability of constructing a `UIView`.
7
+ protocol MakeViewProviding {
8
+ /// The view constructed when the `MakeView` closure is called.
9
+ associatedtype View: ViewType
10
+
11
+ /// A closure that's called to construct an instance of `View`.
12
+ typealias MakeView = () -> View
13
+
14
+ /// A closure that's called to construct an instance of `View`.
15
+ var makeView: MakeView { get }
16
+ }
17
+
18
+ // MARK: - ViewEpoxyModeled
19
+
20
+ extension ViewEpoxyModeled where Self: MakeViewProviding {
21
+
22
+ // MARK: Internal
23
+
24
+ /// A closure that's called to construct an instance of `View` represented by this model.
25
+ var makeView: MakeView {
26
+ get { self[makeViewProperty] }
27
+ set { self[makeViewProperty] = newValue }
28
+ }
29
+
30
+ /// Replaces the default closure to construct the view with the given closure.
31
+ func makeView(_ value: @escaping MakeView) -> Self {
32
+ copy(updating: makeViewProperty, to: value)
33
+ }
34
+
35
+ // MARK: Private
36
+
37
+ private var makeViewProperty: EpoxyModelProperty<MakeView> {
38
+ // If you're getting a `EXC_BAD_INSTRUCTION` crash with this property in your stack trace, you
39
+ // probably either:
40
+ // - Conformed a view to `EpoxyableView` / `StyledView` with a custom initializer that
41
+ // takes parameters, or:
42
+ // - Used the `EpoxyModeled.init(dataID:)` initializer on a view has required initializer
43
+ // parameters.
44
+ // If you have parameters to view initialization, they should either be passed to `init(style:)`
45
+ // or you should provide a `makeView` closure when constructing your view's corresponding model,
46
+ // e.g:
47
+ // ```
48
+ // MyView.itemModel(…)
49
+ // .makeView { MyView(customParameter: …) }
50
+ // .styleID(…)
51
+ // ```
52
+ // Note that with the above approach that you must supply an `styleID` with the same identity as
53
+ // your view parameters to ensure that views with different parameters are not reused in place
54
+ // of one another.
55
+ .init(
56
+ keyPath: \Self.makeView,
57
+ defaultValue: View.init,
58
+ updateStrategy: .replace
59
+ )
60
+ }
61
+ }
@@ -0,0 +1,38 @@
1
+ // Created by eric_horacek on 12/2/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - SetBehaviorsProviding
5
+
6
+ /// A sentinel protocol for enabling an `CallbackContextEpoxyModeled` to provide a `setBehaviors`
7
+ /// closure property.
8
+ protocol SetBehaviorsProviding { }
9
+
10
+ // MARK: - CallbackContextEpoxyModeled
11
+
12
+ extension CallbackContextEpoxyModeled where Self: SetBehaviorsProviding {
13
+
14
+ // MARK: Internal
15
+
16
+ /// A closure that's called to set the content on this model's view with behaviors (e.g. tap handler
17
+ /// closures) whenever this model is updated.
18
+ typealias SetBehaviors = (CallbackContext) -> Void
19
+
20
+ /// A closure that's called to set the content on this model's view with behaviors (e.g. tap handler
21
+ /// closures) whenever this model is updated.
22
+ var setBehaviors: SetBehaviors? {
23
+ get { self[setBehaviorsProperty] }
24
+ set { self[setBehaviorsProperty] = newValue }
25
+ }
26
+
27
+ /// Returns a copy of this model with the set behaviors closure called after the current set
28
+ /// behaviors closure of this model, if there is one.
29
+ func setBehaviors(_ value: SetBehaviors?) -> Self {
30
+ copy(updating: setBehaviorsProperty, to: value)
31
+ }
32
+
33
+ // MARK: Private
34
+
35
+ private var setBehaviorsProperty: EpoxyModelProperty<SetBehaviors?> {
36
+ .init(keyPath: \Self.setBehaviors, defaultValue: nil, updateStrategy: .chain())
37
+ }
38
+ }
@@ -0,0 +1,38 @@
1
+ // Created by eric_horacek on 12/1/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - SetContentProviding
5
+
6
+ /// A sentinel protocol for enabling an `CallbackContextEpoxyModeled` to provide a `setContent`
7
+ /// closure property.
8
+ protocol SetContentProviding { }
9
+
10
+ // MARK: - CallbackContextEpoxyModeled
11
+
12
+ extension CallbackContextEpoxyModeled where Self: SetContentProviding {
13
+
14
+ // MARK: Internal
15
+
16
+ /// A closure that's called to set the content on this model's view when it is first created and
17
+ /// subsequently when the content changes.
18
+ typealias SetContent = (CallbackContext) -> Void
19
+
20
+ /// A closure that's called to set the content on this model's view when it is first created and
21
+ /// subsequently when the content changes.
22
+ var setContent: SetContent? {
23
+ get { self[setContentProperty] }
24
+ set { self[setContentProperty] = newValue }
25
+ }
26
+
27
+ /// Returns a copy of this model with the given setContent view closure called after the current
28
+ /// setContent view closure of this model, if there is one.
29
+ func setContent(_ value: SetContent?) -> Self {
30
+ copy(updating: setContentProperty, to: value)
31
+ }
32
+
33
+ // MARK: Private
34
+
35
+ private var setContentProperty: EpoxyModelProperty<SetContent?> {
36
+ .init(keyPath: \Self.setContent, defaultValue: nil, updateStrategy: .chain())
37
+ }
38
+ }
@@ -0,0 +1,38 @@
1
+ // Created by eric_horacek on 12/1/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - StyleIDProviding
5
+
6
+ protocol StyleIDProviding {
7
+ /// An optional ID for a style type to use for reuse of a view.
8
+ ///
9
+ /// Use this to differentiate between different styling configurations.
10
+ var styleID: AnyHashable? { get }
11
+ }
12
+
13
+ // MARK: - EpoxyModeled
14
+
15
+ extension EpoxyModeled where Self: StyleIDProviding {
16
+
17
+ // MARK: Internal
18
+
19
+ var styleID: AnyHashable? {
20
+ get { self[styleIDProperty] }
21
+ set { self[styleIDProperty] = newValue }
22
+ }
23
+
24
+ /// Returns a copy of this model with the `styleID` replaced with the provided `value`.
25
+ func styleID(_ value: AnyHashable?) -> Self {
26
+ copy(updating: styleIDProperty, to: value)
27
+ }
28
+
29
+ // MARK: Private
30
+
31
+ private var styleIDProperty: EpoxyModelProperty<AnyHashable?> {
32
+ .init(
33
+ keyPath: \StyleIDProviding.styleID,
34
+ defaultValue: nil,
35
+ updateStrategy: .replace
36
+ )
37
+ }
38
+ }
@@ -0,0 +1,14 @@
1
+ // Created by eric_horacek on 12/16/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ #if !os(macOS)
5
+ import UIKit
6
+
7
+ /// The capability of providing a `UITraitCollection` instance.
8
+ ///
9
+ /// Typically conformed to by the `CallbackContext` of a `CallbackContextEpoxyModeled`.
10
+ protocol TraitCollectionProviding {
11
+ /// The `UITraitCollection` instance provided by this type.
12
+ var traitCollection: UITraitCollection { get }
13
+ }
14
+ #endif
@@ -0,0 +1,34 @@
1
+ // Created by Bryan Keller on 12/17/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - ViewDifferentiatorProviding
5
+
6
+ /// The capability of providing a view differentiator that facilitates generating collection view
7
+ /// cell reuse identifiers.
8
+ protocol ViewDifferentiatorProviding {
9
+ /// The view differentiator for the item model.
10
+ var viewDifferentiator: ViewDifferentiator { get }
11
+ }
12
+
13
+ // MARK: - ViewDifferentiator
14
+
15
+ /// Facilitates differentiating between two models' views, based on their view type, optional style
16
+ /// identifier, and optional element kind for supplementary view models. If two models have the same
17
+ /// view differentiator, then they're compatible with one another for element reuse. If two models
18
+ /// have different view differentiators, then they're incompatible with one another for element
19
+ /// reuse.
20
+ struct ViewDifferentiator: Hashable {
21
+
22
+ // MARK: Lifecycle
23
+
24
+ init(viewType: AnyClass, styleID: AnyHashable?) {
25
+ viewTypeDescription = "\(type(of: viewType.self))"
26
+ self.styleID = styleID
27
+ }
28
+
29
+ // MARK: Internal
30
+
31
+ var viewTypeDescription: String
32
+ var styleID: AnyHashable?
33
+
34
+ }
@@ -0,0 +1,13 @@
1
+ // Created by eric_horacek on 12/16/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ /// The capability of providing an `View` instance
5
+ ///
6
+ /// Typically conformed to by the `CallbackContext` of a `CallbackContextEpoxyModeled`.
7
+ protocol ViewProviding {
8
+ /// The `UIView` view of this type.
9
+ associatedtype View: ViewType
10
+
11
+ /// The `UIView` view instance provided by this type.
12
+ var view: View { get }
13
+ }
@@ -0,0 +1,41 @@
1
+ // Created by eric_horacek on 12/15/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ // MARK: - WillDisplayProviding
5
+
6
+ /// A sentinel protocol for enabling an `CallbackContextEpoxyModeled` to provide a `willDisplay`
7
+ /// closure property.
8
+ ///
9
+ /// - SeeAlso: `DidDisplayProviding`
10
+ /// - SeeAlso: `DidEndDisplayingProviding`
11
+ protocol WillDisplayProviding { }
12
+
13
+ // MARK: - CallbackContextEpoxyModeled
14
+
15
+ extension CallbackContextEpoxyModeled where Self: WillDisplayProviding {
16
+
17
+ // MARK: Internal
18
+
19
+ /// A closure that's called when a view is about to be displayed, before it has been added to the
20
+ /// view hierarchy.
21
+ typealias WillDisplay = (_ context: CallbackContext) -> Void
22
+
23
+ /// A closure that's called when the view is about to be displayed, before it has been added to
24
+ /// the view hierarchy.
25
+ var willDisplay: WillDisplay? {
26
+ get { self[willDisplayProperty] }
27
+ set { self[willDisplayProperty] = newValue }
28
+ }
29
+
30
+ /// Returns a copy of this model with the given will display closure called after the current will
31
+ /// display closure of this model, if there is one.
32
+ func willDisplay(_ value: WillDisplay?) -> Self {
33
+ copy(updating: willDisplayProperty, to: value)
34
+ }
35
+
36
+ // MARK: Private
37
+
38
+ private var willDisplayProperty: EpoxyModelProperty<WillDisplay?> {
39
+ .init(keyPath: \Self.willDisplay, defaultValue: nil, updateStrategy: .chain())
40
+ }
41
+ }
@@ -0,0 +1,10 @@
1
+ // Created by eric_horacek on 12/4/20.
2
+ // Copyright © 2020 Airbnb Inc. All rights reserved.
3
+
4
+ /// An Epoxy model with an associated `UIView` type.
5
+ protocol ViewEpoxyModeled: EpoxyModeled {
6
+ /// The view type associated with this model.
7
+ ///
8
+ /// An instance of this view is typically configured by this model.
9
+ associatedtype View: ViewType
10
+ }
@@ -0,0 +1,30 @@
1
+ ## EpoxyCore
2
+
3
+ This directory includes the source code of the EpoxyCore library, from the following release:
4
+ https://github.com/airbnb/epoxy-ios/releases/tag/0.11.0
5
+
6
+ Lottie is distributed via multiple package managers (SPM, Cocoapods, Carthage, and NPM),
7
+ each with different packaging and compilation requirements.
8
+
9
+ Due to limitations of these package managers, we can't depend on / import
10
+ a separate EpoxyCore module / library. Instead, we include the source
11
+ directly within the Lottie library and compile everything as a single unit.
12
+
13
+ ### Update instructions
14
+
15
+ From time to time we may need to update to a more recent version of EpoxyCore.
16
+ When doing this, follow these steps:
17
+
18
+ 1. Download the latest release from https://github.com/airbnb/epoxy-ios
19
+ and replace the source code in this directory with the updated code.
20
+
21
+ 2. Update the URL at the top of this file to indicate what release is being used.
22
+
23
+ 3. Change all of the `public` symbols defined in this module to instead be `internal`
24
+ to prevent Lottie from exposing any EpoxyCore APIs.
25
+
26
+ 4. Namespace any types that conflict with other existing types.
27
+ For example, the EpoxyCore `Entry` type conflicts with the ZipFoundation `Entry` type,
28
+ so the EpoxyCore type has been renamed to `EpoxyEntry`.
29
+
30
+ 5. Delete `EpoxySwiftUIHostingController.swift` and `EpoxySwiftUIHostingView.swift`, which are not used by Lottie, and emit deprecation warnings when building for visionOS.