@whetware/react-native-stroke-text 0.0.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 (82) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE.md +21 -0
  3. package/NitroStrokeText.podspec +31 -0
  4. package/README.md +45 -0
  5. package/android/CMakeLists.txt +29 -0
  6. package/android/build.gradle +142 -0
  7. package/android/fix-prefab.gradle +51 -0
  8. package/android/gradle.properties +5 -0
  9. package/android/src/main/AndroidManifest.xml +2 -0
  10. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  11. package/android/src/main/java/com/margelo/nitro/stroketext/HybridStrokeTextView.kt +107 -0
  12. package/android/src/main/java/com/margelo/nitro/stroketext/NitroStrokeTextPackage.kt +39 -0
  13. package/android/src/main/java/com/margelo/nitro/stroketext/StrokeTextView.kt +429 -0
  14. package/ios/Bridge.h +8 -0
  15. package/ios/HybridStrokeTextView.swift +114 -0
  16. package/ios/StrokeTextColor.swift +120 -0
  17. package/ios/StrokeTextView.swift +326 -0
  18. package/ios/StrokedTextLabel.swift +72 -0
  19. package/lib/StrokeText.d.ts +3 -0
  20. package/lib/StrokeText.js +109 -0
  21. package/lib/StrokeText.web.d.ts +3 -0
  22. package/lib/StrokeText.web.js +106 -0
  23. package/lib/index.d.ts +2 -0
  24. package/lib/index.js +1 -0
  25. package/lib/index.web.d.ts +2 -0
  26. package/lib/index.web.js +1 -0
  27. package/lib/specs/StrokeTextView.nitro.d.ts +37 -0
  28. package/lib/specs/StrokeTextView.nitro.js +1 -0
  29. package/lib/types.d.ts +17 -0
  30. package/lib/types.js +1 -0
  31. package/nitro.json +24 -0
  32. package/nitrogen/generated/.gitattributes +1 -0
  33. package/nitrogen/generated/android/NitroStrokeText+autolinking.cmake +83 -0
  34. package/nitrogen/generated/android/NitroStrokeText+autolinking.gradle +27 -0
  35. package/nitrogen/generated/android/NitroStrokeTextOnLoad.cpp +46 -0
  36. package/nitrogen/generated/android/NitroStrokeTextOnLoad.hpp +25 -0
  37. package/nitrogen/generated/android/c++/JHybridStrokeTextViewSpec.cpp +308 -0
  38. package/nitrogen/generated/android/c++/JHybridStrokeTextViewSpec.hpp +117 -0
  39. package/nitrogen/generated/android/c++/JStrokeTextAlign.hpp +67 -0
  40. package/nitrogen/generated/android/c++/JStrokeTextDecorationLine.hpp +64 -0
  41. package/nitrogen/generated/android/c++/JStrokeTextEllipsizeMode.hpp +64 -0
  42. package/nitrogen/generated/android/c++/JStrokeTextFontStyle.hpp +58 -0
  43. package/nitrogen/generated/android/c++/JStrokeTextTransform.hpp +64 -0
  44. package/nitrogen/generated/android/c++/views/JHybridStrokeTextViewStateUpdater.cpp +156 -0
  45. package/nitrogen/generated/android/c++/views/JHybridStrokeTextViewStateUpdater.hpp +49 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/HybridStrokeTextViewSpec.kt +209 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/NitroStrokeTextOnLoad.kt +35 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/StrokeTextAlign.kt +26 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/StrokeTextDecorationLine.kt +25 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/StrokeTextEllipsizeMode.kt +25 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/StrokeTextFontStyle.kt +23 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/StrokeTextTransform.kt +25 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/views/HybridStrokeTextViewManager.kt +70 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/stroketext/views/HybridStrokeTextViewStateUpdater.kt +23 -0
  55. package/nitrogen/generated/ios/NitroStrokeText+autolinking.rb +60 -0
  56. package/nitrogen/generated/ios/NitroStrokeText-Swift-Cxx-Bridge.cpp +33 -0
  57. package/nitrogen/generated/ios/NitroStrokeText-Swift-Cxx-Bridge.hpp +177 -0
  58. package/nitrogen/generated/ios/NitroStrokeText-Swift-Cxx-Umbrella.hpp +58 -0
  59. package/nitrogen/generated/ios/NitroStrokeTextAutolinking.mm +33 -0
  60. package/nitrogen/generated/ios/NitroStrokeTextAutolinking.swift +26 -0
  61. package/nitrogen/generated/ios/c++/HybridStrokeTextViewSpecSwift.cpp +11 -0
  62. package/nitrogen/generated/ios/c++/HybridStrokeTextViewSpecSwift.hpp +271 -0
  63. package/nitrogen/generated/ios/c++/views/HybridStrokeTextViewComponent.mm +232 -0
  64. package/nitrogen/generated/ios/swift/HybridStrokeTextViewSpec.swift +81 -0
  65. package/nitrogen/generated/ios/swift/HybridStrokeTextViewSpec_cxx.swift +620 -0
  66. package/nitrogen/generated/ios/swift/StrokeTextAlign.swift +52 -0
  67. package/nitrogen/generated/ios/swift/StrokeTextDecorationLine.swift +48 -0
  68. package/nitrogen/generated/ios/swift/StrokeTextEllipsizeMode.swift +48 -0
  69. package/nitrogen/generated/ios/swift/StrokeTextFontStyle.swift +40 -0
  70. package/nitrogen/generated/ios/swift/StrokeTextTransform.swift +48 -0
  71. package/nitrogen/generated/shared/c++/HybridStrokeTextViewSpec.cpp +72 -0
  72. package/nitrogen/generated/shared/c++/HybridStrokeTextViewSpec.hpp +128 -0
  73. package/nitrogen/generated/shared/c++/StrokeTextAlign.hpp +88 -0
  74. package/nitrogen/generated/shared/c++/StrokeTextDecorationLine.hpp +84 -0
  75. package/nitrogen/generated/shared/c++/StrokeTextEllipsizeMode.hpp +84 -0
  76. package/nitrogen/generated/shared/c++/StrokeTextFontStyle.hpp +76 -0
  77. package/nitrogen/generated/shared/c++/StrokeTextTransform.hpp +84 -0
  78. package/nitrogen/generated/shared/c++/views/HybridStrokeTextViewComponent.cpp +388 -0
  79. package/nitrogen/generated/shared/c++/views/HybridStrokeTextViewComponent.hpp +138 -0
  80. package/nitrogen/generated/shared/json/StrokeTextViewConfig.json +35 -0
  81. package/package.json +124 -0
  82. package/react-native.config.js +16 -0
