@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.
- package/example/ios/Example/ComponentModel.swift +9 -2
- package/example/ios/Example/ContentView.swift +0 -14
- package/example/ios/Example/Foundation/ImageDemo.swift +43 -0
- package/example/ios/Example/Foundation/Popup/Popups.swift +2 -52
- package/example/ios/Example/Foundation/PopupDemo.swift +44 -21
- package/example/ios/Example/Foundation/TextInputDemo.swift +36 -0
- package/example/ios/Example/Library/CheckboxDemo.swift +19 -0
- package/example/ios/Example/Library/SwitchDemo.swift +19 -0
- package/example/ios/Example/Main.swift +17 -1
- package/example/ios/Example/Resource/foundation.json +2 -2
- package/example/ios/Example/Resource/library.json +10 -0
- package/example/ios/Example.xcodeproj/project.pbxproj +16 -0
- package/example/ios/Example.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +1 -1
- package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/example/ios/Podfile +2 -1
- package/example/ios/Podfile.lock +22 -3
- package/example/ios/Pods/Local Podspecs/MoMoUIKits.podspec.json +9 -1
- package/example/ios/Pods/Manifest.lock +22 -3
- package/example/ios/Pods/Pods.xcodeproj/project.pbxproj +1547 -161
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +21 -0
- package/example/ios/Pods/SDWebImage/LICENSE +20 -0
- package/example/ios/Pods/SDWebImage/README.md +352 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.h +340 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.m +172 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +63 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +165 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +67 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +120 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +114 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +392 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h +112 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m +420 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +23 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +133 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.h +168 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m +79 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +110 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +540 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +145 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +326 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h +73 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +256 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +19 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +58 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h +23 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m +98 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +450 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +1030 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +153 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +68 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +156 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +138 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.h +81 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.m +556 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +297 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +26 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +153 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +822 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h +58 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +130 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h +36 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m +28 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +22 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +58 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +28 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +127 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h +25 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m +101 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +58 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +807 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h +30 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +420 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h +146 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +170 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h +40 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m +123 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.h +241 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.m +331 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +78 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +158 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h +32 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m +39 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +36 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m +39 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.h +95 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m +17 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +352 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +149 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +314 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +658 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +113 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +60 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h +49 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m +55 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +191 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +722 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +69 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m +71 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h +69 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m +73 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +32 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +16 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.h +115 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +275 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +290 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +775 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +27 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m +14 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.h +72 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m +59 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.h +143 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m +303 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.h +131 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.m +194 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.h +387 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.m +234 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h +24 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m +23 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h +46 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m +60 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h +26 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m +22 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h +27 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +47 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +89 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +221 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.h +80 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m +47 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.h +146 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +824 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.h +129 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.m +76 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.h +194 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m +67 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +110 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +446 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +48 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +82 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h +24 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m +42 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h +14 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +29 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h +21 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m +92 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h +18 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m +32 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h +29 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +227 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h +19 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m +127 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h +23 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +164 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h +21 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m +83 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +39 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.h +122 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m +13 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h +20 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m +79 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h +19 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDmetamacros.h +667 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h +18 -0
- package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m +42 -0
- package/example/ios/Pods/SDWebImage/WebImage/SDWebImage.h +89 -0
- package/example/ios/Pods/SDWebImageSwiftUI/LICENSE +19 -0
- package/example/ios/Pods/SDWebImageSwiftUI/README.md +690 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/AnimatedImage.swift +870 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Backport.swift +59 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/OnChange.swift +52 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Overlay.swift +124 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/StateObject.swift +151 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Image.swift +78 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageManager.swift +132 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImagePlayer.swift +122 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift +133 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ActivityIndicator.swift +82 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift +97 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ProgressIndicator.swift +114 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SDWebImageSwiftUI.swift +64 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SwiftUICompatibility.swift +92 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Transition/Transition.swift +93 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/WebImage.swift +509 -0
- package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h +15 -0
- package/example/ios/Pods/SkeletonUI/LICENSE +21 -0
- package/example/ios/Pods/SkeletonUI/README.md +137 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AngleInteractor.swift +29 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AnglePresenter.swift +7 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Animation/AnimationInteractor.swift +56 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearanceInteractor.swift +58 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearancePresenter.swift +5 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ClosedRange+Normalize.swift +16 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Image+OptionalType.swift +102 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ModifiedContent+SkeletonModifier.swift +26 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Optional+OptionalType.swift +5 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/SecureField+OptionalType.swift +19 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Text+OptionalType.swift +27 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/TextField+OptionalType.swift +35 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Toggle+OptionalType.swift +29 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/UnitPoint+Angle.swift +8 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/View+SkeletonModifier.swift +8 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Modifiers/SkeletonModifier.swift +52 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilineInteractor.swift +41 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilinePresenter.swift +9 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityInteractor.swift +29 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityPresenter.swift +7 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionInteractor.swift +29 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionPresenter.swift +7 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Protocols/OptionalType.swift +4 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusInteractor.swift +29 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusPresenter.swift +7 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapeInteractor.swift +33 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapePresenter.swift +5 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonForEach.swift +20 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonInteractor.swift +27 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonList.swift +20 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonPresenter.swift +15 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonShape.swift +64 -0
- package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonView.swift +25 -0
- package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.debug.xcconfig +4 -1
- package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.release.xcconfig +4 -1
- package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +72 -0
- package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +90 -0
- package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +6 -5
- package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +6 -5
- package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m +5 -0
- package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch +12 -0
- package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h +75 -0
- package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +14 -0
- package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap +6 -0
- package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +14 -0
- package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-dummy.m +5 -0
- package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-prefix.pch +12 -0
- package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-umbrella.h +17 -0
- package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.debug.xcconfig +17 -0
- package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.modulemap +6 -0
- package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.release.xcconfig +17 -0
- package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-dummy.m +5 -0
- package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-prefix.pch +12 -0
- package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-umbrella.h +16 -0
- package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.debug.xcconfig +12 -0
- package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.modulemap +6 -0
- package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.release.xcconfig +12 -0
- package/ios/Checkbox/Checkbox.swift +38 -0
- package/ios/{Colors+Spacing → Colors+Radius+Spacing}/Colors.swift +0 -0
- package/ios/Colors+Radius+Spacing/Radius.swift +22 -0
- package/ios/{Colors+Spacing → Colors+Radius+Spacing}/Spacing.swift +0 -0
- package/ios/Extensions/View++.swift +9 -0
- package/ios/Image/Image.swift +60 -0
- package/ios/Input/Input.swift +148 -0
- package/ios/OTPKeyboard/OTPKeyboard.swift +3 -3
- package/ios/Popup/PopupDisplay.swift +178 -0
- package/ios/PopupView/FullscreenPopup.swift +251 -0
- package/ios/{Popup → PopupView}/Modifiers.swift +6 -20
- package/ios/{Popup → PopupView}/PopupView.swift +38 -146
- package/ios/PopupView/Utils++.swift +281 -0
- package/ios/Swipeable/SwipeCell.swift +1 -1
- package/ios/Switch/Switch.swift +44 -0
- package/ios/native-kits.podspec +2 -0
- package/package.json +1 -1
- package/ios/Colors+Spacing/Radius.swift +0 -11
- package/ios/Popup/Utils.swift +0 -186
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import SwiftUI
|
|
3
|
+
|
|
4
|
+
// sourcery: AutoMockable
|
|
5
|
+
protocol AngleInteractable: AnyObject {
|
|
6
|
+
var presenter: AnglePresenter { get }
|
|
7
|
+
var animation: CurrentValueSubject<Animation?, Never> { get }
|
|
8
|
+
var value: CurrentValueSubject<Double, Never> { get }
|
|
9
|
+
var range: CurrentValueSubject<ClosedRange<Double>, Never> { get }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
final class AngleInteractor: AngleInteractable {
|
|
13
|
+
let presenter = AnglePresenter()
|
|
14
|
+
let animation: CurrentValueSubject<Animation?, Never>
|
|
15
|
+
let value: CurrentValueSubject<Double, Never>
|
|
16
|
+
let range: CurrentValueSubject<ClosedRange<Double>, Never>
|
|
17
|
+
|
|
18
|
+
private var cancellables = Set<AnyCancellable>()
|
|
19
|
+
|
|
20
|
+
init() {
|
|
21
|
+
value = CurrentValueSubject<Double, Never>(presenter.value)
|
|
22
|
+
animation = CurrentValueSubject<Animation?, Never>(presenter.animation)
|
|
23
|
+
range = CurrentValueSubject<ClosedRange<Double>, Never>(presenter.range)
|
|
24
|
+
range.assign(to: \.range, on: presenter).store(in: &cancellables)
|
|
25
|
+
value.assign(to: \.value, on: presenter).store(in: &cancellables)
|
|
26
|
+
animation.assign(to: \.animation, on: presenter).store(in: &cancellables)
|
|
27
|
+
range.map { $0.lowerBound }.assign(to: \.value, on: presenter).store(in: &cancellables)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import SwiftUI
|
|
3
|
+
|
|
4
|
+
public enum AnimationType: Equatable {
|
|
5
|
+
case none
|
|
6
|
+
case pulse(range: ClosedRange<Double> = .zero ... 1, duration: Double = 2, delay: Double = 1, speed: Double = 2, autoreverses: Bool = true)
|
|
7
|
+
case linear(range: ClosedRange<CGFloat> = .zero ... 1, duration: Double = 4, delay: Double = 1, speed: Double = 5, autoreverses: Bool = false)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// sourcery: AutoMockable
|
|
11
|
+
protocol AnimationInteractable: AnyObject {
|
|
12
|
+
var position: PositionInteractable { get }
|
|
13
|
+
var opacity: OpacityInteractable { get }
|
|
14
|
+
var radius: RadiusInteractable { get }
|
|
15
|
+
var angle: AngleInteractable { get }
|
|
16
|
+
var type: CurrentValueSubject<AnimationType, Never> { get }
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
final class AnimationInteractor: AnimationInteractable {
|
|
20
|
+
let position: PositionInteractable
|
|
21
|
+
let opacity: OpacityInteractable
|
|
22
|
+
let radius: RadiusInteractable
|
|
23
|
+
let angle: AngleInteractable
|
|
24
|
+
let type: CurrentValueSubject<AnimationType, Never>
|
|
25
|
+
|
|
26
|
+
private var cancellables = Set<AnyCancellable>()
|
|
27
|
+
|
|
28
|
+
init(position: PositionInteractable = PositionInteractor(), opacity: OpacityInteractable = OpacityInteractor(), radius: RadiusInteractable = RadiusInteractor(), angle: AngleInteractable = AngleInteractor()) {
|
|
29
|
+
self.position = position
|
|
30
|
+
self.opacity = opacity
|
|
31
|
+
self.radius = radius
|
|
32
|
+
self.angle = angle
|
|
33
|
+
type = CurrentValueSubject<AnimationType, Never>(.linear())
|
|
34
|
+
type.sink { type in
|
|
35
|
+
position.animation.send(nil)
|
|
36
|
+
opacity.animation.send(nil)
|
|
37
|
+
radius.animation.send(nil)
|
|
38
|
+
angle.animation.send(nil)
|
|
39
|
+
switch type {
|
|
40
|
+
case .none:
|
|
41
|
+
break
|
|
42
|
+
case let .pulse(range, duration, delay, speed, autoreverses):
|
|
43
|
+
opacity.range.send(range)
|
|
44
|
+
opacity.animation.send(Animation.easeIn(duration: duration).delay(delay).speed(speed).repeatForever(autoreverses: autoreverses))
|
|
45
|
+
case let .linear(range, duration, delay, speed, autoreverses):
|
|
46
|
+
position.range.send(position.presenter.range.normalize(with: range))
|
|
47
|
+
radius.range.send(radius.presenter.range.normalize(with: range))
|
|
48
|
+
angle.range.send(angle.presenter.range.normalize(with: range))
|
|
49
|
+
position.animation.send(Animation.easeInOut(duration: duration).delay(delay).speed(speed).repeatForever(autoreverses: autoreverses))
|
|
50
|
+
opacity.animation.send(autoreverses ? nil : Animation.easeIn(duration: duration).delay(delay).speed(speed * 2).repeatForever(autoreverses: true))
|
|
51
|
+
radius.animation.send(Animation.easeInOut(duration: duration).delay(delay).speed(speed).repeatForever(autoreverses: autoreverses))
|
|
52
|
+
angle.animation.send(Animation.easeInOut(duration: duration).delay(delay).speed(speed).repeatForever(autoreverses: autoreverses))
|
|
53
|
+
}
|
|
54
|
+
}.store(in: &cancellables)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import SwiftUI
|
|
3
|
+
|
|
4
|
+
public enum GradientType: Equatable {
|
|
5
|
+
case linear
|
|
6
|
+
case angular
|
|
7
|
+
case radial
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
public struct SkeletonColor {
|
|
11
|
+
public static var primary: Color {
|
|
12
|
+
#if os(iOS)
|
|
13
|
+
return Color(.systemGray4)
|
|
14
|
+
#elseif os(tvOS)
|
|
15
|
+
return Color(.tertiaryLabel)
|
|
16
|
+
#elseif os(watchOS)
|
|
17
|
+
return Color.secondary
|
|
18
|
+
#elseif os(macOS)
|
|
19
|
+
return Color(.alternateSelectedControlColor)
|
|
20
|
+
#endif
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public static var background: Color {
|
|
24
|
+
#if os(iOS)
|
|
25
|
+
return Color(.systemGray6)
|
|
26
|
+
#elseif os(tvOS)
|
|
27
|
+
return Color(.secondaryLabel)
|
|
28
|
+
#elseif os(watchOS)
|
|
29
|
+
return Color.primary
|
|
30
|
+
#elseif os(macOS)
|
|
31
|
+
return Color(.unemphasizedSelectedContentBackgroundColor)
|
|
32
|
+
#endif
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
public enum AppearanceType: Equatable {
|
|
38
|
+
case solid(color: Color = SkeletonColor.primary, background: Color = SkeletonColor.background)
|
|
39
|
+
case gradient(GradientType = .linear, color: Color = SkeletonColor.primary, background: Color = SkeletonColor.background, radius: CGFloat = 1, angle: CGFloat = .zero)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// sourcery: AutoMockable
|
|
43
|
+
protocol AppearanceInteractable: AnyObject {
|
|
44
|
+
var presenter: AppearancePresenter { get }
|
|
45
|
+
var type: CurrentValueSubject<AppearanceType, Never> { get }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
final class AppearanceInteractor: AppearanceInteractable {
|
|
49
|
+
let presenter = AppearancePresenter()
|
|
50
|
+
let type: CurrentValueSubject<AppearanceType, Never>
|
|
51
|
+
|
|
52
|
+
private var cancellables = Set<AnyCancellable>()
|
|
53
|
+
|
|
54
|
+
init() {
|
|
55
|
+
type = CurrentValueSubject<AppearanceType, Never>(presenter.type)
|
|
56
|
+
type.assign(to: \.type, on: presenter).store(in: &cancellables)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import CoreGraphics
|
|
2
|
+
|
|
3
|
+
extension ClosedRange where Bound == CGFloat {
|
|
4
|
+
func normalize(with range: ClosedRange) -> ClosedRange {
|
|
5
|
+
let lowerBound = range.lowerBound == .zero ? self.lowerBound : range.lowerBound
|
|
6
|
+
let upperBound = range.upperBound == 1 ? self.upperBound : range.upperBound
|
|
7
|
+
return lowerBound < upperBound ? lowerBound ... upperBound : self
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
extension ClosedRange where Bound == Double {
|
|
12
|
+
func normalize(with range: ClosedRange<CGFloat>) -> ClosedRange {
|
|
13
|
+
let normalized = (CGFloat(lowerBound) ... CGFloat(upperBound)).normalize(with: range)
|
|
14
|
+
return Double(normalized.lowerBound) ... Double(normalized.upperBound)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
public extension Image {
|
|
4
|
+
#if os(iOS) || os(tvOS) || os(watchOS)
|
|
5
|
+
init(uiImage: UIImage?) {
|
|
6
|
+
if let uiImage = uiImage {
|
|
7
|
+
self.init(uiImage: uiImage)
|
|
8
|
+
} else {
|
|
9
|
+
self.init(uiImage: UIImage())
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
#elseif os(macOS)
|
|
14
|
+
init(nsImage: NSImage?) {
|
|
15
|
+
if let nsImage = nsImage {
|
|
16
|
+
self.init(nsImage: nsImage)
|
|
17
|
+
} else {
|
|
18
|
+
self.init(nsImage: NSImage())
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
init(_ name: String?, bundle: Bundle? = nil) {
|
|
24
|
+
if let name = name {
|
|
25
|
+
self.init(name, bundle: bundle)
|
|
26
|
+
} else {
|
|
27
|
+
self.init(String(), bundle: bundle)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
init(_ name: String?, bundle: Bundle? = nil, label: Text) {
|
|
32
|
+
if let name = name {
|
|
33
|
+
self.init(name, bundle: bundle, label: label)
|
|
34
|
+
} else {
|
|
35
|
+
self.init(String(), bundle: bundle, label: label)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
init(decorative name: String?, bundle: Bundle? = nil) {
|
|
40
|
+
if let name = name {
|
|
41
|
+
self.init(decorative: name, bundle: bundle)
|
|
42
|
+
} else {
|
|
43
|
+
self.init(decorative: String(), bundle: bundle)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#if os(iOS) || os(tvOS) || os(watchOS)
|
|
48
|
+
init(systemName: String?) {
|
|
49
|
+
if let systemName = systemName {
|
|
50
|
+
self.init(systemName: systemName)
|
|
51
|
+
} else {
|
|
52
|
+
self.init(systemName: String())
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#if os(iOS) || os(tvOS) || os(watchOS)
|
|
58
|
+
init(_ cgImage: CGImage?, scale: CGFloat, orientation: Image.Orientation = .up, label: Text) {
|
|
59
|
+
if let cgImage = cgImage {
|
|
60
|
+
self.init(cgImage, scale: scale, orientation: orientation, label: label)
|
|
61
|
+
} else if let image = UIImage().cgImage {
|
|
62
|
+
self.init(image, scale: scale, orientation: orientation, label: label)
|
|
63
|
+
} else {
|
|
64
|
+
self.init(String())
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#elseif os(macOS)
|
|
69
|
+
init(_ cgImage: CGImage?, scale: CGFloat, orientation: Image.Orientation = .up, label: Text) {
|
|
70
|
+
if let cgImage = cgImage {
|
|
71
|
+
self.init(cgImage, scale: scale, orientation: orientation, label: label)
|
|
72
|
+
} else if let image = NSImage().cgImage(forProposedRect: nil, context: nil, hints: nil) {
|
|
73
|
+
self.init(image, scale: scale, orientation: orientation, label: label)
|
|
74
|
+
} else {
|
|
75
|
+
self.init(String())
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
#if os(iOS) || os(tvOS) || os(watchOS)
|
|
81
|
+
init(decorative cgImage: CGImage?, scale: CGFloat, orientation: Image.Orientation = .up) {
|
|
82
|
+
if let cgImage = cgImage {
|
|
83
|
+
self.init(decorative: cgImage, scale: scale, orientation: orientation)
|
|
84
|
+
} else if let image = UIImage().cgImage {
|
|
85
|
+
self.init(decorative: image, scale: scale, orientation: orientation)
|
|
86
|
+
} else {
|
|
87
|
+
self.init(String())
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#elseif os(macOS)
|
|
92
|
+
init(decorative cgImage: CGImage?, scale: CGFloat, orientation: Image.Orientation = .up) {
|
|
93
|
+
if let cgImage = cgImage {
|
|
94
|
+
self.init(decorative: cgImage, scale: scale, orientation: orientation)
|
|
95
|
+
} else if let image = NSImage().cgImage(forProposedRect: nil, context: nil, hints: nil) {
|
|
96
|
+
self.init(decorative: image, scale: scale, orientation: orientation)
|
|
97
|
+
} else {
|
|
98
|
+
self.init(String())
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
#endif
|
|
102
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
|
|
4
|
+
public extension ModifiedContent where Content: View, Modifier == SkeletonModifier {
|
|
5
|
+
func animation(type: AnimationType) -> ModifiedContent<Content, SkeletonModifier> {
|
|
6
|
+
modifier.skeleton.animation.type.send(type)
|
|
7
|
+
return self
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
func appearance(type: AppearanceType) -> ModifiedContent<Content, SkeletonModifier> {
|
|
11
|
+
modifier.skeleton.appearance.type.send(type)
|
|
12
|
+
return self
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
func multiline(lines: Int, scales: [Int: CGFloat]? = nil, spacing: CGFloat? = nil) -> ModifiedContent<Content, SkeletonModifier> {
|
|
16
|
+
modifier.skeleton.multiline.lines.send(lines)
|
|
17
|
+
modifier.skeleton.multiline.scales.send(scales)
|
|
18
|
+
modifier.skeleton.multiline.spacing.send(spacing)
|
|
19
|
+
return self
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
func shape(type: ShapeType) -> ModifiedContent<Content, SkeletonModifier> {
|
|
23
|
+
modifier.skeleton.shape.type.send(type)
|
|
24
|
+
return self
|
|
25
|
+
}
|
|
26
|
+
}
|
package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/SecureField+OptionalType.swift
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
public extension SecureField where Label == Text {
|
|
4
|
+
init(_ titleKey: LocalizedStringKey?, text: Binding<String>, onCommit: @escaping () -> Void = {}) {
|
|
5
|
+
if let titleKey = titleKey {
|
|
6
|
+
self.init(titleKey, text: text, onCommit: onCommit)
|
|
7
|
+
} else {
|
|
8
|
+
self.init(LocalizedStringKey(String()), text: text, onCommit: onCommit)
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init<S>(_ title: S?, text: Binding<String>, onCommit: @escaping () -> Void = {}) where S: OptionalType, S.Wrapped: StringProtocol {
|
|
13
|
+
if let title = title?.wrapped {
|
|
14
|
+
self.init(title, text: text, onCommit: onCommit)
|
|
15
|
+
} else {
|
|
16
|
+
self.init(String(), text: text, onCommit: onCommit)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
public extension Text {
|
|
4
|
+
init<S>(_ content: S?) where S: OptionalType, S.Wrapped: StringProtocol {
|
|
5
|
+
if let content = content?.wrapped {
|
|
6
|
+
self.init(content)
|
|
7
|
+
} else {
|
|
8
|
+
self.init(String())
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init(_ key: LocalizedStringKey?, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil) {
|
|
13
|
+
if let key = key {
|
|
14
|
+
self.init(key, tableName: tableName, bundle: bundle, comment: comment)
|
|
15
|
+
} else {
|
|
16
|
+
self.init(LocalizedStringKey(String()), tableName: tableName, bundle: bundle, comment: comment)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
init(verbatim content: String?) {
|
|
21
|
+
if let content = content {
|
|
22
|
+
self.init(verbatim: content)
|
|
23
|
+
} else {
|
|
24
|
+
self.init(verbatim: String())
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/TextField+OptionalType.swift
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
public extension TextField where Label == Text {
|
|
4
|
+
init(titleKey: LocalizedStringKey?, text: Binding<String>, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {}) {
|
|
5
|
+
if let titleKey = titleKey {
|
|
6
|
+
self.init(titleKey, text: text, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
7
|
+
} else {
|
|
8
|
+
self.init(LocalizedStringKey(String()), text: text, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init<S>(_ title: S?, text: Binding<String>, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {}) where S: OptionalType, S.Wrapped: StringProtocol {
|
|
13
|
+
if let title = title?.wrapped {
|
|
14
|
+
self.init(title, text: text, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
15
|
+
} else {
|
|
16
|
+
self.init(String(), text: text, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
init<T>(titleKey: LocalizedStringKey?, value: Binding<T>, formatter: Formatter, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {}) {
|
|
21
|
+
if let titleKey = titleKey {
|
|
22
|
+
self.init(titleKey, value: value, formatter: formatter, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
23
|
+
} else {
|
|
24
|
+
self.init(LocalizedStringKey(String()), value: value, formatter: formatter, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
init<S, T>(_ title: S?, value: Binding<T>, formatter: Formatter, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {}) where S: OptionalType, S.Wrapped: StringProtocol {
|
|
29
|
+
if let title = title?.wrapped {
|
|
30
|
+
self.init(title, value: value, formatter: formatter, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
31
|
+
} else {
|
|
32
|
+
self.init(String(), value: value, formatter: formatter, onEditingChanged: onEditingChanged, onCommit: onCommit)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
public extension Toggle where Label: View {
|
|
4
|
+
init(isOn: Binding<Bool>?, @ViewBuilder label: () -> Label) {
|
|
5
|
+
if let isOn = isOn {
|
|
6
|
+
self.init(isOn: isOn, label: label)
|
|
7
|
+
} else {
|
|
8
|
+
self.init(isOn: Binding.constant(Bool()), label: label)
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public extension Toggle where Label == Text {
|
|
14
|
+
init(_ titleKey: LocalizedStringKey?, isOn: Binding<Bool>) {
|
|
15
|
+
if let titleKey = titleKey {
|
|
16
|
+
self.init(titleKey, isOn: isOn)
|
|
17
|
+
} else {
|
|
18
|
+
self.init(String(), isOn: isOn)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
init<S>(_ title: S?, isOn: Binding<Bool>) where S: OptionalType, S.Wrapped: StringProtocol {
|
|
23
|
+
if let title = title?.wrapped {
|
|
24
|
+
self.init(title, isOn: isOn)
|
|
25
|
+
} else {
|
|
26
|
+
self.init(String(), isOn: isOn)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
extension UnitPoint {
|
|
4
|
+
static func point(with position: CGFloat, _ radius: CGFloat, _ angle: CGFloat) -> UnitPoint {
|
|
5
|
+
let radians = angle * .pi / 180.0
|
|
6
|
+
return UnitPoint(x: (position + radius) * cos(radians), y: (position + radius) * sin(radians))
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
|
|
4
|
+
public extension View {
|
|
5
|
+
func skeleton(with loading: Bool, size: CGSize? = .none, transition: AnyTransition? = nil, animated: Animation? = nil) -> ModifiedContent<Self, SkeletonModifier> {
|
|
6
|
+
modifier(SkeletonModifier(skeleton: SkeletonInteractor(loading, size: size, transition: transition, animated: animated)))
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import SwiftUI
|
|
2
|
+
|
|
3
|
+
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
|
|
4
|
+
public struct SkeletonModifier: ViewModifier {
|
|
5
|
+
let skeleton: SkeletonInteractable
|
|
6
|
+
@State var animation: Bool = false
|
|
7
|
+
|
|
8
|
+
public func body(content: Content) -> some View {
|
|
9
|
+
ZStack {
|
|
10
|
+
if skeleton.presenter.loading {
|
|
11
|
+
VStack(spacing: skeleton.multiline.presenter.spacing) {
|
|
12
|
+
ForEach(0 ..< skeleton.multiline.presenter.lines, id: \.self) { line in
|
|
13
|
+
GeometryReader { geometry in
|
|
14
|
+
SkeletonView(skeleton: skeleton, line: line)
|
|
15
|
+
.frame(width: skeleton.multiline.presenter.scale * geometry.size.width, height: geometry.size.height)
|
|
16
|
+
.onReceive([animation].publisher.filter { $0 }.removeDuplicates().first()) { _ in
|
|
17
|
+
withAnimation(skeleton.animation.position.presenter.animation) {
|
|
18
|
+
skeleton.animation.position.value.send(skeleton.animation.position.presenter.range.upperBound)
|
|
19
|
+
}
|
|
20
|
+
withAnimation(skeleton.animation.opacity.presenter.animation) {
|
|
21
|
+
skeleton.animation.opacity.value.send(skeleton.animation.opacity.presenter.range.upperBound)
|
|
22
|
+
}
|
|
23
|
+
withAnimation(skeleton.animation.radius.presenter.animation) {
|
|
24
|
+
skeleton.animation.radius.value.send(skeleton.animation.radius.presenter.range.upperBound)
|
|
25
|
+
}
|
|
26
|
+
withAnimation(skeleton.animation.angle.presenter.animation) {
|
|
27
|
+
skeleton.animation.angle.value.send(skeleton.animation.angle.presenter.range.upperBound)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
.onAppear {
|
|
31
|
+
DispatchQueue.main.async {
|
|
32
|
+
animation = true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
.onDisappear {
|
|
36
|
+
DispatchQueue.main.async {
|
|
37
|
+
animation = false
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
.frame(width: skeleton.presenter.size?.width, height: skeleton.presenter.size?.height)
|
|
44
|
+
.transition(skeleton.presenter.transition)
|
|
45
|
+
} else {
|
|
46
|
+
content
|
|
47
|
+
.transition(skeleton.presenter.transition)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
.animation(skeleton.presenter.animated, value: skeleton.presenter.loading)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import SwiftUI
|
|
3
|
+
|
|
4
|
+
// sourcery: AutoMockable
|
|
5
|
+
protocol MultilineInteractable: AnyObject {
|
|
6
|
+
var presenter: MultilinePresenter { get }
|
|
7
|
+
var line: CurrentValueSubject<Int, Never> { get }
|
|
8
|
+
var lines: CurrentValueSubject<Int, Never> { get }
|
|
9
|
+
var scale: CurrentValueSubject<CGFloat, Never> { get }
|
|
10
|
+
var spacing: CurrentValueSubject<CGFloat?, Never> { get }
|
|
11
|
+
var scales: CurrentValueSubject<[Int: CGFloat]?, Never> { get }
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
final class MultilineInteractor: MultilineInteractable {
|
|
15
|
+
let presenter = MultilinePresenter()
|
|
16
|
+
let line: CurrentValueSubject<Int, Never>
|
|
17
|
+
let lines: CurrentValueSubject<Int, Never>
|
|
18
|
+
let scale: CurrentValueSubject<CGFloat, Never>
|
|
19
|
+
let spacing: CurrentValueSubject<CGFloat?, Never>
|
|
20
|
+
let scales: CurrentValueSubject<[Int: CGFloat]?, Never>
|
|
21
|
+
|
|
22
|
+
private var cancellables = Set<AnyCancellable>()
|
|
23
|
+
|
|
24
|
+
init() {
|
|
25
|
+
line = CurrentValueSubject<Int, Never>(presenter.line)
|
|
26
|
+
lines = CurrentValueSubject<Int, Never>(presenter.lines)
|
|
27
|
+
scale = CurrentValueSubject<CGFloat, Never>(presenter.scale)
|
|
28
|
+
spacing = CurrentValueSubject<CGFloat?, Never>(presenter.spacing)
|
|
29
|
+
scales = CurrentValueSubject<[Int: CGFloat]?, Never>(presenter.scales)
|
|
30
|
+
line.map { [weak self] line in
|
|
31
|
+
guard let self = self else { fatalError() }
|
|
32
|
+
if let scale = self.scales.value?[line] {
|
|
33
|
+
return scale
|
|
34
|
+
}
|
|
35
|
+
return 1
|
|
36
|
+
}.assign(to: \.scale, on: presenter).store(in: &cancellables)
|
|
37
|
+
lines.assign(to: \.lines, on: presenter).store(in: &cancellables)
|
|
38
|
+
scales.assign(to: \.scales, on: presenter).store(in: &cancellables)
|
|
39
|
+
spacing.assign(to: \.spacing, on: presenter).store(in: &cancellables)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import SwiftUI
|
|
3
|
+
|
|
4
|
+
// sourcery: AutoMockable
|
|
5
|
+
protocol OpacityInteractable: AnyObject {
|
|
6
|
+
var presenter: OpacityPresenter { get }
|
|
7
|
+
var animation: CurrentValueSubject<Animation?, Never> { get }
|
|
8
|
+
var value: CurrentValueSubject<Double, Never> { get }
|
|
9
|
+
var range: CurrentValueSubject<ClosedRange<Double>, Never> { get }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
final class OpacityInteractor: OpacityInteractable {
|
|
13
|
+
let presenter = OpacityPresenter()
|
|
14
|
+
let animation: CurrentValueSubject<Animation?, Never>
|
|
15
|
+
let value: CurrentValueSubject<Double, Never>
|
|
16
|
+
let range: CurrentValueSubject<ClosedRange<Double>, Never>
|
|
17
|
+
|
|
18
|
+
private var cancellables = Set<AnyCancellable>()
|
|
19
|
+
|
|
20
|
+
init() {
|
|
21
|
+
value = CurrentValueSubject<Double, Never>(presenter.value)
|
|
22
|
+
animation = CurrentValueSubject<Animation?, Never>(presenter.animation)
|
|
23
|
+
range = CurrentValueSubject<ClosedRange<Double>, Never>(presenter.range)
|
|
24
|
+
range.assign(to: \.range, on: presenter).store(in: &cancellables)
|
|
25
|
+
value.assign(to: \.value, on: presenter).store(in: &cancellables)
|
|
26
|
+
animation.assign(to: \.animation, on: presenter).store(in: &cancellables)
|
|
27
|
+
range.map { $0.lowerBound }.assign(to: \.value, on: presenter).store(in: &cancellables)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import SwiftUI
|
|
3
|
+
|
|
4
|
+
// sourcery: AutoMockable
|
|
5
|
+
protocol PositionInteractable: AnyObject {
|
|
6
|
+
var presenter: PositionPresenter { get }
|
|
7
|
+
var animation: CurrentValueSubject<Animation?, Never> { get }
|
|
8
|
+
var value: CurrentValueSubject<CGFloat, Never> { get }
|
|
9
|
+
var range: CurrentValueSubject<ClosedRange<CGFloat>, Never> { get }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
final class PositionInteractor: PositionInteractable {
|
|
13
|
+
let presenter = PositionPresenter()
|
|
14
|
+
let animation: CurrentValueSubject<Animation?, Never>
|
|
15
|
+
let value: CurrentValueSubject<CGFloat, Never>
|
|
16
|
+
let range: CurrentValueSubject<ClosedRange<CGFloat>, Never>
|
|
17
|
+
|
|
18
|
+
private var cancellables = Set<AnyCancellable>()
|
|
19
|
+
|
|
20
|
+
init() {
|
|
21
|
+
value = CurrentValueSubject<CGFloat, Never>(presenter.value)
|
|
22
|
+
animation = CurrentValueSubject<Animation?, Never>(presenter.animation)
|
|
23
|
+
range = CurrentValueSubject<ClosedRange<CGFloat>, Never>(presenter.range)
|
|
24
|
+
range.assign(to: \.range, on: presenter).store(in: &cancellables)
|
|
25
|
+
value.assign(to: \.value, on: presenter).store(in: &cancellables)
|
|
26
|
+
animation.assign(to: \.animation, on: presenter).store(in: &cancellables)
|
|
27
|
+
range.map { $0.lowerBound }.assign(to: \.value, on: presenter).store(in: &cancellables)
|
|
28
|
+
}
|
|
29
|
+
}
|