@momo-kits/qrcode 0.150.2-beta.5 → 0.150.2-beta.test.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/Qrcode.podspec CHANGED
@@ -3,19 +3,31 @@ require "json"
3
3
  package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
4
 
5
5
  Pod::Spec.new do |s|
6
- s.name = "Qrcode"
7
- s.version = package["version"]
8
- s.summary = package["description"]
9
- s.homepage = package["homepage"]
10
- s.license = package["license"]
11
- s.authors = package["author"]
6
+ s.name = "Qrcode"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.description = package["description"]
10
+ s.homepage = package["homepage"]
11
+ s.license = package["license"]
12
+ s.platforms = { :ios => "11.0" }
13
+ s.author = package["author"]
14
+ s.source = { :git => package["repository"]["url"], :tag => "#{s.version}" }
12
15
 
13
- s.platforms = { :ios => min_ios_version_supported }
14
- s.source = { :git => "https://www.npmjs.com/.git", :tag => "#{s.version}" }
16
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
17
+ s.requires_arc = true
15
18
 
16
- s.source_files = "ios/**/*.{h,m,mm,cpp}"
17
- s.private_header_files = "ios/**/*.h"
19
+ s.dependency "React-Core"
18
20
 
19
-
20
- install_modules_dependencies(s)
21
+ # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
22
+ # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
23
+ if respond_to?(:install_modules_dependencies, true)
24
+ install_modules_dependencies(s)
25
+ else
26
+ s.dependency "React-RCTFabric", "~> 0.72.0" # This dependency is managed by React Native.
27
+ s.dependency "React-Codegen", "~> 0.72.0"
28
+ s.dependency "RCT-Folly", "~> 2021.07.22.00"
29
+ s.dependency "RCTRequired", "~> 0.72.0"
30
+ s.dependency "RCTTypeSafety", "~> 0.72.0"
31
+ s.dependency "ReactCommon", "~> 0.72.0"
32
+ end
21
33
  end
package/ios/RCTQRCode.h CHANGED
@@ -4,7 +4,6 @@
4
4
  NS_ASSUME_NONNULL_BEGIN
5
5
 
6
6
  @interface RCTQRCode : RCTViewComponentView
7
-
8
7
  @end
9
8
 
10
9
  NS_ASSUME_NONNULL_END
package/ios/RCTQRCode.mm CHANGED
@@ -1,12 +1,13 @@
1
1
  #import "RCTQRCode.h"
2
- #import <react/renderer/components/QrcodeViewSpec/ComponentDescriptors.h>
3
- #import <react/renderer/components/QrcodeViewSpec/Props.h>
4
- #import <react/renderer/components/QrcodeViewSpec/RCTComponentViewHelpers.h>
5
- #import <react/renderer/components/QrcodeViewSpec/EventEmitters.h>
6
- #import "QRCodeView.h"
7
- #import <React/RCTLog.h>
2
+
3
+ #import <react/renderer/components/QrcodeViewManager/ComponentDescriptors.h>
4
+ #import <react/renderer/components/QrcodeViewManager/EventEmitters.h>
5
+ #import <react/renderer/components/QrcodeViewManager/Props.h>
6
+ #import <react/renderer/components/QrcodeViewManager/RCTComponentViewHelpers.h>
8
7
 
9
8
  #import "RCTFabricComponentsPlugins.h"
9
+ #import <React/RCTConversions.h>
10
+ #import <CoreImage/CoreImage.h>
10
11
 
11
12
  using namespace facebook::react;
12
13
 
@@ -14,53 +15,92 @@ using namespace facebook::react;
14
15
  @end
15
16
 
16
17
  @implementation RCTQRCode {
17
- QRCodeView *_qrView;
18
+ UIImageView *_qrImageView;
18
19
  }
19
20
 
20
- - (instancetype)init
21
+ + (ComponentDescriptorProvider)componentDescriptorProvider
21
22
  {
22
- if (self = [super init]) {
23
- // Create and embed your existing UIImageView-based QRCodeView
24
- _qrView = [QRCodeView new];
25
- [self addSubview:_qrView];
26
- }
27
- return self;
23
+ return concreteComponentDescriptorProvider<RCTQRCodeComponentDescriptor>();
28
24
  }
29
25
 
