Giter VIP home page Giter VIP logo

react-native-smooth-pincode-input's Introduction

React Native Smooth Pincode Input

A cross-platform, smooth, lightweight, customizable PIN code input component for React Native.

Most PIN code inputs components implemented by combining several TextInputs. They works, however, not good enough. When user types fast, or system sluggish, characters may lost when component switching focus between TextInputs. User need to type over and over again to get a correct input, gave a frustrated user experience.

React Native Smooth Pincode Input implemented with a different approach - It's based on single TextInput but only render it as seperated fields. In other words, it looks like a PIN code input, but works as smooth as a native TextInput.

React Native Smooth Pincode Input is also highly customizable. By exposing cells and text stylesheets, it can be fully customized to fit in your app design. Password mode also supported with customizable mask characters as well as placeholders.

Features

  • Smooth typing without losing inputs
  • Customizable cell style
  • Customizable text style
  • Password mode
  • Customizable password mask and placeholder characters
  • Built in animations (Credit to react-native-animatable)

Installation

# yarn
yarn add react-native-smooth-pincode-input

# npm
npm i react-native-smooth-pincode-input

Examples

Default style with event handling

<SmoothPinCodeInput
  ref={this.pinInput}
  value={code}
  onTextChange={code => this.setState({ code })}
  onFulfill={this._checkCode}
  onBackspace={this._focusePrevInput}
  />

Password with custom mask

<SmoothPinCodeInput password mask="﹡"
  cellSize={36}
  codeLength={8}
  value={password}
  onTextChange={password => this.setState({ password })}/>

Underline style

<SmoothPinCodeInput
  cellStyle={{
    borderBottomWidth: 2,
    borderColor: 'gray',
  }}
  cellStyleFocused={{
    borderColor: 'black',
  }}
  value={code}
  onTextChange={code => this.setState({ code })}
  />

Customized style

<SmoothPinCodeInput
  placeholder="⭑"
  cellStyle={{
    borderWidth: 2,
    borderRadius: 24,
    borderColor: 'mediumturquoise',
    backgroundColor: 'azure',
  }}
  cellStyleFocused={{
    borderColor: 'lightseagreen',
    backgroundColor: 'lightcyan',
  }}
  textStyle={{
    fontSize: 24,
    color: 'salmon'
  }}
  textStyleFocused={{
    color: 'crimson'
  }}
  value={code}
  onTextChange={code => this.setState({ code })}
  />

Custom placeholder and mask using a component

<SmoothPinCodeInput
  placeholder={<View style={{
    width: 10,
    height: 10,
    borderRadius: 25,
    opacity: 0.3,
    backgroundColor: 'blue',
  }}></View>}
  mask={<View style={{
    width: 10,
    height: 10,
    borderRadius: 25,
    backgroundColor: 'blue',
  }}></View>}
  maskDelay={1000}
  password={true}
  cellStyle={null}
  cellStyleFocused={null}
  value={code}
  onTextChange={code => this.setState({ code })}
/>

Available props

Name Type Default Description
value String '' The value to show for the input
codeLength Number 4 Number of character for the input
cellSize Number 48 Size for each cell in input
cellSpacing Number 4 Space between each cell
placeholder String Element ''
mask String Element '*'
maskDelay Number 200 The delay in milliseconds before a character is masked
password Boolean false Mask the input value. Each cell masked with mask props
autoFocus Boolean false If true, focuses the input on componentDidMount
editable Boolean true If false, makes each cell not editable
animated Boolean true Toggle animations
animationFocused String, Object 'pulse' The animation of the focused cell. This can be a preset animation in the form of a string or a custom animation object.
restrictToNumbers Boolean false Restrict input to numbers only
containerStyle React View StyleSheet {} View style for whole cell containers
cellStyle React View StyleSheet { borderColor: 'gray', borderWidth: 1} View style for each cell
cellStyleFocused React View StyleSheet { borderColor: 'black', borderWidth: 2 } View style for focused cell
textStyle React Text StyleSheet { color: 'gray', fontSize: 24 } Text style for cell value
textStyleFocused React Text StyleSheet { color: 'black' } Text style for focused cell value
onFulfill Function null Callback function that's called when the input is completely filled
onTextChange Function null Callback function that's called when the text changed
onBackspace Function null Callback function that's called when the input is empty and the backspace button is pressed
keyboardType Enum('default', 'number-pad', 'decimal-pad', 'numeric', 'email-address', 'phone-pad') 'numeric' Determines which keyboard to open

Thanks to contributors

