You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

react-speed-reader

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-speed-reader - npm Package Compare versions

Comparing version

to
1.3.0

.eslintrc

2

dist/main.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["react-speed-reader"]=t():e["react-speed-reader"]=t()}(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}([function(e,t,r){"use strict";function n(e){return function(){return e}}var o=function(){};o.thatReturns=n,o.thatReturnsFalse=n(!1),o.thatReturnsTrue=n(!0),o.thatReturnsNull=n(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,r){"use strict";e.exports=r(8)},function(e,t,r){"use strict";e.exports={}},function(e,t,r){"use strict";var n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(e){n[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,i,u=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),a=1;a<arguments.length;a++){for(var c in r=Object(arguments[a]))o.call(r,c)&&(u[c]=r[c]);if(n){i=n(r);for(var p=0;p<i.length;p++)s.call(r,i[p])&&(u[i[p]]=r[i[p]])}}return u}},function(e,t,r){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,r){"use strict";var n=function(e){};e.exports=function(e,t,r,o,s,i,u,a){if(n(t),!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var p=[r,o,s,i,u,a],l=0;(c=new Error(t.replace(/%s/g,function(){return p[l++]}))).name="Invariant Violation"}throw c.framesToPop=1,c}}},function(e,t,r){"use strict";var n=r(0),o=r(5),s=r(4);e.exports=function(){function e(e,t,r,n,i,u){u!==s&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return r.checkPropTypes=n,r.PropTypes=r,r}},function(e,t,r){e.exports=r(6)()},function(e,t,r){"use strict";var n=r(3),o=r(2),s=r(0),i="function"==typeof Symbol&&Symbol.for,u=i?Symbol.for("react.element"):60103,a=i?Symbol.for("react.call"):60104,c=i?Symbol.for("react.return"):60105,p=i?Symbol.for("react.portal"):60106,l=i?Symbol.for("react.fragment"):60107,f="function"==typeof Symbol&&Symbol.iterator;function d(e){for(var t=arguments.length-1,r="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,n=0;n<t;n++)r+="&args[]="+encodeURIComponent(arguments[n+1]);throw(t=Error(r+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.")).name="Invariant Violation",t.framesToPop=1,t}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};function h(e,t,r){this.props=e,this.context=t,this.refs=o,this.updater=r||y}function b(e,t,r){this.props=e,this.context=t,this.refs=o,this.updater=r||y}function v(){}h.prototype.isReactComponent={},h.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e&&d("85"),this.updater.enqueueSetState(this,e,t,"setState")},h.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=h.prototype;var g=b.prototype=new v;function m(e,t,r){this.props=e,this.context=t,this.refs=o,this.updater=r||y}g.constructor=b,n(g,h.prototype),g.isPureReactComponent=!0;var k=m.prototype=new v;k.constructor=m,n(k,h.prototype),k.unstable_isAsyncReactComponent=!0,k.render=function(){return this.props.children};var O={current:null},P=Object.prototype.hasOwnProperty,_={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,r){var n,o={},s=null,i=null;if(null!=t)for(n in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(s=""+t.key),t)P.call(t,n)&&!_.hasOwnProperty(n)&&(o[n]=t[n]);var a=arguments.length-2;if(1===a)o.children=r;else if(1<a){for(var c=Array(a),p=0;p<a;p++)c[p]=arguments[p+2];o.children=c}if(e&&e.defaultProps)for(n in a=e.defaultProps)void 0===o[n]&&(o[n]=a[n]);return{$$typeof:u,type:e,key:s,ref:i,props:o,_owner:O.current}}function w(e){return"object"==typeof e&&null!==e&&e.$$typeof===u}var x=/\/+/g,S=[];function R(e,t,r,n){if(S.length){var o=S.pop();return o.result=e,o.keyPrefix=t,o.func=r,o.context=n,o.count=0,o}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function T(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>S.length&&S.push(e)}function E(e,t,r,n){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var s=!1;if(null===e)s=!0;else switch(o){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case u:case a:case c:case p:s=!0}}if(s)return r(n,e,""===t?"."+C(e,0):t),1;if(s=0,t=""===t?".":t+":",Array.isArray(e))for(var i=0;i<e.length;i++){var l=t+C(o=e[i],i);s+=E(o,l,r,n)}else if(null===e||void 0===e?l=null:l="function"==typeof(l=f&&e[f]||e["@@iterator"])?l:null,"function"==typeof l)for(e=l.call(e),i=0;!(o=e.next()).done;)s+=E(o=o.value,l=t+C(o,i++),r,n);else"object"===o&&d("31","[object Object]"===(r=""+e)?"object with keys {"+Object.keys(e).join(", ")+"}":r,"");return s}function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function A(e,t){e.func.call(e.context,t,e.count++)}function F(e,t,r){var n=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?$(e,n,r,s.thatReturnsArgument):null!=e&&(w(e)&&(t=o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(x,"$&/")+"/")+r,e={$$typeof:u,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}),n.push(e))}function $(e,t,r,n,o){var s="";null!=r&&(s=(""+r).replace(x,"$&/")+"/"),t=R(t,s,n,o),null==e||E(e,"",F,t),T(t)}var q={Children:{map:function(e,t,r){if(null==e)return e;var n=[];return $(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;t=R(null,null,t,r),null==e||E(e,"",A,t),T(t)},count:function(e){return null==e?0:E(e,"",s.thatReturnsNull,null)},toArray:function(e){var t=[];return $(e,t,null,s.thatReturnsArgument),t},only:function(e){return w(e)||d("143"),e}},Component:h,PureComponent:b,unstable_AsyncComponent:m,Fragment:l,createElement:j,cloneElement:function(e,t,r){var o=n({},e.props),s=e.key,i=e.ref,a=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,a=O.current),void 0!==t.key&&(s=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(p in t)P.call(t,p)&&!_.hasOwnProperty(p)&&(o[p]=void 0===t[p]&&void 0!==c?c[p]:t[p])}var p=arguments.length-2;if(1===p)o.children=r;else if(1<p){c=Array(p);for(var l=0;l<p;l++)c[l]=arguments[l+2];o.children=c}return{$$typeof:u,type:e.type,key:s,ref:i,props:o,_owner:a}},createFactory:function(e){var t=j.bind(null,e);return t.type=e,t},isValidElement:w,version:"16.2.0",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentOwner:O,assign:n}},I=Object.freeze({default:q}),M=I&&q||I;e.exports=M.default?M.default:M},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(1)),o=s(r(7));function s(e){return e&&e.__esModule?e:{default:e}}var i=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return u.call(r),r.state=r.getDefaultState(e),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,n.default.Component),t}();i.propTypes={inputText:o.default.string.isRequired,renderReader:o.default.func.isRequired,isPlaying:o.default.bool.isRequired,speed:o.default.number.isRequired,chunk:o.default.number},i.defaultProps={chunk:1};var u=function(){var e=this;this.getDefaultState=function(t){var r=e.getWords(t.inputText),n=r.slice(0,t.chunk).join(" ");return Object.assign(e.getWordParts(n),{current:0,words:r,currentText:n})},this.componentWillReceiveProps=function(t){!e.props.isPlaying&&t.isPlaying&&e.loop(),e.props.setProgress&&e.props.setProgress.timestamp!==t.setProgress.timestamp&&e.handleSetProgress(t.setProgress),e.props.reset!==t.reset&&(e.setState(e.getDefaultState(t)),e.props.progressCallback&&e.props.progressCallback({at:0,of:e.state.words.length||1}),e.loop())},this.handleSetProgress=function(t){var r=e.state.words.length-1;if(t.skipFor){var n=e.state.current+t.skipFor;n<0&&(n=0),n>r&&(n=r),e.setState({current:n})}else{if(!t.percent)return;var o=t.percent;o<0&&(o=0),o>100&&(o=100),e.setState({current:Math.floor(o/100*r)})}e.offset=0,e.blank=0,e.loop({skip:!0,skipFor:void 0!==t.skipFor,skipPercent:0==o||0==n})},this.getWords=function(e){return e.split(/\s+/).filter(Boolean)},this.componentDidMount=function(){e.loop()},this.getWordParts=function(t){var r=t.split(""),n=e.pivot(t);return{pre:r.slice(0,n),mid:r[n],post:r.slice(n+1)}},this.loop=function(t){var r=e,n=(t=t||{}).skip?0:6e4/e.props.speed;clearTimeout(e.lastLoopId),e.lastLoopId=setTimeout(function(){if(t.skip||t.skipFor||r.props.isPlaying){if(r.blank)return r.setState({currentText:"",pre:"",mid:"",post:""}),r.offset=r.blank-n,r.blank=0,r.loop();var e=r.props.chunk,o=r.state.current+e,s=r.state.words,i=s.length-1,u=o-(e<i?e:i),a=s.slice(u,o);if(r.props.trim)for(var c=0;c<a.length;++c){if(-1!=a[c].search(r.props.trim.regex)){var p=c+1;a=a.slice(0,p),o=r.state.current+p;break}}var l=a.join(" ");r.props.offset&&r.props.offset.regex.test(l)?r.offset=(r.props.offset.duration||1)*n:r.offset=0,r.props.blank&&r.props.blank.regex.test(l)&&(r.blank=(r.props.blank.duration||1)*n),r.setState(Object.assign(r.getWordParts(l),{currentText:l,current:t.skip?r.state.current:o})),u+=t.skipPercent?0:e;var f=i+1;r.props.progressCallback&&r.props.progressCallback({at:u>f?f:u,of:f||1}),u<f?t.skip&&!t.skipFor||r.loop():r.props.hasEndedCallback&&r.props.hasEndedCallback()}},n+e.offset)},this.pivot=function(e){return 1!=e.length?Math.floor(e.length/7+1):0},this.render=function(){return e.props.renderReader(e.props,e.state)}};t.default=i}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("prop-types"),require("react")):"function"==typeof define&&define.amd?define(["prop-types","react"],t):"object"==typeof exports?exports.SpeedReader=t(require("prop-types"),require("react")):e.SpeedReader=t(e["prop-types"],e.react)}(window,function(e,t){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(t,r){t.exports=e},function(e,r){e.exports=t},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=s(r(1)),n=s(r(0));function s(e){return e&&e.__esModule?e:{default:e}}var p=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return r.getDefaultState=function(){var e=r.getWords(r.props.inputText),t=e.slice(0,r.props.chunk).join(" ");return Object.assign(r.getWordParts(t),{current:0,words:e,currentText:t})},r.componentWillReceiveProps=function(e){!r.props.isPlaying&&e.isPlaying&&r.loop(),r.props.setProgress&&r.props.setProgress.timestamp!==e.setProgress.timestamp&&r.handleSetProgress(e.setProgress),r.props.reset!==e.reset&&(r.setState(r.getDefaultState(e)),r.props.progressCallback&&r.props.progressCallback({at:0,of:r.state.words.length||1}),r.loop())},r.handleSetProgress=function(e){var t=r.state.words.length-1,o=void 0,n=void 0;if(e.skipFor)(o=r.state.current+e.skipFor)<0&&(o=0),o>t&&(o=t),r.setState({current:o});else{if(!e.percent)return;(n=e.percent)<0&&(n=0),n>100&&(n=100),r.setState({current:Math.floor(n/100*t)})}r.offset=0,r.blank=0,r.loop({skip:!0,skipFor:void 0!==e.skipFor,skipPercent:0===n||0===o})},r.getWords=function(e){return e.split(/\s+/).filter(Boolean)},r.componentDidMount=function(){r.loop()},r.getWordParts=function(e){var t=e.split(""),o=r.pivot(e);return{pre:t.slice(0,o),mid:t[o],post:t.slice(o+1)}},r.loop=function(e){var t=(e=e||{}).skip?0:6e4/r.props.speed;clearTimeout(r.lastLoopId),r.lastLoopId=setTimeout(function(){if(e.skip||e.skipFor||r.props.isPlaying){if(r.blank)return r.setState({currentText:"",pre:"",mid:"",post:""}),r.offset=r.blank-t,r.blank=0,r.loop();var o=r.props.chunk,n=r.state.current+o,s=r.state.words,p=s.length-1,i=n-(o<p?o:p),a=s.slice(i,n);if(r.props.trim)for(var u=0;u<a.length;++u){if(-1!==a[u].search(r.props.trim.regex)){var c=u+1;a=a.slice(0,c),n=r.state.current+c;break}}var l=a.join(" ");r.props.offset&&r.props.offset.regex.test(l)?r.offset=(r.props.offset.duration||1)*t:r.offset=0,r.props.blank&&r.props.blank.regex.test(l)&&(r.blank=(r.props.blank.duration||1)*t),r.setState(Object.assign(r.getWordParts(l),{currentText:l,current:e.skip?r.state.current:n})),i+=e.skipPercent?0:o;var f=p+1;r.props.progressCallback&&r.props.progressCallback({at:i>f?f:i,of:f||1}),i<f?e.skip&&!e.skipFor||r.loop():r.props.hasEndedCallback&&r.props.hasEndedCallback()}},t+r.offset)},r.pivot=function(e){return 1!==e.length?Math.floor(e.length/7+1):0},r.render=function(){return r.props.renderReader(r.props,r.state)},r.state=r.getDefaultState(),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.default.Component),t}();p.propTypes={inputText:n.default.string.isRequired,renderReader:n.default.func.isRequired,isPlaying:n.default.bool.isRequired,speed:n.default.number.isRequired,chunk:n.default.number},p.defaultProps={chunk:1},t.default=p}])});
//# sourceMappingURL=main.js.map
{
"name": "react-speed-reader",
"version": "1.2.1",
"version": "1.3.0",
"description": "Speed Reader component for React",

@@ -9,3 +9,4 @@ "author": "Reslav Hollos <reslav.hollos@gmail.com> (http://radivarig.github.io)",

"scripts": {
"start": "webpack-dev-server --mode development --open",
"prepublish": "npm run build",
"dev": "NODE_ENV=development webpack-dev-server --mode development ./src/viewer.js",
"build": "webpack --mode production"

@@ -26,2 +27,3 @@ },

"babel-core": "^6.26.0",
"babel-eslint": "^8.2.2",
"babel-loader": "^7.1.4",

@@ -32,5 +34,8 @@ "babel-plugin-transform-class-properties": "^6.24.1",

"css-loader": "^0.28.10",
"eslint": "^4.18.2",
"eslint-loader": "^2.0.0",
"eslint-plugin-jsx-control-statements": "^2.2.0",
"eslint-plugin-react": "^7.7.0",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.0.6",
"react-dom": "^16.2.0",
"style-loader": "^0.20.2",

@@ -42,4 +47,6 @@ "webpack": "^4.1.0",

"peerDependencies": {
"react": "^16.2.0"
"prop-types": "^15.5.0",
"react-dom": "^15.5.0",
"react": "^15.5.0"
}
}

@@ -17,3 +17,3 @@ # react-speed-reader

npm install
npm start
npm run dev
```

@@ -20,0 +20,0 @@

@@ -1,15 +0,15 @@

import React from 'react'
import PropTypes from 'prop-types'
import React from "react"
import PropTypes from "prop-types"
class SpeedReader extends React.Component {
static propTypes = {
inputText: PropTypes.string.isRequired,
renderReader: PropTypes.func.isRequired,
isPlaying: PropTypes.bool.isRequired,
speed: PropTypes.number.isRequired,
chunk: PropTypes.number,
"inputText": PropTypes.string.isRequired,
"renderReader": PropTypes.func.isRequired,
"isPlaying": PropTypes.bool.isRequired,
"speed": PropTypes.number.isRequired,
"chunk": PropTypes.number,
}
static defaultProps = {
chunk: 1,
"chunk": 1,
}

@@ -20,13 +20,13 @@

this.state = this.getDefaultState (props)
this.state = this.getDefaultState ()
}
getDefaultState = (props) => {
var words = this.getWords(props.inputText)
var currentText = words.slice(0, props.chunk).join(' ')
getDefaultState = () => {
const words = this.getWords (this.props.inputText)
const currentText = words.slice (0, this.props.chunk).join (" ")
return Object.assign(this.getWordParts(currentText), {
current: 0
, words: words
, currentText: currentText
return Object.assign (this.getWordParts (currentText), {
"current": 0,
words,
currentText,
})

@@ -37,3 +37,3 @@ }

if (!this.props.isPlaying && nextProps.isPlaying)
this.loop()
this.loop ()

@@ -43,14 +43,14 @@ if (this.props.setProgress &&

nextProps.setProgress.timestamp)
this.handleSetProgress(nextProps.setProgress)
this.handleSetProgress (nextProps.setProgress)
if(this.props.reset !== nextProps.reset) {
this.setState(this.getDefaultState(nextProps))
this.setState (this.getDefaultState (nextProps))
if (this.props.progressCallback)
this.props.progressCallback({
at: 0
, of: this.state.words.length || 1
this.props.progressCallback ({
"at": 0,
"of": this.state.words.length || 1,
})
this.loop()
this.loop ()
}

@@ -60,14 +60,15 @@ }

handleSetProgress = (setProgress) => {
var l = this.state.words.length -1
const l = this.state.words.length - 1
let current, percent
if (setProgress.skipFor) {
var current = this.state.current +setProgress.skipFor
current = this.state.current + setProgress.skipFor
if (current < 0) current = 0
if (current > l) current = l
this.setState({current: current})
this.setState ({ current })
}
else if (setProgress.percent) {
var percent = setProgress.percent
percent = setProgress.percent
if (percent < 0) percent = 0
if (percent > 100) percent = 100
this.setState({current: Math.floor(percent/100*l)})
this.setState ({ "current": Math.floor (percent / 100 * l) })
}

@@ -78,15 +79,13 @@ else return

this.blank = 0
this.loop({
skip: true
, skipFor: setProgress.skipFor !== undefined
, skipPercent: percent == 0 || current == 0
this.loop ({
"skip": true,
"skipFor": setProgress.skipFor !== undefined,
"skipPercent": percent === 0 || current === 0,
})
}
getWords = (sentence) => {
return sentence.split(/\s+/).filter(Boolean)
}
getWords = (sentence) => sentence.split (/\s+/).filter (Boolean)
componentDidMount = () => {
this.loop()
this.loop ()
}

@@ -101,8 +100,8 @@

getWordParts = (currentText) => {
var word = currentText.split('')
var pivot = this.pivot(currentText)
const word = currentText.split ("")
const pivot = this.pivot (currentText)
return {
pre: word.slice(0, pivot)
, mid: word[pivot]
, post: word.slice(pivot +1)
"pre": word.slice (0, pivot),
"mid": word[pivot],
"post": word.slice (pivot + 1),
}

@@ -113,30 +112,29 @@ }

opts = opts || {}
var self = this
var ms = opts.skip ? 0 : 60000/this.props.speed
clearTimeout(this.lastLoopId)
this.lastLoopId = setTimeout(function() {
if( !opts.skip &&!opts.skipFor && !self.props.isPlaying ) return
const ms = opts.skip ? 0 : 60000 / this.props.speed
clearTimeout (this.lastLoopId)
this.lastLoopId = setTimeout (() => {
if(!opts.skip && !opts.skipFor && !this.props.isPlaying) return
if (self.blank) {
self.setState({currentText: '', pre: '', mid: '', post: ''})
self.offset = self.blank -ms
self.blank = 0
return self.loop()
if (this.blank) {
this.setState ({ "currentText": "", "pre": "", "mid": "", "post": "" })
this.offset = this.blank - ms
this.blank = 0
return this.loop ()
}
var chunk = self.props.chunk
var current = self.state.current +chunk
var words = self.state.words
var l = words.length -1
const chunk = this.props.chunk
let current = this.state.current + chunk
const words = this.state.words
const l = words.length - 1
var currentStart = current -(chunk < l ? chunk : l)
var currentTextWords = words.slice(currentStart, current)
let currentStart = current - (chunk < l ? chunk : l)
let currentTextWords = words.slice (currentStart, current)
if(self.props.trim) {
for(var i = 0; i < currentTextWords.length; ++i) {
var w = currentTextWords[i]
if(w.search(self.props.trim.regex) != -1) {
var cnt = i +1
currentTextWords = currentTextWords.slice(0, cnt)
current = self.state.current +cnt
if(this.props.trim) {
for(let i = 0; i < currentTextWords.length; ++i) {
const w = currentTextWords[i]
if(w.search (this.props.trim.regex) !== -1) {
const cnt = i + 1
currentTextWords = currentTextWords.slice (0, cnt)
current = this.state.current + cnt
break

@@ -146,14 +144,14 @@ }

}
var currentText = currentTextWords.join(' ')
const currentText = currentTextWords.join (" ")
if (self.props.offset && self.props.offset.regex.test(currentText))
self.offset = (self.props.offset.duration || 1)*ms
else self.offset = 0
if (this.props.offset && this.props.offset.regex.test (currentText))
this.offset = (this.props.offset.duration || 1) * ms
else this.offset = 0
if (self.props.blank && self.props.blank.regex.test(currentText))
self.blank = (self.props.blank.duration || 1)*ms
if (this.props.blank && this.props.blank.regex.test (currentText))
this.blank = (this.props.blank.duration || 1) * ms
self.setState(Object.assign(self.getWordParts(currentText), {
currentText: currentText
, current: opts.skip ? self.state.current : current
this.setState (Object.assign (this.getWordParts (currentText), {
currentText,
"current": opts.skip ? this.state.current : current,
}))

@@ -163,26 +161,21 @@

var wordsCount = l +1
if (self.props.progressCallback)
self.props.progressCallback({
at: currentStart > wordsCount ? wordsCount : currentStart
, of: wordsCount || 1
const wordsCount = l + 1
if (this.props.progressCallback)
this.props.progressCallback ({
"at": currentStart > wordsCount ? wordsCount : currentStart,
"of": wordsCount || 1,
})
if(currentStart < wordsCount) {
if ( !opts.skip || opts.skipFor) self.loop()
if (!opts.skip || opts.skipFor) this.loop ()
}
else {
if (self.props.hasEndedCallback)
self.props.hasEndedCallback()
}
}, ms +this.offset)
else if (this.props.hasEndedCallback)
this.props.hasEndedCallback ()
}, ms + this.offset)
}
pivot = (x) => {
return (x.length != 1) ? Math.floor(x.length/7 +1) : 0
}
//eslint-disable-next-line
pivot = (x) => (x.length !== 1) ? Math.floor ((x.length / 7) + 1) : 0
render = () => {
return this.props.renderReader(this.props, this.state)
}
render = () => this.props.renderReader (this.props, this.state)

@@ -189,0 +182,0 @@ }

@@ -0,7 +1,10 @@

const path = require('path')
const packageJson = require(path.resolve(__dirname, "package.json"))
const HtmlWebPackPlugin = require("html-webpack-plugin")
const mainFile = "SpeedReader.jsx"
module.exports = {
entry: {
main: __dirname + "/src/SpeedReader.jsx",
viewer: __dirname + "/src/index.js",
main: path.resolve(__dirname, "src", mainFile),
},

@@ -11,7 +14,9 @@

filename: "[name].js",
path: __dirname + "/dist",
library: "react-speed-reader",
library: mainFile.substring (0, mainFile.indexOf(".")),
libraryTarget: "umd",
},
externals: process.env.NODE_ENV == "development" ? [] :
Object.keys(packageJson.peerDependencies),
devtool: "source-map",

@@ -26,3 +31,3 @@

loader: "babel-loader",
}
},
},

@@ -35,5 +40,16 @@ {

options: { minimize: true },
}
]
},
],
},
{
enforce: "pre",
test: /\.jsx?$/,
exclude: /node_modules/,
use: [
{
loader: "eslint-loader",
options: { fix: true }
},
],
},
],

@@ -44,6 +60,5 @@ },

new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "./index.html",
template: path.resolve (__dirname, "src", "index.html"),
})
],
}

Sorry, the diff of this file is not supported yet