30
- - (void)updateProps:(Props::Shared const &)props
31
- oldProps:(Props::Shared const &)oldProps
26
+ - (instancetype)initWithFrame:(CGRect)frame
32
27
  {
33
- // Pull in the generated Props struct
34
- const auto &qrProps = *std::static_pointer_cast<RCTQRCodeProps const>(props);
28
+ if (self = [super initWithFrame:frame]) {
29
+ static const auto defaultProps = std::make_shared<const RCTQRCodeProps>();
30
+ _props = defaultProps;
35
31
 
36
- // Apply to your view
37
- if (!qrProps.code.empty()) {
38
- NSString *nsCode = [NSString stringWithUTF8String:qrProps.code.c_str()];
39
- _qrView.code = nsCode;
32
+ _qrImageView = [[UIImageView alloc] init];
33
+ _qrImageView.contentMode = UIViewContentModeScaleAspectFit;
34
+ [self addSubview:_qrImageView];
40
35
  }
41
- _qrView.ratio = qrProps.ratio;
42
- _qrView.size = qrProps.size;
43
- NSLog(@"[QRCodeView] setCode: %@", _qrView.code);
44
36
 
45
- [super updateProps:props oldProps:oldProps];
37
+ return self;
46
38
  }
47
39
 
48
- - (void)layoutSubviews
40
+ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
49
41
  {
50
- [super layoutSubviews];
51
- // Make the QR image fill the host view
52
- _qrView.frame = self.bounds;
42
+ const auto &oldViewProps = *std::static_pointer_cast<RCTQRCodeProps const>(_props);
43
+ const auto &newViewProps = *std::static_pointer_cast<RCTQRCodeProps const>(props);
44
+
45
+ if (oldViewProps.code != newViewProps.code ||
46
+ oldViewProps.size != newViewProps.size ||
47
+ oldViewProps.ratio != newViewProps.ratio) {
48
+ [self generateQRCode];
49
+ }
50
+
51
+ [super updateProps:props oldProps:oldProps];
53
52
  }
54
53
 
55
- + (ComponentDescriptorProvider)componentDescriptorProvider
54
+ - (void)layoutSubviews
56
55
  {
57
- // Hook up to the C++ ComponentDescriptor generated by Codegen
58
- return concreteComponentDescriptorProvider<RCTQRCodeComponentDescriptor>();
56
+ [super layoutSubviews];
57
+ _qrImageView.frame = self.bounds;
59
58
  }
60
59
 
61
- @end
60
+ - (void)generateQRCode
61
+ {
62
+ const auto &props = *std::static_pointer_cast<RCTQRCodeProps const>(_props);
63
+
64
+ NSString *code = RCTNSStringFromString(props.code);
65
+ CGFloat size = props.size;
66
+ CGFloat ratio = props.ratio.value_or(1.0);
67
+
68
+ if (!code || code.length == 0) {
69
+ _qrImageView.image = nil;
70
+ return;
71
+ }
72
+
73
+ // Generate QR Code
74
+ CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
75
+ [filter setDefaults];
76
+
77
+ NSData *data = [code dataUsingEncoding:NSUTF8StringEncoding];
78
+ [filter setValue:data forKey:@"inputMessage"];
79
+
80
+ CIImage *ciImage = [filter outputImage];
81
+
82
+ if (!ciImage) {
83
+ _qrImageView.image = nil;
84
+ return;
85
+ }
62
86
 
63
- Class<RCTRCTQRCodeViewProtocol> RCTQRCodeCls(void)
87
+ // Scale the image
88
+ CGFloat scaleX = size * ratio / ciImage.extent.size.width;
89
+ CGFloat scaleY = size * ratio / ciImage.extent.size.height;
90
+ CIImage *scaledImage = [ciImage imageByApplyingTransform:CGAffineTransformMakeScale(scaleX, scaleY)];
91
+
92
+ // Convert to UIImage
93
+ CIContext *context = [CIContext context];
94
+ CGImageRef cgImage = [context createCGImage:scaledImage fromRect:scaledImage.extent];
95
+ UIImage *qrImage = [UIImage imageWithCGImage:cgImage];
96
+ CGImageRelease(cgImage);
97
+
98
+ _qrImageView.image = qrImage;
99
+ }
100
+
101
+ Class<RCTComponentViewProtocol> RCTQRCodeCls(void)
64
102
  {
65
- return RCTQRCode.class;
103
+ return RCTQRCode.class;
66
104
  }
105
+
106
+ @end
@@ -1,15 +1,31 @@
1
1
  #import <React/RCTViewManager.h>
2
- #import <UIKit/UIKit.h>
3
- #import "QRCodeView.h"
2
+ #import <React/RCTUIManager.h>
3
+ #import "RCTFabricComponentsPlugins.h"
4
4
 
5
- @implementation RCTQRCodeManager: RCTViewManager
6
- RCT_EXPORT_VIEW_PROPERTY(code, NSString);
7
- RCT_EXPORT_VIEW_PROPERTY(ratio, CGFloat);
8
- RCT_EXPORT_VIEW_PROPERTY(size, NSInteger);
5
+ @interface RCTQRCodeManager : RCTViewManager
6
+ @end
7
+
8
+ @implementation RCTQRCodeManager
9
9
 
10
10
  RCT_EXPORT_MODULE(RCTQRCode)
11
- - (UIView*)view {
12
- QRCodeView* view = [[QRCodeView alloc] init];
13
- return view;
11
+
12
+ - (UIView *)view
13
+ {
14
+ return [RCTQRCodeCls() new];
15
+ }
16
+
17
+ @end
18
+
19
+ Class<RCTComponentViewProtocol> RCTQRCodeCls(void);
20
+
21
+ @interface RCTQRCodeManager (Fabric) <RCTFabricViewManager>
22
+ @end
23
+
24
+ @implementation RCTQRCodeManager (Fabric)
25
+
26
+ - (Class<RCTComponentViewProtocol>)componentViewClass
27
+ {
28
+ return RCTQRCodeCls();
14
29
  }
30
+
15
31
  @end
@@ -1,14 +1,11 @@
1
- // @ts-nocheck
2
-
3
- import type { HostComponent, ViewProps, Float, Int32 } from 'react-native';
4
- import { codegenNativeComponent } from 'react-native';
1
+ import type { ViewProps } from 'react-native';
2
+ import type { Double, Int32 } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
5
4
 
6
5
  export interface QRCodeNativeComponentProps extends ViewProps {
7
- code?: string;
8
- ratio?: Float;
9
- size?: Int32;
6
+ code: string;
7
+ size: Int32;
8
+ ratio?: Double;
10
9
  }
11
10
 
12
- export default codegenNativeComponent<QRCodeNativeComponentProps>(
13
- 'RCTQRCode'
14
- ) as HostComponent<QRCodeNativeComponentProps>;
11
+ export default codegenNativeComponent<QRCodeNativeComponentProps>('RCTQRCode');
@@ -1,9 +1,10 @@
1
- import type { HostComponent, ViewProps, Float, Int32 } from 'react-native';
1
+ import type { ViewProps } from 'react-native';
2
+ import type { Double, Int32 } from 'react-native/Libraries/Types/CodegenTypes';
2
3
  export interface QRCodeNativeComponentProps extends ViewProps {
3
- code?: string;
4
- ratio?: Float;
5
- size?: Int32;
4
+ code: string;
5
+ size: Int32;
6
+ ratio?: Double;
6
7
  }
7
- declare const _default: HostComponent<QRCodeNativeComponentProps>;
8
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<QRCodeNativeComponentProps>;
8
9
  export default _default;
9
10
  //# sourceMappingURL=RCTQRCodeNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RCTQRCodeNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/RCTQRCodeNativeComponent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG3E,MAAM,WAAW,0BAA2B,SAAQ,SAAS;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC;CACd;wBAII,aAAa,CAAC,0BAA0B,CAAC;AAF9C,wBAE+C"}
1
+ {"version":3,"file":"RCTQRCodeNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/RCTQRCodeNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAG/E,MAAM,WAAW,0BAA2B,SAAQ,SAAS;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;AAED,wBAA+E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/qrcode",
3
- "version": "0.150.2-beta.5",
3
+ "version": "0.150.2-beta.test.5",
4
4
  "description": "A simple and customizable QR code generator component for React Native apps.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,14 +1,11 @@
1
- // @ts-nocheck
2
-
3
- import type { HostComponent, ViewProps, Float, Int32 } from 'react-native';
4
- import { codegenNativeComponent } from 'react-native';
1
+ import type { ViewProps } from 'react-native';
2
+ import type { Double, Int32 } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
5
4
 
6
5
  export interface QRCodeNativeComponentProps extends ViewProps {
7
- code?: string;
8
- ratio?: Float;
9
- size?: Int32;
6
+ code: string;
7
+ size: Int32;
8
+ ratio?: Double;
10
9
  }
11
10
 
12
- export default codegenNativeComponent<QRCodeNativeComponentProps>(
13
- 'RCTQRCode'
14
- ) as HostComponent<QRCodeNativeComponentProps>;
11
+ export default codegenNativeComponent<QRCodeNativeComponentProps>('RCTQRCode');