@momo-kits/native-kits 0.0.1-beta.3 → 0.0.1-beta.5

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 (264) hide show
  1. package/example/ios/Example/ComponentModel.swift +9 -2
  2. package/example/ios/Example/ContentView.swift +0 -14
  3. package/example/ios/Example/Foundation/ImageDemo.swift +43 -0
  4. package/example/ios/Example/Foundation/Popup/Popups.swift +2 -52
  5. package/example/ios/Example/Foundation/PopupDemo.swift +44 -21
  6. package/example/ios/Example/Foundation/TextInputDemo.swift +36 -0
  7. package/example/ios/Example/Library/CheckboxDemo.swift +19 -0
  8. package/example/ios/Example/Library/SwitchDemo.swift +19 -0
  9. package/example/ios/Example/Main.swift +17 -1
  10. package/example/ios/Example/Resource/foundation.json +2 -2
  11. package/example/ios/Example/Resource/library.json +10 -0
  12. package/example/ios/Example.xcodeproj/project.pbxproj +16 -0
  13. package/example/ios/Example.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +1 -1
  14. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  15. package/example/ios/Podfile +2 -1
  16. package/example/ios/Podfile.lock +22 -3
  17. package/example/ios/Pods/Local Podspecs/MoMoUIKits.podspec.json +9 -1
  18. package/example/ios/Pods/Manifest.lock +22 -3
  19. package/example/ios/Pods/Pods.xcodeproj/project.pbxproj +1547 -161
  20. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
  21. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
  22. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
  23. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +21 -0
  24. package/example/ios/Pods/SDWebImage/LICENSE +20 -0
  25. package/example/ios/Pods/SDWebImage/README.md +352 -0
  26. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.h +340 -0
  27. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.m +172 -0
  28. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +63 -0
  29. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +165 -0
  30. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +67 -0
  31. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +120 -0
  32. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +114 -0
  33. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +392 -0
  34. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h +112 -0
  35. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m +420 -0
  36. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +23 -0
  37. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +133 -0
  38. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.h +168 -0
  39. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m +79 -0
  40. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +110 -0
  41. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +540 -0
  42. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +145 -0
  43. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +326 -0
  44. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h +73 -0
  45. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +256 -0
  46. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +19 -0
  47. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +58 -0
  48. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h +23 -0
  49. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m +98 -0
  50. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +450 -0
  51. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +1030 -0
  52. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +153 -0
  53. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +68 -0
  54. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +156 -0
  55. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +138 -0
  56. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.h +81 -0
  57. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.m +556 -0
  58. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +297 -0
  59. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +26 -0
  60. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +153 -0
  61. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +822 -0
  62. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h +58 -0
  63. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +130 -0
  64. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h +36 -0
  65. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m +28 -0
  66. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +22 -0
  67. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +58 -0
  68. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +28 -0
  69. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +127 -0
  70. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h +25 -0
  71. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m +101 -0
  72. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +58 -0
  73. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +807 -0
  74. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h +30 -0
  75. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +420 -0
  76. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h +146 -0
  77. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +170 -0
  78. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h +40 -0
  79. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m +123 -0
  80. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.h +241 -0
  81. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.m +331 -0
  82. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +78 -0
  83. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +158 -0
  84. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h +32 -0
  85. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m +39 -0
  86. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +36 -0
  87. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m +39 -0
  88. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.h +95 -0
  89. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m +17 -0
  90. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +352 -0
  91. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +149 -0
  92. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +314 -0
  93. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +658 -0
  94. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +113 -0
  95. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +60 -0
  96. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h +49 -0
  97. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m +55 -0
  98. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +191 -0
  99. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +722 -0
  100. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +69 -0
  101. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m +71 -0
  102. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h +69 -0
  103. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m +73 -0
  104. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +32 -0
  105. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +16 -0
  106. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.h +115 -0
  107. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +275 -0
  108. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +290 -0
  109. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +775 -0
  110. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +27 -0
  111. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m +14 -0
  112. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.h +72 -0
  113. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m +59 -0
  114. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.h +143 -0
  115. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m +303 -0
  116. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.h +131 -0
  117. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.m +194 -0
  118. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.h +387 -0
  119. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.m +234 -0
  120. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h +24 -0
  121. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m +23 -0
  122. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h +46 -0
  123. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m +60 -0
  124. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h +26 -0
  125. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m +22 -0
  126. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h +27 -0
  127. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +47 -0
  128. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +89 -0
  129. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +221 -0
  130. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.h +80 -0
  131. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m +47 -0
  132. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.h +146 -0
  133. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +824 -0
  134. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.h +129 -0
  135. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.m +76 -0
  136. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.h +194 -0
  137. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m +67 -0
  138. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +110 -0
  139. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +446 -0
  140. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +48 -0
  141. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +82 -0
  142. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h +24 -0
  143. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m +42 -0
  144. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h +14 -0
  145. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +29 -0
  146. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h +21 -0
  147. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m +92 -0
  148. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h +18 -0
  149. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m +32 -0
  150. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h +29 -0
  151. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +227 -0
  152. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h +19 -0
  153. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m +127 -0
  154. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h +23 -0
  155. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +164 -0
  156. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h +21 -0
  157. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m +83 -0
  158. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +39 -0
  159. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.h +122 -0
  160. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m +13 -0
  161. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h +20 -0
  162. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m +79 -0
  163. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h +19 -0
  164. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDmetamacros.h +667 -0
  165. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h +18 -0
  166. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m +42 -0
  167. package/example/ios/Pods/SDWebImage/WebImage/SDWebImage.h +89 -0
  168. package/example/ios/Pods/SDWebImageSwiftUI/LICENSE +19 -0
  169. package/example/ios/Pods/SDWebImageSwiftUI/README.md +690 -0
  170. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/AnimatedImage.swift +870 -0
  171. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Backport.swift +59 -0
  172. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/OnChange.swift +52 -0
  173. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Overlay.swift +124 -0
  174. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/StateObject.swift +151 -0
  175. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Image.swift +78 -0
  176. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageManager.swift +132 -0
  177. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImagePlayer.swift +122 -0
  178. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift +133 -0
  179. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ActivityIndicator.swift +82 -0
  180. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift +97 -0
  181. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ProgressIndicator.swift +114 -0
  182. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SDWebImageSwiftUI.swift +64 -0
  183. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SwiftUICompatibility.swift +92 -0
  184. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Transition/Transition.swift +93 -0
  185. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/WebImage.swift +509 -0
  186. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h +15 -0
  187. package/example/ios/Pods/SkeletonUI/LICENSE +21 -0
  188. package/example/ios/Pods/SkeletonUI/README.md +137 -0
  189. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AngleInteractor.swift +29 -0
  190. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AnglePresenter.swift +7 -0
  191. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Animation/AnimationInteractor.swift +56 -0
  192. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearanceInteractor.swift +58 -0
  193. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearancePresenter.swift +5 -0
  194. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ClosedRange+Normalize.swift +16 -0
  195. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Image+OptionalType.swift +102 -0
  196. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ModifiedContent+SkeletonModifier.swift +26 -0
  197. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Optional+OptionalType.swift +5 -0
  198. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/SecureField+OptionalType.swift +19 -0
  199. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Text+OptionalType.swift +27 -0
  200. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/TextField+OptionalType.swift +35 -0
  201. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Toggle+OptionalType.swift +29 -0
  202. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/UnitPoint+Angle.swift +8 -0
  203. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/View+SkeletonModifier.swift +8 -0
  204. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Modifiers/SkeletonModifier.swift +52 -0
  205. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilineInteractor.swift +41 -0
  206. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilinePresenter.swift +9 -0
  207. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityInteractor.swift +29 -0
  208. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityPresenter.swift +7 -0
  209. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionInteractor.swift +29 -0
  210. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionPresenter.swift +7 -0
  211. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Protocols/OptionalType.swift +4 -0
  212. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusInteractor.swift +29 -0
  213. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusPresenter.swift +7 -0
  214. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapeInteractor.swift +33 -0
  215. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapePresenter.swift +5 -0
  216. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonForEach.swift +20 -0
  217. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonInteractor.swift +27 -0
  218. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonList.swift +20 -0
  219. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonPresenter.swift +15 -0
  220. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonShape.swift +64 -0
  221. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonView.swift +25 -0
  222. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.debug.xcconfig +4 -1
  223. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.release.xcconfig +4 -1
  224. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +72 -0
  225. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +90 -0
  226. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +6 -5
  227. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +6 -5
  228. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m +5 -0
  229. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch +12 -0
  230. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h +75 -0
  231. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +14 -0
  232. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap +6 -0
  233. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +14 -0
  234. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-dummy.m +5 -0
  235. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-prefix.pch +12 -0
  236. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-umbrella.h +17 -0
  237. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.debug.xcconfig +17 -0
  238. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.modulemap +6 -0
  239. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.release.xcconfig +17 -0
  240. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-dummy.m +5 -0
  241. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-prefix.pch +12 -0
  242. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-umbrella.h +16 -0
  243. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.debug.xcconfig +12 -0
  244. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.modulemap +6 -0
  245. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.release.xcconfig +12 -0
  246. package/ios/Checkbox/Checkbox.swift +38 -0
  247. package/ios/{Colors+Spacing → Colors+Radius+Spacing}/Colors.swift +0 -0
  248. package/ios/Colors+Radius+Spacing/Radius.swift +22 -0
  249. package/ios/{Colors+Spacing → Colors+Radius+Spacing}/Spacing.swift +0 -0
  250. package/ios/Extensions/View++.swift +9 -0
  251. package/ios/Image/Image.swift +60 -0
  252. package/ios/Input/Input.swift +148 -0
  253. package/ios/OTPKeyboard/OTPKeyboard.swift +3 -3
  254. package/ios/Popup/PopupDisplay.swift +178 -0
  255. package/ios/PopupView/FullscreenPopup.swift +251 -0
  256. package/ios/{Popup → PopupView}/Modifiers.swift +6 -20
  257. package/ios/{Popup → PopupView}/PopupView.swift +38 -146
  258. package/ios/PopupView/Utils++.swift +281 -0
  259. package/ios/Swipeable/SwipeCell.swift +1 -1
  260. package/ios/Switch/Switch.swift +44 -0
  261. package/ios/native-kits.podspec +2 -0
  262. package/package.json +1 -1
  263. package/ios/Colors+Spacing/Radius.swift +0 -11
  264. package/ios/Popup/Utils.swift +0 -186
