For Homebrew v2.6.x and below:
brew cask install ngrokFor Homebrew v2.7.x and above:
| import React from 'react'; | |
| import { shallow } from 'enzyme'; | |
| import MyComponent from '../src/my-component'; | |
| const wrapper = shallow(<MyComponent/>); | |
| describe('(Component) MyComponent', () => { | |
| it('renders without exploding', () => { | |
| expect(wrapper).to.have.length(1); | |
| }); |
| /** | |
| * Inspired by "MyASUS - ASUS support" version 2016 https://play.google.com/store/apps/details?id=com.asus.ia.asusapp | |
| * Colors: https://material.google.com/style/color.html#color-color-palette | |
| * | |
| * See online - https://rnplay.org/apps/7qet3A | |
| */ | |
| import React, { Component, } from 'react'; | |
| import { | |
| AppRegistry, |
| { | |
| "auto_complete_commit_on_tab": true, | |
| "color_scheme": "Packages/Oceanic Next Color Scheme/Oceanic Next.tmTheme", | |
| "draw_white_space": "all", | |
| "font_face": "Fira Mono", | |
| "font_size": 20, | |
| "tab_size": 2, | |
| "theme": "Brogrammer.sublime-theme", | |
| "translate_tabs_to_spaces": true, | |
| "trim_automatic_white_space": true, |
| var tilt = { | |
| alpha: 0, | |
| beta: 0, | |
| gamma: 0 | |
| }; | |
| function lowPass(prev, curr, co) { | |
| return prev * co + curr * (1 - co); | |
| } |
| import React from 'react'; | |
| import mui from 'material-ui'; | |
| import injectTapEventPlugin from 'react-tap-event-plugin'; | |
| import ThemeManager from 'material-ui/lib/styles/theme-manager'; | |
| import Colors from 'material-ui/lib/styles/colors'; | |
| import MyTheme from './theme.js'; | |
| import AppBar from 'material-ui/lib/app-bar'; | |
| import List from 'material-ui/lib/lists/list'; | |
| import ListItem from 'material-ui/lib/lists/list-item'; |
| const pop = (array) => array.splice(0, -1); | |
| const push = (array, el) => [...array, el]; | |
| const splice = (array = [], startCount, deleteCount = 0, ...elements) => { | |
| const { length } = array; | |
| let remainder = startCount + deleteCount; | |
| if(startCount > length || startCount <= -length) { | |
| startCount = 0; |
| 1. Download Google Apps from basketbuild.com: | |
| https://basketbuild.com/gapps | |
| 2. Extract GPE services apk files from the zip: | |
| unzip -j gapps-lp-20150222-signed.zip system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk system/priv-app/GoogleLoginService/GoogleLoginService.apk system/priv-app/Phonesky/Phonesky.apk system/priv-app/GmsCore/GmsCore.apk -d ./ | |
| 3. Start the emulator with the command: | |
| /home/path/to/your/android/Sdk/tools/emulator -no-boot-anim -netdelay none -netspeed full -avd YOUR_EMULATOR_NAME |
| /** | |
| * Fancy ID generator that creates 20-character string identifiers with the following properties: | |
| * | |
| * 1. They're based on timestamp so that they sort *after* any existing ids. | |
| * 2. They contain 72-bits of random data after the timestamp so that IDs won't collide with other clients' IDs. | |
| * 3. They sort *lexicographically* (so the timestamp is converted to characters that will sort properly). | |
| * 4. They're monotonically increasing. Even if you generate more than one in the same timestamp, the | |
| * latter ones will sort after the former ones. We do this by using the previous random bits | |
| * but "incrementing" them by 1 (only in the case of a timestamp collision). | |
| */ |