@domir/react-native-measure-text 0.1.0
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/.eslintrc.js +5 -0
- package/LICENSE +21 -0
- package/Readme.md +46 -0
- package/android/build.gradle +93 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/expo/modules.measuretext/ReactNativeMeasureTextModule.kt +51 -0
- package/build/ReactNativeMeasureText.d.ts +6 -0
- package/build/ReactNativeMeasureText.d.ts.map +1 -0
- package/build/ReactNativeMeasureText.js +5 -0
- package/build/ReactNativeMeasureText.js.map +1 -0
- package/build/ReactNativeMeasureText.types.d.ts +4 -0
- package/build/ReactNativeMeasureText.types.d.ts.map +1 -0
- package/build/ReactNativeMeasureText.types.js +2 -0
- package/build/ReactNativeMeasureText.types.js.map +1 -0
- package/build/ReactNativeMeasureTextModule.d.ts +3 -0
- package/build/ReactNativeMeasureTextModule.d.ts.map +1 -0
- package/build/ReactNativeMeasureTextModule.js +5 -0
- package/build/ReactNativeMeasureTextModule.js.map +1 -0
- package/build/ReactNativeMeasureTextModule.web.d.ts +5 -0
- package/build/ReactNativeMeasureTextModule.web.d.ts.map +1 -0
- package/build/ReactNativeMeasureTextModule.web.js +6 -0
- package/build/ReactNativeMeasureTextModule.web.js.map +1 -0
- package/example/.expo-shared/assets.json +4 -0
- package/example/App.tsx +45 -0
- package/example/android/app/BUCK +55 -0
- package/example/android/app/build.gradle +376 -0
- package/example/android/app/build_defs.bzl +19 -0
- package/example/android/app/debug.keystore +0 -0
- package/example/android/app/proguard-rules.pro +14 -0
- package/example/android/app/src/debug/AndroidManifest.xml +7 -0
- package/example/android/app/src/debug/java/expo/modules/measuretext/example/ReactNativeFlipper.java +69 -0
- package/example/android/app/src/main/AndroidManifest.xml +34 -0
- package/example/android/app/src/main/java/expo/modules/measuretext/example/MainActivity.java +83 -0
- package/example/android/app/src/main/java/expo/modules/measuretext/example/MainApplication.java +106 -0
- package/example/android/app/src/main/java/expo/modules/measuretext/example/newarchitecture/MainApplicationReactNativeHost.java +117 -0
- package/example/android/app/src/main/java/expo/modules/measuretext/example/newarchitecture/components/MainComponentsRegistry.java +36 -0
- package/example/android/app/src/main/java/expo/modules/measuretext/example/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +48 -0
- package/example/android/app/src/main/jni/Android.mk +48 -0
- package/example/android/app/src/main/jni/MainApplicationModuleProvider.cpp +24 -0
- package/example/android/app/src/main/jni/MainApplicationModuleProvider.h +16 -0
- package/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +45 -0
- package/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +38 -0
- package/example/android/app/src/main/jni/MainComponentsRegistry.cpp +61 -0
- package/example/android/app/src/main/jni/MainComponentsRegistry.h +32 -0
- package/example/android/app/src/main/jni/OnLoad.cpp +11 -0
- package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
- package/example/android/app/src/main/res/drawable/splashscreen.xml +3 -0
- package/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png +0 -0
- package/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png +0 -0
- package/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png +0 -0
- package/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png +0 -0
- package/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png +0 -0
- package/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/values/colors.xml +6 -0
- package/example/android/app/src/main/res/values/strings.xml +5 -0
- package/example/android/app/src/main/res/values/styles.xml +17 -0
- package/example/android/app/src/main/res/values-night/colors.xml +1 -0
- package/example/android/build.gradle +59 -0
- package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/example/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/example/android/gradle.properties +53 -0
- package/example/android/gradlew +234 -0
- package/example/android/gradlew.bat +89 -0
- package/example/android/settings.gradle +17 -0
- package/example/app.json +35 -0
- package/example/assets/adaptive-icon.png +0 -0
- package/example/assets/favicon.png +0 -0
- package/example/assets/icon.png +0 -0
- package/example/assets/splash.png +0 -0
- package/example/babel.config.js +19 -0
- package/example/index.js +8 -0
- package/example/ios/.xcode.env +11 -0
- package/example/ios/Podfile +59 -0
- package/example/ios/Podfile.lock +482 -0
- package/example/ios/Podfile.properties.json +3 -0
- package/example/ios/reactnativemeasuretextexample/AppDelegate.h +9 -0
- package/example/ios/reactnativemeasuretextexample/AppDelegate.mm +166 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/Contents.json +122 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/Contents.json +6 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/SplashScreen.imageset/Contents.json +21 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/SplashScreen.imageset/image.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/SplashScreenBackground.imageset/Contents.json +21 -0
- package/example/ios/reactnativemeasuretextexample/Images.xcassets/SplashScreenBackground.imageset/image.png +0 -0
- package/example/ios/reactnativemeasuretextexample/Info.plist +76 -0
- package/example/ios/reactnativemeasuretextexample/SplashScreen.storyboard +51 -0
- package/example/ios/reactnativemeasuretextexample/Supporting/Expo.plist +16 -0
- package/example/ios/reactnativemeasuretextexample/main.m +10 -0
- package/example/ios/reactnativemeasuretextexample/noop-file.swift +4 -0
- package/example/ios/reactnativemeasuretextexample/reactnativemeasuretextexample.entitlements +8 -0
- package/example/ios/reactnativemeasuretextexample.xcodeproj/project.pbxproj +497 -0
- package/example/ios/reactnativemeasuretextexample.xcodeproj/xcshareddata/xcschemes/reactnativemeasuretextexample.xcscheme +88 -0
- package/example/ios/reactnativemeasuretextexample.xcworkspace/contents.xcworkspacedata +10 -0
- package/example/ios/reactnativemeasuretextexample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/example/metro.config.js +14 -0
- package/example/package-lock.json +21620 -0
- package/example/package.json +29 -0
- package/example/tsconfig.json +10 -0
- package/example/webpack.config.js +20 -0
- package/example/yarn.lock +6664 -0
- package/expo-module.config.json +9 -0
- package/ios/ReactNativeMeasureText.podspec +32 -0
- package/ios/ReactNativeMeasureTextModule.swift +33 -0
- package/package.json +38 -0
- package/src/ReactNativeMeasureText.ts +8 -0
- package/src/ReactNativeMeasureText.types.ts +3 -0
- package/src/ReactNativeMeasureTextModule.ts +5 -0
- package/src/ReactNativeMeasureTextModule.web.ts +5 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = 'ReactNativeMeasureText'
|
|
7
|
+
s.version = package['version']
|
|
8
|
+
s.summary = package['description']
|
|
9
|
+
s.description = package['description']
|
|
10
|
+
s.license = package['license']
|
|
11
|
+
s.author = package['author']
|
|
12
|
+
s.homepage = package['homepage']
|
|
13
|
+
s.platform = :ios, '12.0'
|
|
14
|
+
s.swift_version = '5.4'
|
|
15
|
+
s.source = { git: 'https://github.com/DomiR/react-native-measure-text' }
|
|
16
|
+
s.static_framework = true
|
|
17
|
+
|
|
18
|
+
s.dependency 'ExpoModulesCore'
|
|
19
|
+
|
|
20
|
+
# Swift/Objective-C compatibility
|
|
21
|
+
s.pod_target_xcconfig = {
|
|
22
|
+
'DEFINES_MODULE' => 'YES',
|
|
23
|
+
'SWIFT_COMPILATION_MODE' => 'wholemodule'
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if !$ExpoUseSources&.include?(package['name']) && ENV['EXPO_USE_SOURCE'].to_i == 0 && File.exist?("#{s.name}.xcframework") && Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.10.0')
|
|
27
|
+
s.source_files = "**/*.h"
|
|
28
|
+
s.vendored_frameworks = "#{s.name}.xcframework"
|
|
29
|
+
else
|
|
30
|
+
s.source_files = "**/*.{h,m,swift}"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
import React
|
|
3
|
+
|
|
4
|
+
struct StyleOptions: Record {
|
|
5
|
+
@Field
|
|
6
|
+
var fontFamily: String? = nil
|
|
7
|
+
|
|
8
|
+
@Field
|
|
9
|
+
var fontWeight: String? = nil
|
|
10
|
+
|
|
11
|
+
@Field
|
|
12
|
+
var fontSize: Int? = nil
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public class ReactNativeMeasureTextModule: Module {
|
|
16
|
+
public func definition() -> ModuleDefinition {
|
|
17
|
+
Name("ReactNativeMeasureText")
|
|
18
|
+
|
|
19
|
+
Function("measureWidth") { (text: String, style: StyleOptions) -> CGFloat in
|
|
20
|
+
let fontSize = style.fontSize != nil ? RCTConvert.cgFloat(style.fontSize) : CGFloat(0)
|
|
21
|
+
let usedFontWeight = style.fontWeight ?? "Normal"
|
|
22
|
+
|
|
23
|
+
if let font = style.fontFamily != nil ?
|
|
24
|
+
RCTConvert.uiFont(["fontWeight": usedFontWeight, "fontFamily": style.fontFamily!, "fontSize": fontSize]) : RCTConvert.uiFont(["fontWeight": usedFontWeight, "fontSize": fontSize])
|
|
25
|
+
{
|
|
26
|
+
let size: CGSize = text.size(withAttributes: [.font: font])
|
|
27
|
+
return size.width
|
|
28
|
+
} else {
|
|
29
|
+
return CGFloat(0)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@domir/react-native-measure-text",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Measure text width synchronously using JSI",
|
|
5
|
+
"main": "build/ReactNativeMeasureText.js",
|
|
6
|
+
"types": "build/ReactNativeMeasureText.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "expo-module tsc",
|
|
9
|
+
"clean": "expo-module clean",
|
|
10
|
+
"lint": "expo-module lint",
|
|
11
|
+
"test": "expo-module test",
|
|
12
|
+
"prepublishOnly": "expo-module prepublishOnly",
|
|
13
|
+
"expo-module": "expo-module"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"react-native",
|
|
17
|
+
"expo",
|
|
18
|
+
"react-native-measure-text",
|
|
19
|
+
"ReactNativeMeasureText"
|
|
20
|
+
],
|
|
21
|
+
"repository": "https://github.com/DomiR/react-native-measure-text",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/DomiR/react-native-measure-text/issues"
|
|
24
|
+
},
|
|
25
|
+
"author": "Dominique <domi.github@gmail.com> (https://github.com/DomiR)",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"homepage": "https://github.com/DomiR/react-native-measure-text#readme",
|
|
28
|
+
"dependencies": {},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"expo-module-scripts": "^2.1.1",
|
|
31
|
+
"expo-modules-core": "^0.11.4"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"expo": "*",
|
|
35
|
+
"react": "*",
|
|
36
|
+
"react-native": "*"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import ReactNativeMeasureText from "./ReactNativeMeasureTextModule";
|
|
2
|
+
|
|
3
|
+
export function measureWidth(
|
|
4
|
+
text: string,
|
|
5
|
+
style: { fontSize?: number; fontFamily?: string; fontWeight?: string } = {}
|
|
6
|
+
): number {
|
|
7
|
+
return ReactNativeMeasureText.measureWidth(text, style);
|
|
8
|
+
}
|
package/tsconfig.json
ADDED