@@ -0,0 +1,392 @@
1
+ /*
2
+ * This file is part of the SDWebImage package.
3
+ * (c) Olivier Poitrey <rs@dailymotion.com>
4
+ *
5
+ * For the full copyright and license information, please view the LICENSE
6
+ * file that was distributed with this source code.
7
+ */
8
+
9
+ #import "SDAnimatedImage.h"
10
+ #import "NSImage+Compatibility.h"
11
+ #import "SDImageCoder.h"
12
+ #import "SDImageCodersManager.h"
13
+ #import "SDImageFrame.h"
14
+ #import "UIImage+MemoryCacheCost.h"
15
+ #import "UIImage+Metadata.h"
16
+ #import "UIImage+MultiFormat.h"
17
+ #import "SDImageCoderHelper.h"
18
+ #import "SDImageAssetManager.h"
19
+ #import "objc/runtime.h"
20
+
21
+ static CGFloat SDImageScaleFromPath(NSString *string) {
22
+ if (string.length == 0 || [string hasSuffix:@"/"]) return 1;
23
+ NSString *name = string.stringByDeletingPathExtension;
24
+ __block CGFloat scale = 1;
25
+
26
+ NSRegularExpression *pattern = [NSRegularExpression regularExpressionWithPattern:@"@[0-9]+\\.?[0-9]*x$" options:NSRegularExpressionAnchorsMatchLines error:nil];
27
+ [pattern enumerateMatchesInString:name options:kNilOptions range:NSMakeRange(0, name.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
28
+ scale = [string substringWithRange:NSMakeRange(result.range.location + 1, result.range.length - 2)].doubleValue;
29
+ }];
30
+
31
+ return scale;
32
+ }
33
+
34
+ @interface SDAnimatedImage ()
35
+
36
+ @property (nonatomic, strong) id<SDAnimatedImageCoder> animatedCoder;
37
+ @property (nonatomic, assign, readwrite) SDImageFormat animatedImageFormat;
38
+ @property (atomic, copy) NSArray<SDImageFrame *> *loadedAnimatedImageFrames; // Mark as atomic to keep thread-safe
39
+ @property (nonatomic, assign, getter=isAllFramesLoaded) BOOL allFramesLoaded;
40
+
41
+ @end
42
+
43
+ @implementation SDAnimatedImage
44
+ @dynamic scale; // call super
45
+
46
+ #pragma mark - UIImage override method
47
+ + (instancetype)imageNamed:(NSString *)name {
48
+ #if __has_include(<UIKit/UITraitCollection.h>)
49
+ return [self imageNamed:name inBundle:nil compatibleWithTraitCollection:nil];
50
+ #else
51
+ return [self imageNamed:name inBundle:nil];
52
+ #endif
53
+ }
54
+
55
+ #if __has_include(<UIKit/UITraitCollection.h>)
56
+ + (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle compatibleWithTraitCollection:(UITraitCollection *)traitCollection {
57
+ if (!traitCollection) {
58
+ traitCollection = UIScreen.mainScreen.traitCollection;
59
+ }
60
+ CGFloat scale = traitCollection.displayScale;
61
+ return [self imageNamed:name inBundle:bundle scale:scale];
62
+ }
63
+ #else
64
+ + (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle {
65
+ return [self imageNamed:name inBundle:bundle scale:0];
66
+ }
67
+ #endif
68
+
69
+ // 0 scale means automatically check
70
+ + (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle scale:(CGFloat)scale {
71
+ if (!name) {
72
+ return nil;
73
+ }
74
+ if (!bundle) {
75
+ bundle = [NSBundle mainBundle];
76
+ }
77
+ SDImageAssetManager *assetManager = [SDImageAssetManager sharedAssetManager];
78
+ SDAnimatedImage *image = (SDAnimatedImage *)[assetManager imageForName:name];
79
+ if ([image isKindOfClass:[SDAnimatedImage class]]) {
80
+ return image;
81
+ }
82
+ NSString *path = [assetManager getPathForName:name bundle:bundle preferredScale:&scale];
83
+ if (!path) {
84
+ return image;
85
+ }
86
+ NSData *data = [NSData dataWithContentsOfFile:path];
87
+ if (!data) {
88
+ return image;
89
+ }
90
+ image = [[self alloc] initWithData:data scale:scale];
91
+ if (image) {
92
+ [assetManager storeImage:image forName:name];
93
+ }
94
+
95
+ return image;
96
+ }
97
+
98
+ + (instancetype)imageWithContentsOfFile:(NSString *)path {
99
+ return [[self alloc] initWithContentsOfFile:path];
100
+ }
101
+
102
+ + (instancetype)imageWithData:(NSData *)data {
103
+ return [[self alloc] initWithData:data];
104
+ }
105
+
106
+ + (instancetype)imageWithData:(NSData *)data scale:(CGFloat)scale {
107
+ return [[self alloc] initWithData:data scale:scale];
108
+ }
109
+
110
+ - (instancetype)initWithContentsOfFile:(NSString *)path {
111
+ NSData *data = [NSData dataWithContentsOfFile:path];
112
+ return [self initWithData:data scale:SDImageScaleFromPath(path)];
113
+ }
114
+
115
+ - (instancetype)initWithData:(NSData *)data {
116
+ return [self initWithData:data scale:1];
117
+ }
118
+
119
+ - (instancetype)initWithData:(NSData *)data scale:(CGFloat)scale {
120
+ return [self initWithData:data scale:scale options:nil];
121
+ }
122
+
123
+ - (instancetype)initWithData:(NSData *)data scale:(CGFloat)scale options:(SDImageCoderOptions *)options {
124
+ if (!data || data.length == 0) {
125
+ return nil;
126
+ }
127
+ data = [data copy]; // avoid mutable data
128
+ id<SDAnimatedImageCoder> animatedCoder = nil;
129
+ for (id<SDImageCoder>coder in [SDImageCodersManager sharedManager].coders.reverseObjectEnumerator) {
130
+ if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) {
131
+ if ([coder canDecodeFromData:data]) {
132
+ if (!options) {
133
+ options = @{SDImageCoderDecodeScaleFactor : @(scale)};
134
+ }
135
+ animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:data options:options];
136
+ break;
137
+ }
138
+ }
139
+ }
140
+ if (!animatedCoder) {
141
+ return nil;
142
+ }
143
+ return [self initWithAnimatedCoder:animatedCoder scale:scale];
144
+ }
145
+
146
+ - (instancetype)initWithAnimatedCoder:(id<SDAnimatedImageCoder>)animatedCoder scale:(CGFloat)scale {
147
+ if (!animatedCoder) {
148
+ return nil;
149
+ }
150
+ UIImage *image = [animatedCoder animatedImageFrameAtIndex:0];
151
+ if (!image) {
152
+ return nil;
153
+ }
154
+ #if SD_MAC
155
+ self = [super initWithCGImage:image.CGImage scale:MAX(scale, 1) orientation:kCGImagePropertyOrientationUp];
156
+ #else
157
+ self = [super initWithCGImage:image.CGImage scale:MAX(scale, 1) orientation:image.imageOrientation];
158
+ #endif
159
+ if (self) {
160
+ // Only keep the animated coder if frame count > 1, save RAM usage for non-animated image format (APNG/WebP)
161
+ if (animatedCoder.animatedImageFrameCount > 1) {
162
+ _animatedCoder = animatedCoder;
163
+ }
164
+ NSData *data = [animatedCoder animatedImageData];
165
+ SDImageFormat format = [NSData sd_imageFormatForImageData:data];
166
+ _animatedImageFormat = format;
167
+ }
168
+ return self;
169
+ }
170
+
171
+ #pragma mark - Preload
172
+ - (void)preloadAllFrames {
173
+ if (!_animatedCoder) {
174
+ return;
175
+ }
176
+ if (!self.isAllFramesLoaded) {
177
+ NSMutableArray<SDImageFrame *> *frames = [NSMutableArray arrayWithCapacity:self.animatedImageFrameCount];
178
+ for (size_t i = 0; i < self.animatedImageFrameCount; i++) {
179
+ UIImage *image = [self animatedImageFrameAtIndex:i];
180
+ NSTimeInterval duration = [self animatedImageDurationAtIndex:i];
181
+ SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; // through the image should be nonnull, used as nullable for `animatedImageFrameAtIndex:`
182
+ [frames addObject:frame];
183
+ }
184
+ self.loadedAnimatedImageFrames = frames;
185
+ self.allFramesLoaded = YES;
186
+ }
187
+ }
188
+
189
+ - (void)unloadAllFrames {
190
+ if (!_animatedCoder) {
191
+ return;
192
+ }
193
+ if (self.isAllFramesLoaded) {
194
+ self.loadedAnimatedImageFrames = nil;
195
+ self.allFramesLoaded = NO;
196
+ }
197
+ }
198
+
199
+ #pragma mark - NSSecureCoding
200
+ - (instancetype)initWithCoder:(NSCoder *)aDecoder {
201
+ self = [super initWithCoder:aDecoder];
202
+ if (self) {
203
+ _animatedImageFormat = [aDecoder decodeIntegerForKey:NSStringFromSelector(@selector(animatedImageFormat))];
204
+ NSData *animatedImageData = [aDecoder decodeObjectOfClass:[NSData class] forKey:NSStringFromSelector(@selector(animatedImageData))];
205
+ if (!animatedImageData) {
206
+ return self;
207
+ }
208
+ CGFloat scale = self.scale;
209
+ id<SDAnimatedImageCoder> animatedCoder = nil;
210
+ for (id<SDImageCoder>coder in [SDImageCodersManager sharedManager].coders.reverseObjectEnumerator) {
211
+ if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) {
212
+ if ([coder canDecodeFromData:animatedImageData]) {
213
+ animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:animatedImageData options:@{SDImageCoderDecodeScaleFactor : @(scale)}];
214
+ break;
215
+ }
216
+ }
217
+ }
218
+ if (!animatedCoder) {
219
+ return self;
220
+ }
221
+ if (animatedCoder.animatedImageFrameCount > 1) {
222
+ _animatedCoder = animatedCoder;
223
+ }
224
+ }
225
+ return self;
226
+ }
227
+
228
+ - (void)encodeWithCoder:(NSCoder *)aCoder {
229
+ [super encodeWithCoder:aCoder];
230
+ [aCoder encodeInteger:self.animatedImageFormat forKey:NSStringFromSelector(@selector(animatedImageFormat))];
231
+ NSData *animatedImageData = self.animatedImageData;
232
+ if (animatedImageData) {
233
+ [aCoder encodeObject:animatedImageData forKey:NSStringFromSelector(@selector(animatedImageData))];
234
+ }
235
+ }
236
+
237
+ + (BOOL)supportsSecureCoding {
238
+ return YES;
239
+ }
240
+
241
+ #pragma mark - SDAnimatedImageProvider
242
+
243
+ - (NSData *)animatedImageData {
244
+ return [self.animatedCoder animatedImageData];
245
+ }
246
+
247
+ - (NSUInteger)animatedImageLoopCount {
248
+ return [self.animatedCoder animatedImageLoopCount];
249
+ }
250
+
251
+ - (NSUInteger)animatedImageFrameCount {
252
+ return [self.animatedCoder animatedImageFrameCount];
253
+ }
254
+
255
+ - (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index {
256
+ if (index >= self.animatedImageFrameCount) {
257
+ return nil;
258
+ }
259
+ if (self.isAllFramesLoaded) {
260
+ SDImageFrame *frame = [self.loadedAnimatedImageFrames objectAtIndex:index];
261
+ return frame.image;
262
+ }
263
+ return [self.animatedCoder animatedImageFrameAtIndex:index];
264
+ }
265
+
266
+ - (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index {
267
+ if (index >= self.animatedImageFrameCount) {
268
+ return 0;
269
+ }
270
+ if (self.isAllFramesLoaded) {
271
+ SDImageFrame *frame = [self.loadedAnimatedImageFrames objectAtIndex:index];
272
+ return frame.duration;
273
+ }
274
+ return [self.animatedCoder animatedImageDurationAtIndex:index];
275
+ }
276
+
277
+ @end
278
+
279
+ @implementation SDAnimatedImage (MemoryCacheCost)
280
+
281
+ - (NSUInteger)sd_memoryCost {
282
+ NSNumber *value = objc_getAssociatedObject(self, @selector(sd_memoryCost));
283
+ if (value != nil) {
284
+ return value.unsignedIntegerValue;
285
+ }
286
+
287
+ CGImageRef imageRef = self.CGImage;
288
+ if (!imageRef) {
289
+ return 0;
290
+ }
291
+ NSUInteger bytesPerFrame = CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef);
292
+ NSUInteger frameCount = 1;
293
+ if (self.isAllFramesLoaded) {
294
+ frameCount = self.animatedImageFrameCount;
295
+ }
296
+ frameCount = frameCount > 0 ? frameCount : 1;
297
+ NSUInteger cost = bytesPerFrame * frameCount;
298
+ return cost;
299
+ }
300
+
301
+ @end
302
+
303
+ @implementation SDAnimatedImage (Metadata)
304
+
305
+ - (BOOL)sd_isAnimated {
306
+ return YES;
307
+ }
308
+
309
+ - (NSUInteger)sd_imageLoopCount {
310
+ return self.animatedImageLoopCount;
311
+ }
312
+
313
+ - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount {
314
+ return;
315
+ }
316
+
317
+ - (NSUInteger)sd_imageFrameCount {
318
+ return self.animatedImageFrameCount;
319
+ }
320
+
321
+ - (SDImageFormat)sd_imageFormat {
322
+ return self.animatedImageFormat;
323
+ }
324
+
325
+ - (void)setSd_imageFormat:(SDImageFormat)sd_imageFormat {
326
+ return;
327
+ }
328
+
329
+ - (BOOL)sd_isVector {
330
+ return NO;
331
+ }
332
+
333
+ @end
334
+
335
+ @implementation SDAnimatedImage (MultiFormat)
336
+
337
+ + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {
338
+ return [self sd_imageWithData:data scale:1];
339
+ }
340
+
341
+ + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale {
342
+ return [self sd_imageWithData:data scale:scale firstFrameOnly:NO];
343
+ }
344
+
345
+ + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale firstFrameOnly:(BOOL)firstFrameOnly {
346
+ if (!data) {
347
+ return nil;
348
+ }
349
+ return [[self alloc] initWithData:data scale:scale options:@{SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)}];
350
+ }
351
+
352
+ - (nullable NSData *)sd_imageData {
353
+ NSData *imageData = self.animatedImageData;
354
+ if (imageData) {
355
+ return imageData;
356
+ } else {
357
+ return [self sd_imageDataAsFormat:self.animatedImageFormat];
358
+ }
359
+ }
360
+
361
+ - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {
362
+ return [self sd_imageDataAsFormat:imageFormat compressionQuality:1];
363
+ }
364
+
365
+ - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality {
366
+ return [self sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:NO];
367
+ }
368
+
369
+ - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality firstFrameOnly:(BOOL)firstFrameOnly {
370
+ if (firstFrameOnly) {
371
+ // First frame, use super implementation
372
+ return [super sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly];
373
+ }
374
+ NSUInteger frameCount = self.animatedImageFrameCount;
375
+ if (frameCount <= 1) {
376
+ // Static image, use super implementation
377
+ return [super sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly];
378
+ }
379
+ // Keep animated image encoding, loop each frame.
380
+ NSMutableArray<SDImageFrame *> *frames = [NSMutableArray arrayWithCapacity:frameCount];
381
+ for (size_t i = 0; i < frameCount; i++) {
382
+ UIImage *image = [self animatedImageFrameAtIndex:i];
383
+ NSTimeInterval duration = [self animatedImageDurationAtIndex:i];
384
+ SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration];
385
+ [frames addObject:frame];
386
+ }
387
+ UIImage *animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames];
388
+ NSData *imageData = [animatedImage sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly];
389
+ return imageData;
390
+ }
391
+
392
+ @end
@@ -0,0 +1,112 @@
1
+ /*
2
+ * This file is part of the SDWebImage package.
3
+ * (c) Olivier Poitrey <rs@dailymotion.com>
4
+ *
5
+ * For the full copyright and license information, please view the LICENSE
6
+ * file that was distributed with this source code.
7
+ */
8
+
9
+ #import <Foundation/Foundation.h>
10
+ #import "SDWebImageCompat.h"
11
+ #import "SDImageCoder.h"
12
+
13
+ typedef NS_ENUM(NSUInteger, SDAnimatedImagePlaybackMode) {
14
+ /**
15
+ * From first to last frame and stop or next loop.
16
+ */
17
+ SDAnimatedImagePlaybackModeNormal = 0,
18
+ /**
19
+ * From last frame to first frame and stop or next loop.
20
+ */
21
+ SDAnimatedImagePlaybackModeReverse,
22
+ /**
23
+ * From first frame to last frame and reverse again, like reciprocating.
24
+ */
25
+ SDAnimatedImagePlaybackModeBounce,
26
+ /**
27
+ * From last frame to first frame and reverse again, like reversed reciprocating.
28
+ */
29
+ SDAnimatedImagePlaybackModeReversedBounce,
30
+ };
31
+
32
+ /// A player to control the playback of animated image, which can be used to drive Animated ImageView or any rendering usage, like CALayer/WatchKit/SwiftUI rendering.
33
+ @interface SDAnimatedImagePlayer : NSObject
34
+
35
+ /// Current playing frame image. This value is KVO Compliance.
36
+ @property (nonatomic, readonly, nullable) UIImage *currentFrame;
37
+
38
+ /// Current frame index, zero based. This value is KVO Compliance.
39
+ @property (nonatomic, readonly) NSUInteger currentFrameIndex;
40
+
41
+ /// Current loop count since its latest animating. This value is KVO Compliance.
42
+ @property (nonatomic, readonly) NSUInteger currentLoopCount;
43
+
44
+ /// Total frame count for animated image rendering. Defaults is animated image's frame count.
45
+ /// @note For progressive animation, you can update this value when your provider receive more frames.
46
+ @property (nonatomic, assign) NSUInteger totalFrameCount;
47
+
48
+ /// Total loop count for animated image rendering. Default is animated image's loop count.
49
+ @property (nonatomic, assign) NSUInteger totalLoopCount;
50
+
51
+ /// The animation playback rate. Default is 1.0
52
+ /// `1.0` means the normal speed.
53
+ /// `0.0` means stopping the animation.
54
+ /// `0.0-1.0` means the slow speed.
55
+ /// `> 1.0` means the fast speed.
56
+ /// `< 0.0` is not supported currently and stop animation. (may support reverse playback in the future)
57
+ @property (nonatomic, assign) double playbackRate;
58
+
59
+ /// Asynchronous setup animation playback mode. Default mode is SDAnimatedImagePlaybackModeNormal.
60
+ @property (nonatomic, assign) SDAnimatedImagePlaybackMode playbackMode;
61
+
62
+ /// Provide a max buffer size by bytes. This is used to adjust frame buffer count and can be useful when the decoding cost is expensive (such as Animated WebP software decoding). Default is 0.
63
+ /// `0` means automatically adjust by calculating current memory usage.
64
+ /// `1` means without any buffer cache, each of frames will be decoded and then be freed after rendering. (Lowest Memory and Highest CPU)
65
+ /// `NSUIntegerMax` means cache all the buffer. (Lowest CPU and Highest Memory)
66
+ @property (nonatomic, assign) NSUInteger maxBufferSize;
67
+
68
+ /// You can specify a runloop mode to let it rendering.
69
+ /// Default is NSRunLoopCommonModes on multi-core device, NSDefaultRunLoopMode on single-core device
70
+ @property (nonatomic, copy, nonnull) NSRunLoopMode runLoopMode;
71
+
72
+ /// Create a player with animated image provider. If the provider's `animatedImageFrameCount` is less than 1, returns nil.
73
+ /// The provider can be any protocol implementation, like `SDAnimatedImage`, `SDImageGIFCoder`, etc.
74
+ /// @note This provider can represent mutable content, like progressive animated loading. But you need to update the frame count by yourself
75
+ /// @param provider The animated provider
76
+ - (nullable instancetype)initWithProvider:(nonnull id<SDAnimatedImageProvider>)provider;
77
+
78
+ /// Create a player with animated image provider. If the provider's `animatedImageFrameCount` is less than 1, returns nil.
79
+ /// The provider can be any protocol implementation, like `SDAnimatedImage` or `SDImageGIFCoder`, etc.
80
+ /// @note This provider can represent mutable content, like progressive animated loading. But you need to update the frame count by yourself
81
+ /// @param provider The animated provider
82
+ + (nullable instancetype)playerWithProvider:(nonnull id<SDAnimatedImageProvider>)provider;
83
+
84
+ /// The handler block when current frame and index changed.
85
+ @property (nonatomic, copy, nullable) void (^animationFrameHandler)(NSUInteger index, UIImage * _Nonnull frame);
86
+
87
+ /// The handler block when one loop count finished.
88
+ @property (nonatomic, copy, nullable) void (^animationLoopHandler)(NSUInteger loopCount);
89
+
90
+ /// Return the status whether animation is playing.
91
+ @property (nonatomic, readonly) BOOL isPlaying;
92
+
93
+ /// Start the animation. Or resume the previously paused animation.
94
+ - (void)startPlaying;
95
+
96
+ /// Pause the animation. Keep the current frame index and loop count.
97
+ - (void)pausePlaying;
98
+
99
+ /// Stop the animation. Reset the current frame index and loop count.
100
+ - (void)stopPlaying;
101
+
102
+ /// Seek to the desired frame index and loop count.
103
+ /// @note This can be used for advanced control like progressive loading, or skipping specify frames.
104
+ /// @param index The frame index
105
+ /// @param loopCount The loop count
106
+ - (void)seekToFrameAtIndex:(NSUInteger)index loopCount:(NSUInteger)loopCount;
107
+
108
+ /// Clear the frame cache buffer. The frame cache buffer size can be controlled by `maxBufferSize`.
109
+ /// By default, when stop or pause the animation, the frame buffer is still kept to ready for the next restart
110
+ - (void)clearFrameBuffer;
111
+
112
+ @end