@momo-kits/native-kits 0.0.1-beta.5 → 0.89.1-2

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 (406) hide show
  1. package/README.md +1 -0
  2. package/android/.gradle/8.0/checksums/checksums.lock +0 -0
  3. package/android/.gradle/8.0/dependencies-accessors/dependencies-accessors.lock +0 -0
  4. package/android/.gradle/8.0/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/8.0/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/8.0/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/8.0/gc.properties +0 -0
  8. package/android/.gradle/config.properties +2 -0
  9. package/android/.gradle/vcs-1/gc.properties +0 -0
  10. package/android/.idea/gradle.xml +12 -0
  11. package/android/.idea/migrations.xml +10 -0
  12. package/android/.idea/misc.xml +10 -0
  13. package/android/.idea/vcs.xml +6 -0
  14. package/android/.idea/workspace.xml +50 -0
  15. package/android/build.gradle +35 -69
  16. package/android/local.properties +8 -0
  17. package/android/proguard-rules.pro +21 -0
  18. package/android/src/main/AndroidManifest.xml +2 -2
  19. package/android/src/main/java/com/momoplatform/nativekits/foundations/Button.kt +16 -0
  20. package/android/src/main/java/com/momoplatform/nativekits/libs/Logo.kt +63 -0
  21. package/android/src/main/java/com/momoplatform/nativekits/libs/TrustBanner.kt +246 -0
  22. package/android/src/main/res/drawable/ic_launcher_background.xml +170 -0
  23. package/android/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
  24. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  25. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  26. package/android/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  27. package/android/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  28. package/android/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  29. package/android/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  30. package/android/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  31. package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  32. package/android/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  33. package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  34. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  35. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  36. package/android/src/main/res/values/colors.xml +10 -0
  37. package/android/src/main/res/values/strings.xml +3 -0
  38. package/android/src/main/res/values/themes.xml +3 -0
  39. package/android/src/main/res/values-night/themes.xml +3 -0
  40. package/android/src/main/res/xml/backup_rules.xml +13 -0
  41. package/android/src/main/res/xml/data_extraction_rules.xml +19 -0
  42. package/build.gradle.kts +18 -0
  43. package/compose/build.gradle.kts +82 -0
  44. package/compose/src/androidMain/AndroidManifest.xml +2 -0
  45. package/compose/src/androidMain/kotlin/vn/momo/kits/utils/Platform.kt +3 -0
  46. package/compose/src/androidMain/kotlin/vn/momo/kits/utils/SetMaskFilter.kt +8 -0
  47. package/compose/src/androidMain/kotlin/vn/momo/kits/utils/Utils.android.kt +14 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Components.kt +194 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +197 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +133 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +62 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +27 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +288 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +80 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +42 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +126 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +51 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +299 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +246 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +223 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +244 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +281 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PromotionPopup.kt +72 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +65 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +64 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +63 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +73 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +42 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +150 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +173 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +242 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +2 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1321 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Platform.kt +3 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/SetMaskFilter.kt +5 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +97 -0
  83. package/compose/src/iosMain/kotlin/vn/momo/kits/utils/Platform.kt +3 -0
  84. package/compose/src/iosMain/kotlin/vn/momo/kits/utils/SetMaskFilter.kt +9 -0
  85. package/compose/src/iosMain/kotlin/vn/momo/kits/utils/Utils.ios.kt +18 -0
  86. package/gradle.properties +19 -0
  87. package/gradlew +240 -0
  88. package/gradlew.bat +91 -0
  89. package/ios/Button/Button.swift +9 -2
  90. package/ios/CalculatorKeyboard/CalculatorKeyboard.swift +126 -0
  91. package/ios/Colors+Radius+Spacing/Colors.swift +21 -19
  92. package/ios/Input/Input.swift +1 -0
  93. package/ios/OTPKeyboard/KeyboardButton.swift +12 -4
  94. package/ios/Popup/PopupDisplay.swift +72 -81
  95. package/ios/Popup/PopupInput.swift +96 -0
  96. package/ios/Popup/PopupPromotion.swift +52 -0
  97. package/ios/ScrollIndicator/ScrollIndicator.swift +79 -0
  98. package/ios/Template/Logo/Logo.swift +75 -0
  99. package/ios/Template/TrustBanner/TrustBanner.swift +189 -0
  100. package/ios/native-kits.podspec +1 -1
  101. package/local.properties +8 -0
  102. package/package.json +6 -6
  103. package/publish.sh +1 -10
  104. package/settings.gradle.kts +41 -0
  105. package/android/gradle.properties +0 -5
  106. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsPackage.kt +0 -17
  107. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsViewManager.kt +0 -20
  108. package/example/ios/Example/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -63
  109. package/example/ios/Example/Assets.xcassets/Background.colorset/Contents.json +0 -38
  110. package/example/ios/Example/Assets.xcassets/Border.colorset/Contents.json +0 -38
  111. package/example/ios/Example/Assets.xcassets/Card.colorset/Contents.json +0 -38
  112. package/example/ios/Example/Assets.xcassets/Contents.json +0 -6
  113. package/example/ios/Example/Assets.xcassets/Error.colorset/Contents.json +0 -38
  114. package/example/ios/Example/Assets.xcassets/Primary.colorset/Contents.json +0 -38
  115. package/example/ios/Example/Assets.xcassets/PrimaryDark.colorset/Contents.json +0 -38
  116. package/example/ios/Example/Assets.xcassets/PrimaryLight.colorset/Contents.json +0 -38
  117. package/example/ios/Example/Assets.xcassets/Secondary.colorset/Contents.json +0 -38
  118. package/example/ios/Example/Assets.xcassets/Success.colorset/Contents.json +0 -38
  119. package/example/ios/Example/Assets.xcassets/Text.colorset/Contents.json +0 -38
  120. package/example/ios/Example/Assets.xcassets/TextSecondary.colorset/Contents.json +0 -38
  121. package/example/ios/Example/Assets.xcassets/Warning.colorset/Contents.json +0 -38
  122. package/example/ios/Example/ComponentDetail.swift +0 -35
  123. package/example/ios/Example/ComponentItem.swift +0 -24
  124. package/example/ios/Example/ComponentModel.swift +0 -38
  125. package/example/ios/Example/ContentView.swift +0 -39
  126. package/example/ios/Example/Example.entitlements +0 -10
  127. package/example/ios/Example/Foundation/ButtonDemo.swift +0 -80
  128. package/example/ios/Example/Foundation/ImageDemo.swift +0 -43
  129. package/example/ios/Example/Foundation/Popup/ActionSheets.swift +0 -136
  130. package/example/ios/Example/Foundation/Popup/Floats.swift +0 -127
  131. package/example/ios/Example/Foundation/Popup/Popups.swift +0 -51
  132. package/example/ios/Example/Foundation/PopupDemo.swift +0 -389
  133. package/example/ios/Example/Foundation/TextInputDemo.swift +0 -36
  134. package/example/ios/Example/Foundation/TypographyDemo.swift +0 -53
  135. package/example/ios/Example/Foundation.swift +0 -26
  136. package/example/ios/Example/Info.plist +0 -18
  137. package/example/ios/Example/Library/CheckboxDemo.swift +0 -19
  138. package/example/ios/Example/Library/SwipeableDemo.swift +0 -105
  139. package/example/ios/Example/Library/SwitchDemo.swift +0 -19
  140. package/example/ios/Example/Library.swift +0 -26
  141. package/example/ios/Example/Main.swift +0 -27
  142. package/example/ios/Example/Overview.swift +0 -20
  143. package/example/ios/Example/Preview Content/Preview Assets.xcassets/Contents.json +0 -6
  144. package/example/ios/Example/Resource/SFProText-Black.ttf +0 -0
  145. package/example/ios/Example/Resource/SFProText-Bold.ttf +0 -0
  146. package/example/ios/Example/Resource/SFProText-Heavy.ttf +0 -0
  147. package/example/ios/Example/Resource/SFProText-Light.ttf +0 -0
  148. package/example/ios/Example/Resource/SFProText-Medium.ttf +0 -0
  149. package/example/ios/Example/Resource/SFProText-Regular.ttf +0 -0
  150. package/example/ios/Example/Resource/SFProText-Semibold.ttf +0 -0
  151. package/example/ios/Example/Resource/SFProText-Thin.ttf +0 -0
  152. package/example/ios/Example/Resource/SFProText-Ultralight.ttf +0 -0
  153. package/example/ios/Example/Resource/foundation.json +0 -33
  154. package/example/ios/Example/Resource/library.json +0 -18
  155. package/example/ios/Example/Utils.swift +0 -30
  156. package/example/ios/Example/ViewModifier/DarkViewModifier.swift +0 -22
  157. package/example/ios/Example.xcodeproj/project.pbxproj +0 -581
  158. package/example/ios/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  159. package/example/ios/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  160. package/example/ios/Example.xcodeproj/project.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  161. package/example/ios/Example.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  162. package/example/ios/Example.xcworkspace/contents.xcworkspacedata +0 -10
  163. package/example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  164. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  165. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
  166. package/example/ios/Podfile +0 -7
  167. package/example/ios/Podfile.lock +0 -35
  168. package/example/ios/Pods/Local Podspecs/MoMoUIKits.podspec.json +0 -37
  169. package/example/ios/Pods/Manifest.lock +0 -35
  170. package/example/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -2047
  171. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  172. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  173. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  174. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  175. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  176. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
  177. package/example/ios/Pods/SDWebImage/LICENSE +0 -20
  178. package/example/ios/Pods/SDWebImage/README.md +0 -352
  179. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.h +0 -340
  180. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.m +0 -172
  181. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +0 -63
  182. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +0 -165
  183. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +0 -67
  184. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +0 -120
  185. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +0 -114
  186. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +0 -392
  187. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h +0 -112
  188. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m +0 -420
  189. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +0 -23
  190. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +0 -133
  191. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.h +0 -168
  192. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m +0 -79
  193. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +0 -110
  194. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +0 -540
  195. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +0 -145
  196. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +0 -326
  197. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h +0 -73
  198. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +0 -256
  199. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +0 -19
  200. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +0 -58
  201. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h +0 -23
  202. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m +0 -98
  203. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +0 -450
  204. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +0 -1030
  205. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +0 -153
  206. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +0 -68
  207. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +0 -156
  208. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +0 -138
  209. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.h +0 -81
  210. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.m +0 -556
  211. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +0 -297
  212. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +0 -26
  213. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +0 -153
  214. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +0 -822
  215. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h +0 -58
  216. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +0 -130
  217. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h +0 -36
  218. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m +0 -28
  219. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +0 -22
  220. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +0 -58
  221. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +0 -28
  222. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +0 -127
  223. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h +0 -25
  224. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m +0 -101
  225. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +0 -58
  226. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +0 -807
  227. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h +0 -30
  228. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +0 -420
  229. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h +0 -146
  230. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +0 -170
  231. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h +0 -40
  232. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m +0 -123
  233. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.h +0 -241
  234. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.m +0 -331
  235. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +0 -78
  236. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +0 -158
  237. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h +0 -32
  238. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m +0 -39
  239. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +0 -36
  240. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m +0 -39
  241. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.h +0 -95
  242. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m +0 -17
  243. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +0 -352
  244. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +0 -149
  245. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +0 -314
  246. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +0 -658
  247. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +0 -113
  248. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +0 -60
  249. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h +0 -49
  250. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m +0 -55
  251. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +0 -191
  252. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +0 -722
  253. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +0 -69
  254. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m +0 -71
  255. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h +0 -69
  256. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m +0 -73
  257. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +0 -32
  258. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +0 -16
  259. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.h +0 -115
  260. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +0 -275
  261. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +0 -290
  262. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +0 -775
  263. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +0 -27
  264. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m +0 -14
  265. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.h +0 -72
  266. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m +0 -59
  267. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.h +0 -143
  268. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m +0 -303
  269. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.h +0 -131
  270. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.m +0 -194
  271. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.h +0 -387
  272. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.m +0 -234
  273. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h +0 -24
  274. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m +0 -23
  275. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h +0 -46
  276. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m +0 -60
  277. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h +0 -26
  278. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m +0 -22
  279. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h +0 -27
  280. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +0 -47
  281. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +0 -89
  282. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +0 -221
  283. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.h +0 -80
  284. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m +0 -47
  285. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.h +0 -146
  286. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +0 -824
  287. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.h +0 -129
  288. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.m +0 -76
  289. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.h +0 -194
  290. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m +0 -67
  291. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +0 -110
  292. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +0 -446
  293. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +0 -48
  294. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +0 -82
  295. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h +0 -24
  296. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m +0 -42
  297. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h +0 -14
  298. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +0 -29
  299. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h +0 -21
  300. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m +0 -92
  301. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h +0 -18
  302. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m +0 -32
  303. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h +0 -29
  304. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +0 -227
  305. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h +0 -19
  306. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m +0 -127
  307. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h +0 -23
  308. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +0 -164
  309. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h +0 -21
  310. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m +0 -83
  311. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +0 -39
  312. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.h +0 -122
  313. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m +0 -13
  314. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h +0 -20
  315. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m +0 -79
  316. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h +0 -19
  317. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDmetamacros.h +0 -667
  318. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h +0 -18
  319. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m +0 -42
  320. package/example/ios/Pods/SDWebImage/WebImage/SDWebImage.h +0 -89
  321. package/example/ios/Pods/SDWebImageSwiftUI/LICENSE +0 -19
  322. package/example/ios/Pods/SDWebImageSwiftUI/README.md +0 -690
  323. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/AnimatedImage.swift +0 -870
  324. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Backport.swift +0 -59
  325. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/OnChange.swift +0 -52
  326. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Overlay.swift +0 -124
  327. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/StateObject.swift +0 -151
  328. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Image.swift +0 -78
  329. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageManager.swift +0 -132
  330. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImagePlayer.swift +0 -122
  331. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift +0 -133
  332. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ActivityIndicator.swift +0 -82
  333. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift +0 -97
  334. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ProgressIndicator.swift +0 -114
  335. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SDWebImageSwiftUI.swift +0 -64
  336. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SwiftUICompatibility.swift +0 -92
  337. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Transition/Transition.swift +0 -93
  338. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/WebImage.swift +0 -509
  339. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h +0 -15
  340. package/example/ios/Pods/SkeletonUI/LICENSE +0 -21
  341. package/example/ios/Pods/SkeletonUI/README.md +0 -137
  342. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AngleInteractor.swift +0 -29
  343. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AnglePresenter.swift +0 -7
  344. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Animation/AnimationInteractor.swift +0 -56
  345. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearanceInteractor.swift +0 -58
  346. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearancePresenter.swift +0 -5
  347. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ClosedRange+Normalize.swift +0 -16
  348. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Image+OptionalType.swift +0 -102
  349. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ModifiedContent+SkeletonModifier.swift +0 -26
  350. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Optional+OptionalType.swift +0 -5
  351. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/SecureField+OptionalType.swift +0 -19
  352. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Text+OptionalType.swift +0 -27
  353. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/TextField+OptionalType.swift +0 -35
  354. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Toggle+OptionalType.swift +0 -29
  355. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/UnitPoint+Angle.swift +0 -8
  356. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/View+SkeletonModifier.swift +0 -8
  357. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Modifiers/SkeletonModifier.swift +0 -52
  358. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilineInteractor.swift +0 -41
  359. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilinePresenter.swift +0 -9
  360. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityInteractor.swift +0 -29
  361. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityPresenter.swift +0 -7
  362. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionInteractor.swift +0 -29
  363. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionPresenter.swift +0 -7
  364. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Protocols/OptionalType.swift +0 -4
  365. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusInteractor.swift +0 -29
  366. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusPresenter.swift +0 -7
  367. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapeInteractor.swift +0 -33
  368. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapePresenter.swift +0 -5
  369. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonForEach.swift +0 -20
  370. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonInteractor.swift +0 -27
  371. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonList.swift +0 -20
  372. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonPresenter.swift +0 -15
  373. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonShape.swift +0 -64
  374. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonView.swift +0 -25
  375. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-dummy.m +0 -5
  376. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-prefix.pch +0 -12
  377. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-umbrella.h +0 -16
  378. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.debug.xcconfig +0 -15
  379. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.modulemap +0 -6
  380. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.release.xcconfig +0 -15
  381. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +0 -75
  382. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +0 -119
  383. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m +0 -5
  384. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h +0 -16
  385. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +0 -15
  386. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap +0 -6
  387. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +0 -15
  388. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m +0 -5
  389. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch +0 -12
  390. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h +0 -75
  391. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +0 -14
  392. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap +0 -6
  393. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +0 -14
  394. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-dummy.m +0 -5
  395. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-prefix.pch +0 -12
  396. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-umbrella.h +0 -17
  397. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.debug.xcconfig +0 -17
  398. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.modulemap +0 -6
  399. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.release.xcconfig +0 -17
  400. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-dummy.m +0 -5
  401. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-prefix.pch +0 -12
  402. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-umbrella.h +0 -16
  403. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.debug.xcconfig +0 -12
  404. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.modulemap +0 -6
  405. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.release.xcconfig +0 -12
  406. package/ios/Extensions/View++.swift +0 -9
