Parse text and make them into multiple React Native Text elements

Overview

React Native Parsed Text

This library allows you to parse a text and extract parts using a RegExp or predefined patterns. Currently there are 3 predefined types: url, phone and email.

All the props are passed down to a new Text Component if there is a matching text. If those are functions they will receive as param the value of the text.

Proptypes

ParsedText can receive Text PropTypes.

parse: Array of parsed text.

  • to use the predefined type: {type: 'url'}.
  • to use your own RegExp: {pattern: /something/}.

renderText: Function called to change the displayed children.

childrenProps : Properties to pass to the children elements generated by react-native-parsed-text.

eg: Your str is 'Mention [@michel:5455345]' where 5455345 is ID of this user and @michel the value to display on interface. Your pattern for ID & username extraction : /\[(@[^:]+):([^\]]+)\]/i Your renderText method :

renderText(matchingString, matches) {
  // matches => ["[@michel:5455345]", "@michel", "5455345"]
  let pattern = /\[(@[^:]+):([^\]]+)\]/i;
  let match = matchingString.match(pattern);
  return `^^${match[1]}^^`;
}

Displayed text will be : Mention ^^@michel^^

Example

import ParsedText from 'react-native-parsed-text';

class Example extends React.Component {
  static displayName = 'Example';

  handleUrlPress(url, matchIndex /*: number*/) {
    LinkingIOS.openURL(url);
  }

  handlePhonePress(phone, matchIndex /*: number*/) {
    AlertIOS.alert(`${phone} has been pressed!`);
  }

  handleNamePress(name, matchIndex /*: number*/) {
    AlertIOS.alert(`Hello ${name}`);
  }

  handleEmailPress(email, matchIndex /*: number*/) {
    AlertIOS.alert(`send email to ${email}`);
  }

  renderText(matchingString, matches) {
    // matches => ["[@michel:5455345]", "@michel", "5455345"]
    let pattern = /\[(@[^:]+):([^\]]+)\]/i;
    let match = matchingString.match(pattern);
    return `^^${match[1]}^^`;
  }

  render() {
    return (
      <View style={styles.container}>
        <ParsedText
          style={styles.text}
          parse={
            [
              {type: 'url',                       style: styles.url, onPress: this.handleUrlPress},
              {type: 'phone',                     style: styles.phone, onPress: this.handlePhonePress},
              {type: 'email',                     style: styles.email, onPress: this.handleEmailPress},
              {pattern: /Bob|David/,              style: styles.name, onPress: this.handleNamePress},
              {pattern: /\[(@[^:]+):([^\]]+)\]/i, style: styles.username, onPress: this.handleNamePress, renderText: this.renderText},
              {pattern: /42/,                     style: styles.magicNumber},
              {pattern: /#(\w+)/,                 style: styles.hashTag},
            ]
          }
          childrenProps={{allowFontScaling: false}}
        >
          Hello this is an example of the ParsedText, links like http://www.google.com or http://www.facebook.com are clickable and phone number 444-555-6666 can call too.
          But you can also do more with this package, for example Bob will change style and David too. [email protected]
          And the magic number is 42!
          #react #react-native
        </ParsedText>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },

  url: {
    color: 'red',
    textDecorationLine: 'underline',
  },

  email: {
    textDecorationLine: 'underline',
  },

  text: {
    color: 'black',
    fontSize: 15,
  },

  phone: {
    color: 'blue',
    textDecorationLine: 'underline',
  },

  name: {
    color: 'red',
  },

  username: {
    color: 'green',
    fontWeight: 'bold'
  },

  magicNumber: {
    fontSize: 42,
    color: 'pink',
  },

  hashTag: {
    fontStyle: 'italic',
  },

});

Install

npm install --save react-native-parsed-text

TODO

  • Add nested text parsing