react-native-smooth-pincode-input's People

Contributors

alikazemkhanloo avatar alvinmatias69 avatar chagasaway avatar cybavo-william avatar erjanmx avatar geminiyellow avatar gorhom avatar jpr-longgame avatar marcovdijk avatar marcusviniciusf avatar mrruby avatar nocksapp avatar rickysullivan avatar sankar4n avatar sync avatar workshed avatar xamous avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

react-native-smooth-pincode-input's Issues

ViewPropTypes will be removed from React Native, along with all other PropTypes.

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-smooth-pincode-input/src/index.js b/node_modules/react-native-smooth-pincode-input/src/index.js
index 0a00f22..258add3 100644
--- a/node_modules/react-native-smooth-pincode-input/src/index.js
+++ b/node_modules/react-native-smooth-pincode-input/src/index.js
@@ -6,7 +6,6 @@ import {
   TextInput,
   StyleSheet,
   I18nManager,
-  ViewPropTypes,
 } from 'react-native';
 import * as Animatable from 'react-native-animatable';
 
@@ -286,11 +285,11 @@ SmoothPinCodeInput.propTypes = {
 
   restrictToNumbers: PropTypes.bool,
 
-  containerStyle: ViewPropTypes.style,
+  containerStyle: PropTypes.object,
 
-  cellStyle: ViewPropTypes.style,
-  cellStyleFocused: ViewPropTypes.style,
-  cellStyleFilled: ViewPropTypes.style,
+  cellStyle: PropTypes.object,
+  cellStyleFocused: PropTypes.object,
+  cellStyleFilled: PropTypes.object,
 
   textStyle: Text.propTypes.style,
   textStyleFocused: Text.propTypes.style,

This issue body was partially generated by patch-package.

Fix Text.propTypes.style is undefined error

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-smooth-pincode-input/src/index.js b/node_modules/react-native-smooth-pincode-input/src/index.js
index 0a00f22..4742626 100644
--- a/node_modules/react-native-smooth-pincode-input/src/index.js
+++ b/node_modules/react-native-smooth-pincode-input/src/index.js
@@ -9,6 +9,7 @@ import {
   ViewPropTypes,
 } from 'react-native';
 import * as Animatable from 'react-native-animatable';
+import { TextPropTypes } from 'deprecated-react-native-prop-types';
 
 const styles = StyleSheet.create({
   containerDefault: {},
@@ -292,8 +293,8 @@ SmoothPinCodeInput.propTypes = {
   cellStyleFocused: ViewPropTypes.style,
   cellStyleFilled: ViewPropTypes.style,
 
-  textStyle: Text.propTypes.style,
-  textStyleFocused: Text.propTypes.style,
+  textStyle: TextPropTypes.style,
+  textStyleFocused: TextPropTypes.style,
 
   animated: PropTypes.bool,
   animationFocused: PropTypes.oneOfType([

This issue body was partially generated by patch-package.

Autocomplete support for SMS/OTP

I tried to set the inputProps to support autocomplete: "sms-otp" but its not working. Android does not offer to auto fill the field.
Screenshot_1708337275

If I use a default RN Input with that autocomplete prop it does work.
Screenshot_1708337266

This component seems to use a normal input underneath but does it apply inputProps properly?

Error with expo - error Invalid regular expression

i got this when i installed the dependency and expo wont start again

Starting project at E:\react-native\my-new-project Expo DevTools is running at http://localhost:19002 Opening DevTools in the browser... (press shift-d to disable) error Invalid regular expression: /(.\__fixtures__\.|node_modules[\]react[\]dist[\].|website\node_modules\.|heapCapture\bundle.js|.\__tests__\.)$/: Unterminated character class. Run CLI with --verbose flag for more details. Metro Bundler process exited with code 1 Set EXPO_DEBUG=true in your env to view the stack trace. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @ start: expo start npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @ start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\vimlesh kumar\AppData\Roaming\npm-cache_logs\2019-10-13T13_22_10_749Z-debug.log E:\react-native\my-new-project>

keyboardInput = {number-pad} doesnt work

Hello, im trying to put keyboardInput = {number-pad} but it doesnt work.

Heres my code:

pinenter = (
  <View style={styles.container}>
    <Text style={styles.title}>Insira o PIN</Text>

    <SmoothPinCodeInput
      placeholder={<View style={{
        width: 10,
        height: 10,
        borderRadius: 25,
        opacity: 0.3,
        backgroundColor: 'blue',
      }}></View>}
      mask={<View style={{
        width: 10,
        height: 10,
        borderRadius: 25,
        backgroundColor: 'blue',
      }}></View>}
      maskDelay={500}
      restrictToNumbers={true}
      password={true}
      cellStyle={null}
      cellStyleFocused={null}
      value={this.state.codeConf}
      onTextChange={codeConf => this.checkEnter(codeConf, this.state.trueCode)}
      keyboardInput={'number-pad'}
    />
  </View>
)

im using RN0.60

keyboardType - disable keyboard

I want to hide keyboard and put pin by reading from OTP. is there anyway to disable keyboard. RIght now keyboard always open when using this component

Losing autoFocus when moving from one screen to another screen with pincode input

I am moving between multiple input screens for authentication purposes and when moving from one screen input to the next one the second input losses autofocus even though it's set to true, and requires a click from the user to actually type. Please help and will be happy to answer any follow-up questions. Thanks in advance

I am reusing the below code:

<SmoothPinCodeInput
            containerStyle={styles.spacer}
            password
            mask="﹡"
            cellStyle={{
              borderBottomWidth: 2,
              borderColor: 'gray'
            }}
            cellStyleFocused={{
              borderColor: 'black'
            }}
            textStyle={{
              fontSize: 27,
              color: '#000'
            }}
            value={value}
            cellSpacing={40}
            maskDelay={0}
            cellSize={60}
            keyboardType="number-pad"
            codeLength={4}
            autoFocus
            onTextChange={pin => setValue(pin)}
          />

proptypes error after updating expo

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-smooth-pincode-input/src/index.js b/node_modules/react-native-smooth-pincode-input/src/index.js
index 0a00f22..4870a76 100644
--- a/node_modules/react-native-smooth-pincode-input/src/index.js
+++ b/node_modules/react-native-smooth-pincode-input/src/index.js
@@ -1,12 +1,10 @@
 import React, { Component } from 'react';
-import PropTypes from 'prop-types';
 import {
   View,
   Text,
   TextInput,
   StyleSheet,
   I18nManager,
-  ViewPropTypes,
 } from 'react-native';
 import * as Animatable from 'react-native-animatable';
 
@@ -265,52 +263,4 @@ class SmoothPinCodeInput extends Component {
   };
 }
 
-SmoothPinCodeInput.propTypes = {
-  value: PropTypes.string,
-  codeLength: PropTypes.number,
-  cellSize: PropTypes.number,
-  cellSpacing: PropTypes.number,
-
-  placeholder: PropTypes.oneOfType([
-    PropTypes.string,
-    PropTypes.element,
-  ]),
-  mask: PropTypes.oneOfType([
-    PropTypes.string,
-    PropTypes.element,
-  ]),
-  maskDelay: PropTypes.number,
-  password: PropTypes.bool,
-
-  autoFocus: PropTypes.bool,
-
-  restrictToNumbers: PropTypes.bool,
-
-  containerStyle: ViewPropTypes.style,
-
-  cellStyle: ViewPropTypes.style,
-  cellStyleFocused: ViewPropTypes.style,
-  cellStyleFilled: ViewPropTypes.style,
-
-  textStyle: Text.propTypes.style,
-  textStyleFocused: Text.propTypes.style,
-
-  animated: PropTypes.bool,
-  animationFocused: PropTypes.oneOfType([
-    PropTypes.string,
-    PropTypes.object,
-  ]),
-
-  onFulfill: PropTypes.func,
-  onChangeText: PropTypes.func,
-  onBackspace: PropTypes.func,
-  onTextChange: PropTypes.func,
-  testID: PropTypes.any,
-  onFocus: PropTypes.func,
-  onBlur: PropTypes.func,
-  keyboardType: PropTypes.string,
-  editable: PropTypes.bool,
-  inputProps: PropTypes.exact(TextInput.propTypes),
-};
-
 export default SmoothPinCodeInput;

This issue body was partially generated by patch-package.

Allow keyboardAppearance to be set

How about allowing keyboardAppearance to be set?

<SmoothPinCodeInput keyboardAppearance="dark" {...opts} />

Just pass that prop down to the <TextInput />.

Typescript definition file

I'm using typescript in my project. So I decided to share my type definition file for anyone interested:

//types.d.ts
declare module 'react-native-smooth-pincode-input'{
  import { ReactElement, Component } from 'react';
  import { StyleProp, ViewStyle,TextStyle,TextInputProps } from 'react-native';
  type SmoothPinCodeInputProps = {
    value?: string;
    codeLength?: number;
    cellSize?: number;
    cellSpacing?: number;
    placeholder?: string | ReactElement;
    mask?: string | ReactElement;
    maskDelay?: number;
    password?: boolean;
    autoFocus?: boolean;
    restrictToNumbers?: boolean;
    containerStyle?: StyleProp<ViewStyle>;
    cellStyle?: StyleProp<ViewStyle>;
    cellStyleFocused?: StyleProp<ViewStyle>;
    cellStyleFilled?: StyleProp<ViewStyle>;
    textStyle?: StyleProp<TextStyle>;
    textStyleFocused?: StyleProp<TextStyle>;
    animated?: boolean;
    animationFocused?: string | any;
    onFulfill?: (value:string)=>void;
    onChangeText?: TextInputProps['onChangeText'];
    onBackspace?: ()=>void;
    onTextChange?: TextInputProps['onChangeText'];
    testID?: any;
    onFocus?: TextInputProps['onFocus'],
    onBlur?: TextInputProps['onBlur'],
    keyboardType?: string;
    editable?: boolean;
    inputProps?: TextInputProps;
    }

  type SmoothInputSate = {
      maskDelay: boolean,
      focused: boolean,
    }

  export default class SmoothPinCodeInput extends Component<SmoothPinCodeInputProps, SmoothInputSate> {}
}
}

EDITED: Forgot to set props as optional

Updating value of the pincode-input

Let's say we need to set a value of pincode-input if the value was received from some source (e.g. in Android - via otp-verify logic).

Getting selection error (4 is codeLength) from the TextInput:

setSpan (4 ... 4) ends beyond length 0

Unexpected behavior SmoothPincodeInput component in Modal component

When I tap the input box in my app user interface, it will be closed my modal. It only happens when I tap the input pin, other parts of the modal are okay.

Here is my code snipped

<Modal>
  <View>
       <SmoothPinCodeInput
                  editable={editableCode}
                  ref={pinInput}
                  cellSpacing={10}
                  cellSize={50}
                  codeLength={4}
                  cellStyle={errorMessage ? styles.textErrorInput : styles.pinTextInput}
                  textStyle={errorMessage ? styles.textErrorStyle : styles.textStyle}
                  value={code}
                  cellStyleFocused={{}}
                  onTextChange={code => this.setState({ code, errorMessage: null })}
                  onFulfill={this._checkCode}
         />
  <View>
</Modal>

checkCode function is for validation OTP matching

ViewPropTypes is deprecated in new React Native version

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-smooth-pincode-input/src/index.js b/node_modules/react-native-smooth-pincode-input/src/index.js
index 0a00f22..135b102 100644
--- a/node_modules/react-native-smooth-pincode-input/src/index.js
+++ b/node_modules/react-native-smooth-pincode-input/src/index.js
@@ -5,9 +5,10 @@ import {
   Text,
   TextInput,
   StyleSheet,
-  I18nManager,
-  ViewPropTypes,
+  I18nManager
 } from 'react-native';
+import { ViewPropTypes } from 'deprecated-react-native-prop-types';
+
 import * as Animatable from 'react-native-animatable';
 
 const styles = StyleSheet.create({

This issue body was partially generated by patch-package.

Override animations

Is it possible to override the default animations in any way? Even simple stuff like turn them off/slow them down etc?

Wix/Detox Issue

I added a testID for the SmoothPinCodeInput component. I tried to added pin code on automation test using below script.
await element(by.id('SmsVerificationInput')).typeText('******');
But it throw an error.
This component does not support wix/detox automation testing?

autoFocus not working for my code

<SmoothPinCodeInput
placeholder="*"
cellStyle={{
borderBottomWidth: 2,
borderColor: 'gray'
}}
cellStyleFocused={{
borderColor: 'black'
}}
textStyle={{
fontSize: 24,
color: 'salmon'
}}
textStyleFocused={{
color: 'crimson'
}}
value={this.state.email_confirm}
autoFocus={true}
onTextChange={(email_confirm: string) => this.setState({ email_confirm })}
onSubmitEditing={() => thisonVerify}
/>

Rendering issue on Android

react-native: "0.58.6"
android os Oreo

<SmoothPinCodeInput cellStyle={{ borderBottomWidth: 2, borderColor: Colors.themeColor }} cellStyleFocused={{ borderColor: 'black' }} textStyle={{ fontSize: 14 }} codeLength={6} cellSize={30} value={codeInput} />

Screenshot 2019-03-14 at 11 53 03

Warning: componentWillReceiveProps is deprecated

Hello,

I am using the component and I got a warning when using a decrepit component.

My installation has the following versions of react

"react": "16.8.6", "react-native": "0.60.4", "react-native-animatable": "^1.3.2",

And the message is as follows

ReactNativeJS ▶︎ Warning: componentWillReceiveProps is deprecated and will be removed in the next major version. Use static getDerivedStateFromProps instead.

│ Please update the following components: withAnimatable(View)

│ Learn more about this warning here:
https://fb.me/react-async-component-lifecycle-hooks

preserve colour of previous cell (style)

initially the code style is (text style) is gray. once i start filling code it should turn into white which i am able to achieve via

cellStyle={{
borderBottomWidth: 9,
borderColor: PURE_WHITE,

        }}
        cellStyleFocused={{
          borderColor: PURE_WHITE,

        }}
        textStyle={{
          fontSize: 24,
          color: GREY
        }}

but once focus moved to next cell the previous cell should remain white. is that possible?

TypeError: undefined is not an object (evaluating '_reactNative.Text.propTypes.style')

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-smooth-pincode-input/src/index.js b/node_modules/react-native-smooth-pincode-input/src/index.js
index 0a00f22..357f01d 100644
--- a/node_modules/react-native-smooth-pincode-input/src/index.js
+++ b/node_modules/react-native-smooth-pincode-input/src/index.js
@@ -9,6 +9,7 @@ import {
   ViewPropTypes,
 } from 'react-native';
 import * as Animatable from 'react-native-animatable';
+import {TextPropTypes} from 'deprecated-react-native-prop-types'
 
 const styles = StyleSheet.create({
   containerDefault: {},
@@ -292,8 +293,8 @@ SmoothPinCodeInput.propTypes = {
   cellStyleFocused: ViewPropTypes.style,
   cellStyleFilled: ViewPropTypes.style,
 
-  textStyle: Text.propTypes.style,
-  textStyleFocused: Text.propTypes.style,
+  textStyle: TextPropTypes.style,
+  textStyleFocused: TextPropTypes.style,
 
   animated: PropTypes.bool,
   animationFocused: PropTypes.oneOfType([

This issue body was partially generated by patch-package.

Edit single cell?

How can i edit single cell. If i give wrong in the first item... i have to delete all the digits... is there any way to edit only one single cell?

onFulfill triggered before state update is complete

I copied the example code and added set code length to 5. onTextChange is triggering a state change. onFulfill is reading state and rendering an alert. Unfortunately, the state update seems to be slower and therefore I only get the first 4 letters of entered code.

Any ideas how to prevent this?

This repo is dead

Would be nice of OSS creators would offer a way to take over projects when they can no longer spend time with them.

Fix for RN 0.69 (remove prop types)

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-smooth-pincode-input/src/index.js b/node_modules/react-native-smooth-pincode-input/src/index.js
index 5ca58d4..fffbd53 100644
--- a/node_modules/react-native-smooth-pincode-input/src/index.js
+++ b/node_modules/react-native-smooth-pincode-input/src/index.js
@@ -237,47 +237,4 @@ class SmoothPinCodeInput extends Component {
   };
 }
 
-SmoothPinCodeInput.propTypes = {
-  value: PropTypes.string,
-  codeLength: PropTypes.number,
-  cellSize: PropTypes.number,
-  cellSpacing: PropTypes.number,
-
-  placeholder: PropTypes.oneOfType([
-    PropTypes.string,
-    PropTypes.element,
-  ]),
-  mask: PropTypes.oneOfType([
-    PropTypes.string,
-    PropTypes.element,
-  ]),
-  maskDelay: PropTypes.number,
-  password: PropTypes.bool,
-
-  autoFocus: PropTypes.bool,
-
-  restrictToNumbers: PropTypes.bool,
-
-  containerStyle: ViewPropTypes.style,
-
-  cellStyle: ViewPropTypes.style,
-  cellStyleFocused: ViewPropTypes.style,
-
-  textStyle: Text.propTypes.style,
-  textStyleFocused: Text.propTypes.style,
-
-  animationFocused: PropTypes.oneOfType([
-    PropTypes.string,
-    PropTypes.object,
-  ]),
-
-  onFulfill: PropTypes.func,
-  onChangeText: PropTypes.func,
-  onBackspace: PropTypes.func,
-
-  keyboardType: PropTypes.string,
-  editable: PropTypes.bool,
-  inputProps: PropTypes.exact(TextInput.propTypes),
-};
-
 export default SmoothPinCodeInput;

This issue body was partially generated by patch-package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.