@@ -1,509 +0,0 @@
1
- /*
2
- * This file is part of the SDWebImage package.
3
- * (c) DreamPiggy <lizhuoli1126@126.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 SwiftUI
10
- import SDWebImage
11
-
12
- /// Data Binding Object, only properties in this object can support changes from user with @State and refresh
13
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
14
- final class WebImageModel : ObservableObject {
15
- /// URL image
16
- @Published var url: URL?
17
- @Published var options: SDWebImageOptions = []
18
- @Published var context: [SDWebImageContextOption : Any]? = nil
19
- }
20
-
21
- /// Completion Handler Binding Object, supports dynamic @State changes
22
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
23
- final class WebImageHandler: ObservableObject {
24
- // Completion Handler
25
- @Published var successBlock: ((PlatformImage, Data?, SDImageCacheType) -> Void)?
26
- @Published var failureBlock: ((Error) -> Void)?
27
- @Published var progressBlock: ((Int, Int) -> Void)?
28
- }
29
-
30
- /// Configuration Binding Object, supports dynamic @State changes
31
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
32
- final class WebImageConfiguration: ObservableObject {
33
- var retryOnAppear: Bool = true
34
- var cancelOnDisappear: Bool = true
35
- var maxBufferSize: UInt?
36
- var customLoopCount: UInt?
37
- var runLoopMode: RunLoop.Mode = .common
38
- var pausable: Bool = true
39
- var purgeable: Bool = false
40
- var playbackRate: Double = 1.0
41
- var playbackMode: SDAnimatedImagePlaybackMode = .normal
42
- }
43
-
44
- /// A Image View type to load image from url. Supports static/animated image format.
45
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
46
- public struct WebImage : View {
47
- var configurations: [(Image) -> Image] = []
48
-
49
- var placeholder: AnyView?
50
-
51
- /// A Binding to control the animation. You can bind external logic to control the animation status.
52
- /// True to start animation, false to stop animation.
53
- @Binding public var isAnimating: Bool
54
-
55
- /// A observed object to pass through the image model to manager
56
- @ObservedObject var imageModel: WebImageModel
57
-
58
- /// A observed object to pass through the image handler to manager
59
- @ObservedObject var imageHandler = WebImageHandler()
60
-
61
- /// A observed object to pass through the image configuration to player
62
- @ObservedObject var imageConfiguration = WebImageConfiguration()
63
-
64
- @ObservedObject var indicatorStatus : IndicatorStatus
65
-
66
- // FIXME: Use SwiftUI StateObject and remove onPlatformAppear once drop iOS 13 support
67
- @Backport.StateObject var imagePlayer = ImagePlayer()
68
-
69
- // FIXME: Use SwiftUI StateObject and remove onPlatformAppear once drop iOS 13 support
70
- @Backport.StateObject var imageManager : ImageManager
71
-
72
- /// Create a web image with url, placeholder, custom options and context. Optional can support animated image using Binding.
73
- /// - Parameter url: The image url
74
- /// - Parameter options: The options to use when downloading the image. See `SDWebImageOptions` for the possible values.
75
- /// - Parameter context: A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold.
76
- /// - Parameter isAnimating: The binding for animation control. The binding value should be `true` when initialized to setup the correct animated image class. If not, you must provide the `.animatedImageClass` explicitly. When the animation started, this binding can been used to start / stop the animation.
77
- public init(url: URL?, options: SDWebImageOptions = [], context: [SDWebImageContextOption : Any]? = nil, isAnimating: Binding<Bool>) {
78
- self._isAnimating = isAnimating
79
- var context = context ?? [:]
80
- // provide animated image class if the initialized `isAnimating` is true, user can still custom the image class if they want
81
- if isAnimating.wrappedValue {
82
- if context[.animatedImageClass] == nil {
83
- context[.animatedImageClass] = SDAnimatedImage.self
84
- }
85
- }
86
- let imageModel = WebImageModel()
87
- imageModel.url = url
88
- imageModel.options = options
89
- imageModel.context = context
90
- _imageModel = ObservedObject(wrappedValue: imageModel)
91
- let imageManager = ImageManager()
92
- _imageManager = Backport.StateObject(wrappedValue: imageManager)
93
- _indicatorStatus = ObservedObject(wrappedValue: imageManager.indicatorStatus)
94
- }
95
-
96
- /// Create a web image with url, placeholder, custom options and context.
97
- /// - Parameter url: The image url
98
- /// - Parameter options: The options to use when downloading the image. See `SDWebImageOptions` for the possible values.
99
- /// - Parameter context: A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold.
100
- public init(url: URL?, options: SDWebImageOptions = [], context: [SDWebImageContextOption : Any]? = nil) {
101
- self.init(url: url, options: options, context: context, isAnimating: .constant(true))
102
- }
103
-
104
- public var body: some View {
105
- // Container
106
- return ZStack {
107
- // This empty Image is used to receive container's level appear/disappear to start/stop player, reduce CPU usage
108
- Image(platformImage: .empty)
109
- .onAppear {
110
- self.appearAction()
111
- }
112
- .onDisappear {
113
- self.disappearAction()
114
- }
115
- // Render Logic for actual animated image frame or static image
116
- if imageManager.image != nil && imageModel.url == imageManager.currentURL {
117
- if isAnimating && !imageManager.isIncremental {
118
- setupPlayer()
119
- } else {
120
- displayImage()
121
- }
122
- } else {
123
- // Load Logic
124
- setupPlaceholder()
125
- .onPlatformAppear(appear: {
126
- self.setupManager()
127
- if (self.imageManager.error == nil) {
128
- // Load remote image when first appear
129
- self.imageManager.load(url: imageModel.url, options: imageModel.options, context: imageModel.context)
130
- }
131
- guard self.imageConfiguration.retryOnAppear else { return }
132
- // When using prorgessive loading, the new partial image will cause onAppear. Filter this case
133
- if self.imageManager.error != nil && !self.imageManager.isIncremental {
134
- self.imageManager.load(url: imageModel.url, options: imageModel.options, context: imageModel.context)
135
- }
136
- }, disappear: {
137
- guard self.imageConfiguration.cancelOnDisappear else { return }
138
- // When using prorgessive loading, the previous partial image will cause onDisappear. Filter this case
139
- if self.imageManager.error != nil && !self.imageManager.isIncremental {
140
- self.imageManager.cancel()
141
- }
142
- })
143
- }
144
- }
145
- }
146
-
147
- /// Configure the platform image into the SwiftUI rendering image
148
- func configure(image: PlatformImage) -> some View {
149
- // Actual rendering SwiftUI image
150
- let result: Image
151
- // NSImage works well with SwiftUI, include Vector and EXIF images.
152
- #if os(macOS)
153
- result = Image(nsImage: image)
154
- #else
155
- // Fix the SwiftUI.Image rendering issue, like when use EXIF UIImage, the `.aspectRatio` does not works. SwiftUI's Bug :). See #101
156
- // Always prefers `Image(decorative:scale:)` but not `Image(uiImage:scale:) to avoid bug on `TabbarItem`. See #175
157
- var cgImage: CGImage?
158
- // Case 1: Vector Image, draw bitmap image
159
- if image.sd_isVector {
160
- // ensure CGImage is nil
161
- if image.cgImage == nil {
162
- // draw vector into bitmap with the screen scale (behavior like AppKit)
163
- #if os(iOS) || os(tvOS)
164
- let scale = UIScreen.main.scale
165
- #else
166
- let scale = WKInterfaceDevice.current().screenScale
167
- #endif
168
- UIGraphicsBeginImageContextWithOptions(image.size, false, scale)
169
- image.draw(at: .zero)
170
- cgImage = UIGraphicsGetImageFromCurrentImageContext()?.cgImage
171
- UIGraphicsEndImageContext()
172
- } else {
173
- cgImage = image.cgImage
174
- }
175
- } else {
176
- // Case 2: EXIF Image and Bitmap Image, prefers CGImage
177
- cgImage = image.cgImage
178
- }
179
- // If we have CGImage, use CGImage based API, else use UIImage based API
180
- if let cgImage = cgImage {
181
- let scale = image.scale
182
- let orientation = image.imageOrientation.toSwiftUI
183
- result = Image(decorative: cgImage, scale: scale, orientation: orientation)
184
- } else {
185
- result = Image(uiImage: image)
186
- }
187
- #endif
188
-
189
- // Should not use `EmptyView`, which does not respect to the container's frame modifier
190
- // Using a empty image instead for better compatible
191
- return configurations.reduce(result) { (previous, configuration) in
192
- configuration(previous)
193
- }
194
- }
195
-
196
- /// Image Manager status
197
- func setupManager() {
198
- self.imageManager.successBlock = self.imageHandler.successBlock
199
- self.imageManager.failureBlock = self.imageHandler.failureBlock
200
- self.imageManager.progressBlock = self.imageHandler.progressBlock
201
- if imageModel.url != imageManager.currentURL {
202
- imageManager.cancel()
203
- imageManager.image = nil
204
- imageManager.imageData = nil
205
- imageManager.cacheType = .none
206
- imageManager.error = nil
207
- imageManager.isIncremental = false
208
- imageManager.indicatorStatus.isLoading = false
209
- imageManager.indicatorStatus.progress = 0
210
- }
211
- }
212
-
213
- /// Container level to resume animation when appear
214
- func appearAction() {
215
- self.imagePlayer.startPlaying()
216
- }
217
-
218
- /// Container level to stop animation when disappear
219
- func disappearAction() {
220
- if self.imageConfiguration.pausable {
221
- self.imagePlayer.pausePlaying()
222
- } else {
223
- self.imagePlayer.stopPlaying()
224
- }
225
- if self.imageConfiguration.purgeable {
226
- self.imagePlayer.clearFrameBuffer()
227
- }
228
- }
229
-
230
- /// Static Image Display
231
- func displayImage() -> some View {
232
- disappearAction()
233
- if let currentFrame = imagePlayer.currentFrame {
234
- return configure(image: currentFrame)
235
- } else {
236
- return configure(image: imageManager.image!)
237
- }
238
- }
239
-
240
- /// Animated Image Support
241
- func setupPlayer() -> some View {
242
- let shouldResetPlayer: Bool
243
- // Image compare should use ===/!==, which is faster than isEqual:
244
- if let animatedImage = imagePlayer.currentAnimatedImage, animatedImage !== imageManager.image! {
245
- shouldResetPlayer = true
246
- } else {
247
- shouldResetPlayer = false
248
- }
249
- if !shouldResetPlayer {
250
- imagePlayer.startPlaying()
251
- }
252
- if let currentFrame = imagePlayer.currentFrame, !shouldResetPlayer {
253
- // Bind frame index to ID to ensure onDisappear called with sync
254
- return configure(image: currentFrame)
255
- .id("\(imageModel.url!):\(imagePlayer.currentFrameIndex)")
256
- .onAppear {}
257
- } else {
258
- return configure(image: imageManager.image!)
259
- .id("\(imageModel.url!):\(imagePlayer.currentFrameIndex)")
260
- .onAppear {
261
- if shouldResetPlayer {
262
- // Clear previous status
263
- self.imagePlayer.stopPlaying()
264
- self.imagePlayer.player = nil
265
- self.imagePlayer.currentFrame = nil;
266
- self.imagePlayer.currentFrameIndex = 0;
267
- self.imagePlayer.currentLoopCount = 0;
268
- }
269
- if let animatedImage = imageManager.image as? PlatformImage & SDAnimatedImageProvider {
270
- self.imagePlayer.customLoopCount = self.imageConfiguration.customLoopCount
271
- self.imagePlayer.maxBufferSize = self.imageConfiguration.maxBufferSize
272
- self.imagePlayer.runLoopMode = self.imageConfiguration.runLoopMode
273
- self.imagePlayer.playbackMode = self.imageConfiguration.playbackMode
274
- self.imagePlayer.playbackRate = self.imageConfiguration.playbackRate
275
- // Setup new player
276
- self.imagePlayer.setupPlayer(animatedImage: animatedImage)
277
- self.imagePlayer.startPlaying()
278
- }
279
- }
280
- }
281
- }
282
-
283
- /// Placeholder View Support
284
- func setupPlaceholder() -> some View {
285
- // Don't use `Group` because it will trigger `.onAppear` and `.onDisappear` when condition view removed, treat placeholder as an entire component
286
- let result: AnyView
287
- if let placeholder = placeholder {
288
- // If use `.delayPlaceholder`, the placeholder is applied after loading failed, hide during loading :)
289
- if imageModel.options.contains(.delayPlaceholder) && imageManager.error == nil {
290
- result = AnyView(configure(image: .empty))
291
- } else {
292
- result = placeholder
293
- }
294
- } else {
295
- result = AnyView(configure(image: .empty))
296
- }
297
- // Custom ID to avoid SwiftUI engine cache the status, and does not call `onAppear` when placeholder not changed (See `ContentView.swift/ContentView2` case)
298
- // Because we load the image url in placeholder's `onAppear`, it should be called to sync with state changes :)
299
- return result.id(imageModel.url)
300
- }
301
- }
302
-
303
- // Layout
304
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
305
- extension WebImage {
306
- func configure(_ block: @escaping (Image) -> Image) -> WebImage {
307
- var result = self
308
- result.configurations.append(block)
309
- return result
310
- }
311
-
312
- /// Configurate this view's image with the specified cap insets and options.
313
- /// - Parameter capInsets: The values to use for the cap insets.
314
- /// - Parameter resizingMode: The resizing mode
315
- public func resizable(
316
- capInsets: EdgeInsets = EdgeInsets(),
317
- resizingMode: Image.ResizingMode = .stretch) -> WebImage
318
- {
319
- configure { $0.resizable(capInsets: capInsets, resizingMode: resizingMode) }
320
- }
321
-
322
- /// Configurate this view's rendering mode.
323
- /// - Parameter renderingMode: The resizing mode
324
- public func renderingMode(_ renderingMode: Image.TemplateRenderingMode?) -> WebImage {
325
- configure { $0.renderingMode(renderingMode) }
326
- }
327
-
328
- /// Configurate this view's image interpolation quality
329
- /// - Parameter interpolation: The interpolation quality
330
- public func interpolation(_ interpolation: Image.Interpolation) -> WebImage {
331
- configure { $0.interpolation(interpolation) }
332
- }
333
-
334
- /// Configurate this view's image antialiasing
335
- /// - Parameter isAntialiased: Whether or not to allow antialiasing
336
- public func antialiased(_ isAntialiased: Bool) -> WebImage {
337
- configure { $0.antialiased(isAntialiased) }
338
- }
339
- }
340
-
341
- // Completion Handler
342
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
343
- extension WebImage {
344
-
345
- /// Provide the action when image load fails.
346
- /// - Parameters:
347
- /// - action: The action to perform. The first arg is the error during loading. If `action` is `nil`, the call has no effect.
348
- /// - Returns: A view that triggers `action` when this image load fails.
349
- public func onFailure(perform action: ((Error) -> Void)? = nil) -> WebImage {
350
- self.imageHandler.failureBlock = action
351
- return self
352
- }
353
-
354
- /// Provide the action when image load successes.
355
- /// - Parameters:
356
- /// - action: The action to perform. The first arg is the loaded image, the second arg is the loaded image data, the third arg is the cache type loaded from. If `action` is `nil`, the call has no effect.
357
- /// - Returns: A view that triggers `action` when this image load successes.
358
- public func onSuccess(perform action: ((PlatformImage, Data?, SDImageCacheType) -> Void)? = nil) -> WebImage {
359
- self.imageHandler.successBlock = action
360
- return self
361
- }
362
-
363
- /// Provide the action when image load progress changes.
364
- /// - Parameters:
365
- /// - action: The action to perform. The first arg is the received size, the second arg is the total size, all in bytes. If `action` is `nil`, the call has no effect.
366
- /// - Returns: A view that triggers `action` when this image load successes.
367
- public func onProgress(perform action: ((Int, Int) -> Void)? = nil) -> WebImage {
368
- self.imageHandler.progressBlock = action
369
- return self
370
- }
371
- }
372
-
373
- // WebImage Modifier
374
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
375
- extension WebImage {
376
-
377
- /// Associate a placeholder when loading image with url
378
- /// - note: The differences between Placeholder and Indicator, is that placeholder does not supports animation, and return type is different
379
- /// - Parameter content: A view that describes the placeholder.
380
- public func placeholder<T>(@ViewBuilder content: () -> T) -> WebImage where T : View {
381
- var result = self
382
- result.placeholder = AnyView(content())
383
- return result
384
- }
385
-
386
- /// Associate a placeholder image when loading image with url
387
- /// - note: This placeholder image will apply the same size and resizable from WebImage for convenience. If you don't want this, use the ViewBuilder one above instead
388
- /// - Parameter image: A Image view that describes the placeholder.
389
- public func placeholder(_ image: Image) -> WebImage {
390
- return placeholder {
391
- configurations.reduce(image) { (previous, configuration) in
392
- configuration(previous)
393
- }
394
- }
395
- }
396
-
397
- /// Control the behavior to retry the failed loading when view become appears again
398
- /// - Parameter flag: Whether or not to retry the failed loading
399
- public func retryOnAppear(_ flag: Bool) -> WebImage {
400
- self.imageConfiguration.retryOnAppear = flag
401
- return self
402
- }
403
-
404
- /// Control the behavior to cancel the pending loading when view become disappear again
405
- /// - Parameter flag: Whether or not to cancel the pending loading
406
- public func cancelOnDisappear(_ flag: Bool) -> WebImage {
407
- self.imageConfiguration.cancelOnDisappear = flag
408
- return self
409
- }
410
- }
411
-
412
- // Indicator
413
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
414
- extension WebImage {
415
-
416
- /// Associate a indicator when loading image with url
417
- /// - Parameter indicator: The indicator type, see `Indicator`
418
- public func indicator<T>(_ indicator: Indicator<T>) -> some View where T : View {
419
- return self.modifier(IndicatorViewModifier(status: indicatorStatus, indicator: indicator))
420
- }
421
-
422
- /// Associate a indicator when loading image with url, convenient method with block
423
- /// - Parameter content: A view that describes the indicator.
424
- public func indicator<T>(@ViewBuilder content: @escaping (_ isAnimating: Binding<Bool>, _ progress: Binding<Double>) -> T) -> some View where T : View {
425
- return indicator(Indicator(content: content))
426
- }
427
- }
428
-
429
- // Animated Image
430
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
431
- extension WebImage {
432
-
433
- /// Total loop count for animated image rendering. Defaults to nil.
434
- /// - Note: Pass nil to disable customization, use the image itself loop count (`animatedImageLoopCount`) instead
435
- /// - Parameter loopCount: The animation loop count
436
- public func customLoopCount(_ loopCount: UInt?) -> WebImage {
437
- self.imageConfiguration.customLoopCount = loopCount
438
- return self
439
- }
440
-
441
- /// 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 nil.
442
- ///
443
- /// `0` or nil means automatically adjust by calculating current memory usage.
444
- /// `1` means without any buffer cache, each of frames will be decoded and then be freed after rendering. (Lowest Memory and Highest CPU)
445
- /// `UInt.max` means cache all the buffer. (Lowest CPU and Highest Memory)
446
- /// - Parameter bufferSize: The max buffer size
447
- public func maxBufferSize(_ bufferSize: UInt?) -> WebImage {
448
- self.imageConfiguration.maxBufferSize = bufferSize
449
- return self
450
- }
451
-
452
- /// The runLoopMode when animation is playing on. Defaults is `.common`
453
- /// You can specify a runloop mode to let it rendering.
454
- /// - Note: This is useful for some cases, for example, always specify NSDefaultRunLoopMode, if you want to pause the animation when user scroll (for Mac user, drag the mouse or touchpad)
455
- /// - Parameter runLoopMode: The runLoopMode for animation
456
- public func runLoopMode(_ runLoopMode: RunLoop.Mode) -> WebImage {
457
- self.imageConfiguration.runLoopMode = runLoopMode
458
- return self
459
- }
460
-
461
- /// Whether or not to pause the animation (keep current frame), instead of stop the animation (frame index reset to 0). When `isAnimating` binding value changed to false. Defaults is true.
462
- /// - Note: For some of use case, you may want to reset the frame index to 0 when stop, but some other want to keep the current frame index.
463
- /// - Parameter pausable: Whether or not to pause the animation instead of stop the animation.
464
- public func pausable(_ pausable: Bool) -> WebImage {
465
- self.imageConfiguration.pausable = pausable
466
- return self
467
- }
468
-
469
- /// Whether or not to clear frame buffer cache when stopped. Defaults is false.
470
- /// Note: This is useful when you want to limit the memory usage during frequently visibility changes (such as image view inside a list view, then push and pop)
471
- /// - Parameter purgeable: Whether or not to clear frame buffer cache when stopped.
472
- public func purgeable(_ purgeable: Bool) -> WebImage {
473
- self.imageConfiguration.purgeable = purgeable
474
- return self
475
- }
476
-
477
- /// Control the animation playback rate. Default is 1.0.
478
- /// `1.0` means the normal speed.
479
- /// `0.0` means stopping the animation.
480
- /// `0.0-1.0` means the slow speed.
481
- /// `> 1.0` means the fast speed.
482
- /// `< 0.0` is not supported currently and stop animation. (may support reverse playback in the future)
483
- /// - Parameter playbackRate: The animation playback rate.
484
- public func playbackRate(_ playbackRate: Double) -> WebImage {
485
- self.imageConfiguration.playbackRate = playbackRate
486
- return self
487
- }
488
-
489
- /// Control the animation playback mode. Default is .normal
490
- /// - Parameter playbackMode: The playback mode, including normal order, reverse order, bounce order and reversed bounce order.
491
- public func playbackMode(_ playbackMode: SDAnimatedImagePlaybackMode) -> WebImage {
492
- self.imageConfiguration.playbackMode = playbackMode
493
- return self
494
- }
495
- }
496
-
497
- #if DEBUG
498
- @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
499
- struct WebImage_Previews : PreviewProvider {
500
- static var previews: some View {
501
- Group {
502
- WebImage(url: URL(string: "https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/SDWebImage_logo.png"))
503
- .resizable()
504
- .aspectRatio(contentMode: .fit)
505
- .padding()
506
- }
507
- }
508
- }
509
- #endif
@@ -1,15 +0,0 @@
1
- /*
2
- * This file is part of the SDWebImage package.
3
- * (c) DreamPiggy <lizhuoli1126@126.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
-
11
- //! Project version number for SDWebImageSwiftUI.
12
- FOUNDATION_EXPORT double SDWebImageSwiftUIVersionNumber;
13
-
14
- //! Project version string for SDWebImageSwiftUI.
15
- FOUNDATION_EXPORT const unsigned char SDWebImageSwiftUIVersionString[];
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2019 CSolanaM
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,137 +0,0 @@
1
- <p align='center'>
2
- <img src='Assets/header.gif'>
3
- </p>
4
- <p align='center'>
5
- <img src='https://github.com/CSolanaM/SkeletonUI/workflows/build/badge.svg'>
6
- <img src='https://github.com/CSolanaM/SkeletonUI/workflows/test/badge.svg'>
7
- <a href="https://codecov.io/gh/CSolanaM/SkeletonUI"><img src="https://codecov.io/gh/CSolanaM/SkeletonUI/branch/master/graph/badge.svg" /></a>
8
- <img src='https://img.shields.io/cocoapods/p/SkeletonUI'>
9
- <img src='https://img.shields.io/github/v/tag/CSolanaM/SkeletonUI?color=lightGray&label=version'>
10
- <img src='https://img.shields.io/github/license/CSolanaM/SkeletonUI?color=lightGray'>
11
- <a href='https://twitter.com/CSolanaM'><img src='https://img.shields.io/badge/twitter-@CSolanaM-lightGray.svg?style=flat&label=contact'></a>
12
- </p>
13
-
14
- SkeletonUI aims to bring an elegant, declarative syntax to skeleton loading animations. Get rid of loading screens or spinners and start using skeletons to represent final content shapes.
15
-
16
- # Requirements :gear:
17
-
18
- - macOS 10.15.
19
- - Xcode 11.0.
20
- - Swift 5.0.
21
-
22
- # Supported Platforms :iphone:
23
-
24
- - iOS 13.0.
25
- - tvOS 13.0.
26
- - watchOS 6.0.
27
- - macOS 10.15.
28
-
29
- # Installation :computer:
30
-
31
- ### Swift Package Manager
32
- [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. Once you have your Swift package set up, adding `SkeletonUI` as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
33
-
34
- ```swift
35
- dependencies: [
36
- .package(url: "https://github.com/CSolanaM/SkeletonUI.git", .branch("master"))
37
- ]
38
- ```
39
-
40
- ### CocoaPods
41
- [CocoaPods](https://cocoapods.org) is a centralized dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate SkeletonUI into your Xcode project using CocoaPods, specify it in your `Podfile`:
42
-
43
- ```ruby
44
- pod 'SkeletonUI'
45
- ```
46
-
47
- # Features :sparkles:
48
-
49
- - [x] SwiftUI simple, declarative syntax.
50
- - [x] Super easy and simple to set up.
51
- - [x] All Views are skeletonables.
52
- - [x] Fully customizable.
53
- - [x] Universal (iPhone, iPad, iPod, Apple TV, Apple Watch, Mac).
54
- - [x] SwiftUI ViewModifier power.
55
- - [x] Lightweight codebase.
56
-
57
- # Usage :rocket:
58
-
59
- ### Basic one-liner:
60
-
61
- ```swift
62
- import SkeletonUI
63
- import SwiftUI
64
-
65
- struct UsersView: View {
66
- @State var users = [String]()
67
-
68
- var body: some View {
69
- Text("Finished requesting \(users.count) users!")
70
- .skeleton(with: users.isEmpty)
71
- .onAppear {
72
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
73
- self.users = ["John Doe", "Jane Doe", "James Doe", "Judy Doe"]
74
- }
75
- }
76
- }
77
- }
78
- ```
79
-
80
- ### Advanced customization:
81
-
82
- ```swift
83
- import SkeletonUI
84
- import SwiftUI
85
-
86
- struct User: Identifiable {
87
- let id = UUID()
88
- let name: String
89
- }
90
-
91
- struct UsersView: View {
92
- @State var users = [User]()
93
-
94
- var body: some View {
95
- SkeletonList(with: users, quantity: 6) { loading, user in
96
- Text(user?.name)
97
- .skeleton(with: loading)
98
- .shape(type: .rectangle)
99
- .appearance(type: .solid(color: .red, background: .blue))
100
- .multiline(lines: 3, scales: [1: 0.5])
101
- .animation(type: .pulse())
102
- }
103
- .onAppear {
104
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
105
- self.users = [User(name: "John Doe"),
106
- User(name: "Jane Doe"),
107
- User(name: "James Doe"),
108
- User(name: "Judy Doe")]
109
- }
110
- }
111
- }
112
- }
113
- ```
114
-
115
- # Change Log :calendar:
116
-
117
- See [CHANGELOG.md](https://github.com/CSolanaM/SkeletonUI/blob/master/CHANGELOG.md) for details.
118
-
119
- # Contributing :tada:
120
-
121
- - Suggest your idea as a [feature request](https://github.com/CSolanaM/SkeletonUI/issues/new?assignees=&labels=&template=feature_request.md&title=) for this project.
122
- - Create a [bug report](https://github.com/CSolanaM/SkeletonUI/issues/new?assignees=&labels=&template=bug_report.md&title=) to help us improve.
123
- - Propose your own fixes, suggestions and open a pull request with the changes.
124
-
125
- See [CONTRIBUTING.md](https://github.com/CSolanaM/SkeletonUI/blob/master/CONTRIBUTING.md) for details.
126
-
127
- # Code of Conduct :speech_balloon:
128
-
129
- See [CODE_OF_CONDUCT.md](https://github.com/CSolanaM/SkeletonUI/blob/master/CODE_OF_CONDUCT.md) for details.
130
-
131
- # Credits :speak_no_evil:
132
-
133
- SkeletonUI is owned and maintained by [CSolanaM](https://csolanam.io). You can follow me on Twitter at [@CSolanaM](https://twitter.com/CSolanaM) or contact me via [email](mailto:apps@csolanam.io) for project updates and releases.
134
-
135
- # License :mortar_board:
136
-
137
- SkeletonUI is released under the MIT license. See [LICENSE](https://github.com/CSolanaM/SkeletonUI/blob/master/LICENSE) for details.