Comments
  • Global flag not respected on regex pattern

    Global flag not respected on regex pattern

    If I utilise a regex with the global flag enabled, like this:

    <ParsedText parse={[{pattern: /a/g, renderText: () => 'z'}]}> aaaa </ParsedText>

    I would expect the output to be: zzzz

    Whereas, I would expect this:

    <ParsedText parse={[{pattern: /a/, renderText: () => 'z'}]}> aaaa </ParsedText>

    to output: zaaa as the global flag is removed and is only matching the first instance.

    At the moment the second example will output zzzz as the parser will continue matching the pattern against any remaining text.

    While I understand there may be people depending on this behaviour is there any workaround to ensure only the first match is rendered?

    opened by CampbellMG 26
  • [web] Added support for Expo web

    [web] Added support for Expo web

    The default ReactNative export was removed from the most recent version of react-native-web. Using babel-preset-expo will provide the correct babel config on web and native. This is needed for getting react-native-gifted-chat working in web.

    opened by EvanBacon 16
  • Invariant Violation: StaticRenderer

    Invariant Violation: StaticRenderer

    I am getting this error

    Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of `StaticRenderer

    from

    let parse = [ {type: 'url', style: [styles.link, (rowData.position === 'left' ? styles.linkLeft : styles.linkRight)], onPress: this.handleUrlPress}, {type: 'phone', style: [styles.link, (rowData.position === 'left' ? styles.linkLeft : styles.linkRight)], onPress: this.handlePhonePress}, {type: 'email', style: [styles.link, (rowData.position === 'left' ? styles.linkLeft : styles.linkRight)], onPress: this.handleEmailPress} ];

      return (
        <ParsedText
          style={[styles.text, (rowData.position === 'left' ? styles.textLeft : styles.textRight)]}
          parse={parse}          
        >
        </ParsedText>
      );
    

    Any idea.

    opened by nidzovito 10
  • Support url starting with www

    Support url starting with www

    I wanted to support url like www.github.com also, I could have add it using a patter but I thought it could bu useful for someone else, let me know if you think this is relevant :grin:

    opened by remstos 9
  • onPress not fired for email custom pattern

    onPress not fired for email custom pattern

    Hello, thank you for this very useful component.

    I tried to implement an email parsing using the following option: {pattern: /^\S+@\S+$/, style: {textDecorationLine: 'underline'}, onPress: () => { console.log('email pressed'); }},

    The text is underlined properly but nothing happens when I press the word. Do you experiment the same issue?

    react-native 0.14.2 npm 2.14.7 nodejs 4.2.2

    opened by FaridSafi 9
  • Can this work with TextInput?

    Can this work with TextInput?

    Can this be made to work live with a TextInput? My current thought would be to have a <ParsedText /> component that is controlled by a hidden <TextInput /> but that doesn't feel right... Any thoughts?

    opened by mcrichards 7
  • PropTypes has been moved to a separate package

    PropTypes has been moved to a separate package

    React 15.5 and later have moved PropTypes to a separate package

    Warning: PropTypes has been moved to a separate package. Accessing React.PropTypes is no longer supported and will be removed completely in React 16. Use the prop-types package on npm instead.
    

    https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes

    Does this library require the outdated version of react native or has an update never been required?

    If so can we update it?

    opened by AndrewJack 6
  • Android error

    Android error

    Hello, i just try to use this module on an Android device and i get the folowing error :

    error

    there is my code (realy simple) :

    'use strict';
    
    var React = require('react-native');
    var ParsedText = require('react-native-parsed-text');
    var {
      Component,
      Text,
      View
    } = React;
    
    class Home extends Component {
      constructor (props) {
        super(props);
      }
      render() {
        return (
          <View style={{flex: 1}}>
            <Text style={{marginVertical: 20, marginHorizontal: 10}}>Welcome</Text>
            <ParsedText style={{color: 'black', fontSize: 15}} parse={  [ {type: 'url', style: {color: '#456'}, onPress: () => {}} ] } >hello</ParsedText>
          </View>
        );
      }
    }
    
    module.exports = Home;
    

    My api version : API 18

    So is this module supposed to work on Android or did i miss something ?

    opened by yfuks 6
  • parse the state

    parse the state

    How can I parse the variable from this.state.xx? the code below give no help

    <ParsedText style={styles.text} parse={ [ {pattern: /{this.state.search}/,style: styles.found}, ] } childrenProps={{allowFontScaling: false}}

    blahblah

    question 
    opened by copper123 5
  • Fix for react-native-web

    Fix for react-native-web

    This PR makes the package play along nicely with react-native-web. It doesn't add functionality of modifies, it merely removes warnings about unused properties.

    opened by PeterKottas 5
  • Moving all babel-plugin related things to `dependencies`

    Moving all babel-plugin related things to `dependencies`

    Just tried running this in RN 0.16 but the first line in your plugins in the .babelrc file throws a red screen:

    Unknown pluging "syntax-async-functions".

    It makes sense because all the plugins are included in devDependencies in package.json so when I install it, it does not get them.

    The other option would be to run a build step before publishing it.

    opened by pietropizzi 4
  • ERROR TypeError: undefined is not an object (evaluating '_reactNative.Text.propTypes.style') in react native 0.70

    ERROR TypeError: undefined is not an object (evaluating '_reactNative.Text.propTypes.style') in react native 0.70

    Hi! 👋

    Firstly, thanks for your work on this project! 🙂

    Today I used patch-package to patch [email protected] for the project I'm working on.

    Here is the diff that solved my problem:

    diff --git a/node_modules/react-native-parsed-text/src/ParsedText.js b/node_modules/react-native-parsed-text/src/ParsedText.js
    index d8a0cc5..4befc38 100644
    --- a/node_modules/react-native-parsed-text/src/ParsedText.js
    +++ b/node_modules/react-native-parsed-text/src/ParsedText.js
    @@ -1,6 +1,7 @@
     import React from 'react';
     import { Text } from 'react-native';
     import PropTypes from 'prop-types';
    +import { TextPropTypes } from 'deprecated-react-native-prop-types';
     
     import TextExtraction from './lib/TextExtraction';
     
    @@ -39,13 +40,13 @@ export const PATTERNS = {
      * @property {Function} [onLongPress]
      */
     const defaultParseShape = PropTypes.shape({
    -  ...Text.propTypes,
    +  ...TextPropTypes,
       type: PropTypes.oneOf(Object.keys(PATTERNS)).isRequired,
       nonExhaustiveMaxMatchCount: PropTypes.number,
     });
     
     const customParseShape = PropTypes.shape({
    -  ...Text.propTypes,
    +  ...TextPropTypes,
       pattern: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
         .isRequired,
       nonExhaustiveMaxMatchCount: PropTypes.number,
    @@ -64,11 +65,11 @@ class ParsedText extends React.Component {
       static displayName = 'ParsedText';
     
       static propTypes = {
    -    ...Text.propTypes,
    +    ...TextPropTypes,
         parse: PropTypes.arrayOf(
           PropTypes.oneOfType([defaultParseShape, customParseShape]),
         ),
    -    childrenProps: PropTypes.shape(Text.propTypes),
    +    childrenProps: PropTypes.shape(TextPropTypes),
       };
     
       static defaultProps = {
    

    This issue body was partially generated by patch-package.

    opened by hotaryuzaki 0
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump jsdom from 16.2.2 to 16.7.0

    Bump jsdom from 16.2.2 to 16.7.0

    Bumps jsdom from 16.2.2 to 16.7.0.

    Release notes

    Sourced from jsdom's releases.

    Version 16.7.0

    • Added AbortSignal.abort(). (ninevra)
    • Added dummy x and y properties to the return value of getBoundingClientRect(). (eiko)
    • Implemented wrapping for textareaEl.value if the wrap="" attribute is specified. (ninevra)
    • Changed newline normalization in <textarea>s according to recent HTML Standard updates. (ninevra)
    • Fixed some bad cascade computation in getComputedStyle(). (romain-trotard)

    Version 16.6.0

    • Added parentNode.replaceChildren(). (@​ninevra)
    • Fixed jsdom's handling of when code running inside the jsdom throws null or undefined as an exception. (@​mbest)
    • Removed the dependency on the deprecated request package, in the process fixing several issues with the XMLHttpRequest implementation around header processing. Thanks go to @​tobyhinloopen, @​andrewaylett, and especially @​vegardbb, for completing this months-long effort!

    Version 16.5.3

    • Fixed infinite recursion when using MutationObservers to observe elements inside a MutationObserver callback.

    Version 16.5.2

    • Fixed Access-Control-Allow-Headers: * to work with XMLHttpRequest. (silviot)
    • Fixed xhr.response to strip any leading BOM when xhr.responseType is "json".
    • Fixed new Text() and new Comment() constructors to properly set the resulting node's ownerDocument.
    • Fixed customElements.whenDefined() to resolve its returned promise with the custom element constructor, per recent spec updates. (ExE-Boss)
    • Fixed parsing to ensure that <svg>\<template></template></svg> does not throw an exception, but instead correctly produces a SVG-namespace \<template> element.
    • Fixed domParser.parseFromString() to treat <noscript> elements appropriately.
    • Fixed form control validity checking when the control was outside the <form> element and instead associated using the form="" attribute.
    • Fixed legendEl.form to return the correct result based on its parent <fieldset>.
    • Fixed optionEl.text to exclude <script> descendants.
    • Fixed radio buttons and checkboxes to not fire input and change events when disconnected.
    • Fixed inputEl.indeterminate to reset to its previous value when canceling a click event on a checkbox or radio button.
    • Fixed the behavior of event handler attributes (e.g. onclick="...code...") when there were global variables named element or formOwner. (ExE-Boss)
    • On Node.js v14.6.0+ where WeakRefs are available, fixed NodeIterator to no longer stop working when more than ten NodeIterator instances are created, and to use less memory due to inactive NodeIterators sticking around. (ExE-Boss)

    Version 16.5.1

    • Fixed a regression that broke customElements.get() in v16.5.0. (fdesforges)
    • Fixed window.event to have a setter which overwrites the window.event property with the given value, per the specification. This fixes an issue where after upgrading to jsdom v16.5.0 you would no longer be able to set a global variable named event in the jsdom context.

    Version 16.5.0

    • Added window.queueMicrotask().
    • Added window.event.
    • Added inputEvent.inputType. (diegohaz)
    • Removed ondragexit from Window and friends, per a spec update.
    • Fixed the URL of about:blank iframes. Previously it was getting set to the parent's URL. (SimonMueller)
    • Fixed the loading of subresources from the filesystem when they had non-ASCII filenames.
    • Fixed the hidden="" attribute to cause display: none per the user-agent stylesheet. (ph-fritsche)
    • Fixed the new File() constructor to no longer convert / to :, per a pending spec update.
    • Fixed mutation observer callbacks to be called with the MutationObserver instance as their this value.
    • Fixed <input type=checkbox> and <input type=radio> to be mutable even when disabled, per a spec update.
    • Fixed XMLHttpRequest to not fire a redundant final progress event if a progress event was previously fired with the same loaded value. This would usually occur with small files.
    • Fixed XMLHttpRequest to expose the Content-Length header on cross-origin responses.
    • Fixed xhr.response to return null for failures that occur during the middle of the download.
    • Fixed edge cases around passing callback functions or event handlers. (ExE-Boss)
    • Fixed edge cases around the properties of proxy-like objects such as localStorage or dataset. (ExE-Boss)

    ... (truncated)

    Changelog

    Sourced from jsdom's changelog.

    16.7.0

    • Added AbortSignal.abort(). (ninevra)
    • Added dummy x and y properties to the return value of getBoundingClientRect(). (eiko)
    • Implemented wrapping for textareaEl.value if the wrap="" attribute is specified. (ninevra)
    • Changed newline normalization in <textarea>s according to recent HTML Standard updates. (ninevra)
    • Fixed some bad cascade computation in getComputedStyle(). (romain-trotard)

    16.6.0

    • Added parentNode.replaceChildren(). (ninevra)
    • Fixed jsdom's handling of when code running inside the jsdom throws null or undefined as an exception. (mbest)
    • Removed the dependency on the deprecated request package, in the process fixing several issues with the XMLHttpRequest implementation around header processing. Special thanks to vegardbb for completing this months-long effort!

    16.5.3

    • Fixed infinite recursion when using MutationObservers to observe elements inside a MutationObserver callback.

    16.5.2

    • Fixed Access-Control-Allow-Headers: * to work with XMLHttpRequest. (silviot)
    • Fixed xhr.response to strip any leading BOM when xhr.responseType is "json".
    • Fixed new Text() and new Comment() constructors to properly set the resulting node's ownerDocument.
    • Fixed customElements.whenDefined() to resolve its returned promise with the custom element constructor, per recent spec updates. (ExE-Boss)
    • Fixed parsing to ensure that <svg>\<template></template></svg> does not throw an exception, but instead correctly produces a SVG-namespace \<template> element.
    • Fixed domParser.parseFromString() to treat <noscript> elements appropriately.
    • Fixed form control validity checking when the control was outside the <form> element and instead associated using the form="" attribute.
    • Fixed legendEl.form to return the correct result based on its parent <fieldset>.
    • Fixed optionEl.text to exclude <script> descendants.
    • Fixed radio buttons and checkboxes to not fire input and change events when disconnected.
    • Fixed inputEl.indeterminate to reset to its previous value when canceling a click event on a checkbox or radio button.
    • Fixed the behavior of event handler attributes (e.g. onclick="...code...") when there were global variables named element or formOwner. (ExE-Boss)
    • On Node.js v14.6.0+ where WeakRefs are available, fixed NodeIterator to no longer stop working when more than ten NodeIterator instances are created, and to use less memory due to inactive NodeIterators sticking around. (ExE-Boss)

    16.5.1

    • Fixed a regression that broke customElements.get() in v16.5.0. (fdesforges)
    • Fixed window.event to have a setter which overwrites the window.event property with the given value, per the specification. This fixes an issue where after upgrading to jsdom v16.5.0 you would no longer be able to set a global variable named event in the jsdom context.

    16.5.0

    • Added window.queueMicrotask().
    • Added window.event.
    • Added inputEvent.inputType. (diegohaz)
    • Removed ondragexit from Window and friends, per a spec update.
    • Fixed the URL of about:blank iframes. Previously it was getting set to the parent's URL. (SimonMueller)
    • Fixed the loading of subresources from the filesystem when they had non-ASCII filenames.
    • Fixed the hidden="" attribute to cause display: none per the user-agent stylesheet. (ph-fritsche)
    • Fixed the new File() constructor to no longer convert / to :, per a pending spec update.
    • Fixed mutation observer callbacks to be called with the MutationObserver instance as their this value.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • could I use it in react for a website

    could I use it in react for a website

    I met an error like below ERROR in ./~/react-native-parsed-text/src/ParsedText.js /react-native-parsed-text/src/ParsedText.js: Unexpected token (23:21) 21 | class ParsedText extends React.Component { 22 |

    23 | static displayName = 'ParsedText'; | ^ 24 | 25 | static propTypes = { 26 | ...React.Text.propTypes,

    opened by eminfan 2
  • Bump simple-plist from 1.1.0 to 1.3.1

    Bump simple-plist from 1.1.0 to 1.3.1

    Bumps simple-plist from 1.1.0 to 1.3.1.

    Release notes

    Sourced from simple-plist's releases.

    TypeScript

    This release is a rewrite of the JavaScript code into TypeScript code to add strong typing for those who would choose to use it.

    As this is a minor release there should be minimal risk in upgrading from v1.1.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v0.0.22)
  • v0.0.22(Jun 24, 2020)

    Features

    • long gtlds #74
    • expo web tweaks #58
    • nonExhaustive Matching Mode #80

    Bug Fixes

    • reset regexps before looping over them (alternative to #47)
    • comma containing URLs & bracket containing query-strings #82
    • others (lost track)
    Source code(tar.gz)
    Source code(zip)
  • v0.0.21(Nov 15, 2018)

    • Fix URL RegExp to match single digit TLDs #52
    • Fix URL RegExp to be less greedy, and avoid including . dots at the end of the URL. This matches behavior in iMessage / Other Chat Clients. #52
    • Expose PATTERNS for global patching if needed
    • Switch to Jest testing & Upgrade Infrastructure, also fix tests #52
    • Fix react-native-web via #45
    • Add matchIndex to the handler callbacks via #24

    Published: https://www.npmjs.com/package/react-native-parsed-text/v/0.0.21

    Source code(tar.gz)
    Source code(zip)
Owner
TaskRabbit
TaskRabbit
A wrapper of dotparser to parse GraphViz dot file and collect nodes / edges

reagram React component to render customizable graph/diagram. There are many great ways in JavaScript to create graphs/diagrams, like mermaid, JointJS

null 0 Dec 13, 2021
A pure javascript masked text and input text component for React-Native.

react-native-masked-text This is a simple masked text (normal text and input text) component for React-Native. Alert Hey guys! Unfortunatelly I'm not

Ben-hur Santos Ott 1.6k Dec 30, 2022
Swiper/carousel component for React Native featuring previews, multiple layouts, parallax images, performant handling of huge numbers of items, and more. Compatible with Android & iOS.

react-native-snap-carousel ✨ Some great news for you, fellow plugin user! ?? Head over there now to learn more about all the goodness that's coming yo

Meliorence 9.8k Jan 5, 2023
A cross-platform (iOS / Android) single and multiple-choice React Native component.

react-native-multiple-choice A cross-platform (iOS / Android) single and multiple-choice React Native component. Install npm i react-native-multiple-c

Dan 67 Sep 24, 2022
react-native-egg make your react native app infinitely more fun !!

react-native-egg react-native-egg make your react native app infinitely more fun !! Implementation simple gestures detection achieve trigger easter eg

FuYaoDe 259 Nov 2, 2022
A react native component used for making multiple choices.

react-native-label-select LabelSelect is a component used for making multiple choices. The modal is a checkbox like html. Example Usage npm install --

X  Fruit Team 129 Oct 9, 2022
A button (or a grouped buttons) supporting multiple or radio selection by building with React Native. https://github.com/danceyoung/selectmultiplebuttons for Swift.

React Native SelectMultiple Button This library is a button (or a grouped buttons) supporting multiple or radio selection by building with React Nativ

Young 79 Nov 5, 2022
A tiny and simple helper set to make it easy to switch your styles in React Native when switching between light and dark mode. 🌟

A tiny and simple helper set to make it easy to switch your styles in React Native when switching between "light" and "dark" mode

Lewis Yearsley 5 Jan 3, 2023
A sibling elements manager.

react-native-root-siblings Version 4.x requires react-native version >= 0.59, 3.x requires react-native version >= 0.47 Add sibling elements after you

Horcrux 592 Dec 29, 2022
A tinted overlay that allows one or more elements to be highlighted (non-tinted).

A tinted overlay that allows one or more elements to be highlighted (non-tinted).

Jesper Sporron 33 Jan 2, 2023
Component that performs fullscreen in DOM Elements

React FullScreen • • • • Component that performs fullscreen in DOM Elements Installation npm i react-easyfullscreen // OR yarn add react-easyfullscree

André Lins 20 Sep 10, 2022
Make your app reactive with MobX and react-native-router-flux

Package is obsolete with latest react-native-router-flux v4 - RNRF allows now wrapping all scenes and navbar by passing wrapBy param (equal to MobX ob

Pavel Aksonov 223 Oct 4, 2022
iOS/Android image picker with support for camera, video, configurable compression, multiple images and cropping

react-native-image-crop-picker iOS/Android image picker with support for camera, video, configurable compression, multiple images and cropping Result

Ivan Pusic 5.7k Jan 9, 2023
A new RN CLI app that includes base components like Text, Animation, Refreshing, Text Input, etc.

A new RN CLI app that includes base components like Text, Animation, Refreshing, Text Input, etc.

Paúl 24 Oct 30, 2022
This is a high performance list view for React Native with support for complex layouts using a similar FlatList usage to make easy the replacement

This is a high performance list view for React Native with support for complex layouts using a similar FlatList usage to make easy the replacement. This list implementation for big list rendering on React Native works with a recycler focused on performance and memory usage and so it permits processing thousands items on the list.

Marco Cesarato 441 Jan 6, 2023
☑️ A customiseable FlatList that allows you to select multiple rows

react-native-select-multiple A customiseable FlatList that allows you to select multiple rows. Install npm install react-native-select-multiple Usage

TABLEFLIP 159 Dec 23, 2022
convert any svg files into programmable React Component that compatible to react-native-svg

convert any svg files into programmable React Component that compatible to react-native-svg

Warung Pintar 23 Aug 10, 2021
:computer: :dash: Make your component visible with animations and a set of rules or simple props

Make your component visible with animations and a set of rules or simple props Content Installation Display content with simple props Display content

Marvin Frachet 16 Apr 24, 2020
:two_men_holding_hands: :two_women_holding_hands: Poor intrusive way to make A/B Testing by using an HoC instead of components

Poor intrusive way to make A/B Testing by using an HoC instead of components. Usage Installation $ npm install --save rn-ab-hoc Component /* list.js

Marvin Frachet 24 Dec 31, 2021