@@ -0,0 +1,232 @@
1
+ ///
2
+ /// HybridStrokeTextViewComponent.mm
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #import "HybridStrokeTextViewComponent.hpp"
9
+ #import <memory>
10
+ #import <react/renderer/componentregistry/ComponentDescriptorProvider.h>
11
+ #import <React/RCTViewComponentView.h>
12
+ #import <React/RCTComponentViewFactory.h>
13
+ #import <React/UIView+ComponentViewProtocol.h>
14
+ #import <NitroModules/NitroDefines.hpp>
15
+ #import <UIKit/UIKit.h>
16
+
17
+ #import "HybridStrokeTextViewSpecSwift.hpp"
18
+ #import "NitroStrokeText-Swift-Cxx-Umbrella.hpp"
19
+
20
+ using namespace facebook;
21
+ using namespace margelo::nitro::stroketext;
22
+ using namespace margelo::nitro::stroketext::views;
23
+
24
+ /**
25
+ * Represents the React Native View holder for the Nitro "StrokeTextView" HybridView.
26
+ */
27
+ @interface HybridStrokeTextViewComponent: RCTViewComponentView
28
+ + (BOOL)shouldBeRecycled;
29
+ @end
30
+
31
+ @implementation HybridStrokeTextViewComponent {
32
+ std::shared_ptr<HybridStrokeTextViewSpecSwift> _hybridView;
33
+ }
34
+
35
+ + (void) load {
36
+ [super load];
37
+ [RCTComponentViewFactory.currentComponentViewFactory registerComponentViewClass:[HybridStrokeTextViewComponent class]];
38
+ }
39
+
40
+ + (react::ComponentDescriptorProvider) componentDescriptorProvider {
41
+ return react::concreteComponentDescriptorProvider<HybridStrokeTextViewComponentDescriptor>();
42
+ }
43
+
44
+ - (instancetype) init {
45
+ if (self = [super init]) {
46
+ std::shared_ptr<HybridStrokeTextViewSpec> hybridView = NitroStrokeText::NitroStrokeTextAutolinking::createStrokeTextView();
47
+ _hybridView = std::dynamic_pointer_cast<HybridStrokeTextViewSpecSwift>(hybridView);
48
+ [self updateView];
49
+ }
50
+ return self;
51
+ }
52
+
53
+ - (void) updateView {
54
+ // 1. Get Swift part
55
+ NitroStrokeText::HybridStrokeTextViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
56
+
57
+ // 2. Get UIView*
58
+ void* viewUnsafe = swiftPart.getView();
59
+ UIView* view = (__bridge_transfer UIView*) viewUnsafe;
60
+
61
+ // 3. Update RCTViewComponentView's [contentView]
62
+ [self setContentView:view];
63
+ }
64
+
65
+ - (void) updateProps:(const std::shared_ptr<const react::Props>&)props
66
+ oldProps:(const std::shared_ptr<const react::Props>&)oldProps {
67
+ // 1. Downcast props
68
+ const auto& newViewPropsConst = *std::static_pointer_cast<HybridStrokeTextViewProps const>(props);
69
+ auto& newViewProps = const_cast<HybridStrokeTextViewProps&>(newViewPropsConst);
70
+ NitroStrokeText::HybridStrokeTextViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
71
+
72
+ // 2. Update each prop individually
73
+ swiftPart.beforeUpdate();
74
+
75
+ // text: string
76
+ if (newViewProps.text.isDirty) {
77
+ swiftPart.setText(newViewProps.text.value);
78
+ newViewProps.text.isDirty = false;
79
+ }
80
+ // color: optional
81
+ if (newViewProps.color.isDirty) {
82
+ swiftPart.setColor(newViewProps.color.value);
83
+ newViewProps.color.isDirty = false;
84
+ }
85
+ // strokeColor: optional
86
+ if (newViewProps.strokeColor.isDirty) {
87
+ swiftPart.setStrokeColor(newViewProps.strokeColor.value);
88
+ newViewProps.strokeColor.isDirty = false;
89
+ }
90
+ // strokeWidth: optional
91
+ if (newViewProps.strokeWidth.isDirty) {
92
+ swiftPart.setStrokeWidth(newViewProps.strokeWidth.value);
93
+ newViewProps.strokeWidth.isDirty = false;
94
+ }
95
+ // fontSize: optional
96
+ if (newViewProps.fontSize.isDirty) {
97
+ swiftPart.setFontSize(newViewProps.fontSize.value);
98
+ newViewProps.fontSize.isDirty = false;
99
+ }
100
+ // fontWeight: optional
101
+ if (newViewProps.fontWeight.isDirty) {
102
+ swiftPart.setFontWeight(newViewProps.fontWeight.value);
103
+ newViewProps.fontWeight.isDirty = false;
104
+ }
105
+ // fontFamily: optional
106
+ if (newViewProps.fontFamily.isDirty) {
107
+ swiftPart.setFontFamily(newViewProps.fontFamily.value);
108
+ newViewProps.fontFamily.isDirty = false;
109
+ }
110
+ // fontStyle: optional
111
+ if (newViewProps.fontStyle.isDirty) {
112
+ swiftPart.setFontStyle(newViewProps.fontStyle.value);
113
+ newViewProps.fontStyle.isDirty = false;
114
+ }
115
+ // lineHeight: optional
116
+ if (newViewProps.lineHeight.isDirty) {
117
+ swiftPart.setLineHeight(newViewProps.lineHeight.value);
118
+ newViewProps.lineHeight.isDirty = false;
119
+ }
120
+ // letterSpacing: optional
121
+ if (newViewProps.letterSpacing.isDirty) {
122
+ swiftPart.setLetterSpacing(newViewProps.letterSpacing.value);
123
+ newViewProps.letterSpacing.isDirty = false;
124
+ }
125
+ // textAlign: optional
126
+ if (newViewProps.textAlign.isDirty) {
127
+ swiftPart.setTextAlign(newViewProps.textAlign.value);
128
+ newViewProps.textAlign.isDirty = false;
129
+ }
130
+ // textDecorationLine: optional
131
+ if (newViewProps.textDecorationLine.isDirty) {
132
+ swiftPart.setTextDecorationLine(newViewProps.textDecorationLine.value);
133
+ newViewProps.textDecorationLine.isDirty = false;
134
+ }
135
+ // textTransform: optional
136
+ if (newViewProps.textTransform.isDirty) {
137
+ swiftPart.setTextTransform(newViewProps.textTransform.value);
138
+ newViewProps.textTransform.isDirty = false;
139
+ }
140
+ // opacity: optional
141
+ if (newViewProps.opacity.isDirty) {
142
+ swiftPart.setOpacity(newViewProps.opacity.value);
143
+ newViewProps.opacity.isDirty = false;
144
+ }
145
+ // allowFontScaling: optional
146
+ if (newViewProps.allowFontScaling.isDirty) {
147
+ swiftPart.setAllowFontScaling(newViewProps.allowFontScaling.value);
148
+ newViewProps.allowFontScaling.isDirty = false;
149
+ }
150
+ // maxFontSizeMultiplier: optional
151
+ if (newViewProps.maxFontSizeMultiplier.isDirty) {
152
+ swiftPart.setMaxFontSizeMultiplier(newViewProps.maxFontSizeMultiplier.value);
153
+ newViewProps.maxFontSizeMultiplier.isDirty = false;
154
+ }
155
+ // includeFontPadding: optional
156
+ if (newViewProps.includeFontPadding.isDirty) {
157
+ swiftPart.setIncludeFontPadding(newViewProps.includeFontPadding.value);
158
+ newViewProps.includeFontPadding.isDirty = false;
159
+ }
160
+ // numberOfLines: optional
161
+ if (newViewProps.numberOfLines.isDirty) {
162
+ swiftPart.setNumberOfLines(newViewProps.numberOfLines.value);
163
+ newViewProps.numberOfLines.isDirty = false;
164
+ }
165
+ // ellipsizeMode: optional
166
+ if (newViewProps.ellipsizeMode.isDirty) {
167
+ swiftPart.setEllipsizeMode(newViewProps.ellipsizeMode.value);
168
+ newViewProps.ellipsizeMode.isDirty = false;
169
+ }
170
+ // padding: optional
171
+ if (newViewProps.padding.isDirty) {
172
+ swiftPart.setPadding(newViewProps.padding.value);
173
+ newViewProps.padding.isDirty = false;
174
+ }
175
+ // paddingVertical: optional
176
+ if (newViewProps.paddingVertical.isDirty) {
177
+ swiftPart.setPaddingVertical(newViewProps.paddingVertical.value);
178
+ newViewProps.paddingVertical.isDirty = false;
179
+ }
180
+ // paddingHorizontal: optional
181
+ if (newViewProps.paddingHorizontal.isDirty) {
182
+ swiftPart.setPaddingHorizontal(newViewProps.paddingHorizontal.value);
183
+ newViewProps.paddingHorizontal.isDirty = false;
184
+ }
185
+ // paddingTop: optional
186
+ if (newViewProps.paddingTop.isDirty) {
187
+ swiftPart.setPaddingTop(newViewProps.paddingTop.value);
188
+ newViewProps.paddingTop.isDirty = false;
189
+ }
190
+ // paddingRight: optional
191
+ if (newViewProps.paddingRight.isDirty) {
192
+ swiftPart.setPaddingRight(newViewProps.paddingRight.value);
193
+ newViewProps.paddingRight.isDirty = false;
194
+ }
195
+ // paddingBottom: optional
196
+ if (newViewProps.paddingBottom.isDirty) {
197
+ swiftPart.setPaddingBottom(newViewProps.paddingBottom.value);
198
+ newViewProps.paddingBottom.isDirty = false;
199
+ }
200
+ // paddingLeft: optional
201
+ if (newViewProps.paddingLeft.isDirty) {
202
+ swiftPart.setPaddingLeft(newViewProps.paddingLeft.value);
203
+ newViewProps.paddingLeft.isDirty = false;
204
+ }
205
+
206
+ swiftPart.afterUpdate();
207
+
208
+ // 3. Update hybridRef if it changed
209
+ if (newViewProps.hybridRef.isDirty) {
210
+ // hybridRef changed - call it with new this
211
+ const auto& maybeFunc = newViewProps.hybridRef.value;
212
+ if (maybeFunc.has_value()) {
213
+ maybeFunc.value()(_hybridView);
214
+ }
215
+ newViewProps.hybridRef.isDirty = false;
216
+ }
217
+
218
+ // 4. Continue in base class
219
+ [super updateProps:props oldProps:oldProps];
220
+ }
221
+
222
+ + (BOOL)shouldBeRecycled {
223
+ return NitroStrokeText::NitroStrokeTextAutolinking::isStrokeTextViewRecyclable();
224
+ }
225
+
226
+ - (void)prepareForRecycle {
227
+ [super prepareForRecycle];
228
+ NitroStrokeText::HybridStrokeTextViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
229
+ swiftPart.maybePrepareForRecycle();
230
+ }
231
+
232
+ @end
@@ -0,0 +1,81 @@
1
+ ///
2
+ /// HybridStrokeTextViewSpec.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /// See ``HybridStrokeTextViewSpec``
12
+ public protocol HybridStrokeTextViewSpec_protocol: HybridObject, HybridView {
13
+ // Properties
14
+ var text: String { get set }
15
+ var color: String? { get set }
16
+ var strokeColor: String? { get set }
17
+ var strokeWidth: Double? { get set }
18
+ var fontSize: Double? { get set }
19
+ var fontWeight: String? { get set }
20
+ var fontFamily: String? { get set }
21
+ var fontStyle: StrokeTextFontStyle? { get set }
22
+ var lineHeight: Double? { get set }
23
+ var letterSpacing: Double? { get set }
24
+ var textAlign: StrokeTextAlign? { get set }
25
+ var textDecorationLine: StrokeTextDecorationLine? { get set }
26
+ var textTransform: StrokeTextTransform? { get set }
27
+ var opacity: Double? { get set }
28
+ var allowFontScaling: Bool? { get set }
29
+ var maxFontSizeMultiplier: Double? { get set }
30
+ var includeFontPadding: Bool? { get set }
31
+ var numberOfLines: Double? { get set }
32
+ var ellipsizeMode: StrokeTextEllipsizeMode? { get set }
33
+ var padding: Double? { get set }
34
+ var paddingVertical: Double? { get set }
35
+ var paddingHorizontal: Double? { get set }
36
+ var paddingTop: Double? { get set }
37
+ var paddingRight: Double? { get set }
38
+ var paddingBottom: Double? { get set }
39
+ var paddingLeft: Double? { get set }
40
+
41
+ // Methods
42
+
43
+ }
44
+
45
+ public extension HybridStrokeTextViewSpec_protocol {
46
+ /// Default implementation of ``HybridObject.toString``
47
+ func toString() -> String {
48
+ return "[HybridObject StrokeTextView]"
49
+ }
50
+ }
51
+
52
+ /// See ``HybridStrokeTextViewSpec``
53
+ open class HybridStrokeTextViewSpec_base {
54
+ private weak var cxxWrapper: HybridStrokeTextViewSpec_cxx? = nil
55
+ public init() { }
56
+ public func getCxxWrapper() -> HybridStrokeTextViewSpec_cxx {
57
+ #if DEBUG
58
+ guard self is any HybridStrokeTextViewSpec else {
59
+ fatalError("`self` is not a `HybridStrokeTextViewSpec`! Did you accidentally inherit from `HybridStrokeTextViewSpec_base` instead of `HybridStrokeTextViewSpec`?")
60
+ }
61
+ #endif
62
+ if let cxxWrapper = self.cxxWrapper {
63
+ return cxxWrapper
64
+ } else {
65
+ let cxxWrapper = HybridStrokeTextViewSpec_cxx(self as! any HybridStrokeTextViewSpec)
66
+ self.cxxWrapper = cxxWrapper
67
+ return cxxWrapper
68
+ }
69
+ }
70
+ }
71
+
72
+ /**
73
+ * A Swift base-protocol representing the StrokeTextView HybridObject.
74
+ * Implement this protocol to create Swift-based instances of StrokeTextView.
75
+ * ```swift
76
+ * class HybridStrokeTextView : HybridStrokeTextViewSpec {
77
+ * // ...
78
+ * }
79
+ * ```
80
+ */
81
+ public typealias HybridStrokeTextViewSpec = HybridStrokeTextViewSpec_protocol & HybridStrokeTextViewSpec_base