From a22186bc33c3d56a0895e677ea9ffde0a9689ee8 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 12:53:29 +0200 Subject: [PATCH 01/15] Proof of concept fonts --- Demo.js | 5 +- examples/font.js | 28 ++++ src/components/Area.js | 283 +++++++++++++++++++++++++------------ src/index.js | 1 + src/utils/createElement.js | 1 + 5 files changed, 227 insertions(+), 91 deletions(-) create mode 100644 examples/font.js diff --git a/Demo.js b/Demo.js index 545f8e0..9f9106e 100644 --- a/Demo.js +++ b/Demo.js @@ -1,11 +1,14 @@ import React, { Component } from 'react'; -import { render, Window, App, TextInput, Dialog } from './src/'; +import { render, Window, App, TextInput, Dialog, Menu } from './src/'; class Example extends Component { render() { return ( + + + diff --git a/examples/font.js b/examples/font.js new file mode 100644 index 0000000..3987b8f --- /dev/null +++ b/examples/font.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react'; +import { render, Window, App, Entry, Box, Area } from '../src'; + +class Example extends Component { + render() { + return ( + + + + + + sasad + other + + + + + + ); + } +} + +render(); diff --git a/src/components/Area.js b/src/components/Area.js index 4c2e56d..9adbe2f 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -2,7 +2,7 @@ import DesktopComponent, { universalPropTypes, universalDefaultProps, } from './DesktopComponent'; -import { Component } from 'react'; +import React, { Component } from 'react'; import libui from 'libui-node'; import PropTypes from 'prop-types'; import Color from 'color'; @@ -284,108 +284,105 @@ class AreaComponent { }; } - render(parent, area, p, props) { - this.parent = parent; - const { children, ...appendProps } = this.props; - props = { ...props, ...appendProps }; + applyTransforms(p) { + p.getContext().save(); - if (this.props.transform) { - p.getContext().save(); - - const mat = new libui.UiDrawMatrix(); - mat.setIdentity(); + const mat = new libui.UiDrawMatrix(); + mat.setIdentity(); - for (const transform of this.props.transform.match(/\w+\([^)]+\)/g)) { - // rotate(deg [,x, y]) - // default x: 50%, y: 50% - const rotate = transform.match( - /rotate\s*\(\s*([-0-9.]+)(?:\s*,\s*([-0-9.%]+)\s*,\s*([-0-9.%]+))?\s*\)/ + for (const transform of this.props.transform.match(/\w+\([^)]+\)/g)) { + // rotate(deg [,x, y]) + // default x: 50%, y: 50% + const rotate = transform.match( + /rotate\s*\(\s*([-0-9.]+)(?:\s*,\s*([-0-9.%]+)\s*,\s*([-0-9.%]+))?\s*\)/ + ); + if (rotate) { + const xy = this.selfToParent( + fallback(rotate[2], '50%', v => v), + fallback(rotate[3], '50%', v => v), + p ); - if (rotate) { - const xy = this.selfToParent( - fallback(rotate[2], '50%', v => v), - fallback(rotate[3], '50%', v => v), - p - ); - const rad = Number(rotate[1]) * (Math.PI / 180); - mat.rotate(xy.x, xy.y, rad); - } + const rad = Number(rotate[1]) * (Math.PI / 180); + mat.rotate(xy.x, xy.y, rad); + } - // translate(x [y]) - // default y: x - const translate = transform.match( - /translate\s*\(\s*([-0-9.%]+)(?:\s*,\s*([-0-9.%]+))?\s*\)/ + // translate(x [y]) + // default y: x + const translate = transform.match( + /translate\s*\(\s*([-0-9.%]+)(?:\s*,\s*([-0-9.%]+))?\s*\)/ + ); + if (translate) { + mat.translate( + this.parseSelf(translate[1], p), + fallback(translate[2], translate[1], v => this.parseSelf(v, p, true)) ); - if (translate) { - mat.translate( - this.parseSelf(translate[1], p), - fallback(translate[2], translate[1], v => - this.parseSelf(v, p, true) - ) - ); - } + } - // 1: scale(x) - // 2: scale(x, y) - // 3: scale(x, xCenter, yCenter) - // 4: scale(x, y, xCenter, yCenter) - // default y: x, xCenter=yCenter: 50% - const scale = transform.match( - /scale\s*\(([-0-9.]+)(?:(?:\s*,\s*([-0-9.]+))?(?:\s*,\s*([-0-9.%]+)\s*,\s*([-0-9.%]+))?)?\)/ + // 1: scale(x) + // 2: scale(x, y) + // 3: scale(x, xCenter, yCenter) + // 4: scale(x, y, xCenter, yCenter) + // default y: x, xCenter=yCenter: 50% + const scale = transform.match( + /scale\s*\(([-0-9.]+)(?:(?:\s*,\s*([-0-9.]+))?(?:\s*,\s*([-0-9.%]+)\s*,\s*([-0-9.%]+))?)?\)/ + ); + if (scale) { + const xy = this.selfToParent( + fallback(scale[3], '50%', v => v), + fallback(scale[4], '50%', v => v), + p ); - if (scale) { - const xy = this.selfToParent( - fallback(scale[3], '50%', v => v), - fallback(scale[4], '50%', v => v), - p - ); - if (process.platform === 'win32') { - mat.scale( - xy.x, - xy.y, - Number(scale[1]), - fallback(scale[2], scale[1]) - ); - } else { - // https://github.com/andlabs/libui/issues/331: - mat.translate(xy.x, xy.y); - mat.scale(0, 0, Number(scale[1]), fallback(scale[2], scale[1])); - mat.translate(-xy.x, -xy.y); - } + if (process.platform === 'win32') { + mat.scale(xy.x, xy.y, Number(scale[1]), fallback(scale[2], scale[1])); + } else { + // https://github.com/andlabs/libui/issues/331: + mat.translate(xy.x, xy.y); + mat.scale(0, 0, Number(scale[1]), fallback(scale[2], scale[1])); + mat.translate(-xy.x, -xy.y); } + } - // skew(a, b [,x, y]) - // a, b: x/y angle - // default x=y: 50% - const skew = transform.match( - /skew\s*\(\s*([-0-9.]+)\s*,\s*([-0-9.]+)(?:,\s*([-0-9.%]+),\s*([-0-9.%]+))?\)/ + // skew(a, b [,x, y]) + // a, b: x/y angle + // default x=y: 50% + const skew = transform.match( + /skew\s*\(\s*([-0-9.]+)\s*,\s*([-0-9.]+)(?:,\s*([-0-9.%]+),\s*([-0-9.%]+))?\)/ + ); + if (skew) { + const rad1 = Number(skew[1]) * (Math.PI / 180); + const rad2 = Number(skew[2]) * (Math.PI / 180); + mat.skew( + fallback(skew[2], '50%', v => this.parseSelf(v, p)), + fallback(skew[3], '50%', v => this.parseSelf(v, p, true)), + rad1, + rad2 ); - if (skew) { - const rad1 = Number(skew[1]) * (Math.PI / 180); - const rad2 = Number(skew[2]) * (Math.PI / 180); - mat.skew( - fallback(skew[2], '50%', v => this.parseSelf(v, p)), - fallback(skew[3], '50%', v => this.parseSelf(v, p, true)), - rad1, - rad2 - ); - } + } - // matrix(a, b, c, d, e, f, g) - const matrix = transform.match( - /matrix\s*\(\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*\)/ - ); - if (matrix) { - mat.setM11(matrix[1]); - mat.setM12(matrix[2]); - mat.setM21(matrix[3]); - mat.setM22(matrix[4]); - mat.setM31(matrix[5]); - mat.setM32(matrix[6]); - } + // matrix(a, b, c, d, e, f, g) + const matrix = transform.match( + /matrix\s*\(\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*,\s*([-0-9.]+)\s*\)/ + ); + if (matrix) { + mat.setM11(matrix[1]); + mat.setM12(matrix[2]); + mat.setM21(matrix[3]); + mat.setM22(matrix[4]); + mat.setM31(matrix[5]); + mat.setM32(matrix[6]); } + } + + p.getContext().transform(mat); + } - p.getContext().transform(mat); + render(parent, area, p, props) { + this.parent = parent; + const { children, ...appendProps } = this.props; + props = { ...props, ...appendProps }; + + if (this.props.transform) { + this.applyTransforms(p); } const path = this.draw(area, p, props); @@ -734,4 +731,110 @@ Area.Path.defaultProps = { fillRule: 'nonzero', }; +Area.Text = class AreaText extends AreaComponent { + constructor(root, props) { + super(root, props); + this.children = []; + + this.str = new libui.AttributedString(''); + } + + appendChild(child) { + this.children.push(child); + } + + appendText(t, ...attr) { + // console.log(attr) + if (this.parent instanceof AreaText) { + this.parent.appendText(t, ...attr); + } else { + if (attr) { + this.str.appendAttributed(t, ...attr); + } else { + this.str.appendUnattributed(t); + } + } + } + + render(parent, area, p, props) { + this.parent = parent; + const { children, ...styles } = this.props; + // const { children, ...appendProps } = this.props; + // props = { ...props, ...appendProps }; + + // if (this.props.transform) { + // this.applyTransforms(p); + // } + + this.children.forEach(v => { + if (typeof v === 'string') { + const attrs = Object.keys(styles) + .map(k => { + switch (k) { + case 'color': + const color = Color(styles[k]); + return libui.FontAttribute.newColor( + new libui.Color( + color.red() / 255, + color.green() / 255, + color.blue() / 255, + color.alpha() + ) + ); + case 'fontSize': + return libui.FontAttribute.newSize(Number(styles[k])); + } + }) + .filter(x => x); + + this.appendText(v, ...attrs); + } else { + v.render(this, area, p, props); + } + }); + + if (!(this.parent instanceof AreaText)) { + const font = new libui.FontDescriptor( + 'Georgia', + 14, + libui.textWeight.normal, + libui.textItalic.normal, + libui.textStretch.normal + ); + const layout = new libui.DrawTextLayout( + this.str, + font, + p.getAreaWidth(), + libui.textAlign.right + ); + + p.getContext().text(0, 0, layout); + + font.free(); + layout.free(); + } + + // if (this.props.transform) { + // p.getContext().restore(); + // } + } +}; + +// function areaProp(props, propName, componentName) { +// if (!(props[propName] instanceof AreaComponent)) { +// return new Error( +// 'Invalid prop `' + +// propName + +// '` supplied to' + +// ' `' + +// componentName + +// '`. Validation failed.' +// ); +// } +// } + +// Area.Text.propTypes = { +// children: PropTypes.oneOfType([PropTypes.string, areaProp, PropTypes.arrayOf(areaProp)]), +// } + export default Area; diff --git a/src/index.js b/src/index.js index d9263ee..7601306 100644 --- a/src/index.js +++ b/src/index.js @@ -47,6 +47,7 @@ Area.Bezier = 'AREABEZIER'; Area.Path = 'AREAPATH'; Area.Group = 'AREAGROUP'; Area.Circle = 'AREACIRCLE'; +Area.Text = 'AREATEXT'; export { render, diff --git a/src/utils/createElement.js b/src/utils/createElement.js index cbe3421..ecb97ca 100644 --- a/src/utils/createElement.js +++ b/src/utils/createElement.js @@ -73,6 +73,7 @@ function createElement(type, props) { AREAPATH: () => new Area.Path(ROOT_NODE, props), AREAGROUP: () => new Area.Group(ROOT_NODE, props), AREACIRCLE: () => new Area.Circle(ROOT_NODE, props), + AREATEXT: () => new Area.Text(ROOT_NODE, props), default: undefined, }; From a321fd65ce7389077560a4dc7c6df7d22cfd53c0 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 13:00:09 +0200 Subject: [PATCH 02/15] Inheirit font style --- src/components/Area.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/Area.js b/src/components/Area.js index 9adbe2f..0ca3dcb 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -744,7 +744,6 @@ Area.Text = class AreaText extends AreaComponent { } appendText(t, ...attr) { - // console.log(attr) if (this.parent instanceof AreaText) { this.parent.appendText(t, ...attr); } else { @@ -756,7 +755,7 @@ Area.Text = class AreaText extends AreaComponent { } } - render(parent, area, p, props) { + render(parent, area, p, props, parentAttrs = []) { this.parent = parent; const { children, ...styles } = this.props; // const { children, ...appendProps } = this.props; @@ -767,8 +766,9 @@ Area.Text = class AreaText extends AreaComponent { // } this.children.forEach(v => { - if (typeof v === 'string') { - const attrs = Object.keys(styles) + const attrs = [ + ...parentAttrs, + ...Object.keys(styles) .map(k => { switch (k) { case 'color': @@ -785,11 +785,13 @@ Area.Text = class AreaText extends AreaComponent { return libui.FontAttribute.newSize(Number(styles[k])); } }) - .filter(x => x); + .filter(x => x), + ]; + if (typeof v === 'string') { this.appendText(v, ...attrs); } else { - v.render(this, area, p, props); + v.render(this, area, p, props, attrs); } }); From e4e353218e2c6e814d4e9176cf38065baa78fc0a Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 13:53:34 +0200 Subject: [PATCH 03/15] Use style prop --- examples/font.js | 12 ++++++-- src/components/Area.js | 64 ++++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/examples/font.js b/examples/font.js index 3987b8f..6dc77a4 100644 --- a/examples/font.js +++ b/examples/font.js @@ -13,9 +13,15 @@ class Example extends Component { > - - sasad - other + + + Hi! + + {'\n'} + Test{'\n'} + + Sans serif + diff --git a/src/components/Area.js b/src/components/Area.js index 0ca3dcb..862adf5 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -755,9 +755,9 @@ Area.Text = class AreaText extends AreaComponent { } } - render(parent, area, p, props, parentAttrs = []) { + render(parent, area, p, props, parentStyle = {}) { this.parent = parent; - const { children, ...styles } = this.props; + let style = { ...parentStyle, ...this.props.style }; // const { children, ...appendProps } = this.props; // props = { ...props, ...appendProps }; @@ -765,33 +765,35 @@ Area.Text = class AreaText extends AreaComponent { // this.applyTransforms(p); // } - this.children.forEach(v => { - const attrs = [ - ...parentAttrs, - ...Object.keys(styles) - .map(k => { - switch (k) { - case 'color': - const color = Color(styles[k]); - return libui.FontAttribute.newColor( - new libui.Color( - color.red() / 255, - color.green() / 255, - color.blue() / 255, - color.alpha() - ) - ); - case 'fontSize': - return libui.FontAttribute.newSize(Number(styles[k])); - } - }) - .filter(x => x), - ]; + this.str.free(); + this.str = new libui.AttributedString(''); + + const attrs = Object.keys(style) + .map(k => { + switch (k) { + case 'color': + const color = Color(style[k]); + return libui.FontAttribute.newColor( + new libui.Color( + color.red() / 255, + color.green() / 255, + color.blue() / 255, + color.alpha() + ) + ); + case 'fontSize': + return libui.FontAttribute.newSize(Number(style[k])); + case 'fontFamily': + return libui.FontAttribute.newFamily(style[k]); + } + }) + .filter(x => x); + this.children.forEach(v => { if (typeof v === 'string') { this.appendText(v, ...attrs); } else { - v.render(this, area, p, props, attrs); + v.render(this, area, p, props, style); } }); @@ -806,11 +808,17 @@ Area.Text = class AreaText extends AreaComponent { const layout = new libui.DrawTextLayout( this.str, font, - p.getAreaWidth(), - libui.textAlign.right + p.getAreaWidth() - this.parseParent(this.props.x, p, false), + libui.textAlign.left ); - p.getContext().text(0, 0, layout); + p + .getContext() + .text( + (this.parseParent(this.props.x, p, false): 0), + (this.parseParent(this.props.y, p, true): 0), + layout + ); font.free(); layout.free(); From 29f045d204b66e4b36545964e585f0bf258381da Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 17:00:40 +0200 Subject: [PATCH 04/15] More font attributes --- examples/font.js | 38 +++++++++++++++--- package.json | 2 +- src/components/Area.js | 90 ++++++++++++++++++++++++++++++++---------- 3 files changed, 103 insertions(+), 27 deletions(-) diff --git a/examples/font.js b/examples/font.js index 6dc77a4..f2f3f83 100644 --- a/examples/font.js +++ b/examples/font.js @@ -13,14 +13,40 @@ class Example extends Component { > - - - Hi! + + Hi! + {'\n'} + + Test + ing + + {'\n'} + Serif + {'\n'} + + Console + + {'\n'} + + A very bold statement! {'\n'} - Test{'\n'} - - Sans serif + + This is an{' '} + + error + diff --git a/package.json b/package.json index 5d9f0f0..6bad38d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "scripts": { "demo": "babel-node Demo.js", "prettier": - "prettier --single-quote --trailing-comma es5 --write 'src/**/*.js'", + "prettier --single-quote --trailing-comma es5 --write 'src/**/*.js' 'examples/*.js'", "build": "babel src -d bin", "pub": "babel src -d bin && npm publish", "precommit": "lint-staged" diff --git a/src/components/Area.js b/src/components/Area.js index 862adf5..b3d3a56 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -176,14 +176,19 @@ function fallback(...vals) { } } -function createBrush(color, alpha) { - const brush = new libui.DrawBrush(); - brush.color = new libui.Color( +function toLibuiColor(color) { + return new libui.Color( color.red() / 255, color.green() / 255, color.blue() / 255, - color.alpha() * alpha + color.alpha() ); +} + +function createBrush(color, alpha) { + const brush = new libui.DrawBrush(); + brush.color = toLibuiColor(color); + brush.color.alpha = brush.color.alpha * alpha; brush.type = libui.brushType.solid; return brush; @@ -758,8 +763,6 @@ Area.Text = class AreaText extends AreaComponent { render(parent, area, p, props, parentStyle = {}) { this.parent = parent; let style = { ...parentStyle, ...this.props.style }; - // const { children, ...appendProps } = this.props; - // props = { ...props, ...appendProps }; // if (this.props.transform) { // this.applyTransforms(p); @@ -770,21 +773,55 @@ Area.Text = class AreaText extends AreaComponent { const attrs = Object.keys(style) .map(k => { + const v = style[k]; switch (k) { case 'color': - const color = Color(style[k]); - return libui.FontAttribute.newColor( - new libui.Color( - color.red() / 255, - color.green() / 255, - color.blue() / 255, - color.alpha() - ) - ); + const color = Color(v); + return libui.FontAttribute.newColor(toLibuiColor(Color(v))); case 'fontSize': - return libui.FontAttribute.newSize(Number(style[k])); + return libui.FontAttribute.newSize(Number(v)); case 'fontFamily': - return libui.FontAttribute.newFamily(style[k]); + return libui.FontAttribute.newFamily(v); + case 'backgroundColor': + return libui.FontAttribute.newBackgroundColor( + toLibuiColor(Color(v)) + ); + case 'fontStyle': + if (v in libui.textItalic) { + return libui.FontAttribute.newItalic(libui.textItalic[v]); + } + break; + case 'fontWeight': + if (typeof v === 'string' && v in libui.textWeight) { + return libui.FontAttribute.newWeight(libui.textWeight[v]); + } else if ( + Number(v) >= libui.textWeight.minimum && + Number(v) <= libui.textWeight.maximum + ) { + return libui.FontAttribute.newWeight(Number(v)); + } + break; + case 'textStretch': + if (v in libui.textStretch) { + return libui.FontAttribute.newStretch(libui.textStretch[v]); + } + break; + case 'textUnderline': + if (v in libui.textUnderline) { + return libui.FontAttribute.newUnderline(libui.textUnderline[v]); + } + break; + case 'textUnderlineColor': + if (v !== 'custom' && v in libui.textUnderlineColor) { + return libui.FontAttribute.newUnderlineColor( + libui.textUnderlineColor[v] + ); + } else { + return libui.FontAttribute.newUnderlineColor( + libui.textUnderlineColor[v], + toLibuiColor(Color(v)) + ); + } } }) .filter(x => x); @@ -798,9 +835,22 @@ Area.Text = class AreaText extends AreaComponent { }); if (!(this.parent instanceof AreaText)) { + let textAlign; + switch (style.textAlign || 'left') { + case 'left': + textAlign = libui.textAlign.left; + break; + case 'center': + textAlign = libui.textAlign.center; + break; + case 'right': + textAlign = libui.textAlign.right; + break; + } + const font = new libui.FontDescriptor( - 'Georgia', - 14, + 'Arial', + 12, libui.textWeight.normal, libui.textItalic.normal, libui.textStretch.normal @@ -809,7 +859,7 @@ Area.Text = class AreaText extends AreaComponent { this.str, font, p.getAreaWidth() - this.parseParent(this.props.x, p, false), - libui.textAlign.left + textAlign ); p From b3edcd061349a846163e71d569b03e49f0fb7c24 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 17:07:02 +0200 Subject: [PATCH 05/15] Reset demo --- Demo.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Demo.js b/Demo.js index 9f9106e..545f8e0 100644 --- a/Demo.js +++ b/Demo.js @@ -1,14 +1,11 @@ import React, { Component } from 'react'; -import { render, Window, App, TextInput, Dialog, Menu } from './src/'; +import { render, Window, App, TextInput, Dialog } from './src/'; class Example extends Component { render() { return ( - - - From 2891cb247c771bb1ba095ccf6d70978313d1c60b Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 17:16:35 +0200 Subject: [PATCH 06/15] Fixes --- examples/font.js | 4 ++-- src/components/Area.js | 34 ++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/examples/font.js b/examples/font.js index f2f3f83..c5d5bf5 100644 --- a/examples/font.js +++ b/examples/font.js @@ -13,8 +13,8 @@ class Example extends Component { > - - Hi! + + Hi! {'\n'} Test diff --git a/src/components/Area.js b/src/components/Area.js index b3d3a56..a4b406c 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -199,6 +199,7 @@ class AreaComponent { this.root = root; this.props = { ...props }; this.setDefaults(props); + this.element = {}; } setDefaults(props) { @@ -880,21 +881,22 @@ Area.Text = class AreaText extends AreaComponent { } }; -// function areaProp(props, propName, componentName) { -// if (!(props[propName] instanceof AreaComponent)) { -// return new Error( -// 'Invalid prop `' + -// propName + -// '` supplied to' + -// ' `' + -// componentName + -// '`. Validation failed.' -// ); -// } -// } - -// Area.Text.propTypes = { -// children: PropTypes.oneOfType([PropTypes.string, areaProp, PropTypes.arrayOf(areaProp)]), -// } +function areaProp(props, propName, componentName) { + const v = props[propName]; + if (!(typeof v === 'string' || v.type === 'AREATEXT')) { + return new Error( + 'Invalid prop `' + + propName + + '` supplied to' + + ' `' + + componentName + + '`. Has to be a string or an Area.Text component.' + ); + } +} + +Area.Text.propTypes = { + children: PropTypes.oneOfType([areaProp, PropTypes.arrayOf(areaProp)]), +}; export default Area; From 463a62818813b14b358844c83b1ed62438193e20 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 20 May 2018 17:44:16 +0200 Subject: [PATCH 07/15] Font example --- examples/font.js | 64 ++++++++++++++++++++++++++++++++++++++---- src/components/Area.js | 4 +-- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/examples/font.js b/examples/font.js index c5d5bf5..510c9ff 100644 --- a/examples/font.js +++ b/examples/font.js @@ -1,20 +1,74 @@ import React, { Component } from 'react'; -import { render, Window, App, Entry, Box, Area } from '../src'; +import { + render, + Window, + App, + Picker, + Box, + Area, + FontButton, + ColorButton, + Checkbox, +} from '../src'; class Example extends Component { + state = { align: 'left', color: 'blue', font: false }; + render() { return ( - + + + + + this.setState({ + color: `rgba(${c.r}, ${c.g}, ${c.b}, ${c.a})`, + }) + } + /> + { + switch (v) { + case 0: + return this.setState({ align: 'left' }); + case 1: + return this.setState({ align: 'center' }); + case 2: + return this.setState({ align: 'right' }); + } + }} + > + Left + Center + Right + + this.setState({ font: v })} + > + {'Use Georgia instead of font button'} + + - - Hi! + + + Hi! + {'\n'} Test diff --git a/src/components/Area.js b/src/components/Area.js index a4b406c..ee753a3 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -866,8 +866,8 @@ Area.Text = class AreaText extends AreaComponent { p .getContext() .text( - (this.parseParent(this.props.x, p, false): 0), - (this.parseParent(this.props.y, p, true): 0), + this.parseParent(this.props.x || 0, p, false), + this.parseParent(this.props.y || 0, p, true), layout ); From 3a58d19ac1a283d742066b4870b898e04b6fabf6 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Tue, 22 May 2018 19:41:28 +0200 Subject: [PATCH 08/15] Text transforms, integrate FontButton --- examples/font.js | 18 +++++++++++++----- src/components/Area.js | 16 ++++++++-------- src/components/FontButton.js | 16 +++++++++++++++- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/examples/font.js b/examples/font.js index 510c9ff..b3e146f 100644 --- a/examples/font.js +++ b/examples/font.js @@ -12,7 +12,7 @@ import { } from '../src'; class Example extends Component { - state = { align: 'left', color: 'blue', font: false }; + state = { align: 'left', color: 'blue', useFont: false, font: {} }; render() { return ( @@ -25,7 +25,10 @@ class Example extends Component { > - + this.setState({ font: v })} + /> this.setState({ font: v })} + onToggle={v => this.setState({ useFont: v })} > - {'Use Georgia instead of font button'} + {'Use Georgia (20pt) instead\nof font button'} Hi! diff --git a/src/components/Area.js b/src/components/Area.js index ee753a3..6420497 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -765,10 +765,6 @@ Area.Text = class AreaText extends AreaComponent { this.parent = parent; let style = { ...parentStyle, ...this.props.style }; - // if (this.props.transform) { - // this.applyTransforms(p); - // } - this.str.free(); this.str = new libui.AttributedString(''); @@ -863,6 +859,10 @@ Area.Text = class AreaText extends AreaComponent { textAlign ); + if (this.props.transform) { + this.applyTransforms(p); + } + p .getContext() .text( @@ -873,11 +873,11 @@ Area.Text = class AreaText extends AreaComponent { font.free(); layout.free(); - } - // if (this.props.transform) { - // p.getContext().restore(); - // } + if (this.props.transform) { + p.getContext().restore(); + } + } } }; diff --git a/src/components/FontButton.js b/src/components/FontButton.js index da2b428..04a0091 100644 --- a/src/components/FontButton.js +++ b/src/components/FontButton.js @@ -6,7 +6,21 @@ import libui from 'libui-node'; import PropTypes from 'prop-types'; class FontButton extends DesktopComponent { - eventParameter = { onChanged: () => this.element.getFont() }; + eventParameter = { + onChanged: () => { + const f = this.element.getFont(); + const italic = f.getItalic(); + return { + fontFamily: f.getFamily(), + fontSize: f.getSize(), + fontWeight: f.getWeight(), + fontStyle: Object.keys(libui.textItalic).find( + v => libui.textItalic[v] === italic + ), + textStretch: f.getStretch(), + }; + }, + }; constructor(root, props) { super(root, props); From 8a0a66d7c335fa801797927951ebd15cad212a8f Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Tue, 22 May 2018 20:55:12 +0200 Subject: [PATCH 09/15] Add docs --- docs/_sidebar.md | 9 +- docs/component_APIs/area_arc.md | 30 +++--- docs/component_APIs/area_bezier.md | 48 +++++----- docs/component_APIs/area_circle.md | 18 ++-- docs/component_APIs/area_line.md | 24 ++--- docs/component_APIs/area_props.md | 24 ++--- docs/component_APIs/area_rectangle.md | 24 ++--- docs/component_APIs/area_text.md | 126 ++++++++++++++++++++++++++ src/components/Area.js | 2 +- 9 files changed, 216 insertions(+), 89 deletions(-) create mode 100644 docs/component_APIs/area_text.md diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 527c85c..63396d2 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -8,13 +8,14 @@ * [App](component_APIs/app.md) * [Area](component_APIs/area.md) * [Props](component_APIs/area_props.md) + * [Area.Arc](component_APIs/area_arc.md) + * [Area.Bezier](component_APIs/area_bezier.md) + * [Area.Circle](component_APIs/area_circle.md) * [Area.Group](component_APIs/area_group.md) - * [Area.Rectangle](component_APIs/area_rectangle.md) * [Area.Line](component_APIs/area_line.md) - * [Area.Circle](component_APIs/area_circle.md) - * [Area.Arc](component_APIs/area_bezier.md) - * [Area.Bezier](component_APIs/area_bezier.md) * [Area.Path](component_APIs/area_path.md) + * [Area.Rectangle](component_APIs/area_rectangle.md) + * [Area.Text](component_APIs/area_text.md) * [Box](component_APIs/box.md) * [Button](component_APIs/button.md) * [Checkbox](component_APIs/checkbox.md) diff --git a/docs/component_APIs/area_arc.md b/docs/component_APIs/area_arc.md index 4fb212f..61d55b8 100644 --- a/docs/component_APIs/area_arc.md +++ b/docs/component_APIs/area_arc.md @@ -46,38 +46,38 @@ render(); The x coordinate of the center of the arc. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y The y coordinate of the center of the arc. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### r The arc's radius. Percentage values use the Area's width. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### start The start angle of the arc in degrees. Value increases clockwise with `0` meaning the rightmost point ("east") of the imaginary circle. -| **Type** | **Required** | **Default** | -| ------------------------- | ------------ | ----------- | -| number \| string (number) | false | 0 | +| **Type** | **Required** | **Default** | +| ----------------------------- | ------------ | ----------- | +| number | string (number) | false | 0 | ### sweep The sweep angle of the arc in degrees. Value increases clockwise. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | diff --git a/docs/component_APIs/area_bezier.md b/docs/component_APIs/area_bezier.md index 9a2f068..319798e 100644 --- a/docs/component_APIs/area_bezier.md +++ b/docs/component_APIs/area_bezier.md @@ -53,62 +53,62 @@ render(); The x coordinate of the curve's start point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y1 The y coordinate of the curve's start point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### cx1 The x coordinate of the curve's control point at the start. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### cy1 The y coordinate of the curve's control point at the start. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### x2 The x coordinate of the curve's end point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y2 The y coordinate of the curve's end point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### cx2 The x coordinate of the curve's control point at the end. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### cy2 The y coordinate of the curve's control point at the end. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | diff --git a/docs/component_APIs/area_circle.md b/docs/component_APIs/area_circle.md index d1e33b8..7226a51 100644 --- a/docs/component_APIs/area_circle.md +++ b/docs/component_APIs/area_circle.md @@ -37,22 +37,22 @@ render(); The x coordinate of the center of the cirle. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y The y coordinate of the center of the cirle. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### r The circle's radius. Percentage values use the Area's width. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | diff --git a/docs/component_APIs/area_line.md b/docs/component_APIs/area_line.md index 8f3ed1b..f136160 100644 --- a/docs/component_APIs/area_line.md +++ b/docs/component_APIs/area_line.md @@ -38,30 +38,30 @@ render(); The x coordinate of the line's start point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y1 The y coordinate of the line's start point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### x2 The x coordinate of the line's end point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y2 The y coordinate of the line's end point. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | diff --git a/docs/component_APIs/area_props.md b/docs/component_APIs/area_props.md index 9263076..a2f3cb1 100644 --- a/docs/component_APIs/area_props.md +++ b/docs/component_APIs/area_props.md @@ -31,9 +31,9 @@ The fill color for the component. The opacity of the fill (between 0 and 1). Gets multiplied with the fill colors alpha value. -| **Type** | **Required** | **Default** | -| ------------------------- | ------------ | ----------- | -| number \| string (number) | false | 1 | +| **Type** | **Required** | **Default** | +| ----------------------------- | ------------ | ----------- | +| number | string (number) | false | 1 | ## stroke @@ -47,15 +47,15 @@ The stroke (line) color for the component. The opacity of the stroke (between 0 and 1). Gets multiplied with the stroke colors alpha value. -| **Type** | **Required** | **Default** | -| ------------------------- | ------------ | ----------- | -| number \| string (number) | false | 1 | +| **Type** | **Required** | **Default** | +| ----------------------------- | ------------ | ----------- | +| number | string (number) | false | 1 | ## strokeWidth -| **Type** | **Required** | **Default** | -| ------------------------- | ------------ | ----------- | -| number \| string (number) | false | 1 | +| **Type** | **Required** | **Default** | +| ----------------------------- | ------------ | ----------- | +| number | string (number) | false | 1 | ## strokeLinecap @@ -73,9 +73,9 @@ The opacity of the stroke (between 0 and 1). Gets multiplied with the stroke col How far to extend the stroke at a sharp corner when using `strokeLinejoin='miter'`, see [here](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit) for a more detailed explanation. -| **Type** | **Required** | **Default** | -| ------------------------- | ------------ | ----------- | -| number \| string (number) | false | 10 | +| **Type** | **Required** | **Default** | +| ----------------------------- | ------------ | ----------- | +| number | string (number) | false | 10 | ## transform diff --git a/docs/component_APIs/area_rectangle.md b/docs/component_APIs/area_rectangle.md index cadae0b..4170bf5 100644 --- a/docs/component_APIs/area_rectangle.md +++ b/docs/component_APIs/area_rectangle.md @@ -44,30 +44,30 @@ render(); The x coordinate of the rectangles top left corner. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### y The y coordinate of the rectangles top left corner. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### width The width of the rectangle. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | ### height The height of the rectangle. -| **Type** | **Required** | -| ------------------------- | ------------ | -| number \| string (number) | true | +| **Type** | **Required** | +| ----------------------------- | ------------ | +| number | string (number) | true | diff --git a/docs/component_APIs/area_text.md b/docs/component_APIs/area_text.md new file mode 100644 index 0000000..6997c26 --- /dev/null +++ b/docs/component_APIs/area_text.md @@ -0,0 +1,126 @@ +# Area.Text + +A (possibly styled) text to be displayed in an Area component. Nested `Area.Text` components inheirit the parent's style. + +```jsx +import React, { Component } from 'react'; + +import { render, Window, App, Area } from 'proton-native'; + +class Example extends Component { + render() { + return ( + + + + + This is some text drawn onto an{' '} + Area! + + + + + ); + } +} + +render(); +``` + +## Props + +_Not all fonts support all possible options_ + +* [fontSize](#fontsize) +* [fontFamily](#fontfamily) +* [color](#color) +* [backgroundColor](#backgroundcolor) +* [fontStyle](#fontstyle) +* [fontWeight](#fontweight) +* [textStretch](#textstretch) +* [textUnderline](#textunderline) +* [textUnderlineColor](#textunderlinecolor) +* [textAlign](#textalign) +* transform (only in a top level text component, see [Area Props](area_props.md)) + +## Reference + +### fontSize + +The font size (in pt). + +| **Type** | **Required** | **Default** | +| -------- | ------------ | ----------- | +| number | false | 14 | + +### fontFamily + +The font family (only if available on the system). + +| **Type** | **Required** | **Default** | +| -------- | ------------ | ----------- | +| string | false | 'Arial' | + +### color + +The text color, specified as a CSS color string. + +| **Type** | **Required** | +| -------- | ------------ | +| string | false | + +### backgroundColor + +The background color, specified as a CSS color string. + +| **Type** | **Required** | +| -------- | ------------ | +| string | false | + +### fontStyle + +Whether an italic font should be used. + +| **Type** | **Required** | **Default** | +| ----------------------------------- | ------------ | ----------- | +| enum('normal', 'oblique', 'italic') | false | 'normal' | + +### fontWeight + +Whether a bold font should be used (and the amount). + +| **Type** | **Required** | **Default** | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ----------- | +| enum('minimum', 'thin', 'ultraLight', 'light', 'book', 'normal', 'medium', 'semiBold', 'bold', 'ultraBold', 'heavy', 'ultraHeavy', 'maximum') | number (0-1000) | false | 'normal' | + +### textStretch + +How wide or narrow the characters should be. + +| **Type** | **Required** | **Default** | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ----------- | +| enum('ultraCondensed', 'extraCondensed', 'condensed', 'semiCondensed', 'normal', 'semiExpanded', 'expanded', 'extraExpanded', 'ultraExpanded') | false | 'normal' | + +### textUnderline + +The text underline style. + +| **Type** | **Required** | +| ---------------------------------------------- | ------------ | +| enum('none', 'single', 'double', 'suggestion') | false | + +### textUnderlineColor + +The text underline color. + +| **Type** | **Required** | +| ------------------------------------------------------------- | ------------ | +| string(color) | enum('spelling', 'grammar', 'auxiliary') | false | + +### textAlign + +Wheter the text should be aligned to the left, center or right. **Works only on a top level text component, not it's children!** + +| **Type** | **Required** | +| ------------------------------- | ------------ | +| enum('left', 'center', 'right') | false | diff --git a/src/components/Area.js b/src/components/Area.js index 6420497..691417b 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -847,7 +847,7 @@ Area.Text = class AreaText extends AreaComponent { const font = new libui.FontDescriptor( 'Arial', - 12, + 14, libui.textWeight.normal, libui.textItalic.normal, libui.textStretch.normal From fb99fe1434584b850f2ba790c86c7a02f2edda9b Mon Sep 17 00:00:00 2001 From: kusti8 Date: Sat, 2 Jun 2018 09:48:38 -0400 Subject: [PATCH 10/15] Add StyledText --- package-lock.json | 1305 ++++++++++------------------ package.json | 6 +- src/index.js | 2 + src/react-components/Area.js | 14 +- src/react-components/StyledText.js | 32 + src/react-components/index.js | 12 +- src/reconciler/index.js | 84 +- 7 files changed, 549 insertions(+), 906 deletions(-) create mode 100644 src/react-components/StyledText.js diff --git a/package-lock.json b/package-lock.json index 563bb18..4a4ca63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "proton-native", - "version": "1.1.3", + "version": "1.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -64,6 +64,23 @@ } } }, + "@mischnic/async-hooks": { + "version": "0.0.4", + "resolved": + "https://registry.npmjs.org/@mischnic/async-hooks/-/async-hooks-0.0.4.tgz", + "integrity": + "sha512-mJL/Rckke7oIR8c1Dk+40Y0a+Ss712hyJqROOurl5VE8gQY+GbbebKcNuWIRxlZTrQQq8mfo7oE9xKZXrtQTjQ==", + "requires": { + "es6-shim": "^0.35.3" + } + }, + "@types/node": { + "version": "8.10.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.18.tgz", + "integrity": + "sha512-WoepSz+wJlU5Bjq5oK6cO1oXe2FgPcjMtQPgKPS8fVaTAD0lxkScMCCbMimdkVCsykqaA4lvHWz3cmj28yimhA==", + "dev": true + }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -73,7 +90,8 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" + "integrity": + "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "acorn": { "version": "5.5.3", @@ -136,8 +154,8 @@ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -200,13 +218,15 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=" + "integrity": + "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "resolved": - "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": + "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -362,9 +382,10 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": + "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" }, "babel-cli": { "version": "6.26.0", @@ -1531,20 +1552,14 @@ "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk=" - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.x.x" - } + "integrity": + "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha1-VcbDmouljZxhrSLNh3Uy3rZlogs=", + "integrity": + "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { "ansi-align": "^2.0.0", @@ -1582,10 +1597,10 @@ "dev": true }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": - "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -1604,7 +1619,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": + "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -1622,11 +1638,11 @@ } }, "supports-color": { - "version": "5.3.0", + "version": "5.4.0", "resolved": - "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": - "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -1937,10 +1953,10 @@ } }, "combined-stream": { - "version": "1.0.5", + "version": "1.0.6", "resolved": - "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "~1.0.0" } @@ -1966,12 +1982,14 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.0", + "version": "1.6.2", "resolved": - "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": + "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { + "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" @@ -2074,24 +2092,6 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", - "requires": { - "hoek": "4.x.x" - } - } - } - }, "crypto-random-string": { "version": "1.0.0", "resolved": @@ -2180,10 +2180,11 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", + "version": "0.6.0", "resolved": - "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": + "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -2296,7 +2297,8 @@ "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", + "integrity": + "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { "is-obj": "^1.0.0" @@ -2318,11 +2320,13 @@ } }, "electron": { - "version": "1.4.16", - "resolved": "https://registry.npmjs.org/electron/-/electron-1.4.16.tgz", - "integrity": "sha1-Q1p8A3xqhY3jdWm7SwEsPyhr8fM=", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/electron/-/electron-1.8.7.tgz", + "integrity": + "sha512-q6dn8bspX8u8z6tNU4bEas6ZrdNavnrjJ6d/oz49Nb4zFIPrdh8p29AFjFlSAavypGwAVR/PhYOAGwzZSQSSVQ==", "dev": true, "requires": { + "@types/node": "^8.0.24", "electron-download": "^3.0.1", "extract-zip": "^1.0.3" } @@ -2395,9 +2399,15 @@ "version": "4.2.4", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha1-3EIhwrFlGHYL2MOaUtjzVvwA7Sk=", + "integrity": + "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", "dev": true }, + "es6-shim": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.3.tgz", + "integrity": "sha1-m/tzY/7//4emzbbNk+QF7DxLbyY=" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": @@ -2564,27 +2574,16 @@ } }, "extract-zip": { - "version": "1.6.6", + "version": "1.6.7", "resolved": - "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", "dev": true, "requires": { - "concat-stream": "1.6.0", + "concat-stream": "1.6.2", "debug": "2.6.9", - "mkdirp": "0.5.0", + "mkdirp": "0.5.1", "yauzl": "2.4.1" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - } } }, "extsprintf": { @@ -2594,10 +2593,10 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "1.0.0", + "version": "1.1.0", "resolved": - "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -2660,17 +2659,50 @@ "dev": true }, "fill-range": { - "version": "2.2.3", + "version": "2.2.4", "resolved": - "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": + "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", - "randomatic": "^1.1.3", + "randomatic": "^3.0.0", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "randomatic": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": + "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": + "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + } } }, "find-parent-dir": { @@ -2712,12 +2744,12 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", + "combined-stream": "1.0.6", "mime-types": "^2.1.12" } }, @@ -2768,40 +2800,30 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", "integrity": - "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -2816,88 +2838,22 @@ "readable-stream": "^2.0.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", + "version": "1.0.0", "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "brace-expansion": { - "version": "1.1.7", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true @@ -2907,14 +2863,6 @@ "bundled": true, "dev": true }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -2928,35 +2876,11 @@ "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, @@ -2965,16 +2889,11 @@ } }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true, "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "delegates": { "version": "1.0.0", "bundled": true, @@ -2982,74 +2901,25 @@ "optional": true }, "detect-libc": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "ecc-jsbn": { - "version": "0.1.1", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - } + "optional": true }, "gauge": { "version": "2.7.4", @@ -3067,27 +2937,11 @@ "wide-align": "^1.1.0" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3097,64 +2951,35 @@ "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "safer-buffer": "^2.1.0" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3166,7 +2991,7 @@ "dev": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "dev": true, "optional": true @@ -3176,114 +3001,46 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, "dev": true, "optional": true }, - "json-stable-stringify": { - "version": "1.0.1", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "jsonify": "~0.0.0" + "brace-expansion": "^1.1.7" } }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.15", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "minipass": "^2.2.1" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -3298,23 +3055,41 @@ "dev": true, "optional": true }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": + "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.10.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", - "hawk": "3.1.3", "mkdirp": "^0.5.1", + "needle": "^2.2.0", "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", "rc": "^1.1.7", - "request": "2.81.0", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^2.2.1", - "tar-pack": "^3.4.0" + "tar": "^4" } }, "nopt": { @@ -3327,8 +3102,24 @@ "osenv": "^0.1.4" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "dev": true, "optional": true, @@ -3344,12 +3135,6 @@ "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -3377,7 +3162,7 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, @@ -3389,38 +3174,22 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", + "deep-extend": "^0.5.1", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -3435,227 +3204,118 @@ } }, "readable-stream": { - "version": "2.2.9", + "version": "2.3.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" - } - }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true, "dev": true }, - "semver": { - "version": "5.3.0", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "set-blocking": { - "version": "2.0.0", + "sax": { + "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, - "signal-exit": { - "version": "3.0.2", + "semver": { + "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", + "signal-exit": { + "version": "3.0.2", "bundled": true, "dev": true, "optional": true }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "tar-pack": { - "version": "3.4.0", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "tough-cookie": { - "version": "2.3.2", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "punycode": "^1.4.1" + "safe-buffer": "~5.1.0" } }, - "tunnel-agent": { - "version": "0.6.0", + "strip-ansi": { + "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "ansi-regex": "^2.0.0" } }, - "tweetnacl": { - "version": "0.14.5", + "strip-json-comments": { + "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "uid-number": { - "version": "0.0.6", + "tar": { + "version": "4.4.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } }, "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -3669,6 +3329,11 @@ "version": "1.0.2", "bundled": true, "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true } } }, @@ -3915,22 +3580,6 @@ } } }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha1-ctnQdU9/4lyi0BrY+PmpRJqJUm0=" - }, "home-or-tmp": { "version": "2.0.0", "resolved": @@ -3943,9 +3592,10 @@ } }, "home-path": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.5.tgz", - "integrity": "sha1-eIspgVsS1Tus9XVkhHbm+QQdEz8=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz", + "integrity": + "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==" }, "hosted-git-info": { "version": "2.6.0", @@ -4052,7 +3702,8 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + "integrity": + "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "invariant": { "version": "2.2.2", @@ -4420,24 +4071,24 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "jest-config": { - "version": "22.4.3", + "version": "22.4.4", "resolved": - "https://registry.npmjs.org/jest-config/-/jest-config-22.4.3.tgz", + "https://registry.npmjs.org/jest-config/-/jest-config-22.4.4.tgz", "integrity": - "sha512-KSg3EOToCgkX+lIvenKY7J8s426h6ahXxaUFJxvGoEk0562Z6inWj1TnKoGycTASwiLD+6kSYFALcjdosq9KIQ==", + "sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==", "dev": true, "requires": { "chalk": "^2.0.1", "glob": "^7.1.1", - "jest-environment-jsdom": "^22.4.3", - "jest-environment-node": "^22.4.3", - "jest-get-type": "^22.4.3", - "jest-jasmine2": "^22.4.3", - "jest-regex-util": "^22.4.3", - "jest-resolve": "^22.4.3", - "jest-util": "^22.4.3", - "jest-validate": "^22.4.3", - "pretty-format": "^22.4.3" + "jest-environment-jsdom": "^22.4.1", + "jest-environment-node": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^22.4.4", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.4", + "pretty-format": "^22.4.0" }, "dependencies": { "ansi-styles": { @@ -4463,6 +4114,62 @@ "supports-color": "^5.3.0" } }, + "jest-jasmine2": { + "version": "22.4.4", + "resolved": + "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz", + "integrity": + "sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^22.4.0", + "graceful-fs": "^4.1.11", + "is-generator-fn": "^1.0.0", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "source-map-support": "^0.5.0" + } + }, + "jest-validate": { + "version": "22.4.4", + "resolved": + "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.4.tgz", + "integrity": + "sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-config": "^22.4.4", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^22.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": + "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.6", + "resolved": + "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": + "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "5.4.0", "resolved": @@ -4558,83 +4265,6 @@ "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", "dev": true }, - "jest-jasmine2": { - "version": "22.4.3", - "resolved": - "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz", - "integrity": - "sha512-yZCPCJUcEY6R5KJB/VReo1AYI2b+5Ky+C+JA1v34jndJsRcLpU4IZX4rFJn7yDTtdNbO/nNqg+3SDIPNH2ecnw==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^22.4.3", - "graceful-fs": "^4.1.11", - "is-generator-fn": "^1.0.0", - "jest-diff": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-snapshot": "^22.4.3", - "jest-util": "^22.4.3", - "source-map-support": "^0.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": - "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": - "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": - "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": - "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": - "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": - "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": - "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": - "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": - "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "jest-matcher-utils": { "version": "22.4.3", "resolved": @@ -5147,11 +4777,11 @@ } }, "libui-download": { - "version": "1.0.0", + "version": "1.1.0", "resolved": - "https://registry.npmjs.org/libui-download/-/libui-download-1.0.0.tgz", + "https://registry.npmjs.org/libui-download/-/libui-download-1.1.0.tgz", "integrity": - "sha512-nW3PgUCPQoxKBce9gkLkmiUH2163FpwFLnXorO/IJhFC4h7JgJRPRKWSGYZvlrhU18rZr93DqECE90cCS2pW1Q==", + "sha512-kn/VrmvI4zUNjH+GsUelLMKNiuNG/T9q7eEWXSLXQwcpQvhsvUZQO8VxeiNfYw4wMqnYUOyPynbx8qfXJt3ZaQ==", "requires": { "debug": "^2.2.0", "home-path": "^1.0.1", @@ -5161,7 +4791,7 @@ "pinkie-promise": "^2.0.1", "rc": "^1.1.2", "regenerator-runtime": "^0.9.5", - "request": "^2.72.0", + "request": "^2.85.0", "tar": "^4.4.0" }, "dependencies": { @@ -5174,14 +4804,15 @@ } }, "libui-node": { - "version": "0.1.0", + "version": "0.2.1", "resolved": - "https://registry.npmjs.org/libui-node/-/libui-node-0.1.0.tgz", + "https://registry.npmjs.org/libui-node/-/libui-node-0.2.1.tgz", "integrity": - "sha512-wTULYnkI+k2C1+kX1rbTUh2d9JvK97/XtZxa8c9BnskueYNX6L5+kR0eyfT39ro8ULYkYW8vF3T6FWxGthbqiA==", + "sha512-VVpghzPFPccw7+9PjHEyWUIJ6LszKyT1NZ+bPwL8nEDdH2kV6gAW2HdWPr47OF6sshkUpZL9OqEWSrEMAsCP+w==", "requires": { + "@mischnic/async-hooks": "^0.0.4", "autogypi": "^0.2.2", - "libui-download": "^1.0.0", + "libui-download": "^1.1.0", "nbind": "^0.3.14", "node-gyp": "^3.3.1" } @@ -5844,10 +5475,10 @@ } }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": - "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "^3.0.0" @@ -5882,6 +5513,13 @@ "object-visit": "^1.0.0" } }, + "math-random": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -5932,17 +5570,19 @@ } }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": + "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, "mime-types": { - "version": "2.1.17", + "version": "2.1.18", "resolved": - "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": + "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.30.0" + "mime-db": "~1.33.0" } }, "minimatch": { @@ -5959,14 +5599,22 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "minipass": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz", "integrity": - "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==", + "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", "requires": { + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" }, "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": + "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": + "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "yallist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", @@ -6032,11 +5680,10 @@ } }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", - "dev": true, - "optional": true + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": + "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" }, "nanomatch": { "version": "1.2.9", @@ -6098,14 +5745,6 @@ "emscripten-library-decorator": "~0.2.2", "mkdirp": "~0.5.1", "nan": "^2.9.2" - }, - "dependencies": { - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": - "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" - } } }, "ncp": { @@ -6172,7 +5811,8 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "integrity": + "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -6225,7 +5865,8 @@ "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", + "integrity": + "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -6719,60 +6360,18 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" - }, - "randomatic": { - "version": "1.1.7", - "resolved": - "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": - "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": - "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": + "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "rc": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", - "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": + "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "deep-extend": "~0.4.0", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -6799,17 +6398,17 @@ } }, "react-devtools": { - "version": "3.2.1", + "version": "3.2.3", "resolved": - "https://registry.npmjs.org/react-devtools/-/react-devtools-3.2.1.tgz", - "integrity": "sha1-ys3jXToY8lJ7Xp+Xg5qUhXTWZWk=", + "https://registry.npmjs.org/react-devtools/-/react-devtools-3.2.3.tgz", + "integrity": "sha1-R5PR3xDBRbNs9mdUlnM2Erhb3aE=", "dev": true, "requires": { "cross-spawn": "^5.0.1", - "electron": "~1.4.15", + "electron": "^1.8.7", "ip": "^1.1.4", "minimist": "^1.2.0", - "react-devtools-core": "^3.2.1", + "react-devtools-core": "^3.2.3", "update-notifier": "^2.1.0" }, "dependencies": { @@ -6823,21 +6422,22 @@ } }, "react-devtools-core": { - "version": "3.2.1", + "version": "3.2.3", "resolved": - "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.2.1.tgz", - "integrity": "sha1-nRcLK0nma3Qm9lmJVoTHKkMRRdo=", + "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.2.3.tgz", + "integrity": "sha1-o34ZnZSGXiy7YWuXvo9YIGdOar0=", "dev": true, "requires": { "shell-quote": "^1.6.1", - "ws": "^2.0.3" + "ws": "^3.3.1" } }, "react-reconciler": { - "version": "0.7.0", + "version": "0.11.0", "resolved": - "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", - "integrity": "sha1-lhSJQQPl8Tje7rXquvPugOsdAm0=", + "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.11.0.tgz", + "integrity": + "sha512-a83YVKKZbE5/aDRN+pZNxckrOZprxa0wr5v+yExpYd8cdv9XfC9ipb7rsN/ztn0kGVBSFqXGwBfg7SBeB6w94g==", "requires": { "fbjs": "^0.8.16", "loose-envify": "^1.1.0", @@ -6969,7 +6569,8 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha1-hR/UkDjuy1hpERFa+EUmDuyYPyA=", + "integrity": + "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { "rc": "^1.1.6", @@ -7041,9 +6642,10 @@ } }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": + "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.6.0", @@ -7053,7 +6655,6 @@ "forever-agent": "~0.6.1", "form-data": "~2.3.1", "har-validator": "~5.0.3", - "hawk": "~6.0.2", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -7063,7 +6664,6 @@ "performance-now": "^2.1.0", "qs": "~6.5.1", "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", "tough-cookie": "~2.3.3", "tunnel-agent": "^0.6.0", "uuid": "^3.1.0" @@ -7463,14 +7063,6 @@ "kind-of": "^3.2.0" } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=", - "requires": { - "hoek": "4.x.x" - } - }, "source-map": { "version": "0.5.7", "resolved": @@ -7576,9 +7168,9 @@ "dev": true }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -7685,12 +7277,6 @@ "is-regexp": "^1.0.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": - "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, "strip-ansi": { "version": "3.0.1", "resolved": @@ -7770,19 +7356,27 @@ "dev": true }, "tar": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.0.tgz", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.4.tgz", "integrity": - "sha512-gJlTiiErwo96K904FnoYWl+5+FBgS+FimU6GMh66XLdLa55al8+d4jeDfPoGwSNHdtWI5FJP6xurmVqhBuGJpQ==", + "sha512-mq9ixIYfNF9SK0IS/h2HKMu8Q2iaCuhDDsZhdEag/FHv8fOaYld4vN7ouMgcSSt5WKZzPs8atclTcJm36OTh4w==", "requires": { "chownr": "^1.0.1", - "fs-minipass": "^1.2.3", - "minipass": "^2.2.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.3", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" }, "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": + "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": + "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "yallist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", @@ -7985,7 +7579,8 @@ "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=", + "integrity": + "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, "union-value": { @@ -8095,10 +7690,11 @@ "dev": true }, "update-notifier": { - "version": "2.4.0", + "version": "2.5.0", "resolved": - "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", - "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", + "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": + "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "^1.2.1", @@ -8125,10 +7721,10 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": - "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -8137,11 +7733,11 @@ } }, "supports-color": { - "version": "5.3.0", + "version": "5.4.0", "resolved": - "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": - "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -8298,12 +7894,13 @@ } }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "resolved": - "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", + "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": + "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "widest-line": { @@ -8338,8 +7935,8 @@ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -8369,7 +7966,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha1-H/YVdcLipOjlENb6TiQ8zhg5mas=", + "integrity": + "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -8378,22 +7976,15 @@ } }, "ws": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": + "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "safe-buffer": "~5.0.1", + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", "ultron": "~1.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.0.1", - "resolved": - "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true - } } }, "xdg-basedir": { diff --git a/package.json b/package.json index 6bad38d..a1b55d9 100644 --- a/package.json +++ b/package.json @@ -30,10 +30,10 @@ "dependencies": { "color": "^3.0.0", "fbjs": "^0.8.16", - "libui-node": "^0.2.0", + "libui-node": "^0.2.1", "prop-types": "^15.6.1", "react": "^16.3.2", - "react-reconciler": "^0.7.0", + "react-reconciler": "^0.11.0", "svg-path-parser": "^1.1.0" }, "devDependencies": { @@ -44,7 +44,7 @@ "husky": "^0.14.3", "lint-staged": "^7.1.0", "prettier": "^1.12.1", - "react-devtools": "^3.2.1" + "react-devtools": "^3.2.3" }, "files": ["bin"] } diff --git a/src/index.js b/src/index.js index 7601306..bdd1665 100644 --- a/src/index.js +++ b/src/index.js @@ -7,6 +7,7 @@ import { Separator, Menu, Area, + StyledText, } from './react-components'; import { Dialog } from './components'; @@ -88,4 +89,5 @@ export { Dialog, AreaInternal, Area, + StyledText, }; diff --git a/src/react-components/Area.js b/src/react-components/Area.js index 6fcda06..60d9255 100644 --- a/src/react-components/Area.js +++ b/src/react-components/Area.js @@ -2,6 +2,8 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { AreaInternal } from '../'; +let HasAreaParentContext = React.createContext(false); + const AreaComponentPropTypes = { transform: PropTypes.string, fill: PropTypes.string, @@ -61,9 +63,13 @@ class Area extends Component { onKeyDown, }; return React.createElement( - AreaInternal, - areaProps, - React.createElement(Area.Group, groupProps, children) + HasAreaParentContext.Provider, + { value: true }, + React.createElement( + AreaInternal, + areaProps, + React.createElement(Area.Group, groupProps, children) + ) ); } } @@ -75,5 +81,5 @@ Area.propTypes = { Area.defaultProps = { ...AreaComponentDefaultProps, }; - +export { HasAreaParentContext }; export default Area; diff --git a/src/react-components/StyledText.js b/src/react-components/StyledText.js new file mode 100644 index 0000000..759dd6f --- /dev/null +++ b/src/react-components/StyledText.js @@ -0,0 +1,32 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { Area } from '../'; +import { HasAreaParentContext } from './Area'; + +class StyledText extends Component { + render() { + const { children, ...otherProps } = this.props; + + return React.createElement( + HasAreaParentContext.Consumer, + null, + hasParent => { + if (!hasParent) { + return React.createElement( + Area, + null, + React.createElement(Area.Text, otherProps, children) + ); + } else { + return React.createElement(Area.Text, otherProps, children); + } + } + ); + } +} + +StyledText.propTypes = {}; + +StyledText.defaultProps = {}; + +export default StyledText; diff --git a/src/react-components/index.js b/src/react-components/index.js index a6b1765..f64da50 100644 --- a/src/react-components/index.js +++ b/src/react-components/index.js @@ -5,5 +5,15 @@ import RadioButtons from './RadioButtons'; import Separator from './Separator'; import Menu from './Menu'; import Area from './Area'; +import StyledText from './StyledText'; -export { Box, TextInput, Picker, RadioButtons, Separator, Menu, Area }; +export { + Box, + TextInput, + Picker, + RadioButtons, + Separator, + Menu, + Area, + StyledText, +}; diff --git a/src/reconciler/index.js b/src/reconciler/index.js index 6676d42..c6db7d4 100644 --- a/src/reconciler/index.js +++ b/src/reconciler/index.js @@ -27,7 +27,7 @@ const DesktopRenderer = Reconciler({ return inst; }, - prepareForCommit() { + prepareForCommit(hostContext) { // noop }, @@ -35,7 +35,7 @@ const DesktopRenderer = Reconciler({ return true; }, - resetAfterCommit() { + resetAfterCommit(hostContext) { // noop }, @@ -60,46 +60,48 @@ const DesktopRenderer = Reconciler({ useSyncScheduling: true, - mutation: { - appendChild(parentInstance, child) { - if (parentInstance.appendChild) { - parentInstance.appendChild(child); - } - if (typeof child.render === 'function') child.render(parentInstance); // we just added a new child, so we want to render it - }, - - appendChildToContainer(parentInstance, child) { - if (parentInstance.appendChild) { - parentInstance.appendChild(child); - } - }, - - removeChild(parentInstance, child) { - parentInstance.removeChild(child); - }, - - removeChildFromContainer(parentInstance, child) { - parentInstance.removeChild(child); - }, - - insertBefore(parentInstance, child, beforeChild) { - // noob - }, - - commitUpdate(instance, updatePayload, type, oldProps, newProps) { - if (typeof instance.update !== 'undefined') { - instance.update(oldProps, newProps); - } - }, - - commitMount(instance, updatePayload, type, oldProps, newProps) { - // noop - }, - - commitTextUpdate(textInstance, oldText, newText) { - textInstance = newText; - }, + // MUTATION + + appendChild(parentInstance, child) { + if (parentInstance.appendChild) { + parentInstance.appendChild(child); + } + if (typeof child.render === 'function') child.render(parentInstance); // we just added a new child, so we want to render it + }, + + appendChildToContainer(parentInstance, child) { + if (parentInstance.appendChild) { + parentInstance.appendChild(child); + } + }, + + removeChild(parentInstance, child) { + parentInstance.removeChild(child); + }, + + removeChildFromContainer(parentInstance, child) { + parentInstance.removeChild(child); + }, + + insertBefore(parentInstance, child, beforeChild) { + // noob + }, + + commitUpdate(instance, updatePayload, type, oldProps, newProps) { + if (typeof instance.update !== 'undefined') { + instance.update(oldProps, newProps); + } + }, + + commitMount(instance, updatePayload, type, oldProps, newProps) { + // noop + }, + + commitTextUpdate(textInstance, oldText, newText) { + textInstance = newText; }, + supportsMutation: true, + supportsPersistence: false, }); export default DesktopRenderer; From cea8bd5327f6875d714271be29eb00eaf954b5d3 Mon Sep 17 00:00:00 2001 From: kusti8 Date: Sat, 2 Jun 2018 09:57:44 -0400 Subject: [PATCH 11/15] Update package lock --- package-lock.json | 128 +++++++++++++--------------------------------- 1 file changed, 35 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd40460..d528633 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,26 @@ { "name": "proton-native", - "version": "1.1.5", + "version": "1.1.6", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.49", + "version": "7.0.0-beta.46", "resolved": - "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", - "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", + "integrity": + "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.49" + "@babel/highlight": "7.0.0-beta.46" } }, "@babel/highlight": { - "version": "7.0.0-beta.49", + "version": "7.0.0-beta.46", "resolved": - "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", - "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.46.tgz", + "integrity": + "sha512-r4snW6Q8ICL3Y8hGzYJRvyG/+sc+kvkewXNedG9tQjoHmUFMwMSv/o45GWQUQswevGnWghiGkpRPivFfOuMsOA==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -198,8 +200,7 @@ "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": - "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", "dev": true, "optional": true, "requires": { @@ -254,8 +255,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": - "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-union": { @@ -1436,8 +1436,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": - "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", "dev": true }, "balanced-match": { @@ -1932,8 +1931,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": - "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", "requires": { "color-name": "^1.1.1" } @@ -2156,8 +2154,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": - "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -2308,7 +2305,7 @@ } }, "duplexer3": { - "version": "0.1.4",<<<<<<< font + "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true @@ -2793,8 +2790,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": - "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "integrity": "sha1-4y/AMKLM7kSmtTcTCNpUvgs5fSc=", "dev": true }, "fs.realpath": { @@ -3059,14 +3055,6 @@ "dev": true, "optional": true }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": - "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true - }, "needle": { "version": "2.2.0", "bundled": true, @@ -3449,8 +3437,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": - "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", "dev": true }, "got": { @@ -3664,8 +3651,7 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": - "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" }, "import-lazy": { "version": "2.1.0", @@ -3757,8 +3743,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": - "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { @@ -4807,34 +4792,6 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": - "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } } } }, @@ -5403,8 +5360,7 @@ "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": - "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "integrity": "sha1-maktZcAnLevoyWtgV7yPv6O+1RE=", "dev": true }, "lodash.sortby": { @@ -5503,8 +5459,7 @@ "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": - "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -5625,8 +5580,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": - "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -5794,8 +5748,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": - "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", "requires": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -6347,8 +6300,7 @@ "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": - "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", "dev": true }, "process-nextick-args": { @@ -6371,8 +6323,7 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": - "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", "requires": { "asap": "~2.0.3" } @@ -6512,8 +6463,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": - "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6551,8 +6501,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": - "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "integrity": "sha1-DDNtOYBVPXVcObWGrjsgqknIK38=", "dev": true }, "regenerator-runtime": { @@ -6567,8 +6516,7 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": - "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", "dev": true, "requires": { "babel-runtime": "^6.18.0", @@ -6580,8 +6528,7 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": - "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -6819,8 +6766,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": - "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" }, "safe-regex": { "version": "1.1.0", @@ -7135,8 +7081,7 @@ "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": - "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", "dev": true, "requires": { "source-map": "^0.5.6" @@ -7306,8 +7251,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": - "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "requires": { "safe-buffer": "~5.1.0" } @@ -7622,8 +7566,7 @@ "version": "0.7.17", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": - "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + "integrity": "sha1-6exflJi57JEOeuOsYmqAXE0J7Kw=" }, "ultron": { "version": "1.1.1", @@ -7937,8 +7880,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": - "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "requires": { "isexe": "^2.0.0" } From dd957cdf027c0a59520e139d00a3e10e74f0d538 Mon Sep 17 00:00:00 2001 From: kusti8 Date: Sat, 2 Jun 2018 10:22:59 -0400 Subject: [PATCH 12/15] Add StyledText to prop checking --- src/components/Area.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/Area.js b/src/components/Area.js index 691417b..b65f10b 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -7,6 +7,7 @@ import libui from 'libui-node'; import PropTypes from 'prop-types'; import Color from 'color'; import parseSVG from 'svg-path-parser'; +import { StyledText } from '..'; const onMouse = component => (area, evt) => { const down = evt.getDown(); @@ -883,7 +884,9 @@ Area.Text = class AreaText extends AreaComponent { function areaProp(props, propName, componentName) { const v = props[propName]; - if (!(typeof v === 'string' || v.type === 'AREATEXT')) { + if ( + !(typeof v === 'string' || v.type === 'AREATEXT' || v.type === StyledText) + ) { return new Error( 'Invalid prop `' + propName + From dced388ecf45f673df322c4497b18ce40d096c37 Mon Sep 17 00:00:00 2001 From: kusti8 Date: Sat, 2 Jun 2018 10:28:06 -0400 Subject: [PATCH 13/15] Update documentation for StyledText --- docs/_sidebar.md | 1 + docs/component_APIs/area_text.md | 16 +++++++++------- docs/component_APIs/styledtext.md | 32 +++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 docs/component_APIs/styledtext.md diff --git a/docs/_sidebar.md b/docs/_sidebar.md index c95e859..ad1147b 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -33,6 +33,7 @@ * [Separator](component_APIs/separator.md) * [Slider](component_APIs/slider.md) * [Spinbox](component_APIs/spinbox.md) + * [StyledText](component_APIs/styledtext.md) * [Tab](component_APIs/tab.md) * [Text](component_APIs/text.md) * [TextInput](component_APIs/textinput.md) diff --git a/docs/component_APIs/area_text.md b/docs/component_APIs/area_text.md index 6997c26..655613f 100644 --- a/docs/component_APIs/area_text.md +++ b/docs/component_APIs/area_text.md @@ -5,19 +5,21 @@ A (possibly styled) text to be displayed in an Area component. Nested `Area.Text ```jsx import React, { Component } from 'react'; -import { render, Window, App, Area } from 'proton-native'; +import { render, Window, App, Area, Box } from 'proton-native'; class Example extends Component { render() { return ( - - - This is some text drawn onto an{' '} - Area! - - + + + + This is some text drawn onto an{' '} + Area! + + + ); diff --git a/docs/component_APIs/styledtext.md b/docs/component_APIs/styledtext.md new file mode 100644 index 0000000..818f593 --- /dev/null +++ b/docs/component_APIs/styledtext.md @@ -0,0 +1,32 @@ +# Styled + +A wrapper around Area.Text without the need to explicitly create an Area component. + +```jsx +import React, { Component } from 'react'; + +import { render, Window, App, StyledText, Box } from 'proton-native'; + +class Example extends Component { + render() { + return ( + + + + + This is some text drawn onto an{' '} + Area! + + + + + ); + } +} + +render(); +``` + +## Props + +For props, see [Area.Text](component_APIs/area_text.md#Props) From a91406ceaeb26a2c105d070e346c9d86ae79b7cf Mon Sep 17 00:00:00 2001 From: kusti8 Date: Sat, 9 Jun 2018 13:46:27 -0400 Subject: [PATCH 14/15] Add markdown prettier --- docs/README.md | 10 +++++----- docs/_coverpage.md | 4 ++-- docs/about.md | 18 ++++++++++-------- docs/manual_install.md | 14 ++++++++------ package-lock.json | 3 +-- package.json | 2 +- src/reconciler/index.js | 4 ++-- 7 files changed, 29 insertions(+), 26 deletions(-) diff --git a/docs/README.md b/docs/README.md index 127e720..3d1b756 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,11 +22,11 @@ React packages such as Redux still work. ## Features -- Same syntax as React Native -- Works with existing React libraries such as Redux -- Cross platform -- Native components. No more Electron -- Compatible with all normal Node.js packages +* Same syntax as React Native +* Works with existing React libraries such as Redux +* Cross platform +* Native components. No more Electron +* Compatible with all normal Node.js packages ## Examples diff --git a/docs/_coverpage.md b/docs/_coverpage.md index 9157755..d943dac 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -40,7 +40,7 @@ text-decoration: none; transition: all 0.15s ease; } - + Github Get Started @@ -53,4 +53,4 @@
  • Compatible with all normal Node.js packages
  • -![color](linear-gradient(to left bottom, #2e4466 0%, #afc1e0 100%)) \ No newline at end of file +![color](linear-gradient(to left bottom, #2e4466 0%, #afc1e0 100%)) diff --git a/docs/about.md b/docs/about.md index 6ff3be6..37e878b 100644 --- a/docs/about.md +++ b/docs/about.md @@ -6,14 +6,16 @@ technologies, Proton Native allows you to use native widgets cross platform, all Electron. **Advantages** - * Use native OS widgets - * All widgets are created and handled in C, making for generally better performance (YMMV, especially in smaller apps) - * Simple React components very similar to React Native components - * Constantly being improved and added to + +* Use native OS widgets +* All widgets are created and handled in C, making for generally better performance (YMMV, especially in smaller apps) +* Simple React components very similar to React Native components +* Constantly being improved and added to **Disadvantages** - * Smaller selection of widgets than Electron - * Smaller community since Proton Native is newer + +* Smaller selection of widgets than Electron +* Smaller community since Proton Native is newer If you've been using Qt or frameworks like that successfully, then you may do so. But if you love working with React like I do, then Proton Native may be your best alternate to a full Electron app. @@ -33,9 +35,9 @@ As your projects get bigger and bigger, you're going to notice more memory usage Under the hood, there are two main libraries that are being used. * [Libui](https://github.com/andlabs/libui)/[Libui-node](https://github.com/parro-it/libui-node) - * Creates the native widgets using GTK3, Cocoa, or Windows API + * Creates the native widgets using GTK3, Cocoa, or Windows API * [React-reconciler](https://github.com/facebook/react/tree/master/packages/react-reconciler) - * Manages state, rerendering, etc. + * Manages state, rerendering, etc. Each libui widget has a corresponding component in `src/components`. All of these are classes, which extend `DesktopComponent`, which defines many common functions such as adding children, removing them, updating props, etc. Then, in `src/index.js`, we give diff --git a/docs/manual_install.md b/docs/manual_install.md index 365e431..3118308 100644 --- a/docs/manual_install.md +++ b/docs/manual_install.md @@ -8,7 +8,7 @@ If you get an error about Python on Windows, install the build tools: You also need to have babel-cli and these babel-presets prepared in devDependencies -```npm install --save-dev babel-cli babel-preset-env babel-preset-stage-0 babel-preset-react``` +`npm install --save-dev babel-cli babel-preset-env babel-preset-stage-0 babel-preset-react` Then create `.babelrc`: @@ -36,17 +36,19 @@ Now you can just run `npm run start` to run your script. A usual example starts with the following, just like any other React Native app. Most props can be set to their defaults and not be mentioned, as shown above. The Window component actually accepts many props, but only 4 have to be specified. -``` javascript +```javascript import React, { Component } from 'react'; // import from react import { render, Window, App } from 'proton-native'; // import the proton-native components class Example extends Component { - render() { // all Components must have a render method + render() { + // all Components must have a render method return ( - // you must always include App around everything - - // all your other components go here + + // you must always include App around everything + + // all your other components go here ); diff --git a/package-lock.json b/package-lock.json index d528633..8714e16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3694,8 +3694,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": - "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" }, "invariant": { "version": "2.2.2", diff --git a/package.json b/package.json index 96d3bf5..3570a42 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "scripts": { "demo": "babel-node Demo.js", "prettier": - "prettier --single-quote --trailing-comma es5 --write 'src/**/*.js' 'examples/*.js'", + "prettier --single-quote --trailing-comma es5 --write 'src/**/*.js' 'examples/*.js' ./**/*.md", "build": "babel src -d bin", "pub": "babel src -d bin && npm publish", "precommit": "lint-staged" diff --git a/src/reconciler/index.js b/src/reconciler/index.js index abbd3b3..70cfc0d 100644 --- a/src/reconciler/index.js +++ b/src/reconciler/index.js @@ -61,7 +61,7 @@ const DesktopRenderer = Reconciler({ useSyncScheduling: true, // MUTATION - + appendChild(parentInstance, child) { if (parentInstance.appendChild) { parentInstance.appendChild(child); @@ -100,7 +100,7 @@ const DesktopRenderer = Reconciler({ commitTextUpdate(textInstance, oldText, newText) { textInstance = newText; }, - + supportsMutation: true, supportsPersistence: false, }); From 3c9a52097ec462a157dfbd68c04baf5007e15683 Mon Sep 17 00:00:00 2001 From: kusti8 Date: Sat, 9 Jun 2018 14:04:10 -0400 Subject: [PATCH 15/15] Change default font size --- docs/component_APIs/area_text.md | 2 +- src/components/Area.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/component_APIs/area_text.md b/docs/component_APIs/area_text.md index 655613f..57ebc23 100644 --- a/docs/component_APIs/area_text.md +++ b/docs/component_APIs/area_text.md @@ -53,7 +53,7 @@ The font size (in pt). | **Type** | **Required** | **Default** | | -------- | ------------ | ----------- | -| number | false | 14 | +| number | false | 12 | ### fontFamily diff --git a/src/components/Area.js b/src/components/Area.js index b65f10b..2788748 100644 --- a/src/components/Area.js +++ b/src/components/Area.js @@ -848,7 +848,7 @@ Area.Text = class AreaText extends AreaComponent { const font = new libui.FontDescriptor( 'Arial', - 14, + 12, libui.textWeight.normal, libui.textItalic.normal, libui.textStretch.normal