Socket
Socket
Sign inDemoInstall

windups

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

windups - npm Package Compare versions

Comparing version 1.2.0-alpha.1 to 1.2.0-alpha.2

src/test/SuffixedWindup.resume.test.ts

1

dist/SuffixedWindup.d.ts

@@ -45,2 +45,1 @@ import { PlayedWindup, PlayedWindupMember, Windup } from "./Windup";

export declare function unsuffixPlayedWindup<E, M>(suffixed: PlayedSuffixedWindup<E, M>): PlayedWindup<E, M>;
export declare function commonPrefix<E, M>(base: Windup<E, M> | PlayedWindup<E, M>, against: Windup<E, M> | PlayedWindup<E, M>): PlayedSuffixedWindupMember<E, M>[];

@@ -364,27 +364,20 @@ 'use strict';

remaining = suffixedWindup[1];
var remainingMembers = remaining.reduce(function (acc, member) {
if (isPlayedSuffixedWindup(member)) {
return [].concat(acc, playedElementsWithSuffix(member));
}
var firstRemaining = remaining[0];
if (isSuffixedWindup(member)) {
var metadata = member[3];
var els = playedElementsWithSuffix(member);
if (firstRemaining && isSuffixedWindup(firstRemaining)) {
var metadata = firstRemaining[3];
var playedFromFirstRemaining = playedElements$1(firstRemaining);
if (els.length === 0) {
return acc;
}
return [].concat(acc, [[playedElementsWithSuffix(member), [], metadata]]);
if (playedFromFirstRemaining.length > 0) {
return [].concat(suffixedPlayed, [[playedFromFirstRemaining, [], metadata]]);
}
}
return acc;
}, []);
return [].concat(suffixedPlayed, remainingMembers);
return suffixedPlayed;
}
function playedElementsWithSuffix(windup) {
if (isPlayedSuffixedWindup(windup)) {
var _played = windup[0],
var played = windup[0],
_suffix = windup[1];
return [].concat(_played, _suffix.map(function (member) {
return [].concat(played, _suffix.map(function (member) {
if (playedMemberIsWindup(member)) {

@@ -398,5 +391,20 @@ return playedWindupToSuffixed(member);

var played = playedElements$1(windup);
var suffix = windup[2];
var suffixAsSuffixPlayedMembers = suffix.map(function (member) {
var suffixedPlayed = windup[0],
remaining = windup[1],
suffix = windup[2];
var middle = remaining.reduce(function (acc, member) {
if (isSuffixedWindup(member)) {
var metadata = member[3];
var asWindup = [[], playedElementsWithSuffix(member), metadata];
return [].concat(acc, [asWindup]);
}
return acc;
}, []);
console.log({
suffixedPlayed: suffixedPlayed,
middle: middle,
suffix: suffix
});
return [].concat(suffixedPlayed, middle, suffix.map(function (member) {
if (playedMemberIsWindup(member)) {

@@ -407,17 +415,16 @@ return playedWindupToSuffixed(member);

return member;
});
return [].concat(played, suffixAsSuffixPlayedMembers);
}));
}
function prev(suffixedWindup) {
if (isPlayedSuffixedWindup(suffixedWindup)) {
var _played2 = suffixedWindup[0],
var _played = suffixedWindup[0],
_suffix2 = suffixedWindup[1],
_metadata = suffixedWindup[2];
var _restPlayed = _played2.slice(0, -1);
var _restPlayed = _played.slice(0, -1);
var _lastPlayed = _played2[_played2.length - 1];
var _lastPlayed = _played[_played.length - 1];
if (!_lastPlayed) {
return [_played2, [], _suffix2, _metadata];
return [_played, [], _suffix2, _metadata];
}

@@ -955,4 +962,4 @@

if (isPlayedSuffixedWindup(windup)) {
var _played3 = windup[0];
var _last = _played3[_played3.length - 1];
var _played2 = windup[0];
var _last = _played2[_played2.length - 1];
return _last;

@@ -1044,19 +1051,3 @@ }

}
function commonPrefix(base, against) {
var baseMembers = allMembers(base);
var againstMembers = allMembers(against);
var zipped = zipMembersFromLeft(baseMembers, againstMembers);
var _matchesFromLeft3 = matchesFromLeft(zipped),
matched = _matchesFromLeft3.matched;
return matched.map(function (annotated) {
if (annotated.isWindup) {
return isPlayedWindup(annotated.member) ? playedWindupToSuffixed(annotated.member) : playedWindupToSuffixed(fastForward(annotated.member));
}
return annotated.member;
});
}
function defaultGetPace(lastChar, nextChar) {

@@ -1849,11 +1840,3 @@ switch (lastChar) {

}, "");
var suffix = isPlayedSuffixedWindup(windup) ? [] : windup[2];
var innerSuffixed = suffix.reduce(function (acc, suffixEl) {
if (typeof suffixEl === "string") {
return acc + suffixEl;
}
return acc + renderStringWindup(suffixEl);
}, "");
return inner + innerSuffixed;
return inner;
}

@@ -1940,3 +1923,3 @@ function renderSuffixedChildrenWindup(windup) {

var toResume = mergeWindupsToSuffixedWindup(action.againstWindup, action.baseWindup);
var rewindUntil = commonPrefix(action.baseWindup, action.againstWindup);
var rewindUntil = playedElements$1(toResume);
return {

@@ -1961,12 +1944,12 @@ toRewind: toRewind,

if (isEqual$1(state.rewindUntil, playedElements$1(state.toRewind))) {
var nextToResume = next$1(state.toResume);
if (isRewinding(state)) {
var nextToRewind = prev(state.toRewind);
return _extends({}, state, {
toResume: nextToResume
toRewind: nextToRewind
});
}
var nextToRewind = prev(state.toRewind);
var nextToResume = next$1(state.toResume);
return _extends({}, state, {
toRewind: nextToRewind
toResume: nextToResume
});

@@ -1973,0 +1956,0 @@ }

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

"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var n,r=require("react"),t=e(require("fast-deep-equal")),i=e(require("break-styled-lines")),u=e(require("fast-deep-equal/es6/react"));function c(e){return!!Array.isArray(e)&&2===e.length&&!!Array.isArray(e[0])}function a(e){return!!Array.isArray(e)&&3===e.length&&!(!Array.isArray(e[0])||!Array.isArray(e[1]))}function o(e){return!!Array.isArray(e)&&2===e.length&&!!Array.isArray(e[0])}function s(e,n){return[[],e.split(""),n]}function f(e,n){return[[],e,n]}function p(e){return!c(e)&&!(e[0].length>0)&&e[1].reduce((function(n,r){return a(r)&&a(e)&&n?p(r):n}),!0)}function d(e){if(c(e))return e;var n=v(e);return c(n)?n:d(n)}function l(e){if(!c(e)&&p(e))return e;var n=e[0],r=c(e)?e[1]:e[2],t=function(e){return o(e)?l(e):e};if(c(e))return[[],n.map(t),r];var i=e[1];return[[],[].concat(n.map(t),i.map((function(e){return a(e)?l(e):e}))),r]}function m(e){if(c(e)){var n=e[0];return n[n.length-1]}var r=e[0];return e[1].reduce((function(e,n){return a(n)&&!p(n)?h(n):e}),void 0)||r[r.length-1]}function h(e){var n=m(e);return o(n)?h(n):n}function y(e){if(c(e))return e[0];var n=e[0],r=e[1][0];if(a(r)&&!p(r)){var t=r[2];return[].concat(n,[[y(r),t]])}return n}function v(e){if(c(e))return e;var n=e[0],r=e[1],t=e[2],i=r[0],u=r.slice(1);if(!i)return[n,t];if(a(i)){var o=v(i);return c(o)?0===u.length?[[].concat(n,[o]),t]:[[].concat(n,[o]),u,t]:[n,[o].concat(u),t]}return 0===u.length?[[].concat(n,[i]),t]:[[].concat(n,[i]),u,t]}function g(){return(g=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}function b(e){return!!Array.isArray(e)&&4===e.length&&!(!Array.isArray(e[0])||!Array.isArray(e[1]))}function k(e){return!!Array.isArray(e)&&3===e.length&&!(!Array.isArray(e[0])||!Array.isArray(e[1]))}function w(e){var n=e[0],r=e[1];return!k(e)&&!(n.length>0)&&r.reduce((function(n,r){return b(r)&&b(e)&&n?w(r):n}),!0)}function P(e){if(k(e))return e[0];var n=e[0],r=e[1].reduce((function(e,n){if(k(n))return[].concat(e,W(n));if(b(n)){var r=n[3];return 0===W(n).length?e:[].concat(e,[[W(n),[],r]])}return e}),[]);return[].concat(n,r)}function W(e){if(k(e))return[].concat(e[0],e[1].map((function(e){return o(e)?C(e):e})));var n=P(e),r=e[2].map((function(e){return o(e)?C(e):e}));return[].concat(n,r)}function E(e){if(k(e)){var n=e[0],r=e[1],t=e[2],i=n.slice(0,-1),u=n[n.length-1];return u?k(u)?[i,[E(u)],r,t]:[i,[u],r,t]:[n,[],r,t]}var c=e[0],a=e[1],o=e[2],s=e[3],f=a[0],p=a.slice(1);if(!f){var d=c.slice(0,-1),l=c[c.length-1];return l?k(l)?[d,[E(l)],o,s]:[d,[l],o,s]:[c,[],o,s]}if(b(f)&&!w(f))return[c,[E(f)].concat(p),o,s];var m=c.slice(0,-1),h=c[c.length-1];return k(h)?[m,[E(h)].concat(a),o,s]:[m,[h].concat(a),o,s]}function F(e){if(k(e))return e;var n=e[0],r=e[1],t=e[2],i=e[3],u=r[0],c=r.slice(1);if(!u)return[n,t,i];if(b(u)){var a=F(u);return k(a)?0===c.length?[[].concat(n,[a]),t,i]:[[].concat(n,[a]),c,t,i]:[n,[a].concat(c),t,i]}return 0===c.length?[[].concat(n,[u]),t,i]:[[].concat(n,[u]),c,t,i]}function R(e){var n=F(e);return k(n)?n:R(n)}function A(e){var n=e[1],r=e[2];return[e[0].map((function(e){return o(e)?C(e):e})),n.map((function(e){return a(e)?A(e):e})),[],r]}function C(e){var n=e[1];return[e[0].map((function(e){return o(e)?C(e):e})),[],n]}function x(e){var r=(c(e),e[0]),t=c(e)?[]:e[1];return[].concat(r.map((function(e){return o(e)?{member:e,kind:n.Played,isWindup:!0}:{member:e,kind:n.Played,isWindup:!1}})),t.map((function(e){return a(e)?{member:e,kind:n.InProgress,isWindup:!0}:{member:e,kind:n.InProgress,isWindup:!1}})))}function O(e,n){if(!e.isWindup&&n.isWindup||e.isWindup&&!n.isWindup)return!1;if(e.isWindup&&n.isWindup){var r=G(e.member),i=G(n.member);if(!t(r,i))return!1;var u=x(e.member),c=x(n.member);return u.length===c.length&&T(u,c).every((function(e){var n=e[1];return!!n&&O(e[0],n)}))}return t(e.member,n.member)}function j(e){return e.reduce((function(e,n){var r=n[0],t=n[1];return t&&O(r,t)&&0===e.unmatched.length?g({},e,{matched:[].concat(e.matched,[r])}):g({},e,{unmatched:[].concat(e.unmatched,[[r,t]])})}),{matched:[],unmatched:[]})}function S(e){return e.reduce((function(e,n){var r=n[0],t=n[1];return t&&O(r,t)&&0===e.unmatched.length?g({},e,{matched:[r].concat(e.matched)}):g({},e,{unmatched:[[r,t]].concat(e.unmatched)})}),{matched:[],unmatched:[]})}function T(e,n){return e.map((function(e,r){return[e,n[r]]}))}function I(e,n){for(var r=[],t=0;t<=e.length-1;t++)r.push([e[e.length-1-t],n[n.length-1-t]]);return r}function M(e){var r=e[0],t=e[1];if(r.isWindup&&null!=t&&t.isWindup){var i=G(r.member),u=j(T(x(r.member),x(t.member))),c=u.unmatched,a=u.matched.map((function(e){return e.kind===n.InProgress&&e.isWindup?C(d(e.member)):e.kind===n.Played&&e.isWindup?C(e.member):e.member})),o=M(c[0]),s=c.map((function(e){return e[0]})).map(q);if(o){var f=s.slice(1,0);return[a,[o].concat(f),[],i]}return[a,s,[],i]}}function V(e){var n=e[0],r=e[1];if(n.isWindup&&null!=r&&r.isWindup){var t=G(n.member),i=x(n.member),u=S(I(i,x(r.member))),c=u.matched,a=u.unmatched,o=M(a[a.length-1]),s=c.map(U);if(o){var f=i.slice(0,a.length-1).map(q);return[[],[].concat(f,[o]),s,t]}return[[],[].concat(a).map((function(e){return e[0]})).map(q),s,t]}}function q(e){return e.isWindup&&e.kind===n.Played?E(C(e.member)):e.isWindup?A(e.member):e.member}function U(e){return e.isWindup&&e.kind===n.InProgress?d(e.member):e.member}function D(e,r){var t=G(e),i=x(e),u=x(r),c=j(T(i,u)),a=c.unmatched,o=c.matched.map((function(e){return e.kind===n.InProgress&&e.isWindup?C(d(e.member)):e.kind===n.Played&&e.isWindup?C(e.member):e.member})),s=i.length-o.length,f=S(I(i,u).slice(0,s)),p=f.matched,l=f.unmatched,m=function(e,r){if(0===e.length||0===r.length)return{played:[],remaining:[]};var t=e[0],i=t[0],u=t[1],c=r[r.length-1],a=c[0],o=c[1];if(1===e.length&&1===r.length&&i.isWindup&&null!=u&&u.isWindup){var s=D(i.member,u.member);return k(s)?{played:[s],remaining:[]}:{played:[],remaining:[s]}}var f=e.filter((function(e){return e[0].kind===n.Played})),p=f.map((function(e){return e[0]})).map((function(e){return e.isWindup&&e.kind===n.InProgress?R(A(e.member)):e.isWindup?C(e.member):e.member})),d=e.slice(p.length);if(0===d.length&&0===f.length)return{played:p,remaining:[]};if(0===d.length){var l=r.slice(0,f.length),m=l[l.length-1],h=V([m[0],m[1]]);if(h){var y=p.slice(0,-1);return{played:[].concat(y,[R(h)]),remaining:[]}}return{played:p,remaining:[]}}var v=d[0],g=M([v[0],v[1]]),b=V([a,o]),w=d.map((function(e){return e[0]})).map(q);if(g&&b){var P=w.slice(1,-1);return{played:p,remaining:[g].concat(P,[b])}}if(!g&&b){var W=w.slice(0,-1);return{played:p,remaining:[].concat(W,[b])}}if(g&&!b){var E=w.slice(1);return{played:p,remaining:[g].concat(E)}}return{played:p,remaining:w}}(a.slice(0,l.length),l),h=m.played,y=m.remaining,v=p.map((function(e){return e.kind===n.InProgress&&e.isWindup?d(e.member):e.member}));return 0===y.length?[[].concat(o,h),v,t]:[[].concat(o,h),y,v,t]}function G(e){return c(e)?e[1]:e[2]}function _(e){if(k(e)){var n=e[0];return n[n.length-1]}var r=e[0];return e[1].reduce((function(e,n){return b(n)&&!w(n)?L(n):e}),void 0)||r[r.length-1]}function L(e){var n=_(e);return k(n)?L(n):n}function z(e){var n=e[1],r=e[2],t=e[3],i=e[0].map((function(e){return k(e)?B(e):e})),u=n.map((function(e){return b(e)?z(e):e})),c=r.map((function(e){return o(e)?l(e):e}));return[i,[].concat(u,c),t]}function B(e){var n=e[1],r=e[2],t=e[0].map((function(e){return k(e)?B(e):e}));return[[].concat(t,n),r]}function H(e,n){switch(e){case"—":case"…":return 200;case".":case",":return 150;case"?":case"!":return"!"!==n&&"?"!==n?150:20;case"-":case" ":case"\n":return 0;default:return 20}}!function(e){e[e.Played=0]="Played",e[e.InProgress=1]="InProgress"}(n||(n={}));var J=function(e){return r.createElement(r.Fragment,null,e.children)},K=function(e){return r.createElement(r.Fragment,null,e.children)};function N(e){return{windup:e,didFinishOnce:!1}}function Q(e,n){switch(n.type){case"replace":return N(n.windup);case"next":return c(e.windup)?e:g({},e,{windup:v(e.windup)});case"rewind":return{windup:l(e.windup),didFinishOnce:!1};case"fast-forward":return c(e.windup)?e:g({},e,{windup:d(e.windup)});case"finish":return g({},e,{didFinishOnce:!0});default:return e}}function X(e,n){var t=r.useReducer(Q,e,N),i=t[0],u=i.windup,s=i.didFinishOnce,f=t[1],d=r.useRef(null),l=function(e){return!!c(e)||0===e[1].length}(u),y=r.useCallback((function(){l||(d.current&&clearTimeout(d.current),f({type:"fast-forward"}))}),[l]),v=r.useCallback((function(){d.current&&clearTimeout(d.current),f({type:"rewind"})}),[]);return r.useEffect((function(){f({type:"replace",windup:e})}),[e]),r.useEffect((function(){d.current&&clearTimeout(d.current),n.skipped&&f({type:"fast-forward"}),!1===n.skipped&&f({type:"rewind"})}),[n.skipped]),r.useEffect((function(){var e=function e(n){if(c(n))return[];var r=n[1],t=n[2],i=m(n),u=r[0],s=[];return i&&o(i)&&s.push.apply(s,e(i)),u&&a(u)&&!p(u)&&s.push.apply(s,e(u)),t.onChar&&s.push(t.onChar),s}(u),n=h(u);e.length>0&&n&&e.forEach((function(e){e(n,!1)}))}),[u]),r.useEffect((function(){if(!1===s&&l){var e=setTimeout((function(){n.onFinished&&n.onFinished(),f({type:"finish"})}),0);return function(){clearTimeout(e)}}}),[s,l,n]),r.useEffect((function(){if(!l){var e=function e(n,r){if(!c(n)){var t=n[2],i=n[1][0];return i&&a(i)?e(i,t.pace||r):t.pace||r}}(u)||H,n=h(u),r=function e(n){if(!c(n)){var r=n[1][0];return a(r)?e(r):r}}(u);return d.current=setTimeout((function(){f({type:"next"})}),n?e(n,r):0),function(){d.current&&clearTimeout(d.current)}}}),[u,l]),{windup:u,skip:y,rewind:v,isFinished:l}}function Y(e){return y(e).reduce((function(e,n){return"string"==typeof n?e+n:e+Y(n)}),"")}var Z=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],$=function(){return null},ee=r.createContext({skip:function(){console.warn("Tried to use the useSkip hook outside of a WindupChildren component!!")},rewind:function(){console.warn("Tried to use the useRewind hook outside of a WindupChildren component!")},isFinished:!1});function ne(e,n){if("string"==typeof n)return[].concat(e,n.split(""));if("number"==typeof n)return[].concat(e,n.toString().split(""));if(!r.isValidElement(n))return e;var t=n.props,i=t.children,u=function(e,n){if(null==e)return{};var r,t,i={},u=Object.keys(e);for(t=0;t<u.length;t++)n.indexOf(r=u[t])>=0||(i[r]=e[r]);return i}(t,["children"]),c=n.type===J?function(e){if(function(e){return"ms"in e}(e)){var n=e.ms,r=e.reverseMs;return g({pace:function(){return n}},r?{reversePace:function(){return r}}:{})}if(function(e){return"reverseMs"in e}(e)){var t=e.ms,i=e.reverseMs;return g({reversePace:function(){return i}},t?{pace:function(){return t}}:{})}return function(e){return"reverseGetPace"in e}(e)?g({reversePace:e.getReversePace},e.getPace?{pace:e.getPace}:{}):g({pace:e.getPace},e.getReversePace?{reversePace:e.getReversePace}:{})}(n.props):{},o=function(e){return e.type===K}(n)?{onChar:n.props.fn}:{},p=n.key?{key:n.key}:{};if(function(e){return e.type===$}(n))return[].concat(e,[s(" ",g({element:r.Fragment},p,{props:{children:void 0},pace:function(){return n.props.ms}}))]);if(void 0===i)return[].concat(e,[s(" ",g({element:n.type,props:g({},u,{children:void 0})},p,c,o))]);if("string"==typeof i)return[].concat(e,[s(i,g({element:n.type,props:u},p,c,o))]);if(i instanceof Function)return[].concat(e,[s(" ",g({element:n.type,props:g({children:i},u)},p,c,o))]);var d=r.Children.toArray(i).reduce(ne,[]).map((function(e){return a(e)?[e[0],e[1],g({},c,o,e[2])]:e}));return[].concat(e,[f(d,g({element:n.type,props:u},p,c,o))])}function re(e){if(null==e)return"";var n=r.Children.map(e,(function(e){return"string"==typeof e?e:"number"==typeof e?e.toString():r.isValidElement(e)?"#"+(e.key||"")+"<"+re(e.props.children)+">":""}));return n?n.join(","):""}function te(e,n){return r.useMemo(e,[re(n)])}function ie(e,n){var t=e[0],i=e[1];if("string"==typeof n||"number"==typeof n){var u=i[0],c=i.slice(1);return[[].concat(t,[u]),c]}if(!r.isValidElement(n))return[t,i];var a=r.Children.toArray(n.props.children).reduce(ie,[[],i]),o=a[1];return[[].concat(t,[r.cloneElement(n,{children:a[0]})]),o]}function ue(e){return e.type===ce}function ce(e){return r.createElement(r.Fragment,null,e.children)}function ae(e){var n=r.useRef();return r.useEffect((function(){n.current=e}),[e]),n.current}function oe(e){return"rewindUntil"in e}function se(e){return!!oe(e)&&!u(e.rewindUntil,P(e.toRewind))}function fe(e){return oe(e)?se(e)?e.toRewind:e.toResume:e.toPlay}function pe(e){return oe(e)?se(e)?k(e.toRewind)?B(e.toRewind):z(e.toRewind):k(e.toResume)?B(e.toResume):z(e.toResume):k(e.toPlay)?B(e.toPlay):z(e.toPlay)}function de(e,n){switch(n.type){case"start-rewindup":var r=D(n.baseWindup,n.againstWindup),t=D(n.againstWindup,n.baseWindup);return{toRewind:r,rewindUntil:(i=n.againstWindup,j(T(x(n.baseWindup),x(i))).matched.map((function(e){return e.isWindup?c(e.member)?C(e.member):C(d(e.member)):e.member}))),toResume:t};case"proceed":return oe(e)?u(e.rewindUntil,P(e.toRewind))?g({},e,{toResume:F(e.toResume)}):g({},e,{toRewind:E(e.toRewind)}):k(e.toPlay)?e:{toPlay:F(e.toPlay)};case"fast-forward":return{toPlay:R(fe(e))};default:return e}var i}function le(e,n){var t=r.useReducer(de,{toPlay:c(e)?C(e):A(e)}),i=t[0],a=t[1];r.useEffect((function(){if(i){var e=fe(i),n=function e(n){if(k(n))return[];var r=n[1],t=n[3],i=_(n),u=r[0],c=[];return i&&k(i)&&c.push.apply(c,e(i)),u&&b(u)&&!w(u)&&c.push.apply(c,e(u)),t.onChar&&c.push(t.onChar),c}(e),r=L(e);n.length>0&&r&&n.forEach((function(e){e(r,oe(i))}))}}),[i]);var o=r.useRef(null);r.useEffect((function(){o.current&&clearTimeout(o.current),n.skipped&&a({type:"fast-forward"}),!1===n.skipped&&a({type:"start-rewindup",baseWindup:pe(i),againstWindup:e})}),[n.skipped]);var s=k(fe(i)),p=ae(s);r.useEffect((function(){if(!1===p&&s){var e=setTimeout((function(){n.onFinished&&n.onFinished()}),0);return function(){clearTimeout(e)}}}),[p,s,n.onFinished]),r.useEffect((function(){var e=k(oe(i)?i.toResume:i.toPlay),n=!oe(i)||u(P(i.toRewind),i.rewindUntil);if(!(!i||e&&n)){var r=fe(i),t=function e(n,r,t){if(!k(n)){var i=n[3],u=n[1][0],c=r?i.reversePace:i.pace;return u&&b(u)?e(u,r,c||t):c||t}}(r,oe(i))||H,c=L(r),s=function e(n){if(!k(n)){var r=n[1][0];return b(r)?e(r):r}}(r),f=c?t(c,s):0;return o.current=setTimeout((function(){a({type:"proceed"})}),f),function(){o.current&&clearTimeout(o.current)}}}),[i]);var d=ae(e);r.useEffect((function(){void 0!==d&&d!==e&&(n.onRewindStart&&n.onRewindStart(),a({type:"start-rewindup",baseWindup:pe(i),againstWindup:e}))}),[e,d]);var l=r.useCallback((function(){a({type:"fast-forward"})}),[]),m=r.useCallback((function(){a({type:"start-rewindup",baseWindup:f([],{}),againstWindup:e})}),[]);return{windup:fe(i),skip:l,rewind:m,isFinished:s}}exports.CharWrapper=function(e){var n=e.element;return r.createElement(r.Fragment,null,r.Children.map(e.children,(function(e){return function e(n,t){if("string"==typeof n)return n.split("").map((function(e,n){return"\n"===e?e:r.createElement(t,{key:e+"-"+n},e)}));if("number"==typeof n)return n.toString().split("").map((function(e){return r.createElement(t,null,e)}));if(!r.isValidElement(n))return r.createElement(r.Fragment,null);if(n.props.children){var i=n.type;return n.props.children instanceof Function?r.createElement(i,Object.assign({key:n.key},n.props)):r.createElement(i,Object.assign({key:n.key},n.props),r.Children.map(n.props.children,(function(n){return e(n,t)})))}return n}(e,n)})))},exports.Effect=function(e){var n=e.fn;return r.useEffect((function(){n()}),[]),null},exports.Linebreaker=function(e){var n=e.fontStyle,t=e.width,u=r.Children.toArray(e.children),c=u.reduce(function e(n){return function(t,i){return"string"==typeof i?[].concat(t,[{text:i,font:n}]):"number"==typeof i?[].concat(t,[{text:i.toString(),font:n}]):r.isValidElement(i)?ue(i)&&"string"==typeof i.props.children?[].concat(t,[{text:i.props.children,font:i.props.fontStyle}]):ue(i)?[].concat(t,r.Children.toArray(i.props.children).reduce(e(i.props.fontStyle),[])):[].concat(t,r.Children.toArray(i.props.children).reduce(e(n),[])):t}}(n),[]),a=i(c,t,n),o=u.reduce(ie,[[],a]);return r.createElement("div",{style:{whiteSpace:"pre"}},o[0])},exports.OnChar=K,exports.Pace=J,exports.Pause=$,exports.RewindupChildren=function(e){var n=e.children,t=e.onFinished,i=e.onRewindStart,u=e.skipped,c=te((function(){return f(void 0===n?[]:r.Children.toArray(n).reduce(ne,[]),{element:void 0})}),n),a=le(r.useMemo((function(){return u?d(c):c}),[c,u]),{onFinished:t,onRewindStart:i,skipped:u});return r.createElement(ee.Provider,{value:{skip:a.skip,rewind:a.rewind,isFinished:a.isFinished}},function e(n){var t=k(n)?n[2]:n[3],i=W(n),u=t.element||r.Fragment;if(t.props&&Object.keys(t.props).includes("children"))return r.createElement(u,Object.assign({key:t.key},t.props));var c=i.reduce((function(n,r){return[].concat(n,"string"==typeof r?[r]:[e(r)])}),[]);return"string"==typeof t.element&&Z.includes(t.element)?r.createElement(u,Object.assign({key:t.key},t.props)):c.every((function(e){return"string"==typeof e}))?r.createElement(u,Object.assign({key:t.key},t.props),c.join("")):r.createElement(u,Object.assign({key:t.key},t.props),c)}(a.windup))},exports.StyledText=ce,exports.WindupChildren=function(e){var n=e.children,t=e.onFinished,i=e.skipped,u=X(te((function(){return f(r.Children.toArray(n).reduce(ne,[]),{element:void 0})}),n),{onFinished:t,skipped:i});return r.createElement(ee.Provider,{value:{skip:u.skip,rewind:u.rewind,isFinished:u.isFinished}},function e(n){var t=c(n)?n[1]:n[2],i=y(n),u=t.element||r.Fragment;if(t.props&&Object.keys(t.props).includes("children"))return r.createElement(u,Object.assign({key:t.key},t.props));var a=i.reduce((function(n,r){if("string"==typeof r){var t=n.slice(0,n.length-1),i=n[n.length-1];return i&&"string"==typeof i?[].concat(t,[i+r]):[].concat(n,[r])}return[].concat(n,[e(r)])}),[]);return"string"==typeof t.element&&Z.includes(t.element)?r.createElement(u,Object.assign({key:t.key},t.props)):a.every((function(e){return"string"==typeof e}))?r.createElement(u,Object.assign({key:t.key},t.props),a.join("")):r.createElement(u,Object.assign({key:t.key},t.props),a)}(u.windup))},exports.defaultGetPace=H,exports.textFromChildren=function e(n){var t=r.Children.map(n,(function(n){return"string"==typeof n?n:"number"==typeof n?n.toString():r.isValidElement(n)&&n.props.children?e(n.props.children):""}));return t?t.join(""):""},exports.useIsFinished=function(){return r.useContext(ee).isFinished},exports.useRewind=function(){return r.useContext(ee).rewind},exports.useRewindupString=function(e,n){void 0===n&&(n={});var t=le(r.useMemo((function(){return s(e,n)}),[e]),n),i=t.skip,u=t.rewind,c=t.isFinished,a=function e(n){return W(n).reduce((function(n,r){return"string"==typeof r?n+r:n+e(r)}),"")+(k(n)?[]:n[2]).reduce((function(e,n){return"string"==typeof n?e+n:e+Y(n)}),"")}(t.windup);return r.useDebugValue(a),[a,{skip:i,rewind:u,isFinished:c}]},exports.useSkip=function(){return r.useContext(ee).skip},exports.useWindupString=function(e,n){void 0===n&&(n={});var t=X(r.useMemo((function(){return s(e,n)}),[e]),n),i=t.skip,u=t.rewind,c=t.isFinished,a=Y(t.windup);return r.useDebugValue(a),[a,{skip:i,rewind:u,isFinished:c}]};
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var n,r=require("react"),t=e(require("fast-deep-equal")),i=e(require("break-styled-lines")),u=e(require("fast-deep-equal/es6/react"));function c(e){return!!Array.isArray(e)&&2===e.length&&!!Array.isArray(e[0])}function a(e){return!!Array.isArray(e)&&3===e.length&&!(!Array.isArray(e[0])||!Array.isArray(e[1]))}function o(e){return!!Array.isArray(e)&&2===e.length&&!!Array.isArray(e[0])}function s(e,n){return[[],e.split(""),n]}function f(e,n){return[[],e,n]}function p(e){return!c(e)&&!(e[0].length>0)&&e[1].reduce((function(n,r){return a(r)&&a(e)&&n?p(r):n}),!0)}function d(e){if(c(e))return e;var n=v(e);return c(n)?n:d(n)}function l(e){if(!c(e)&&p(e))return e;var n=e[0],r=c(e)?e[1]:e[2],t=function(e){return o(e)?l(e):e};if(c(e))return[[],n.map(t),r];var i=e[1];return[[],[].concat(n.map(t),i.map((function(e){return a(e)?l(e):e}))),r]}function m(e){if(c(e)){var n=e[0];return n[n.length-1]}var r=e[0];return e[1].reduce((function(e,n){return a(n)&&!p(n)?h(n):e}),void 0)||r[r.length-1]}function h(e){var n=m(e);return o(n)?h(n):n}function y(e){if(c(e))return e[0];var n=e[0],r=e[1][0];if(a(r)&&!p(r)){var t=r[2];return[].concat(n,[[y(r),t]])}return n}function v(e){if(c(e))return e;var n=e[0],r=e[1],t=e[2],i=r[0],u=r.slice(1);if(!i)return[n,t];if(a(i)){var o=v(i);return c(o)?0===u.length?[[].concat(n,[o]),t]:[[].concat(n,[o]),u,t]:[n,[o].concat(u),t]}return 0===u.length?[[].concat(n,[i]),t]:[[].concat(n,[i]),u,t]}function g(){return(g=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}function k(e){return!!Array.isArray(e)&&4===e.length&&!(!Array.isArray(e[0])||!Array.isArray(e[1]))}function b(e){return!!Array.isArray(e)&&3===e.length&&!(!Array.isArray(e[0])||!Array.isArray(e[1]))}function w(e){var n=e[0],r=e[1];return!b(e)&&!(n.length>0)&&r.reduce((function(n,r){return k(r)&&k(e)&&n?w(r):n}),!0)}function P(e){if(b(e))return e[0];var n=e[0],r=e[1][0];if(r&&k(r)){var t=r[3],i=P(r);if(i.length>0)return[].concat(n,[[i,[],t]])}return n}function E(e){if(b(e))return[].concat(e[0],e[1].map((function(e){return o(e)?x(e):e})));var n=e[0],r=e[2],t=e[1].reduce((function(e,n){if(k(n)){var r=n[3],t=[[],E(n),r];return[].concat(e,[t])}return e}),[]);return console.log({suffixedPlayed:n,middle:t,suffix:r}),[].concat(n,t,r.map((function(e){return o(e)?x(e):e})))}function W(e){if(b(e)){var n=e[0],r=e[1],t=e[2],i=n.slice(0,-1),u=n[n.length-1];return u?b(u)?[i,[W(u)],r,t]:[i,[u],r,t]:[n,[],r,t]}var c=e[0],a=e[1],o=e[2],s=e[3],f=a[0],p=a.slice(1);if(!f){var d=c.slice(0,-1),l=c[c.length-1];return l?b(l)?[d,[W(l)],o,s]:[d,[l],o,s]:[c,[],o,s]}if(k(f)&&!w(f))return[c,[W(f)].concat(p),o,s];var m=c.slice(0,-1),h=c[c.length-1];return b(h)?[m,[W(h)].concat(a),o,s]:[m,[h].concat(a),o,s]}function F(e){if(b(e))return e;var n=e[0],r=e[1],t=e[2],i=e[3],u=r[0],c=r.slice(1);if(!u)return[n,t,i];if(k(u)){var a=F(u);return b(a)?0===c.length?[[].concat(n,[a]),t,i]:[[].concat(n,[a]),c,t,i]:[n,[a].concat(c),t,i]}return 0===c.length?[[].concat(n,[u]),t,i]:[[].concat(n,[u]),c,t,i]}function A(e){var n=F(e);return b(n)?n:A(n)}function R(e){var n=e[1],r=e[2];return[e[0].map((function(e){return o(e)?x(e):e})),n.map((function(e){return a(e)?R(e):e})),[],r]}function x(e){var n=e[1];return[e[0].map((function(e){return o(e)?x(e):e})),[],n]}function C(e){var r=(c(e),e[0]),t=c(e)?[]:e[1];return[].concat(r.map((function(e){return o(e)?{member:e,kind:n.Played,isWindup:!0}:{member:e,kind:n.Played,isWindup:!1}})),t.map((function(e){return a(e)?{member:e,kind:n.InProgress,isWindup:!0}:{member:e,kind:n.InProgress,isWindup:!1}})))}function O(e,n){if(!e.isWindup&&n.isWindup||e.isWindup&&!n.isWindup)return!1;if(e.isWindup&&n.isWindup){var r=G(e.member),i=G(n.member);if(!t(r,i))return!1;var u=C(e.member),c=C(n.member);return u.length===c.length&&T(u,c).every((function(e){var n=e[1];return!!n&&O(e[0],n)}))}return t(e.member,n.member)}function j(e){return e.reduce((function(e,n){var r=n[0],t=n[1];return t&&O(r,t)&&0===e.unmatched.length?g({},e,{matched:[].concat(e.matched,[r])}):g({},e,{unmatched:[].concat(e.unmatched,[[r,t]])})}),{matched:[],unmatched:[]})}function S(e){return e.reduce((function(e,n){var r=n[0],t=n[1];return t&&O(r,t)&&0===e.unmatched.length?g({},e,{matched:[r].concat(e.matched)}):g({},e,{unmatched:[[r,t]].concat(e.unmatched)})}),{matched:[],unmatched:[]})}function T(e,n){return e.map((function(e,r){return[e,n[r]]}))}function I(e,n){for(var r=[],t=0;t<=e.length-1;t++)r.push([e[e.length-1-t],n[n.length-1-t]]);return r}function M(e){var r=e[0],t=e[1];if(r.isWindup&&null!=t&&t.isWindup){var i=G(r.member),u=j(T(C(r.member),C(t.member))),c=u.unmatched,a=u.matched.map((function(e){return e.kind===n.InProgress&&e.isWindup?x(d(e.member)):e.kind===n.Played&&e.isWindup?x(e.member):e.member})),o=M(c[0]),s=c.map((function(e){return e[0]})).map(q);if(o){var f=s.slice(1,0);return[a,[o].concat(f),[],i]}return[a,s,[],i]}}function V(e){var n=e[0],r=e[1];if(n.isWindup&&null!=r&&r.isWindup){var t=G(n.member),i=C(n.member),u=S(I(i,C(r.member))),c=u.matched,a=u.unmatched,o=M(a[a.length-1]),s=c.map(U);if(o){var f=i.slice(0,a.length-1).map(q);return[[],[].concat(f,[o]),s,t]}return[[],[].concat(a).map((function(e){return e[0]})).map(q),s,t]}}function q(e){return e.isWindup&&e.kind===n.Played?W(x(e.member)):e.isWindup?R(e.member):e.member}function U(e){return e.isWindup&&e.kind===n.InProgress?d(e.member):e.member}function D(e,r){var t=G(e),i=C(e),u=C(r),c=j(T(i,u)),a=c.unmatched,o=c.matched.map((function(e){return e.kind===n.InProgress&&e.isWindup?x(d(e.member)):e.kind===n.Played&&e.isWindup?x(e.member):e.member})),s=i.length-o.length,f=S(I(i,u).slice(0,s)),p=f.matched,l=f.unmatched,m=function(e,r){if(0===e.length||0===r.length)return{played:[],remaining:[]};var t=e[0],i=t[0],u=t[1],c=r[r.length-1],a=c[0],o=c[1];if(1===e.length&&1===r.length&&i.isWindup&&null!=u&&u.isWindup){var s=D(i.member,u.member);return b(s)?{played:[s],remaining:[]}:{played:[],remaining:[s]}}var f=e.filter((function(e){return e[0].kind===n.Played})),p=f.map((function(e){return e[0]})).map((function(e){return e.isWindup&&e.kind===n.InProgress?A(R(e.member)):e.isWindup?x(e.member):e.member})),d=e.slice(p.length);if(0===d.length&&0===f.length)return{played:p,remaining:[]};if(0===d.length){var l=r.slice(0,f.length),m=l[l.length-1],h=V([m[0],m[1]]);if(h){var y=p.slice(0,-1);return{played:[].concat(y,[A(h)]),remaining:[]}}return{played:p,remaining:[]}}var v=d[0],g=M([v[0],v[1]]),k=V([a,o]),w=d.map((function(e){return e[0]})).map(q);if(g&&k){var P=w.slice(1,-1);return{played:p,remaining:[g].concat(P,[k])}}if(!g&&k){var E=w.slice(0,-1);return{played:p,remaining:[].concat(E,[k])}}if(g&&!k){var W=w.slice(1);return{played:p,remaining:[g].concat(W)}}return{played:p,remaining:w}}(a.slice(0,l.length),l),h=m.played,y=m.remaining,v=p.map((function(e){return e.kind===n.InProgress&&e.isWindup?d(e.member):e.member}));return 0===y.length?[[].concat(o,h),v,t]:[[].concat(o,h),y,v,t]}function G(e){return c(e)?e[1]:e[2]}function _(e){if(b(e)){var n=e[0];return n[n.length-1]}var r=e[0];return e[1].reduce((function(e,n){return k(n)&&!w(n)?L(n):e}),void 0)||r[r.length-1]}function L(e){var n=_(e);return b(n)?L(n):n}function z(e){var n=e[1],r=e[2],t=e[3],i=e[0].map((function(e){return b(e)?B(e):e})),u=n.map((function(e){return k(e)?z(e):e})),c=r.map((function(e){return o(e)?l(e):e}));return[i,[].concat(u,c),t]}function B(e){var n=e[1],r=e[2],t=e[0].map((function(e){return b(e)?B(e):e}));return[[].concat(t,n),r]}function H(e,n){switch(e){case"—":case"…":return 200;case".":case",":return 150;case"?":case"!":return"!"!==n&&"?"!==n?150:20;case"-":case" ":case"\n":return 0;default:return 20}}!function(e){e[e.Played=0]="Played",e[e.InProgress=1]="InProgress"}(n||(n={}));var J=function(e){return r.createElement(r.Fragment,null,e.children)},K=function(e){return r.createElement(r.Fragment,null,e.children)};function N(e){return{windup:e,didFinishOnce:!1}}function Q(e,n){switch(n.type){case"replace":return N(n.windup);case"next":return c(e.windup)?e:g({},e,{windup:v(e.windup)});case"rewind":return{windup:l(e.windup),didFinishOnce:!1};case"fast-forward":return c(e.windup)?e:g({},e,{windup:d(e.windup)});case"finish":return g({},e,{didFinishOnce:!0});default:return e}}function X(e,n){var t=r.useReducer(Q,e,N),i=t[0],u=i.windup,s=i.didFinishOnce,f=t[1],d=r.useRef(null),l=function(e){return!!c(e)||0===e[1].length}(u),y=r.useCallback((function(){l||(d.current&&clearTimeout(d.current),f({type:"fast-forward"}))}),[l]),v=r.useCallback((function(){d.current&&clearTimeout(d.current),f({type:"rewind"})}),[]);return r.useEffect((function(){f({type:"replace",windup:e})}),[e]),r.useEffect((function(){d.current&&clearTimeout(d.current),n.skipped&&f({type:"fast-forward"}),!1===n.skipped&&f({type:"rewind"})}),[n.skipped]),r.useEffect((function(){var e=function e(n){if(c(n))return[];var r=n[1],t=n[2],i=m(n),u=r[0],s=[];return i&&o(i)&&s.push.apply(s,e(i)),u&&a(u)&&!p(u)&&s.push.apply(s,e(u)),t.onChar&&s.push(t.onChar),s}(u),n=h(u);e.length>0&&n&&e.forEach((function(e){e(n,!1)}))}),[u]),r.useEffect((function(){if(!1===s&&l){var e=setTimeout((function(){n.onFinished&&n.onFinished(),f({type:"finish"})}),0);return function(){clearTimeout(e)}}}),[s,l,n]),r.useEffect((function(){if(!l){var e=function e(n,r){if(!c(n)){var t=n[2],i=n[1][0];return i&&a(i)?e(i,t.pace||r):t.pace||r}}(u)||H,n=h(u),r=function e(n){if(!c(n)){var r=n[1][0];return a(r)?e(r):r}}(u);return d.current=setTimeout((function(){f({type:"next"})}),n?e(n,r):0),function(){d.current&&clearTimeout(d.current)}}}),[u,l]),{windup:u,skip:y,rewind:v,isFinished:l}}var Y=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],Z=function(){return null},$=r.createContext({skip:function(){console.warn("Tried to use the useSkip hook outside of a WindupChildren component!!")},rewind:function(){console.warn("Tried to use the useRewind hook outside of a WindupChildren component!")},isFinished:!1});function ee(e,n){if("string"==typeof n)return[].concat(e,n.split(""));if("number"==typeof n)return[].concat(e,n.toString().split(""));if(!r.isValidElement(n))return e;var t=n.props,i=t.children,u=function(e,n){if(null==e)return{};var r,t,i={},u=Object.keys(e);for(t=0;t<u.length;t++)n.indexOf(r=u[t])>=0||(i[r]=e[r]);return i}(t,["children"]),c=n.type===J?function(e){if(function(e){return"ms"in e}(e)){var n=e.ms,r=e.reverseMs;return g({pace:function(){return n}},r?{reversePace:function(){return r}}:{})}if(function(e){return"reverseMs"in e}(e)){var t=e.ms,i=e.reverseMs;return g({reversePace:function(){return i}},t?{pace:function(){return t}}:{})}return function(e){return"reverseGetPace"in e}(e)?g({reversePace:e.getReversePace},e.getPace?{pace:e.getPace}:{}):g({pace:e.getPace},e.getReversePace?{reversePace:e.getReversePace}:{})}(n.props):{},o=function(e){return e.type===K}(n)?{onChar:n.props.fn}:{},p=n.key?{key:n.key}:{};if(function(e){return e.type===Z}(n))return[].concat(e,[s(" ",g({element:r.Fragment},p,{props:{children:void 0},pace:function(){return n.props.ms}}))]);if(void 0===i)return[].concat(e,[s(" ",g({element:n.type,props:g({},u,{children:void 0})},p,c,o))]);if("string"==typeof i)return[].concat(e,[s(i,g({element:n.type,props:u},p,c,o))]);if(i instanceof Function)return[].concat(e,[s(" ",g({element:n.type,props:g({children:i},u)},p,c,o))]);var d=r.Children.toArray(i).reduce(ee,[]).map((function(e){return a(e)?[e[0],e[1],g({},c,o,e[2])]:e}));return[].concat(e,[f(d,g({element:n.type,props:u},p,c,o))])}function ne(e){if(null==e)return"";var n=r.Children.map(e,(function(e){return"string"==typeof e?e:"number"==typeof e?e.toString():r.isValidElement(e)?"#"+(e.key||"")+"<"+ne(e.props.children)+">":""}));return n?n.join(","):""}function re(e,n){return r.useMemo(e,[ne(n)])}function te(e,n){var t=e[0],i=e[1];if("string"==typeof n||"number"==typeof n){var u=i[0],c=i.slice(1);return[[].concat(t,[u]),c]}if(!r.isValidElement(n))return[t,i];var a=r.Children.toArray(n.props.children).reduce(te,[[],i]),o=a[1];return[[].concat(t,[r.cloneElement(n,{children:a[0]})]),o]}function ie(e){return e.type===ue}function ue(e){return r.createElement(r.Fragment,null,e.children)}function ce(e){var n=r.useRef();return r.useEffect((function(){n.current=e}),[e]),n.current}function ae(e){return"rewindUntil"in e}function oe(e){return!!ae(e)&&!u(e.rewindUntil,P(e.toRewind))}function se(e){return ae(e)?oe(e)?e.toRewind:e.toResume:e.toPlay}function fe(e){return ae(e)?oe(e)?b(e.toRewind)?B(e.toRewind):z(e.toRewind):b(e.toResume)?B(e.toResume):z(e.toResume):b(e.toPlay)?B(e.toPlay):z(e.toPlay)}function pe(e,n){switch(n.type){case"start-rewindup":var r=D(n.baseWindup,n.againstWindup),t=D(n.againstWindup,n.baseWindup);return{toRewind:r,rewindUntil:P(t),toResume:t};case"proceed":return ae(e)?oe(e)?g({},e,{toRewind:W(e.toRewind)}):g({},e,{toResume:F(e.toResume)}):b(e.toPlay)?e:{toPlay:F(e.toPlay)};case"fast-forward":return{toPlay:A(se(e))};default:return e}}function de(e,n){var t=r.useReducer(pe,{toPlay:c(e)?x(e):R(e)}),i=t[0],a=t[1];r.useEffect((function(){if(i){var e=se(i),n=function e(n){if(b(n))return[];var r=n[1],t=n[3],i=_(n),u=r[0],c=[];return i&&b(i)&&c.push.apply(c,e(i)),u&&k(u)&&!w(u)&&c.push.apply(c,e(u)),t.onChar&&c.push(t.onChar),c}(e),r=L(e);n.length>0&&r&&n.forEach((function(e){e(r,ae(i))}))}}),[i]);var o=r.useRef(null);r.useEffect((function(){o.current&&clearTimeout(o.current),n.skipped&&a({type:"fast-forward"}),!1===n.skipped&&a({type:"start-rewindup",baseWindup:fe(i),againstWindup:e})}),[n.skipped]);var s=b(se(i)),p=ce(s);r.useEffect((function(){if(!1===p&&s){var e=setTimeout((function(){n.onFinished&&n.onFinished()}),0);return function(){clearTimeout(e)}}}),[p,s,n.onFinished]),r.useEffect((function(){var e=b(ae(i)?i.toResume:i.toPlay),n=!ae(i)||u(P(i.toRewind),i.rewindUntil);if(!(!i||e&&n)){var r=se(i),t=function e(n,r,t){if(!b(n)){var i=n[3],u=n[1][0],c=r?i.reversePace:i.pace;return u&&k(u)?e(u,r,c||t):c||t}}(r,ae(i))||H,c=L(r),s=function e(n){if(!b(n)){var r=n[1][0];return k(r)?e(r):r}}(r),f=c?t(c,s):0;return o.current=setTimeout((function(){a({type:"proceed"})}),f),function(){o.current&&clearTimeout(o.current)}}}),[i]);var d=ce(e);r.useEffect((function(){void 0!==d&&d!==e&&(n.onRewindStart&&n.onRewindStart(),a({type:"start-rewindup",baseWindup:fe(i),againstWindup:e}))}),[e,d]);var l=r.useCallback((function(){a({type:"fast-forward"})}),[]),m=r.useCallback((function(){a({type:"start-rewindup",baseWindup:f([],{}),againstWindup:e})}),[]);return{windup:se(i),skip:l,rewind:m,isFinished:s}}exports.CharWrapper=function(e){var n=e.element;return r.createElement(r.Fragment,null,r.Children.map(e.children,(function(e){return function e(n,t){if("string"==typeof n)return n.split("").map((function(e,n){return"\n"===e?e:r.createElement(t,{key:e+"-"+n},e)}));if("number"==typeof n)return n.toString().split("").map((function(e){return r.createElement(t,null,e)}));if(!r.isValidElement(n))return r.createElement(r.Fragment,null);if(n.props.children){var i=n.type;return n.props.children instanceof Function?r.createElement(i,Object.assign({key:n.key},n.props)):r.createElement(i,Object.assign({key:n.key},n.props),r.Children.map(n.props.children,(function(n){return e(n,t)})))}return n}(e,n)})))},exports.Effect=function(e){var n=e.fn;return r.useEffect((function(){n()}),[]),null},exports.Linebreaker=function(e){var n=e.fontStyle,t=e.width,u=r.Children.toArray(e.children),c=u.reduce(function e(n){return function(t,i){return"string"==typeof i?[].concat(t,[{text:i,font:n}]):"number"==typeof i?[].concat(t,[{text:i.toString(),font:n}]):r.isValidElement(i)?ie(i)&&"string"==typeof i.props.children?[].concat(t,[{text:i.props.children,font:i.props.fontStyle}]):ie(i)?[].concat(t,r.Children.toArray(i.props.children).reduce(e(i.props.fontStyle),[])):[].concat(t,r.Children.toArray(i.props.children).reduce(e(n),[])):t}}(n),[]),a=i(c,t,n),o=u.reduce(te,[[],a]);return r.createElement("div",{style:{whiteSpace:"pre"}},o[0])},exports.OnChar=K,exports.Pace=J,exports.Pause=Z,exports.RewindupChildren=function(e){var n=e.children,t=e.onFinished,i=e.onRewindStart,u=e.skipped,c=re((function(){return f(void 0===n?[]:r.Children.toArray(n).reduce(ee,[]),{element:void 0})}),n),a=de(r.useMemo((function(){return u?d(c):c}),[c,u]),{onFinished:t,onRewindStart:i,skipped:u});return r.createElement($.Provider,{value:{skip:a.skip,rewind:a.rewind,isFinished:a.isFinished}},function e(n){var t=b(n)?n[2]:n[3],i=E(n),u=t.element||r.Fragment;if(t.props&&Object.keys(t.props).includes("children"))return r.createElement(u,Object.assign({key:t.key},t.props));var c=i.reduce((function(n,r){return[].concat(n,"string"==typeof r?[r]:[e(r)])}),[]);return"string"==typeof t.element&&Y.includes(t.element)?r.createElement(u,Object.assign({key:t.key},t.props)):c.every((function(e){return"string"==typeof e}))?r.createElement(u,Object.assign({key:t.key},t.props),c.join("")):r.createElement(u,Object.assign({key:t.key},t.props),c)}(a.windup))},exports.StyledText=ue,exports.WindupChildren=function(e){var n=e.children,t=e.onFinished,i=e.skipped,u=X(re((function(){return f(r.Children.toArray(n).reduce(ee,[]),{element:void 0})}),n),{onFinished:t,skipped:i});return r.createElement($.Provider,{value:{skip:u.skip,rewind:u.rewind,isFinished:u.isFinished}},function e(n){var t=c(n)?n[1]:n[2],i=y(n),u=t.element||r.Fragment;if(t.props&&Object.keys(t.props).includes("children"))return r.createElement(u,Object.assign({key:t.key},t.props));var a=i.reduce((function(n,r){if("string"==typeof r){var t=n.slice(0,n.length-1),i=n[n.length-1];return i&&"string"==typeof i?[].concat(t,[i+r]):[].concat(n,[r])}return[].concat(n,[e(r)])}),[]);return"string"==typeof t.element&&Y.includes(t.element)?r.createElement(u,Object.assign({key:t.key},t.props)):a.every((function(e){return"string"==typeof e}))?r.createElement(u,Object.assign({key:t.key},t.props),a.join("")):r.createElement(u,Object.assign({key:t.key},t.props),a)}(u.windup))},exports.defaultGetPace=H,exports.textFromChildren=function e(n){var t=r.Children.map(n,(function(n){return"string"==typeof n?n:"number"==typeof n?n.toString():r.isValidElement(n)&&n.props.children?e(n.props.children):""}));return t?t.join(""):""},exports.useIsFinished=function(){return r.useContext($).isFinished},exports.useRewind=function(){return r.useContext($).rewind},exports.useRewindupString=function(e,n){void 0===n&&(n={});var t=de(r.useMemo((function(){return s(e,n)}),[e]),n),i=t.skip,u=t.rewind,c=t.isFinished,a=function e(n){return E(n).reduce((function(n,r){return"string"==typeof r?n+r:n+e(r)}),"")}(t.windup);return r.useDebugValue(a),[a,{skip:i,rewind:u,isFinished:c}]},exports.useSkip=function(){return r.useContext($).skip},exports.useWindupString=function(e,n){void 0===n&&(n={});var t=X(r.useMemo((function(){return s(e,n)}),[e]),n),i=t.skip,u=t.rewind,c=t.isFinished,a=function e(n){return y(n).reduce((function(n,r){return"string"==typeof r?n+r:n+e(r)}),"")}(t.windup);return r.useDebugValue(a),[a,{skip:i,rewind:u,isFinished:c}]};
//# sourceMappingURL=windups.cjs.production.min.js.map

@@ -358,27 +358,20 @@ import { createElement, Fragment, useReducer, useRef, useCallback, useEffect, useMemo, useDebugValue, createContext, useContext, Children, isValidElement, cloneElement } from 'react';

remaining = suffixedWindup[1];
var remainingMembers = remaining.reduce(function (acc, member) {
if (isPlayedSuffixedWindup(member)) {
return [].concat(acc, playedElementsWithSuffix(member));
}
var firstRemaining = remaining[0];
if (isSuffixedWindup(member)) {
var metadata = member[3];
var els = playedElementsWithSuffix(member);
if (firstRemaining && isSuffixedWindup(firstRemaining)) {
var metadata = firstRemaining[3];
var playedFromFirstRemaining = playedElements$1(firstRemaining);
if (els.length === 0) {
return acc;
}
return [].concat(acc, [[playedElementsWithSuffix(member), [], metadata]]);
if (playedFromFirstRemaining.length > 0) {
return [].concat(suffixedPlayed, [[playedFromFirstRemaining, [], metadata]]);
}
}
return acc;
}, []);
return [].concat(suffixedPlayed, remainingMembers);
return suffixedPlayed;
}
function playedElementsWithSuffix(windup) {
if (isPlayedSuffixedWindup(windup)) {
var _played = windup[0],
var played = windup[0],
_suffix = windup[1];
return [].concat(_played, _suffix.map(function (member) {
return [].concat(played, _suffix.map(function (member) {
if (playedMemberIsWindup(member)) {

@@ -392,5 +385,20 @@ return playedWindupToSuffixed(member);

var played = playedElements$1(windup);
var suffix = windup[2];
var suffixAsSuffixPlayedMembers = suffix.map(function (member) {
var suffixedPlayed = windup[0],
remaining = windup[1],
suffix = windup[2];
var middle = remaining.reduce(function (acc, member) {
if (isSuffixedWindup(member)) {
var metadata = member[3];
var asWindup = [[], playedElementsWithSuffix(member), metadata];
return [].concat(acc, [asWindup]);
}
return acc;
}, []);
console.log({
suffixedPlayed: suffixedPlayed,
middle: middle,
suffix: suffix
});
return [].concat(suffixedPlayed, middle, suffix.map(function (member) {
if (playedMemberIsWindup(member)) {

@@ -401,17 +409,16 @@ return playedWindupToSuffixed(member);

return member;
});
return [].concat(played, suffixAsSuffixPlayedMembers);
}));
}
function prev(suffixedWindup) {
if (isPlayedSuffixedWindup(suffixedWindup)) {
var _played2 = suffixedWindup[0],
var _played = suffixedWindup[0],
_suffix2 = suffixedWindup[1],
_metadata = suffixedWindup[2];
var _restPlayed = _played2.slice(0, -1);
var _restPlayed = _played.slice(0, -1);
var _lastPlayed = _played2[_played2.length - 1];
var _lastPlayed = _played[_played.length - 1];
if (!_lastPlayed) {
return [_played2, [], _suffix2, _metadata];
return [_played, [], _suffix2, _metadata];
}

@@ -949,4 +956,4 @@

if (isPlayedSuffixedWindup(windup)) {
var _played3 = windup[0];
var _last = _played3[_played3.length - 1];
var _played2 = windup[0];
var _last = _played2[_played2.length - 1];
return _last;

@@ -1038,19 +1045,3 @@ }

}
function commonPrefix(base, against) {
var baseMembers = allMembers(base);
var againstMembers = allMembers(against);
var zipped = zipMembersFromLeft(baseMembers, againstMembers);
var _matchesFromLeft3 = matchesFromLeft(zipped),
matched = _matchesFromLeft3.matched;
return matched.map(function (annotated) {
if (annotated.isWindup) {
return isPlayedWindup(annotated.member) ? playedWindupToSuffixed(annotated.member) : playedWindupToSuffixed(fastForward(annotated.member));
}
return annotated.member;
});
}
function defaultGetPace(lastChar, nextChar) {

@@ -1843,11 +1834,3 @@ switch (lastChar) {

}, "");
var suffix = isPlayedSuffixedWindup(windup) ? [] : windup[2];
var innerSuffixed = suffix.reduce(function (acc, suffixEl) {
if (typeof suffixEl === "string") {
return acc + suffixEl;
}
return acc + renderStringWindup(suffixEl);
}, "");
return inner + innerSuffixed;
return inner;
}

@@ -1934,3 +1917,3 @@ function renderSuffixedChildrenWindup(windup) {

var toResume = mergeWindupsToSuffixedWindup(action.againstWindup, action.baseWindup);
var rewindUntil = commonPrefix(action.baseWindup, action.againstWindup);
var rewindUntil = playedElements$1(toResume);
return {

@@ -1955,12 +1938,12 @@ toRewind: toRewind,

if (isEqual$1(state.rewindUntil, playedElements$1(state.toRewind))) {
var nextToResume = next$1(state.toResume);
if (isRewinding(state)) {
var nextToRewind = prev(state.toRewind);
return _extends({}, state, {
toResume: nextToResume
toRewind: nextToRewind
});
}
var nextToRewind = prev(state.toRewind);
var nextToResume = next$1(state.toResume);
return _extends({}, state, {
toRewind: nextToRewind
toResume: nextToResume
});

@@ -1967,0 +1950,0 @@ }

{
"name": "windups",
"version": "1.2.0-alpha.1",
"version": "1.2.0-alpha.2",
"description": "A unique typewriter effect library for React.",

@@ -5,0 +5,0 @@ "author": "Sam Gwilym <gwilym@me.com>",

@@ -20,3 +20,2 @@ import * as React from "react";

fastForward,
commonPrefix,
} from "../SuffixedWindup";

@@ -142,3 +141,3 @@ import { HookMetadata } from "./useWindup";

const rewindUntil = commonPrefix(action.baseWindup, action.againstWindup);
const rewindUntil = playedElements(toResume);

@@ -163,16 +162,16 @@ return {

if (isEqual(state.rewindUntil, playedElements(state.toRewind))) {
const nextToResume = next(state.toResume);
if (isRewinding(state)) {
const nextToRewind = prev(state.toRewind);
return {
...state,
toResume: nextToResume,
toRewind: nextToRewind,
};
}
const nextToRewind = prev(state.toRewind);
const nextToResume = next(state.toResume);
return {
...state,
toRewind: nextToRewind,
toResume: nextToResume,
};

@@ -254,3 +253,3 @@ }

const windupIsFinished = isPlayedSuffixedWindup(getActiveWindup(state));
const prevWindupIsFinished = usePrevious(windupIsFinished)
const prevWindupIsFinished = usePrevious(windupIsFinished);

@@ -315,5 +314,5 @@ React.useEffect(() => {

}
if (options.onRewindStart) {
options.onRewindStart()
options.onRewindStart();
}

@@ -320,0 +319,0 @@

@@ -118,29 +118,15 @@ import isEqual from "fast-deep-equal";

const remainingMembers = remaining.reduce((acc, member) => {
if (isPlayedSuffixedWindup(member)) {
return [...acc, ...playedElementsWithSuffix(member)];
}
const [firstRemaining] = remaining;
if (isSuffixedWindup(member)) {
const [, , , metadata] = member;
const els = playedElementsWithSuffix(member);
if (firstRemaining && isSuffixedWindup(firstRemaining)) {
const metadata = firstRemaining[3];
if (els.length === 0) {
return acc;
}
const playedFromFirstRemaining = playedElements(firstRemaining);
return [
...acc,
[
playedElementsWithSuffix(member),
[],
metadata,
] as PlayedSuffixedWindup<ElementType, MetadataType>,
];
if (playedFromFirstRemaining.length > 0) {
return [...suffixedPlayed, [playedFromFirstRemaining, [], metadata]];
}
}
return acc;
}, [] as Array<PlayedSuffixedWindupMember<ElementType, MetadataType>>);
return [...suffixedPlayed, ...remainingMembers];
return suffixedPlayed;
}

@@ -168,15 +154,33 @@

const played = playedElements(windup);
const [suffixedPlayed, remaining, suffix] = windup;
const [, , suffix] = windup;
let middle = remaining.reduce((acc, member) => {
if (isSuffixedWindup(member)) {
const [, , , metadata] = member;
const suffixAsSuffixPlayedMembers = suffix.map((member) => {
if (playedMemberIsWindup(member)) {
return playedWindupToSuffixed(member);
const asWindup = [
[],
playedElementsWithSuffix(member),
metadata,
] as PlayedSuffixedWindup<ElementType, MetadataType>;
return [...acc, asWindup];
}
return member;
});
return acc;
}, [] as Array<PlayedSuffixedWindupMember<ElementType, MetadataType>>);
return [...played, ...suffixAsSuffixPlayedMembers];
console.log({ suffixedPlayed, middle, suffix });
return [
...suffixedPlayed,
...middle,
...suffix.map((member) => {
if (playedMemberIsWindup(member)) {
return playedWindupToSuffixed(member);
}
return member;
}),
];
}

@@ -792,16 +796,14 @@

const played = matched
.map((member) => {
if (member.kind === MemberKind.InProgress && member.isWindup) {
return playedWindupToSuffixed(vanillaFastForward(member.member));
}
if (member.kind === MemberKind.Played && member.isWindup) {
return playedWindupToSuffixed(member.member);
}
const played = matched.map((member) => {
if (member.kind === MemberKind.InProgress && member.isWindup) {
return playedWindupToSuffixed(vanillaFastForward(member.member));
}
return member.member;
});
if (member.kind === MemberKind.Played && member.isWindup) {
return playedWindupToSuffixed(member.member);
}
return member.member;
});
const lengthToZipRight = baseMembers.length - played.length;

@@ -952,3 +954,2 @@

export function unsuffixPlayedWindup<E, M>(

@@ -969,21 +970,1 @@ suffixed: PlayedSuffixedWindup<E, M>

}
export function commonPrefix<E, M>(base: Windup<E, M>
| PlayedWindup<E, M>, against: Windup<E, M>
| PlayedWindup<E, M>): PlayedSuffixedWindupMember<E,M>[] {
const baseMembers = allMembers(base);
const againstMembers = allMembers(against);
const zipped = zipMembersFromLeft(baseMembers, againstMembers);
const { matched } = matchesFromLeft(zipped);
return matched.map((annotated) => {
if (annotated.isWindup) {
return isPlayedWindup(annotated.member) ? playedWindupToSuffixed(annotated.member) : playedWindupToSuffixed(vanillaFastForward(annotated.member))
}
return annotated.member
})
}

@@ -7,3 +7,3 @@ import {

import { windupFromString, fastForward } from "../Windup";
import { suffixedPrevBy } from "./util";
import { deepPair, suffixedPrevBy } from "./util";

@@ -37,2 +37,7 @@ type TestElement<E, M> = SuffixedWindup<E, M> | PlayedSuffixedWindup<E, M>;

const deepSuffixed = mergeWindupsToSuffixedWindup(
deepPair.base,
deepPair.against
);
const vectors: Vector<string, { m: boolean }>[] = [

@@ -86,2 +91,24 @@ [

],
[
"Deep",
deepSuffixed,
5,
[
["H", "i", "!", " "],
[
[
[],
["W", "h", "a", "t", " ", "a", " ", "n", "i", "c", "e"],
[" ", "r", "o", "o", "m", "y"],
{
m: false,
},
],
],
[" ", "p", "l", "a", "c", "e"],
{
m: true,
},
],
],
];

@@ -88,0 +115,0 @@

@@ -1,3 +0,7 @@

import { PlayedSuffixedWindup, SuffixedWindup, prev as suffixedPrev } from "../SuffixedWindup";
import {
PlayedSuffixedWindup,
SuffixedWindup,
prev as suffixedPrev,
} from "../SuffixedWindup";
import {
fastForward,

@@ -14,4 +18,3 @@ isPlayedWindup,

export const newStrWindup = () =>
windupFromString("Hello!", {m: true});
export const newStrWindup = () => windupFromString("Hello!", { m: true });
export const inProgressStrWindup = () => nextBy(newStrWindup(), 3);

@@ -35,34 +38,34 @@

export const strPair = {
base: windupFromString("Hi! I am Sam.", { m: true}),
against: windupFromString("Hi. You are Pam.", { m: true })
}
base: windupFromString("Hi! I am Sam.", { m: true }),
against: windupFromString("Hi. You are Pam.", { m: true }),
};
export const strPairInProgress = {
base: nextBy(strPair.base, 3),
against: nextBy(strPair.against, 3)
}
against: nextBy(strPair.against, 3),
};
export const strPairPlayed = {
base: fastForward(strPair.base),
against: fastForward(strPair.against)
}
against: fastForward(strPair.against),
};
export const deepPair = {
base: newWindup<string, {m: boolean}>(
base: newWindup<string, { m: boolean }>(
[
..."Hi! ".split(""),
[[], "What a nice roomy".split(""), { m: false }],
..." place".split("")
..." place".split(""),
],
{ m: true}
{ m: true }
),
against: newWindup<string, { m: boolean}>(
against: newWindup<string, { m: boolean }>(
[
..."Hi! ".split(""),
[[], "What is this roomy".split(""), { m: false }],
..." place".split("")
..." place".split(""),
],
{ m: true }
)
}
),
};

@@ -83,3 +86,6 @@ export function nextBy<E, M>(windup: Windup<E, M>, times: number) {

export function suffixedPrevBy<E, M>(windup: SuffixedWindup<E, M> | PlayedSuffixedWindup<E, M>, times: number) {
export function suffixedPrevBy<E, M>(
windup: SuffixedWindup<E, M> | PlayedSuffixedWindup<E, M>,
times: number
) {
let res: SuffixedWindup<E, M> | PlayedSuffixedWindup<E, M> = windup;

@@ -95,3 +101,3 @@

export function log(name: string, data: any) {
console.log(name, JSON.stringify(data, null, 2))
console.log(name, JSON.stringify(data, null, 2));
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc