@octane-xplat/lottie 0.9.0 → 0.10.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.
- package/README.md +36 -16
- package/dist/native/index.js +10 -9
- package/dist/native/octane-client-build.json +1 -1
- package/dist/web/index.js +39 -25
- package/dist/web/octane-client-build.json +1 -1
- package/package.json +25 -3
- package/platforms/macos/LICENSE-EpoxyCore-Apache-2.0.txt +201 -0
- package/platforms/macos/LICENSE-LRUCache-MIT.txt +22 -0
- package/platforms/macos/LICENSE-Lottie-Apache-2.0.txt +201 -0
- package/platforms/macos/LICENSE-ZIPFoundation-MIT.txt +21 -0
- package/platforms/macos/UPSTREAM.md +13 -0
- package/platforms/macos/resources/PrivacyInfo.xcprivacy +23 -0
- package/platforms/macos/resources/THIRD-PARTY-NOTICES.txt +10 -0
- package/platforms/macos/src/XplatAppKitLottie.swift +246 -0
- package/platforms/macos/src/vendor/Lottie/PrivacyInfo.xcprivacy +23 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +81 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +476 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CombinedShapeAnimation.swift +92 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/CustomPathAnimation.swift +89 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/DropShadowAnimation.swift +179 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/EllipseAnimation.swift +53 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/GradientAnimations.swift +287 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/LayerProperty.swift +440 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/OpacityAnimation.swift +53 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/RectangleAnimation.swift +59 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/ShapeAnimation.swift +246 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/StarAnimation.swift +119 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/StrokeAnimation.swift +96 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/TransformAnimations.swift +380 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Animations/VisibilityAnimation.swift +63 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/CompatibilityTracker.swift +129 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/CoreAnimationLayer.swift +645 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/CALayer+fillBounds.swift +35 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/KeyframeGroup+exactlyOneKeyframe.swift +28 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/Keyframes+combined.swift +345 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Extensions/Keyframes+timeRemapping.swift +46 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/AnimationLayer.swift +169 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/BaseAnimationLayer.swift +46 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +120 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/CALayer+setupLayerHierarchy.swift +169 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/GradientRenderLayer.swift +101 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/ImageLayer.swift +81 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/InfiniteOpaqueAnimationLayer.swift +57 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/LayerModel+makeAnimationLayer.swift +59 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/MaskCompositionLayer.swift +139 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/PreCompLayer.swift +107 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/RepeaterLayer.swift +113 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/ShapeItemLayer.swift +346 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/ShapeLayer.swift +569 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/SolidLayer.swift +66 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/TextLayer.swift +157 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/Layers/TransformLayer.swift +13 -0
- package/platforms/macos/src/vendor/Lottie/Private/CoreAnimation/ValueProviderStore.swift +157 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/Collection+Diff.swift +267 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/Diffable.swift +19 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/DiffableSection.swift +16 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/IndexChangeset.swift +187 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Diffing/SectionedChangeset.swift +22 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Logging/EpoxyLogger.swift +102 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/CallbackContextEpoxyModeled.swift +8 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModelArrayBuilder.swift +48 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModelProperty.swift +158 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModelStorage.swift +88 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/EpoxyModeled.swift +54 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Internal/AnyEpoxyModelProperty.swift +31 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Internal/ClassReference.swift +39 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/AnimatedProviding.swift +10 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DataIDProviding.swift +58 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DidDisplayProviding.swift +41 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DidEndDisplayingProviding.swift +42 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/DidSelectProviding.swift +36 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/ErasedContentProviding.swift +49 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/MakeViewProviding.swift +61 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/SetBehaviorsProviding.swift +38 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/SetContentProviding.swift +38 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/StyleIDProviding.swift +38 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/TraitCollectionProviding.swift +14 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/ViewDifferentiatorProviding.swift +34 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/ViewProviding.swift +13 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/Providers/WillDisplayProviding.swift +41 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Model/ViewEpoxyModeled.swift +10 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/README.md +30 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/EpoxySwiftUIIntrinsicContentSizeInvalidator.swift +34 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/EpoxySwiftUILayoutMargins.swift +38 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/EpoxyableView+SwiftUIView.swift +165 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/LayoutUtilities/MeasuringViewRepresentable.swift +127 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/LayoutUtilities/SwiftUIMeasurementContainer.swift +468 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/SwiftUIView.swift +146 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/UIView+SwiftUIView.swift +39 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/SwiftUI/UIViewConfiguringSwiftUIView.swift +41 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/BehaviorsConfigurableView.swift +45 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/ContentConfigurableView.swift +36 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/EpoxyableView.swift +5 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/StyledView.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/EpoxyCore/Views/ViewType.swift +47 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/LRUCache/LRUCache.swift +257 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/LRUCache/README.md +24 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/README.md +43 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+BackingConfiguration.swift +149 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Deprecated.swift +23 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Helpers.swift +361 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+MemoryFile.swift +205 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Progress.swift +66 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Reading.swift +160 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+ReadingDeprecated.swift +50 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+Writing.swift +403 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+WritingDeprecated.swift +95 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive+ZIP64.swift +191 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Archive.swift +404 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Data+Compression.swift +632 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Data+CompressionDeprecated.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Data+Serialization.swift +146 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Date+ZIP.swift +101 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Entry+Serialization.swift +191 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Entry+ZIP64.swift +170 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/Entry.swift +669 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/FileManager+ZIP.swift +405 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/FileManager+ZIPDeprecated.swift +28 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/README.md +24 -0
- package/platforms/macos/src/vendor/Lottie/Private/EmbeddedLibraries/ZipFoundation/URL+ZIP.swift +34 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/CompositionLayer.swift +177 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/ImageCompositionLayer.swift +54 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/MaskContainerLayer.swift +191 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/NullCompositionLayer.swift +28 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/PreCompositionLayer.swift +137 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/ShapeCompositionLayer.swift +60 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/SolidCompositionLayer.swift +57 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/CompLayers/TextCompositionLayer.swift +247 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift +321 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/CachedImageProvider.swift +56 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/CompositionLayersInitializer.swift +103 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift +424 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/InvertedMatteLayer.swift +55 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerFontProvider.swift +39 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerImageProvider.swift +52 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerTextProvider.swift +38 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/LayerContainers/Utility/LayerTransformNode.swift +149 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Extensions/ItemsExtension.swift +146 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/NodeProperty.swift +62 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/AnyNodeProperty.swift +53 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/AnyValueContainer.swift +26 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/KeypathSearchable.swift +23 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/Protocols/NodePropertyMap.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/ValueContainer.swift +47 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/ValueProviders/GroupInterpolator.swift +39 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/NodeProperties/ValueProviders/SingleValueProvider.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/LayerEffectNodes/DropShadowNode.swift +102 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/LayerEffectNodes/LayerEffectNode.swift +25 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/ModifierNodes/RoundedCornersNode.swift +85 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +281 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/GroupOutputNode.swift +74 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/PassThroughOutputNode.swift +47 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/PathOutputNode.swift +89 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/FillRenderer.swift +69 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift +253 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +64 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift +158 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +165 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +143 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +173 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +238 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/ShapeNode.swift +73 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +224 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +162 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/FillNode.swift +88 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/GradientFillNode.swift +103 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/GradientStrokeNode.swift +149 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +179 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Nodes/Text/TextAnimatorNode.swift +345 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Protocols/AnimatorNode.swift +197 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Protocols/PathNode.swift +20 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/Protocols/RenderNode.swift +60 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +78 -0
- package/platforms/macos/src/vendor/Lottie/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +98 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/Asset.swift +51 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/AssetLibrary.swift +75 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/ImageAsset.swift +141 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Assets/PrecompAsset.swift +47 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/DictionaryInitializable.swift +73 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieAnimation.swift +57 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieImageProvider.swift +89 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieManifest.swift +42 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/DotLottie/DotLottieUtils.swift +71 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Extensions/Bundle.swift +58 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Extensions/KeyedDecodingContainerExtensions.swift +71 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Keyframes/KeyframeData.swift +111 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Keyframes/KeyframeGroup.swift +265 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/DropShadowEffect.swift +52 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/EffectValues/ColorEffectValue.swift +45 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/EffectValues/EffectValue.swift +98 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/EffectValues/Vector1DEffectValue.swift +45 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerEffects/LayerEffect.swift +103 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerStyles/DropShadowStyle.swift +79 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/LayerStyles/LayerStyle.swift +85 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/ImageLayerModel.swift +49 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/LayerModel.swift +266 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/PreCompLayerModel.swift +74 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/ShapeLayerModel.swift +50 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/SolidLayerModel.swift +63 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Layers/TextLayerModel.swift +65 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/DashPattern.swift +42 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/Marker.swift +35 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/Mask.swift +80 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Objects/Transform.swift +261 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Ellipse.swift +79 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Fill.swift +79 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/GradientFill.swift +142 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/GradientStroke.swift +244 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Group.swift +55 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Merge.swift +63 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Rectangle.swift +79 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Repeater.swift +181 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/RoundedCorners.swift +53 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Shape.swift +63 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/ShapeItem.swift +171 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/ShapeTransform.swift +202 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Star.swift +136 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Stroke.swift +144 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/ShapeItems/Trim.swift +90 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Text/Font.swift +67 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Text/Glyph.swift +94 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Text/TextAnimator.swift +240 -0
- package/platforms/macos/src/vendor/Lottie/Private/Model/Text/TextDocument.swift +142 -0
- package/platforms/macos/src/vendor/Lottie/Private/RootAnimationLayer.swift +54 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Debugging/AnimatorNodeDebugging.swift +23 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Debugging/LayerDebugging.swift +231 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Debugging/TestHelpers.swift +10 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/AnimationKeypathExtension.swift +303 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/BlendMode+Filter.swift +31 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/CGColor+RGB.swift +45 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/CGFloatExtensions.swift +152 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/DataExtension.swift +33 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/MathKit.swift +454 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Extensions/StringExtensions.swift +44 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/AnimationContext.swift +95 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/AnyEquatable.swift +23 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/Binding+Map.swift +19 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Helpers/View+ValueChanged.swift +35 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Interpolatable/InterpolatableExtensions.swift +143 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Interpolatable/KeyframeExtensions.swift +47 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Interpolatable/KeyframeInterpolator.swift +250 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/LottieAnimationSource.swift +51 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/BezierPath.swift +509 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/BezierPathRoundExtension.swift +163 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/CGPointExtension.swift +35 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/ColorExtension.swift +101 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/CompoundBezierPath.swift +169 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/CurveVertex.swift +190 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/PathElement.swift +78 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/UnitBezier.swift +119 -0
- package/platforms/macos/src/vendor/Lottie/Private/Utility/Primitives/VectorsExtensions.swift +368 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimation.swift +179 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationHelpers.swift +317 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationLayer.swift +1582 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationView.swift +1090 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieAnimationViewInitializers.swift +226 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottiePlaybackMode.swift +266 -0
- package/platforms/macos/src/vendor/Lottie/Public/Animation/LottieView.swift +643 -0
- package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/AnimationCacheProvider.swift +21 -0
- package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/DefaultAnimationCache.swift +67 -0
- package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/LRUAnimationCache.swift +11 -0
- package/platforms/macos/src/vendor/Lottie/Public/AnimationCache/LottieAnimationCache.swift +15 -0
- package/platforms/macos/src/vendor/Lottie/Public/Configuration/DecodingStrategy.swift +15 -0
- package/platforms/macos/src/vendor/Lottie/Public/Configuration/LottieConfiguration.swift +54 -0
- package/platforms/macos/src/vendor/Lottie/Public/Configuration/LottieURLSession.swift +31 -0
- package/platforms/macos/src/vendor/Lottie/Public/Configuration/ReducedMotionOption.swift +128 -0
- package/platforms/macos/src/vendor/Lottie/Public/Configuration/RenderingEngineOption.swift +117 -0
- package/platforms/macos/src/vendor/Lottie/Public/Controls/AnimatedButton.swift +128 -0
- package/platforms/macos/src/vendor/Lottie/Public/Controls/AnimatedControl.swift +248 -0
- package/platforms/macos/src/vendor/Lottie/Public/Controls/AnimatedSwitch.swift +271 -0
- package/platforms/macos/src/vendor/Lottie/Public/Controls/LottieButton.swift +119 -0
- package/platforms/macos/src/vendor/Lottie/Public/Controls/LottieSwitch.swift +144 -0
- package/platforms/macos/src/vendor/Lottie/Public/Controls/LottieViewType.swift +79 -0
- package/platforms/macos/src/vendor/Lottie/Public/DotLottie/Cache/DotLottieCache.swift +66 -0
- package/platforms/macos/src/vendor/Lottie/Public/DotLottie/Cache/DotLottieCacheProvider.swift +21 -0
- package/platforms/macos/src/vendor/Lottie/Public/DotLottie/DotLottieConfiguration.swift +72 -0
- package/platforms/macos/src/vendor/Lottie/Public/DotLottie/DotLottieFile.swift +186 -0
- package/platforms/macos/src/vendor/Lottie/Public/DotLottie/DotLottieFileHelpers.swift +386 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/AnimationKeypath.swift +57 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/AnyValueProvider.swift +132 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/ColorValueProvider.swift +96 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/FloatValueProvider.swift +81 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +138 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/PointValueProvider.swift +81 -0
- package/platforms/macos/src/vendor/Lottie/Public/DynamicProperties/ValueProviders/SizeValueProvider.swift +81 -0
- package/platforms/macos/src/vendor/Lottie/Public/FontProvider/AnimationFontProvider.swift +41 -0
- package/platforms/macos/src/vendor/Lottie/Public/ImageProvider/AnimationImageProvider.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Public/Keyframes/Interpolatable.swift +285 -0
- package/platforms/macos/src/vendor/Lottie/Public/Keyframes/Keyframe.swift +98 -0
- package/platforms/macos/src/vendor/Lottie/Public/Logging/LottieLogger.swift +138 -0
- package/platforms/macos/src/vendor/Lottie/Public/Primitives/AnimationTime.swift +15 -0
- package/platforms/macos/src/vendor/Lottie/Public/Primitives/LottieColor.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Public/Primitives/Vectors.swift +36 -0
- package/platforms/macos/src/vendor/Lottie/Public/TextProvider/AnimationTextProvider.swift +135 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/AnimationSubview.swift +19 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/BundleImageProvider.swift +98 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleAnimationKeypath.swift +33 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleAnimationView.swift +567 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleFontProvider.swift +41 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/Compatibility/CompatibleImageProvider.swift +43 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/FilepathImageProvider.swift +78 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/LottieAnimationViewBase.swift +85 -0
- package/platforms/macos/src/vendor/Lottie/Public/iOS/UIColorExtension.swift +23 -0
- package/platforms/macos/src/vendor/Lottie/Public/macOS/AnimationSubview.macOS.swift +19 -0
- package/platforms/macos/src/vendor/Lottie/Public/macOS/BundleImageProvider.macOS.swift +90 -0
- package/platforms/macos/src/vendor/Lottie/Public/macOS/FilepathImageProvider.macOS.swift +86 -0
- package/platforms/macos/src/vendor/Lottie/Public/macOS/LottieAnimationViewBase.macOS.swift +102 -0
- package/src/Lottie.macos.tsrx +129 -0
- package/src/Lottie.tsrx +3 -2
- package/src/Lottie.web.tsrx +28 -11
- package/src/index.macos.ts +2 -0
- package/src/props.ts +6 -1
- 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.
|