npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-hmplatform

v1.0.15

Published

A common WebView extended by ImagePicker for React Native (Android and iOS platform).

Downloads

22

Readme

react-native-hmplatform

Getting started

$ npm install react-native-hmplatform --save

Mostly automatic installation

$ react-native link react-native-hmplatform

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-hmplatform and add RNHmplatform.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNHmplatform.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  • Add import com.hessian.hmplatform.RNHmplatformPackage; to the imports at the top of the file
  • Add new RNHmplatformPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-hmplatform'
    project(':react-native-hmplatform').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-hmplatform/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-hmplatform')

Common Usage as a Webview

import  {HMView}  from 'react-native-hmplatform';

// the other code
...

render() {
	var url = "https://github.com/smiletomyself/react-native-hmplatform/blob/main/README.md";
	return(
		<HMView url={url} />
	)
}

Load local html file

import  {HMView}  from 'react-native-hmplatform';

// the other code
...

render() {
	var html = `
      <html>
      <head>
        <meta charset="utf-8">
        <title>RNHmplatform</title>
      </head>
      <body>
        <h1>A common WebView extended by ImagePicker for React Native (Android and iOS platform).</h1>
      </body>
      </html>
    `;
	return(
		<HMView html={html} />
	)
}

Extend Usage as a image picker view

Before your want to use image picker by javascript in H5, notice as below:

  1. H5 need to post a message to RN;
  2. RN listen the message from H5 and do something about image picking;
  3. After image selected, RN inject a message named onRNMessage include image's datas;
  4. H5 listen the onRNMessage function and parse the callback result;

select from camera

you need to copy code blow in your H5 page

function openCamera(){
  window.ReactNativeWebView.postMessage(JSON.stringify({ type: "HSopenCamera",data: { } }))
}

Select from gallery

you need to copy code blow in your H5 page

function selectGalley(){
  window.ReactNativeWebView.postMessage(JSON.stringify({ type: "HSselectGalley",data: { } }))
}

Listen the result

you need to copy code blow in your H5 page

window["onRNMessage"] = (data) => {
	// todo parse the data

	// example:
	if (data instanceof Object) {
		var img = new Image()
    img.src='data:image/jpeg;base64,'+data.data
    document.body.appendChild(img)
	} else if (data instanceof Array) {
		for (var i = 0 ; i < data.length ; i++) {
      var img = new Image()
      img.src='data:image/jpeg;base64,'+data[i].data
      document.body.appendChild(img)
    }
	} else {
		console.e('pase data failed')
	}
}

Result data object

| Property | Type | Description | | ------------------------- | :----: | :--------------------------------------- | | path | string | Selected image location. This is null when the writeTempFile option is set to false. | | localIdentifier(ios only) | string | Selected images' localidentifier, used for PHAsset searching | | sourceURL(ios only) | string | Selected images' source path, do not have write access | | filename(ios only) | string | Selected images' filename | | width | number | Selected image width | | height | number | Selected image height | | mime | string | Selected image MIME type (image/jpeg, image/png) | | size | number | Selected image size in bytes | | duration | number | Video duration time in milliseconds | | data | base64 | Optional base64 selected file representation | | exif | object | Extracted exif data from image. Response format is platform specific | | cropRect | object | Cropped image rectangle (width, height, x, y) | | creationDate (ios only) | string | UNIX timestamp when image was created | | modificationDate | string | UNIX timestamp when image was last modified |

Optional

The custom props for the HMView

|Property|Type|Description| |:------------|:-----------------------------|:------------------| |html|string|Load local html file| |url|string|Load remote url| |pickerOptions|object|the common properties for image picker|

pickerOptions

| Property | Type | Description | | --------------------------------------- | :--------------------------------------: | :--------------------------------------- | | cropping | bool (default false) | Enable or disable cropping | | width | number | Width of result image when used with cropping option | | height | number | Height of result image when used with cropping option | | multiple | bool (default false) | Enable or disable multiple image selection | | writeTempFile (ios only) | bool (default true) | When set to false, does not write temporary files for the selected images. This is useful to improve performance when you are retrieving file contents with the includeBase64 option and don't need to read files from disk. | | includeBase64 | bool (default false) | When set to true, the image file content will be available as a base64-encoded string in the data property. Hint: To use this string as an image source, use it like: <Image source={{uri: `data:${image.mime};base64,${image.data}`}} /> | | includeExif | bool (default false) | Include image exif data in the response | | avoidEmptySpaceAroundImage (ios only) | bool (default true) | When set to true, the image will always fill the mask space. | | cropperActiveWidgetColor (android only) | string (default "#424242") | When cropping image, determines ActiveWidget color. | | cropperStatusBarColor (android only) | string (default #424242) | When cropping image, determines the color of StatusBar. | | cropperToolbarColor (android only) | string (default #424242) | When cropping image, determines the color of Toolbar. | | cropperToolbarWidgetColor (android only) | string (default darker orange) | When cropping image, determines the color of Toolbar text and buttons. | | freeStyleCropEnabled | bool (default false) | Enables user to apply custom rectangle area for cropping | | cropperToolbarTitle | string (default Edit Photo) | When cropping image, determines the title of Toolbar. | | cropperCircleOverlay | bool (default false) | Enable or disable circular cropping mask. | | disableCropperColorSetters (android only)| bool (default false) | When cropping image, disables the color setters for cropping library. | | minFiles (ios only) | number (default 1) | Min number of files to select when using multiple option | | maxFiles (ios only) | number (default 5) | Max number of files to select when using multiple option | | waitAnimationEnd (ios only) | bool (default true) | Promise will resolve/reject once ViewController completion block is called | | smartAlbums (ios only) | array (default ['UserLibrary', 'PhotoStream', 'Panoramas', 'Videos', 'Bursts']) | List of smart albums to choose from | | useFrontCamera | bool (default false) | Whether to default to the front/'selfie' camera when opened. Please note that not all Android devices handle this parameter| | compressVideoPreset (ios only) | string (default MediumQuality) | Choose which preset will be used for video compression | | compressImageMaxWidth | number (default none) | Compress image with maximum width | | compressImageMaxHeight | number (default none) | Compress image with maximum height | | compressImageQuality | number (default 1 (Android)/0.8 (iOS)) | Compress image with quality (from 0 to 1, where 1 is best quality). On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images, while a value of 0.8 will reduce the file size by about half or less compared to a value of 1. | | loadingLabelText (ios only) | string (default "Processing assets...") | Text displayed while photo is loading in picker | | mediaType | string (default any) | Accepted mediaType for image selection, can be one of: 'photo', 'video', or 'any' | | showsSelectedCount (ios only) | bool (default true) | Whether to show the number of selected assets | | sortOrder (ios only) | string (default 'none', supported values: 'asc', 'desc', 'none') | Applies a sort order on the creation date on how media is displayed within the albums/detail photo views when opening the image picker | | forceJpg (ios only) | bool (default false) | Whether to convert photos to JPG. This will also convert any Live Photo into its JPG representation | | showCropGuidelines (android only) | bool (default true) | Whether to show the 3x3 grid on top of the image during cropping | | showCropFrame (android only) | bool (default true) | Whether to show crop frame during cropping | | hideBottomControls (android only) | bool (default false) | Whether to display bottom controls | | enableRotationGesture (android only) | bool (default false) | Whether to enable rotating the image by hand gesture | | cropperChooseText (ios only) | string (default choose) | Choose button text | | cropperCancelText (ios only) | string (default Cancel) | Cancel button text | | cropperRotateButtonsHidden (ios only) | bool (default false) | Enable or disable cropper rotate buttons |