├── .gitignore ├── README.md ├── demo ├── anime.min.js ├── avengers_EndGame │ ├── index.html │ └── style.css ├── img │ ├── Friday.gif │ ├── Jarvis.gif │ ├── friday.mov │ ├── jarvis.mov │ ├── raj-eiamworakul-603747-unsplash.jpg │ ├── spidey.gif │ └── spidy.mov ├── index.html ├── main.css ├── main.js └── revealFx.js ├── package-lock.json ├── package.json └── src └── revealFx.js /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RevealFx 2 | 3 | [![HitCount](http://hits.dwyl.io/akhil0001/RevealFx.svg)](http://hits.dwyl.io/akhil0001/RevealFx) 4 | [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) 5 | ![Image of Spiderman reading book from unsplash and a quote 'If you doubt your beliefs, you believe your doubts , If you fail to practice, you practice failure](/demo/img/spidey.gif) 6 | 7 | 8 | A javascript library to achieve beautiful block reveal animations 9 | 10 | > If you find it useful, donot forget to :star: star us -it does help! 11 | 12 | 13 | ## Demo Links 14 | Here are the demo links to check out librarys and its uses 15 | - [RevealFx Demo](https://codepen.io/akhil_001/full/zXamxp) 16 | - [Image List Display with Block Reveal Effect](https://codepen.io/akhil_001/full/ZZZdPY) 17 | - [Marvel Marathon (Carousel)](https://codepen.io/akhil_001/full/GLBoEB) 18 | ## Installation 19 | - npm 20 | ```npm 21 | npm i revealfx 22 | ``` 23 | - CDN or unpkg [link](https://unpkg.com/revealfx@latest/src/revealFx.js) 24 | ``` 25 | https://unpkg.com/revealfx@latest/src/revealFx.js 26 | ``` 27 | 28 | > Note: You need to have >=3.0 version of anime.js 29 | ```HTML 30 | 31 | 32 | ``` 33 | ## Demo 34 | - Clone this repo and run the following commands for the demo 35 | ```node 36 | npm install 37 | npm start 38 | ``` 39 | 40 | ## Syntax 41 | 42 | - Inorder to implement the animation to a certain element, first select the element . For example : 43 | ```js 44 | var element1 = document.querySelector('#id1'); 45 | ``` 46 | - Now it should be passed as the first argument to the constructor as follows 47 | ```js 48 | var rev1 = new RevealFx(element1,options); 49 | ``` 50 | - The above snippet initializes the element with the block reveal animation. The following method invokes the animation 51 | ```js 52 | rev1.reveal(revealSettings); 53 | ``` 54 | 55 | Refer API section for more details on customization 56 | 57 | ## API 58 | 59 | |Name|Description |Default value | 60 | |----|------------|--------------| 61 | | `isContentHidden` | If true , the content of the element will be hidden until it is revealed | `true`| 62 | | `layers`| The number of layers to be shown during the animation | `1`| 63 | | `revealSettings`| JSON options for animations and callback functions. This can be set initially or be passed during reveal() method call | `{}` | 64 | - The following are the options available inside the revealSettings JSON and can be set both at initialization or during the reveal() method call 65 | 66 | |Name|Description |Default value | 67 | |-----|------|-------| 68 | | `direction` | Animation direction: Block can be revealed from left to right (lr) or right to left (rl) or top to bottom (tb) or bottom to top (bt) | `'lr'`| 69 | |`bgColors`| Array of colors that can be set as background for each layer respectively |`['#111']`| 70 | |`duration`| Total Time taken for animation to take place | `500`| 71 | |`easing`| Easing function for animation. Many more easing functions are available at anime.js| `easeInOutQuint`| 72 | |`coverArea`| percentage-based value representing how much of the area should be left covered | `0`| 73 | |`delay`| staggered delay in timing between the layer | `100`| 74 | |`onStart`| Callback, with the parameters of the element that is animated and layers that animate ,when the animation starts | `Method/Function`| 75 | |`onHalfway`| Callback, with the similar parameters as the above method , when the animation is halfway through of the animation | `Method/Function`| 76 | |`onComplete`| Callback,with the similar parameters as the above method , when the animation is completed | `Method/Function`| 77 | 78 | ## Methods and Functions 79 | 80 | - `onStart` 81 | - This is a callback method with the parameters of the element that is animated and layers that animate ,when the animation starts 82 | - parameters: `contentEl`,`revealerEl` 83 | ```js 84 | onStart: function (contentEl, revealerEl) { 85 | //contentEl is the element that is animated. 86 | 87 | //revealerEl is an array of the layers that animate the contentEl 88 | } 89 | ``` 90 | - `onHalfway` 91 | - This is a callback method with the parameters of the element that is animated and layers that animate ,when the animation is halfway through the animation 92 | - parameters: `contentEl`,`revealerEl` 93 | ```js 94 | onHalfway: function (contentEl, revealerEl) { 95 | //contentEl is the element that is animated. 96 | 97 | //revealerEl is an array of the layers that animate the contentEl 98 | } 99 | ``` 100 | - `onComplete` 101 | - This is a callback method with the parameters of the element that is animated and layers that animate ,when the animation completes 102 | - parameters: `contentEl`,`revealerEl` 103 | ```js 104 | onComplete: function (contentEl, revealerEl) { 105 | //contentEl is the element that is animated. 106 | 107 | //revealerEl is an array of the layers that animate the contentEl 108 | } 109 | ``` 110 | 111 | 112 | ## Contribute 113 | - Fork it or clone it 114 | - git checkout -b NEW-FEATURE 115 | - git commit -am 'ADD SOME FEATURE' 116 | - git push origin NEW-FEATURE 117 | 118 | ## ToDos 119 | 120 | - [x] Add Images to Readme 121 | 122 | - [x] links update in the documentation 123 | 124 | - [ ] demo snippets update 125 | 126 | - [ ] use template instead of create Element 127 | 128 | - [ ] create demo on the page transitions 129 | 130 | ## Credits 131 | 132 | This is inspired from [Mary Lou](https://tympanus.net/codrops/author/crnacura/)'s [Block Reveal Animation Tutorial](https://tympanus.net/codrops/2016/12/21/block-reveal-effects/). As part of a design for my portfolio website, I have used this effect for user's focus. 133 | This plugin draws major logic from the article but provides a lean,more options and self descriptive API which can be used to create sleak and superb block animation. I hope you will find this library useful 134 | 135 | ## License 136 | MIT -------------------------------------------------------------------------------- /demo/anime.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * anime.js v3.0.1 3 | * (c) 2019 Julian Garnier 4 | * Released under the MIT license 5 | * animejs.com 6 | */ 7 | 8 | !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):n.anime=e()}(this,function(){"use strict";var n={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0},e={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},r=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective"],t={CSS:{},springs:{}};function a(n,e,r){return Math.min(Math.max(n,e),r)}function o(n,e){return n.indexOf(e)>-1}function i(n,e){return n.apply(null,e)}var u={arr:function(n){return Array.isArray(n)},obj:function(n){return o(Object.prototype.toString.call(n),"Object")},pth:function(n){return u.obj(n)&&n.hasOwnProperty("totalLength")},svg:function(n){return n instanceof SVGElement},inp:function(n){return n instanceof HTMLInputElement},dom:function(n){return n.nodeType||u.svg(n)},str:function(n){return"string"==typeof n},fnc:function(n){return"function"==typeof n},und:function(n){return void 0===n},hex:function(n){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(n)},rgb:function(n){return/^rgb/.test(n)},hsl:function(n){return/^hsl/.test(n)},col:function(n){return u.hex(n)||u.rgb(n)||u.hsl(n)},key:function(r){return!n.hasOwnProperty(r)&&!e.hasOwnProperty(r)&&"targets"!==r&&"keyframes"!==r}};function s(n){var e=/\(([^)]+)\)/.exec(n);return e?e[1].split(",").map(function(n){return parseFloat(n)}):[]}function c(n,e){var r=s(n),o=a(u.und(r[0])?1:r[0],.1,100),i=a(u.und(r[1])?100:r[1],.1,100),c=a(u.und(r[2])?10:r[2],.1,100),f=a(u.und(r[3])?0:r[3],.1,100),l=Math.sqrt(i/o),d=c/(2*Math.sqrt(i*o)),p=d<1?l*Math.sqrt(1-d*d):0,v=1,h=d<1?(d*l-f)/p:-f+l;function g(n){var r=e?e*n/1e3:n;return r=d<1?Math.exp(-r*d*l)*(v*Math.cos(p*r)+h*Math.sin(p*r)):(v+h*r)*Math.exp(-r*l),0===n||1===n?n:1-r}return e?g:function(){var e=t.springs[n];if(e)return e;for(var r=0,a=0;;)if(1===g(r+=1/6)){if(++a>=16)break}else a=0;var o=r*(1/6)*1e3;return t.springs[n]=o,o}}function f(n,e){void 0===n&&(n=1),void 0===e&&(e=.5);var r=a(n,1,10),t=a(e,.1,2);return function(n){return 0===n||1===n?n:-r*Math.pow(2,10*(n-1))*Math.sin((n-1-t/(2*Math.PI)*Math.asin(1/r))*(2*Math.PI)/t)}}function l(n){return void 0===n&&(n=10),function(e){return Math.round(e*n)*(1/n)}}var d=function(){var n=11,e=1/(n-1);function r(n,e){return 1-3*e+3*n}function t(n,e){return 3*e-6*n}function a(n){return 3*n}function o(n,e,o){return((r(e,o)*n+t(e,o))*n+a(e))*n}function i(n,e,o){return 3*r(e,o)*n*n+2*t(e,o)*n+a(e)}return function(r,t,a,u){if(0<=r&&r<=1&&0<=a&&a<=1){var s=new Float32Array(n);if(r!==t||a!==u)for(var c=0;c=.001?function(n,e,r,t){for(var a=0;a<4;++a){var u=i(e,r,t);if(0===u)return e;e-=(o(e,r,t)-n)/u}return e}(t,l,r,a):0===d?l:function(n,e,r,t,a){for(var i,u,s=0;(i=o(u=e+(r-e)/2,t,a)-n)>0?r=u:e=u,Math.abs(i)>1e-7&&++s<10;);return u}(t,u,u+e,r,a)}}}(),p=function(){var n=["Quad","Cubic","Quart","Quint","Sine","Expo","Circ","Back","Elastic"],e={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],f],Out:[[.25,.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(n,e){return function(r){return 1-f(n,e)(1-r)}}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(n,e){return function(r){return r<.5?f(n,e)(2*r)/2:1-f(n,e)(-2*r+2)/2}}]},r={linear:[.25,.25,.75,.75]},t=function(t){e[t].forEach(function(e,a){r["ease"+t+n[a]]=e})};for(var a in e)t(a);return r}();function v(n,e){if(u.fnc(n))return n;var r=n.split("(")[0],t=p[r],a=s(n);switch(r){case"spring":return c(n,e);case"cubicBezier":return i(d,a);case"steps":return i(l,a);default:return u.fnc(t)?i(t,a):i(d,t)}}function h(n){try{return document.querySelectorAll(n)}catch(n){return}}function g(n,e){for(var r=n.length,t=arguments.length>=2?arguments[1]:void 0,a=[],o=0;o1&&(r-=1),r<1/6?n+6*(e-n)*r:r<.5?e:r<2/3?n+(e-n)*(2/3-r)*6:n}if(0==i)e=r=t=u;else{var f=u<.5?u*(1+i):u+i-u*i,l=2*u-f;e=c(l,f,o+1/3),r=c(l,f,o),t=c(l,f,o-1/3)}return"rgba("+255*e+","+255*r+","+255*t+","+s+")"}(n):void 0;var e,r,t,a}function C(n){var e=/([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(n);if(e)return e[2]}function O(n,e){return u.fnc(n)?n(e.target,e.id,e.total):n}function P(n,e){return n.getAttribute(e)}function I(n,e,r){if(b([r,"deg","rad","turn"],C(e)))return e;var a=t.CSS[e+r];if(!u.und(a))return a;var o=document.createElement(n.tagName),i=n.parentNode&&n.parentNode!==document?n.parentNode:document.body;i.appendChild(o),o.style.position="absolute",o.style.width=100+r;var s=100/o.offsetWidth;i.removeChild(o);var c=s*parseFloat(e);return t.CSS[e+r]=c,c}function B(n,e,r){if(e in n.style){var t=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),a=n.style[e]||getComputedStyle(n).getPropertyValue(t)||"0";return r?I(n,a,r):a}}function D(n,e){return u.dom(n)&&!u.inp(n)&&(P(n,e)||u.svg(n)&&n[e])?"attribute":u.dom(n)&&b(r,e)?"transform":u.dom(n)&&"transform"!==e&&B(n,e)?"css":null!=n[e]?"object":void 0}function T(n){if(u.dom(n)){for(var e,r=n.style.transform||"",t=/(\w+)\(([^)]*)\)/g,a=new Map;e=t.exec(r);)a.set(e[1],e[2]);return a}}function F(n,e,r,t){var a,i=o(e,"scale")?1:0+(o(a=e,"translate")||"perspective"===a?"px":o(a,"rotate")||o(a,"skew")?"deg":void 0),u=T(n).get(e)||i;return r&&(r.transforms.list.set(e,u),r.transforms.last=e),t?I(n,u,t):u}function N(n,e,r,t){switch(D(n,e)){case"transform":return F(n,e,t,r);case"css":return B(n,e,r);case"attribute":return P(n,e);default:return n[e]||0}}function A(n,e){var r=/^(\*=|\+=|-=)/.exec(n);if(!r)return n;var t=C(n)||0,a=parseFloat(e),o=parseFloat(n.replace(r[0],""));switch(r[0][0]){case"+":return a+o+t;case"-":return a-o+t;case"*":return a*o+t}}function E(n,e){if(u.col(n))return k(n);var r=C(n),t=r?n.substr(0,n.length-r.length):n;return e&&!/\s/g.test(n)?t+e:t}function L(n,e){return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function S(n){for(var e,r=n.points,t=0,a=0;a0&&(t+=L(e,o)),e=o}return t}function j(n){if(n.getTotalLength)return n.getTotalLength();switch(n.tagName.toLowerCase()){case"circle":return o=n,2*Math.PI*P(o,"r");case"rect":return 2*P(a=n,"width")+2*P(a,"height");case"line":return L({x:P(t=n,"x1"),y:P(t,"y1")},{x:P(t,"x2"),y:P(t,"y2")});case"polyline":return S(n);case"polygon":return r=(e=n).points,S(e)+L(r.getItem(r.numberOfItems-1),r.getItem(0))}var e,r,t,a,o}function q(n,e){var r=e||{},t=r.el||function(n){for(var e=n.parentNode;u.svg(e)&&(e=e.parentNode,u.svg(e.parentNode)););return e}(n),a=t.getBoundingClientRect(),o=P(t,"viewBox"),i=a.width,s=a.height,c=r.viewBox||(o?o.split(" "):[0,0,i,s]);return{el:t,viewBox:c,x:c[0]/1,y:c[1]/1,w:i/c[2],h:s/c[3]}}function $(n,e){function r(r){void 0===r&&(r=0);var t=e+r>=1?e+r:0;return n.el.getPointAtLength(t)}var t=q(n.el,n.svg),a=r(),o=r(-1),i=r(1);switch(n.property){case"x":return(a.x-t.x)*t.w;case"y":return(a.y-t.y)*t.h;case"angle":return 180*Math.atan2(i.y-o.y,i.x-o.x)/Math.PI}}function X(n,e){var r=/-?\d*\.?\d+/g,t=E(u.pth(n)?n.totalLength:n,e)+"";return{original:t,numbers:t.match(r)?t.match(r).map(Number):[0],strings:u.str(n)||e?t.split(r):[]}}function Y(n){return g(n?m(u.arr(n)?n.map(y):y(n)):[],function(n,e,r){return r.indexOf(n)===e})}function Z(n){var e=Y(n);return e.map(function(n,r){return{target:n,id:r,total:e.length,transforms:{list:T(n)}}})}function Q(n,e){var r=x(e);if(/^spring/.test(r.easing)&&(r.duration=c(r.easing)),u.arr(n)){var t=n.length;2===t&&!u.obj(n[0])?n={value:n}:u.fnc(e.duration)||(r.duration=e.duration/t)}var a=u.arr(n)?n:[n];return a.map(function(n,r){var t=u.obj(n)&&!u.pth(n)?n:{value:n};return u.und(t.delay)&&(t.delay=r?0:e.delay),u.und(t.endDelay)&&(t.endDelay=r===a.length-1?e.endDelay:0),t}).map(function(n){return w(n,r)})}function V(n,e){var r=[],t=e.keyframes;for(var a in t&&(e=w(function(n){for(var e=g(m(n.map(function(n){return Object.keys(n)})),function(n){return u.key(n)}).reduce(function(n,e){return n.indexOf(e)<0&&n.push(e),n},[]),r={},t=function(t){var a=e[t];r[a]=n.map(function(n){var e={};for(var r in n)u.key(r)?r==a&&(e.value=n[r]):e[r]=n[r];return e})},a=0;a-1&&(U.splice(o,1),r=U.length)}else a.tick(e);t++}n()}else K=cancelAnimationFrame(K)}return n}();function en(r){void 0===r&&(r={});var t,o=0,i=0,u=0,s=0,c=null;function f(n){var e=window.Promise&&new Promise(function(n){return c=n});return n.finished=e,e}var l,d,p,v,h,m,y,b,x=(d=M(n,l=r),p=M(e,l),v=V(p,l),h=Z(l.targets),m=R(h,v),y=W(m,p),b=J,J++,w(d,{id:b,children:[],animatables:h,animations:m,duration:y.duration,delay:y.delay,endDelay:y.endDelay}));f(x);function k(){var n=x.direction;"alternate"!==n&&(x.direction="normal"!==n?"normal":"reverse"),x.reversed=!x.reversed,t.forEach(function(n){return n.reversed=x.reversed})}function C(n){return x.reversed?x.duration-n:n}function O(){o=0,i=C(x.currentTime)*(1/en.speed)}function P(n,e){e&&e.seek(n-e.timelineOffset)}function I(n){for(var e=0,r=x.animations,t=r.length;e2||(b=Math.round(b*p)/p)),v.push(b)}var k=d.length;if(k){m=d[0];for(var C=0;C0&&(x.began=!0,B("begin"),B("loopBegin")),d<=r&&0!==x.currentTime&&I(0),(d>=l&&x.currentTime!==e||!e)&&I(e),d>r&&d=e&&(i=0,x.remaining&&!0!==x.remaining&&x.remaining--,x.remaining?(o=u,B("loopComplete"),B("loopBegin"),"alternate"===x.direction&&k()):(x.paused=!0,x.completed||(x.completed=!0,B("loopComplete"),B("complete"),!x.passThrough&&"Promise"in window&&(c(),f(x)))))}return x.reset=function(){var n=x.direction;x.passThrough=!1,x.currentTime=0,x.progress=0,x.paused=!0,x.began=!1,x.changeBegan=!1,x.completed=!1,x.changeCompleted=!1,x.reversePlayback=!1,x.reversed="reverse"===n,x.remaining=x.loop,t=x.children;for(var e=s=t.length;e--;)x.children[e].reset();(x.reversed&&!0!==x.loop||"alternate"===n&&1===x.loop)&&x.remaining++,I(0)},x.set=function(n,e){return G(n,e),x},x.tick=function(n){u=n,o||(o=u),D((u+(i-o))*en.speed)},x.seek=function(n){D(C(n))},x.pause=function(){x.paused=!0,O()},x.play=function(){x.paused&&(x.completed&&x.reset(),x.paused=!1,U.push(x),O(),K||nn())},x.reverse=function(){k(),O()},x.restart=function(){x.reset(),x.play()},x.reset(),x.autoplay&&x.play(),x}function rn(n,e){for(var r=e.length;r--;)b(n,e[r].animatable.target)&&e.splice(r,1)}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",function(){document.hidden?(U.forEach(function(n){return n.pause()}),_=U.slice(0),U=[]):_.forEach(function(n){return n.play()})}),en.version="3.0.1",en.speed=1,en.running=U,en.remove=function(n){for(var e=Y(n),r=U.length;r--;){var t=U[r],a=t.animations,o=t.children;rn(e,a);for(var i=o.length;i--;){var u=o[i],s=u.animations;rn(e,s),s.length||u.children.length||o.splice(i,1)}a.length||o.length||t.pause()}},en.get=N,en.set=G,en.convertPx=I,en.path=function(n,e){var r=u.str(n)?h(n)[0]:n,t=e||100;return function(n){return{property:n,el:r,svg:q(r),totalLength:j(r)*(t/100)}}},en.setDashoffset=function(n){var e=j(n);return n.setAttribute("stroke-dasharray",e),e},en.stagger=function(n,e){void 0===e&&(e={});var r=e.direction||"normal",t=e.easing?v(e.easing):null,a=e.grid,o=e.axis,i=e.from||0,s="first"===i,c="center"===i,f="last"===i,l=u.arr(n),d=l?parseFloat(n[0]):parseFloat(n),p=l?parseFloat(n[1]):0,h=C(l?n[1]:n)||0,g=e.start||0+(l?d:0),m=[],y=0;return function(n,e,u){if(s&&(i=0),c&&(i=(u-1)/2),f&&(i=u-1),!m.length){for(var v=0;v-1&&U.splice(o,1);for(var c=0;c 2 | 3 | 4 | 5 | 6 | Marvel Movies 7 | 8 | 9 | 10 |

All Marvel Movies to be watched before EndGame

11 |
12 |

Iron Man

13 |
14 |
15 | 18 | 19 | 22 |
23 | 24 | 25 | 120 | 121 | -------------------------------------------------------------------------------- /demo/avengers_EndGame/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Ubuntu'); 2 | body{ 3 | background:#f0f0f0; 4 | font-family: 'Ubuntu', sans-serif; 5 | } 6 | 7 | .title 8 | { 9 | text-align: center; 10 | font-weight:200; 11 | } 12 | 13 | .flexy 14 | { 15 | display:flex; 16 | flex-flow: column nowrap; 17 | color:#b71c1c; 18 | width:100%; 19 | height:50vh; 20 | align-items: center; 21 | } 22 | .flexy--center 23 | { 24 | justify-content: center; 25 | } 26 | .movie__center 27 | { 28 | 29 | font-size:8vw; 30 | } 31 | .btn { 32 | border: 0; 33 | padding: 0; 34 | margin: 0; 35 | background: none; 36 | color: inherit; 37 | cursor: pointer; 38 | margin: 0.25em; 39 | display: block; 40 | white-space: nowrap; 41 | border: 2px solid; 42 | padding: 0.5em; 43 | } 44 | 45 | .btn:focus { 46 | outline: none; 47 | } 48 | 49 | .triggers 50 | { 51 | display: flex; 52 | flex-flow:row nowrap; 53 | align-items: center; 54 | justify-content: center; 55 | margin:1em auto; 56 | } 57 | .pagination 58 | { 59 | padding:10px; 60 | } -------------------------------------------------------------------------------- /demo/img/Friday.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/Friday.gif -------------------------------------------------------------------------------- /demo/img/Jarvis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/Jarvis.gif -------------------------------------------------------------------------------- /demo/img/friday.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/friday.mov -------------------------------------------------------------------------------- /demo/img/jarvis.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/jarvis.mov -------------------------------------------------------------------------------- /demo/img/raj-eiamworakul-603747-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/raj-eiamworakul-603747-unsplash.jpg -------------------------------------------------------------------------------- /demo/img/spidey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/spidey.gif -------------------------------------------------------------------------------- /demo/img/spidy.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akhil0001/RevealFx/f89ab393340d1ea2829fe5f59901a9fd1e5ca3f9/demo/img/spidy.mov -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Demo of RevealFx 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |

17 |
It's wierd not to be weird

18 |
- John Lennon 19 |
20 |

21 |
22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | If you doubt your beliefs, you believe your doubts 36 |
If you fail to practice, you practice failure ― Anonymous 37 |
38 |
39 |
40 | 41 | 42 |
43 |
44 |
45 |

46 |
Be yourself,because everyone else is taken

47 |
48 |

49 |
50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 |
58 |
59 | 60 | 61 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /demo/main.css: -------------------------------------------------------------------------------- 1 | /* taken from mary lou's block reveal effect demo */ 2 | @import url('https://fonts.googleapis.com/css?family=Ubuntu'); 3 | body{ 4 | background:#f0f0f0; 5 | font-family: 'Ubuntu', sans-serif; 6 | } 7 | #rfx4 8 | { 9 | background: -webkit-linear-gradient(left,#FFB900,#FF8C00,#F7630C,#E74856,#E81123,#0078D7,#0063B1); 10 | -webkit-background-clip: text; 11 | -webkit-text-fill-color: transparent; 12 | } 13 | .content { 14 | position: relative; 15 | min-height: 300px; 16 | overflow-x: hidden; 17 | } 18 | 19 | .content--full { 20 | height: 100vh; 21 | min-height: 600px; 22 | } 23 | 24 | .flexy { 25 | display: flex; 26 | flex-wrap: wrap; 27 | flex-direction: column; 28 | align-items: center; 29 | } 30 | 31 | .flexy--center { 32 | justify-content: center; 33 | } 34 | 35 | .flexy--row { 36 | flex-direction: row; 37 | } 38 | .flexy__items 39 | { 40 | padding:1em; 41 | } 42 | .content__heading { 43 | flex: none; 44 | width: 100%; 45 | /* padding: 0 1vw; */ 46 | } 47 | 48 | .content__heading--center { 49 | text-align: center; 50 | } 51 | 52 | .content__title { 53 | font-size: 8vw; 54 | 55 | } 56 | 57 | .content__title--half { 58 | width: 50vw; 59 | z-index: 2; 60 | } 61 | 62 | .content__title--enclosed { 63 | padding: 0; 64 | margin: 0; 65 | } 66 | 67 | .content__title--center { 68 | margin: auto; 69 | text-align: center; 70 | } 71 | 72 | .content__title--right { 73 | text-align: right; 74 | padding: 0 0 0 2em; 75 | } 76 | 77 | .content__title--left { 78 | margin-left: -18vw; 79 | } 80 | 81 | .content__title--medium { 82 | font-size: 5vw; 83 | } 84 | 85 | .content__title--small { 86 | font-size: 2vw; 87 | } 88 | 89 | .content__title__inner { 90 | flex: none; 91 | display: inline-block; 92 | white-space: wrap; 93 | position: relative; 94 | } 95 | 96 | .content__title__inner--offset-1 { 97 | font-size: 4vw; 98 | top: -0.25em; 99 | left: 18.6vw; 100 | } 101 | 102 | .content__title__inner--offset-2 { 103 | top: -0.25em; 104 | left: 1.75vw; 105 | } 106 | 107 | .content__title__inner--offset-3 { 108 | left: -10vw; 109 | top: -0.25em; 110 | } 111 | .btn { 112 | border: 0; 113 | padding: 0; 114 | margin: 0; 115 | background: none; 116 | color: inherit; 117 | cursor: pointer; 118 | } 119 | 120 | .btn:focus { 121 | outline: none; 122 | } 123 | 124 | .btn--trigger { 125 | margin: 0.25em; 126 | display: block; 127 | white-space: nowrap; 128 | border: 2px solid; 129 | padding: 0.5em; 130 | } 131 | 132 | .triggers 133 | { 134 | display: flex; 135 | flex-flow: row wrap; 136 | } 137 | .dual { 138 | width: 90vw; 139 | margin: 2em auto; 140 | position: relative; 141 | } 142 | 143 | .dual__inner { 144 | position: absolute; 145 | width: 100%; 146 | height: 100%; 147 | } 148 | 149 | .dual__half { 150 | position: absolute; 151 | height: 100%; 152 | width: 50%; 153 | right: 0; 154 | background: url(img/raj-eiamworakul-603747-unsplash.jpg) no-repeat 50% 0%; 155 | background-size: cover; 156 | } 157 | 158 | .dual__content { 159 | position: relative; 160 | width: 40%; 161 | display: flex; 162 | flex-direction: column; 163 | justify-content: center; 164 | min-height: 500px; 165 | padding: 1.5em 2.5em; 166 | font-size: 1.25em; 167 | line-height: 1.4; 168 | color: #ffffff; 169 | opacity:0; 170 | } 171 | 172 | .dual__content.dual__content--show { 173 | opacity: 1; 174 | pointer-events: visible; 175 | transform: translate(0,0); 176 | -webkit-transform: translate(0,0); 177 | -moz-transform: translate(0,0); 178 | -ms-transform: translate(0,0); 179 | -o-transform: translate(0,0); 180 | } 181 | 182 | @media screen and (max-width: 50em) { 183 | 184 | .content--full { 185 | min-height: 0; 186 | } 187 | .content__title { 188 | font-size: 2em; 189 | } 190 | .content__title--medium { 191 | font-size: 1.75em; 192 | } 193 | .content__title--small { 194 | font-size: 1.15em; 195 | } 196 | .content__title--half { 197 | width: 100%; 198 | } 199 | .content__title--right { 200 | padding: 0 5vw; 201 | } 202 | .content__title--left { 203 | margin-left: 0; 204 | } 205 | .flexy--row { 206 | flex-direction: column; 207 | } 208 | .triggers { 209 | width: 100%; 210 | border: 0; 211 | padding: 0; 212 | font-size: 0.85em; 213 | } 214 | .dual__content { 215 | min-height: 200px; 216 | font-size: 0.65em; 217 | padding: 2.5em; 218 | } 219 | .dual { 220 | margin-top: 0; 221 | } 222 | } 223 | -------------------------------------------------------------------------------- /demo/main.js: -------------------------------------------------------------------------------- 1 | window.onload = showThemColors(); 2 | 3 | 4 | function showThemColors() { 5 | var counter = 0; 6 | var rfx1 = document.querySelector('#rfx1'); 7 | var rfx2 = document.querySelector('#rfx2'); 8 | var rfx3 = document.querySelector('#rfx3'); 9 | var rfx4 = document.querySelector('#rfx4'); 10 | var btn1 = document.querySelectorAll('#rev-trigger-1')[0]; 11 | var btn2 = document.querySelectorAll('#rev-trigger-2')[0]; 12 | var btn3 = document.querySelectorAll('#rev-trigger-3')[0]; 13 | var btn4 = document.querySelectorAll('#rev-trigger-4')[0]; 14 | var btn5 = document.querySelectorAll('#rev-trigger-5')[0]; 15 | var btn6 = document.querySelectorAll('#rev-trigger-6')[0]; 16 | var btn7 = document.querySelectorAll('#rev-trigger-7')[0]; 17 | var btn8 = document.querySelectorAll('#rev-trigger-8')[0]; 18 | var btn9 = document.querySelectorAll('#rev-trigger-9')[0]; 19 | var btn10 = document.querySelectorAll('#rev-trigger-10')[0]; 20 | var btn11 = document.querySelectorAll('#rev-trigger-11')[0]; 21 | var btn12 = document.querySelectorAll('#rev-trigger-12')[0]; 22 | 23 | 24 | var revealSettings = { 25 | bgColors: ['#111'], 26 | duration: 600, 27 | delay: 100, 28 | direction: 'lr', 29 | onStart: function (contentEl, revealerEl) { 30 | }, 31 | onHalfway: function (contentEl, revealerEl) { 32 | contentEl.style.opacity = 1; 33 | }, 34 | onComplete: function () { 35 | revealerEffect2.reveal(); 36 | } 37 | }; 38 | var revealSettings2 = { 39 | bgColors: ['#111'], 40 | duration: 400, 41 | delay: 100, 42 | direction: 'lr', 43 | onHalfway: function (contentEl, revealerEl) { 44 | contentEl.style.opacity = 1; 45 | } 46 | }; 47 | var revealSettings3 = { 48 | bgColors: ['#FFB900','#FF8C00','#F7630C','#E74856','#E81123','#0078D7','#0063B1'], 49 | duration: 400, 50 | delay: 100, 51 | direction: 'lr', 52 | onStart: function (contentEl, revealerEl) { 53 | anime.remove(contentEl); 54 | // contentEl.style.opacity = 0; 55 | }, 56 | onHalfway: function (contentEl, revealerEl) { 57 | contentEl.style.opacity = 1; 58 | } 59 | }; 60 | 61 | 62 | var revealerEffect = new RevealFx(rfx1, { 63 | layers: 1, 64 | isContentHidden:false, 65 | revealSettings: revealSettings 66 | }); 67 | var revealerEffect2 = new RevealFx(rfx2, { 68 | layers: 1, 69 | isContentHidden : true, 70 | revealSettings: revealSettings2 71 | }); 72 | 73 | var splitContent = document.querySelector('.dual__content'), 74 | revealEffect3 = new RevealFx(rfx3, { 75 | isContentHidden:true, 76 | layers:4, 77 | revealSettings : { 78 | bgColors: ['#2c2c38','#2c2c38','#2c2c38','#2c2c38'], 79 | direction: 'rl', 80 | duration: 800, 81 | easing: 'easeInOutCirc', 82 | coverArea: 50, 83 | onStart: function(contentEl) 84 | { 85 | contentEl.style.opacity =0; 86 | splitContent.classList.remove('dual__content--show'); 87 | }, 88 | onHalfway: function(contentEl, revealerEl) { 89 | contentEl.style.opacity = 1; 90 | splitContent.classList.add('dual__content--show'); 91 | } 92 | } 93 | }); 94 | var revealerEffect4 = new RevealFx(rfx4, { 95 | layers: 7, 96 | isContentHidden : true, 97 | revealSettings: revealSettings3 98 | }); 99 | 100 | 101 | revealerEffect.reveal(); 102 | revealEffect3.reveal(); 103 | revealerEffect4.reveal(); 104 | 105 | btn1.onclick = function(){ 106 | revealSettings.direction = 'lr'; 107 | revealSettings2.direction = 'lr'; 108 | revealerEffect.reveal(revealSettings); 109 | } 110 | btn2.onclick = function() { 111 | revealSettings.direction = 'rl'; 112 | revealSettings2.direction = 'rl'; 113 | revealerEffect.reveal(revealSettings); 114 | } 115 | btn3.onclick = function() { 116 | revealSettings.direction = 'tb'; 117 | revealSettings2.direction = 'tb'; 118 | revealerEffect.reveal(revealSettings); 119 | } 120 | btn4.onclick = function() { 121 | revealSettings.direction = 'bt'; 122 | revealSettings2.direction = 'bt'; 123 | revealerEffect.reveal(revealSettings); 124 | } 125 | btn5.onclick = function() { 126 | 127 | revealSettings.bgColors[0] = '#283593'; 128 | revealSettings2.bgColors[0] = '#FBC02D'; 129 | revealerEffect.reveal(revealSettings); 130 | } 131 | btn6.onclick = function(){ 132 | revealEffect3.reveal(); 133 | } 134 | btn7.onclick = function(){ 135 | revealSettings3.coverArea = Math.random(1)*100+10; 136 | revealSettings3.onComplete = function(contentEl,revealEl){ 137 | btn7.innerText = 'cover area has changed to '+revealSettings3.coverArea+'%'; 138 | } 139 | revealerEffect4.reveal(revealSettings3); 140 | } 141 | btn8.onclick = function() 142 | { 143 | revealSettings3 = resetTheSetting(); 144 | revealSettings3.duration = Math.random(1)*1000 + 1000; 145 | revealerEffect4.reveal(revealSettings3); 146 | } 147 | btn9.onclick = function() 148 | { 149 | revealSettings3 = resetTheSetting() 150 | revealSettings3.delay = Math.random(1)*100 + 200; 151 | revealerEffect4.reveal(revealSettings3); 152 | } 153 | btn10.onclick = function() 154 | { 155 | var quotations = ['Inhale confidence,exhale doubts','Do it or watch yourself sad when others show it','Be yourself,because everyone else is taken']; 156 | 157 | revealSettings3 = resetTheSetting() 158 | revealSettings3.onHalfway = function(contentEl) 159 | { 160 | contentEl.innerText = quotations[counter++]; 161 | } 162 | if(counter>quotations.length-1) 163 | counter = 0; 164 | revealerEffect4.reveal(revealSettings3); 165 | } 166 | btn12.onclick = function() { 167 | revealSettings3 = resetTheSetting(); 168 | var resetRevealSettings = resetTheSetting(); 169 | revealerEffect4.reveal(resetRevealSettings); 170 | } 171 | btn11.onclick = function() { 172 | revealSettings3 = resetTheSetting(); 173 | revealSettings3.easing = 'cubicBezier(0.000, 0.810, 0.230, 0.990)'; 174 | revealerEffect4.reveal(revealSettings3); 175 | } 176 | resetTheSetting = function() 177 | { 178 | return { 179 | bgColors: ['#FFB900','#FF8C00','#F7630C','#E74856','#E81123','#0078D7','#0063B1'], 180 | duration: 400, 181 | delay: 100, 182 | direction: 'lr', 183 | onStart: function (contentEl, revealerEl) { 184 | anime.remove(contentEl); 185 | // contentEl.style.opacity = 0; 186 | }, 187 | onHalfway: function (contentEl, revealerEl) { 188 | contentEl.style.opacity = 1; 189 | } 190 | } 191 | } 192 | } 193 | 194 | -------------------------------------------------------------------------------- /demo/revealFx.js: -------------------------------------------------------------------------------- 1 | 2 | ;(function(window) { 3 | 4 | 'use strict'; 5 | 6 | // Helper vars and functions. 7 | function extend(a, b) { 8 | for(var key in b) { 9 | if( b.hasOwnProperty( key ) ) { 10 | a[key] = b[key]; 11 | } 12 | } 13 | return a; 14 | } 15 | 16 | function createDOMEl(type, className,content) { 17 | var el = document.createElement(type); 18 | el.className = className || ''; 19 | el.innerHTML = content || ''; 20 | return el; 21 | } 22 | 23 | function createStyleForDOMEL(el,position,top,left,width,height,color,background,opacity,pointerEvents,zIndex) 24 | { 25 | //this is a helper function for creating the styles for a given element 26 | el.style.position = position || 'absolute'; 27 | el.style.top = top || '0'; 28 | el.style.left = left || '0'; 29 | el.style.color = color || '#fff'; 30 | el.style.width = width || '100%'; 31 | el.style.height = height || '100%'; 32 | el.style.backgroundColor = background || '#f0f0f0'; 33 | el.style.opacity = opacity || '0'; 34 | el.style.pointerEvents = pointerEvents || 'none'; 35 | el.style.zIndex = zIndex || 0; 36 | } 37 | 38 | /** 39 | * RevealFx obj. 40 | */ 41 | function RevealFx(el, options) { 42 | this.el = el; 43 | this.revealLayers = []; 44 | this.options = extend({}, this.options); 45 | extend(this.options, options); 46 | this._init(); 47 | } 48 | 49 | /** 50 | * RevealFx options. 51 | */ 52 | RevealFx.prototype.options = { 53 | // If true, then the content will be hidden until it´s "revealed". 54 | isContentHidden: true, 55 | //number of layers to be displayed 56 | layers:1, 57 | // The animation/reveal settings. This can be set initially or passed when calling the reveal method. 58 | revealSettings: { 59 | // Animation direction: left right (lr) || right left (rl) || top bottom (tb) || bottom top (bt). 60 | direction: 'lr', 61 | // Revealers´s background color Array. 62 | bgColors: ['#111'], 63 | // Animation speed. This is the speed to "cover" and also "uncover" the element (seperately, not the total time). 64 | duration: 500, 65 | // Animation easing. This is the easing to "cover" and also "uncover" the element. 66 | easing: 'easeInOutQuint', 67 | // percentage-based value representing how much of the area should be left covered. 68 | coverArea: 0, 69 | //milliseconds of delay between layers animation thatis used in stagger animation 70 | delay:100, 71 | // Callback for when the revealer is covering the element (halfway through of the whole animation) 72 | onHalfway: function(contentEl, revealerEl) { return false; }, 73 | // Callback for when the animation starts (animation start). 74 | onStart: function(contentEl, revealerEl) { return false; }, 75 | // Callback for when the revealer has completed uncovering (animation end). 76 | onComplete: function(contentEl, revealerEl) { return false; }, 77 | } 78 | }; 79 | 80 | /** 81 | * Init. 82 | */ 83 | RevealFx.prototype._init = function() { 84 | this._layout(); 85 | }; 86 | 87 | /** 88 | * Build the necessary structure. 89 | */ 90 | RevealFx.prototype._layout = function() { 91 | //instead of going with the %s go with the pxs for the better view 92 | //create an array of the selected elements and store it as global 93 | var position = getComputedStyle(this.el).position; 94 | if( position !== 'fixed' && position !== 'absolute' && position !== 'relative' ) { 95 | this.el.style.position = 'relative'; 96 | } 97 | var heightOfEl = 100; 98 | var widthOfEl = 100; 99 | // Content element. 100 | this.content = createDOMEl('div', 'block-revealer__content',this.el.innerHTML); 101 | if( this.options.isContentHidden) { 102 | this.content.style.opacity = 0; 103 | } 104 | this.el.innerHTML = ''; 105 | this.el.appendChild(this.content); 106 | 107 | var topOfRevealerElement=0; 108 | var leftOfRevalerElement=0; 109 | const numberOfLayers = this.options.layers; 110 | var colorOfBlockLayer ='#111'; 111 | for(var i=0;i= 1.5.0 < 2", 746 | "toidentifier": "1.0.0" 747 | }, 748 | "dependencies": { 749 | "statuses": { 750 | "version": "1.5.0", 751 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 752 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 753 | "dev": true 754 | } 755 | } 756 | }, 757 | "http-proxy": { 758 | "version": "1.18.1", 759 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 760 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 761 | "dev": true, 762 | "requires": { 763 | "eventemitter3": "^4.0.0", 764 | "follow-redirects": "^1.0.0", 765 | "requires-port": "^1.0.0" 766 | } 767 | }, 768 | "iconv-lite": { 769 | "version": "0.4.24", 770 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 771 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 772 | "dev": true, 773 | "requires": { 774 | "safer-buffer": ">= 2.1.2 < 3" 775 | } 776 | }, 777 | "immutable": { 778 | "version": "3.8.2", 779 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", 780 | "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", 781 | "dev": true 782 | }, 783 | "indexof": { 784 | "version": "0.0.1", 785 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 786 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 787 | "dev": true 788 | }, 789 | "inherits": { 790 | "version": "2.0.4", 791 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 792 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 793 | "dev": true 794 | }, 795 | "is-binary-path": { 796 | "version": "2.1.0", 797 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 798 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 799 | "dev": true, 800 | "requires": { 801 | "binary-extensions": "^2.0.0" 802 | } 803 | }, 804 | "is-buffer": { 805 | "version": "2.0.4", 806 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", 807 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", 808 | "dev": true 809 | }, 810 | "is-extglob": { 811 | "version": "2.1.1", 812 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 813 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 814 | "dev": true 815 | }, 816 | "is-fullwidth-code-point": { 817 | "version": "2.0.0", 818 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 819 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 820 | "dev": true 821 | }, 822 | "is-glob": { 823 | "version": "4.0.1", 824 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 825 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 826 | "dev": true, 827 | "requires": { 828 | "is-extglob": "^2.1.1" 829 | } 830 | }, 831 | "is-number": { 832 | "version": "7.0.0", 833 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 834 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 835 | "dev": true 836 | }, 837 | "is-number-like": { 838 | "version": "1.0.8", 839 | "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", 840 | "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", 841 | "dev": true, 842 | "requires": { 843 | "lodash.isfinite": "^3.3.2" 844 | } 845 | }, 846 | "is-wsl": { 847 | "version": "1.1.0", 848 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 849 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", 850 | "dev": true 851 | }, 852 | "isarray": { 853 | "version": "2.0.1", 854 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 855 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", 856 | "dev": true 857 | }, 858 | "jsonfile": { 859 | "version": "3.0.1", 860 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", 861 | "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", 862 | "dev": true, 863 | "requires": { 864 | "graceful-fs": "^4.1.6" 865 | } 866 | }, 867 | "limiter": { 868 | "version": "1.1.5", 869 | "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", 870 | "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", 871 | "dev": true 872 | }, 873 | "localtunnel": { 874 | "version": "2.0.0", 875 | "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.0.tgz", 876 | "integrity": "sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==", 877 | "dev": true, 878 | "requires": { 879 | "axios": "0.19.0", 880 | "debug": "4.1.1", 881 | "openurl": "1.1.1", 882 | "yargs": "13.3.0" 883 | }, 884 | "dependencies": { 885 | "yargs": { 886 | "version": "13.3.0", 887 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", 888 | "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", 889 | "dev": true, 890 | "requires": { 891 | "cliui": "^5.0.0", 892 | "find-up": "^3.0.0", 893 | "get-caller-file": "^2.0.1", 894 | "require-directory": "^2.1.1", 895 | "require-main-filename": "^2.0.0", 896 | "set-blocking": "^2.0.0", 897 | "string-width": "^3.0.0", 898 | "which-module": "^2.0.0", 899 | "y18n": "^4.0.0", 900 | "yargs-parser": "^13.1.1" 901 | } 902 | } 903 | } 904 | }, 905 | "locate-path": { 906 | "version": "3.0.0", 907 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 908 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 909 | "dev": true, 910 | "requires": { 911 | "p-locate": "^3.0.0", 912 | "path-exists": "^3.0.0" 913 | } 914 | }, 915 | "lodash": { 916 | "version": "4.17.19", 917 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 918 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", 919 | "dev": true 920 | }, 921 | "lodash.isfinite": { 922 | "version": "3.3.2", 923 | "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", 924 | "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", 925 | "dev": true 926 | }, 927 | "micromatch": { 928 | "version": "4.0.2", 929 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 930 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 931 | "dev": true, 932 | "requires": { 933 | "braces": "^3.0.1", 934 | "picomatch": "^2.0.5" 935 | } 936 | }, 937 | "mime": { 938 | "version": "1.4.1", 939 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 940 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", 941 | "dev": true 942 | }, 943 | "mime-db": { 944 | "version": "1.44.0", 945 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 946 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", 947 | "dev": true 948 | }, 949 | "mime-types": { 950 | "version": "2.1.27", 951 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 952 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 953 | "dev": true, 954 | "requires": { 955 | "mime-db": "1.44.0" 956 | } 957 | }, 958 | "minimatch": { 959 | "version": "3.0.4", 960 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 961 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 962 | "dev": true, 963 | "requires": { 964 | "brace-expansion": "^1.1.7" 965 | } 966 | }, 967 | "mitt": { 968 | "version": "1.2.0", 969 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", 970 | "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", 971 | "dev": true 972 | }, 973 | "ms": { 974 | "version": "2.1.2", 975 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 976 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 977 | "dev": true 978 | }, 979 | "negotiator": { 980 | "version": "0.6.2", 981 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 982 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 983 | "dev": true 984 | }, 985 | "normalize-path": { 986 | "version": "3.0.0", 987 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 988 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 989 | "dev": true 990 | }, 991 | "object-component": { 992 | "version": "0.0.3", 993 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 994 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", 995 | "dev": true 996 | }, 997 | "object-path": { 998 | "version": "0.9.2", 999 | "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", 1000 | "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", 1001 | "dev": true 1002 | }, 1003 | "on-finished": { 1004 | "version": "2.3.0", 1005 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1006 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1007 | "dev": true, 1008 | "requires": { 1009 | "ee-first": "1.1.1" 1010 | } 1011 | }, 1012 | "openurl": { 1013 | "version": "1.1.1", 1014 | "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", 1015 | "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", 1016 | "dev": true 1017 | }, 1018 | "opn": { 1019 | "version": "5.3.0", 1020 | "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", 1021 | "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", 1022 | "dev": true, 1023 | "requires": { 1024 | "is-wsl": "^1.1.0" 1025 | } 1026 | }, 1027 | "p-limit": { 1028 | "version": "2.3.0", 1029 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1030 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1031 | "dev": true, 1032 | "requires": { 1033 | "p-try": "^2.0.0" 1034 | } 1035 | }, 1036 | "p-locate": { 1037 | "version": "3.0.0", 1038 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1039 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1040 | "dev": true, 1041 | "requires": { 1042 | "p-limit": "^2.0.0" 1043 | } 1044 | }, 1045 | "p-try": { 1046 | "version": "2.2.0", 1047 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1048 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1049 | "dev": true 1050 | }, 1051 | "parseqs": { 1052 | "version": "0.0.5", 1053 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 1054 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 1055 | "dev": true, 1056 | "requires": { 1057 | "better-assert": "~1.0.0" 1058 | } 1059 | }, 1060 | "parseuri": { 1061 | "version": "0.0.5", 1062 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 1063 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 1064 | "dev": true, 1065 | "requires": { 1066 | "better-assert": "~1.0.0" 1067 | } 1068 | }, 1069 | "parseurl": { 1070 | "version": "1.3.3", 1071 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1072 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1073 | "dev": true 1074 | }, 1075 | "path-exists": { 1076 | "version": "3.0.0", 1077 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1078 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1079 | "dev": true 1080 | }, 1081 | "picomatch": { 1082 | "version": "2.2.2", 1083 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1084 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1085 | "dev": true 1086 | }, 1087 | "portscanner": { 1088 | "version": "2.1.1", 1089 | "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", 1090 | "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", 1091 | "dev": true, 1092 | "requires": { 1093 | "async": "1.5.2", 1094 | "is-number-like": "^1.0.3" 1095 | } 1096 | }, 1097 | "qs": { 1098 | "version": "6.2.3", 1099 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", 1100 | "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", 1101 | "dev": true 1102 | }, 1103 | "range-parser": { 1104 | "version": "1.2.1", 1105 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1106 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1107 | "dev": true 1108 | }, 1109 | "raw-body": { 1110 | "version": "2.4.1", 1111 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 1112 | "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 1113 | "dev": true, 1114 | "requires": { 1115 | "bytes": "3.1.0", 1116 | "http-errors": "1.7.3", 1117 | "iconv-lite": "0.4.24", 1118 | "unpipe": "1.0.0" 1119 | } 1120 | }, 1121 | "readdirp": { 1122 | "version": "3.4.0", 1123 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", 1124 | "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", 1125 | "dev": true, 1126 | "requires": { 1127 | "picomatch": "^2.2.1" 1128 | } 1129 | }, 1130 | "require-directory": { 1131 | "version": "2.1.1", 1132 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1133 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1134 | "dev": true 1135 | }, 1136 | "require-main-filename": { 1137 | "version": "2.0.0", 1138 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1139 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1140 | "dev": true 1141 | }, 1142 | "requires-port": { 1143 | "version": "1.0.0", 1144 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1145 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 1146 | "dev": true 1147 | }, 1148 | "resp-modifier": { 1149 | "version": "6.0.2", 1150 | "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", 1151 | "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", 1152 | "dev": true, 1153 | "requires": { 1154 | "debug": "^2.2.0", 1155 | "minimatch": "^3.0.2" 1156 | }, 1157 | "dependencies": { 1158 | "debug": { 1159 | "version": "2.6.9", 1160 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1161 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1162 | "dev": true, 1163 | "requires": { 1164 | "ms": "2.0.0" 1165 | } 1166 | }, 1167 | "ms": { 1168 | "version": "2.0.0", 1169 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1170 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1171 | "dev": true 1172 | } 1173 | } 1174 | }, 1175 | "rx": { 1176 | "version": "4.1.0", 1177 | "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", 1178 | "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", 1179 | "dev": true 1180 | }, 1181 | "rxjs": { 1182 | "version": "5.5.12", 1183 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", 1184 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", 1185 | "dev": true, 1186 | "requires": { 1187 | "symbol-observable": "1.0.1" 1188 | } 1189 | }, 1190 | "safe-buffer": { 1191 | "version": "5.1.2", 1192 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1193 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1194 | "dev": true 1195 | }, 1196 | "safer-buffer": { 1197 | "version": "2.1.2", 1198 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1199 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1200 | "dev": true 1201 | }, 1202 | "send": { 1203 | "version": "0.16.2", 1204 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 1205 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 1206 | "dev": true, 1207 | "requires": { 1208 | "debug": "2.6.9", 1209 | "depd": "~1.1.2", 1210 | "destroy": "~1.0.4", 1211 | "encodeurl": "~1.0.2", 1212 | "escape-html": "~1.0.3", 1213 | "etag": "~1.8.1", 1214 | "fresh": "0.5.2", 1215 | "http-errors": "~1.6.2", 1216 | "mime": "1.4.1", 1217 | "ms": "2.0.0", 1218 | "on-finished": "~2.3.0", 1219 | "range-parser": "~1.2.0", 1220 | "statuses": "~1.4.0" 1221 | }, 1222 | "dependencies": { 1223 | "debug": { 1224 | "version": "2.6.9", 1225 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1226 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1227 | "dev": true, 1228 | "requires": { 1229 | "ms": "2.0.0" 1230 | } 1231 | }, 1232 | "http-errors": { 1233 | "version": "1.6.3", 1234 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1235 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1236 | "dev": true, 1237 | "requires": { 1238 | "depd": "~1.1.2", 1239 | "inherits": "2.0.3", 1240 | "setprototypeof": "1.1.0", 1241 | "statuses": ">= 1.4.0 < 2" 1242 | } 1243 | }, 1244 | "inherits": { 1245 | "version": "2.0.3", 1246 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1247 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1248 | "dev": true 1249 | }, 1250 | "ms": { 1251 | "version": "2.0.0", 1252 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1253 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1254 | "dev": true 1255 | }, 1256 | "setprototypeof": { 1257 | "version": "1.1.0", 1258 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1259 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 1260 | "dev": true 1261 | }, 1262 | "statuses": { 1263 | "version": "1.4.0", 1264 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 1265 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", 1266 | "dev": true 1267 | } 1268 | } 1269 | }, 1270 | "serve-index": { 1271 | "version": "1.9.1", 1272 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", 1273 | "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", 1274 | "dev": true, 1275 | "requires": { 1276 | "accepts": "~1.3.4", 1277 | "batch": "0.6.1", 1278 | "debug": "2.6.9", 1279 | "escape-html": "~1.0.3", 1280 | "http-errors": "~1.6.2", 1281 | "mime-types": "~2.1.17", 1282 | "parseurl": "~1.3.2" 1283 | }, 1284 | "dependencies": { 1285 | "debug": { 1286 | "version": "2.6.9", 1287 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1288 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1289 | "dev": true, 1290 | "requires": { 1291 | "ms": "2.0.0" 1292 | } 1293 | }, 1294 | "http-errors": { 1295 | "version": "1.6.3", 1296 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1297 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1298 | "dev": true, 1299 | "requires": { 1300 | "depd": "~1.1.2", 1301 | "inherits": "2.0.3", 1302 | "setprototypeof": "1.1.0", 1303 | "statuses": ">= 1.4.0 < 2" 1304 | } 1305 | }, 1306 | "inherits": { 1307 | "version": "2.0.3", 1308 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1309 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1310 | "dev": true 1311 | }, 1312 | "ms": { 1313 | "version": "2.0.0", 1314 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1315 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1316 | "dev": true 1317 | }, 1318 | "setprototypeof": { 1319 | "version": "1.1.0", 1320 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1321 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 1322 | "dev": true 1323 | }, 1324 | "statuses": { 1325 | "version": "1.5.0", 1326 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1327 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1328 | "dev": true 1329 | } 1330 | } 1331 | }, 1332 | "serve-static": { 1333 | "version": "1.13.2", 1334 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 1335 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 1336 | "dev": true, 1337 | "requires": { 1338 | "encodeurl": "~1.0.2", 1339 | "escape-html": "~1.0.3", 1340 | "parseurl": "~1.3.2", 1341 | "send": "0.16.2" 1342 | } 1343 | }, 1344 | "server-destroy": { 1345 | "version": "1.0.1", 1346 | "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", 1347 | "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", 1348 | "dev": true 1349 | }, 1350 | "set-blocking": { 1351 | "version": "2.0.0", 1352 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1353 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1354 | "dev": true 1355 | }, 1356 | "setprototypeof": { 1357 | "version": "1.1.1", 1358 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1359 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 1360 | "dev": true 1361 | }, 1362 | "socket.io": { 1363 | "version": "2.1.1", 1364 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", 1365 | "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", 1366 | "dev": true, 1367 | "requires": { 1368 | "debug": "~3.1.0", 1369 | "engine.io": "~3.2.0", 1370 | "has-binary2": "~1.0.2", 1371 | "socket.io-adapter": "~1.1.0", 1372 | "socket.io-client": "2.1.1", 1373 | "socket.io-parser": "~3.2.0" 1374 | }, 1375 | "dependencies": { 1376 | "debug": { 1377 | "version": "3.1.0", 1378 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1379 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1380 | "dev": true, 1381 | "requires": { 1382 | "ms": "2.0.0" 1383 | } 1384 | }, 1385 | "engine.io-client": { 1386 | "version": "3.2.1", 1387 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", 1388 | "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", 1389 | "dev": true, 1390 | "requires": { 1391 | "component-emitter": "1.2.1", 1392 | "component-inherit": "0.0.3", 1393 | "debug": "~3.1.0", 1394 | "engine.io-parser": "~2.1.1", 1395 | "has-cors": "1.1.0", 1396 | "indexof": "0.0.1", 1397 | "parseqs": "0.0.5", 1398 | "parseuri": "0.0.5", 1399 | "ws": "~3.3.1", 1400 | "xmlhttprequest-ssl": "~1.5.4", 1401 | "yeast": "0.1.2" 1402 | } 1403 | }, 1404 | "engine.io-parser": { 1405 | "version": "2.1.3", 1406 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", 1407 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", 1408 | "dev": true, 1409 | "requires": { 1410 | "after": "0.8.2", 1411 | "arraybuffer.slice": "~0.0.7", 1412 | "base64-arraybuffer": "0.1.5", 1413 | "blob": "0.0.5", 1414 | "has-binary2": "~1.0.2" 1415 | } 1416 | }, 1417 | "ms": { 1418 | "version": "2.0.0", 1419 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1420 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1421 | "dev": true 1422 | }, 1423 | "socket.io-client": { 1424 | "version": "2.1.1", 1425 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", 1426 | "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", 1427 | "dev": true, 1428 | "requires": { 1429 | "backo2": "1.0.2", 1430 | "base64-arraybuffer": "0.1.5", 1431 | "component-bind": "1.0.0", 1432 | "component-emitter": "1.2.1", 1433 | "debug": "~3.1.0", 1434 | "engine.io-client": "~3.2.0", 1435 | "has-binary2": "~1.0.2", 1436 | "has-cors": "1.1.0", 1437 | "indexof": "0.0.1", 1438 | "object-component": "0.0.3", 1439 | "parseqs": "0.0.5", 1440 | "parseuri": "0.0.5", 1441 | "socket.io-parser": "~3.2.0", 1442 | "to-array": "0.1.4" 1443 | } 1444 | }, 1445 | "socket.io-parser": { 1446 | "version": "3.2.0", 1447 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", 1448 | "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", 1449 | "dev": true, 1450 | "requires": { 1451 | "component-emitter": "1.2.1", 1452 | "debug": "~3.1.0", 1453 | "isarray": "2.0.1" 1454 | } 1455 | }, 1456 | "ws": { 1457 | "version": "3.3.3", 1458 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", 1459 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", 1460 | "dev": true, 1461 | "requires": { 1462 | "async-limiter": "~1.0.0", 1463 | "safe-buffer": "~5.1.0", 1464 | "ultron": "~1.1.0" 1465 | } 1466 | } 1467 | } 1468 | }, 1469 | "socket.io-adapter": { 1470 | "version": "1.1.2", 1471 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", 1472 | "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", 1473 | "dev": true 1474 | }, 1475 | "socket.io-client": { 1476 | "version": "2.3.0", 1477 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", 1478 | "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", 1479 | "dev": true, 1480 | "requires": { 1481 | "backo2": "1.0.2", 1482 | "base64-arraybuffer": "0.1.5", 1483 | "component-bind": "1.0.0", 1484 | "component-emitter": "1.2.1", 1485 | "debug": "~4.1.0", 1486 | "engine.io-client": "~3.4.0", 1487 | "has-binary2": "~1.0.2", 1488 | "has-cors": "1.1.0", 1489 | "indexof": "0.0.1", 1490 | "object-component": "0.0.3", 1491 | "parseqs": "0.0.5", 1492 | "parseuri": "0.0.5", 1493 | "socket.io-parser": "~3.3.0", 1494 | "to-array": "0.1.4" 1495 | } 1496 | }, 1497 | "socket.io-parser": { 1498 | "version": "3.3.0", 1499 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", 1500 | "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", 1501 | "dev": true, 1502 | "requires": { 1503 | "component-emitter": "1.2.1", 1504 | "debug": "~3.1.0", 1505 | "isarray": "2.0.1" 1506 | }, 1507 | "dependencies": { 1508 | "debug": { 1509 | "version": "3.1.0", 1510 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1511 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1512 | "dev": true, 1513 | "requires": { 1514 | "ms": "2.0.0" 1515 | } 1516 | }, 1517 | "ms": { 1518 | "version": "2.0.0", 1519 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1520 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1521 | "dev": true 1522 | } 1523 | } 1524 | }, 1525 | "statuses": { 1526 | "version": "1.3.1", 1527 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 1528 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", 1529 | "dev": true 1530 | }, 1531 | "stream-throttle": { 1532 | "version": "0.1.3", 1533 | "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", 1534 | "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", 1535 | "dev": true, 1536 | "requires": { 1537 | "commander": "^2.2.0", 1538 | "limiter": "^1.0.5" 1539 | } 1540 | }, 1541 | "string-width": { 1542 | "version": "3.1.0", 1543 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1544 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1545 | "dev": true, 1546 | "requires": { 1547 | "emoji-regex": "^7.0.1", 1548 | "is-fullwidth-code-point": "^2.0.0", 1549 | "strip-ansi": "^5.1.0" 1550 | }, 1551 | "dependencies": { 1552 | "ansi-regex": { 1553 | "version": "4.1.0", 1554 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1555 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1556 | "dev": true 1557 | }, 1558 | "strip-ansi": { 1559 | "version": "5.2.0", 1560 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1561 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1562 | "dev": true, 1563 | "requires": { 1564 | "ansi-regex": "^4.1.0" 1565 | } 1566 | } 1567 | } 1568 | }, 1569 | "strip-ansi": { 1570 | "version": "3.0.1", 1571 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1572 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1573 | "dev": true, 1574 | "requires": { 1575 | "ansi-regex": "^2.0.0" 1576 | } 1577 | }, 1578 | "supports-color": { 1579 | "version": "2.0.0", 1580 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1581 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1582 | "dev": true 1583 | }, 1584 | "symbol-observable": { 1585 | "version": "1.0.1", 1586 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", 1587 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", 1588 | "dev": true 1589 | }, 1590 | "tfunk": { 1591 | "version": "3.1.0", 1592 | "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", 1593 | "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", 1594 | "dev": true, 1595 | "requires": { 1596 | "chalk": "^1.1.1", 1597 | "object-path": "^0.9.0" 1598 | } 1599 | }, 1600 | "to-array": { 1601 | "version": "0.1.4", 1602 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 1603 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", 1604 | "dev": true 1605 | }, 1606 | "to-regex-range": { 1607 | "version": "5.0.1", 1608 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1609 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1610 | "dev": true, 1611 | "requires": { 1612 | "is-number": "^7.0.0" 1613 | } 1614 | }, 1615 | "toidentifier": { 1616 | "version": "1.0.0", 1617 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1618 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 1619 | "dev": true 1620 | }, 1621 | "ua-parser-js": { 1622 | "version": "0.7.21", 1623 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", 1624 | "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", 1625 | "dev": true 1626 | }, 1627 | "ultron": { 1628 | "version": "1.1.1", 1629 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", 1630 | "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", 1631 | "dev": true 1632 | }, 1633 | "universalify": { 1634 | "version": "0.1.2", 1635 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1636 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 1637 | "dev": true 1638 | }, 1639 | "unpipe": { 1640 | "version": "1.0.0", 1641 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1642 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 1643 | "dev": true 1644 | }, 1645 | "utils-merge": { 1646 | "version": "1.0.1", 1647 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1648 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 1649 | "dev": true 1650 | }, 1651 | "which-module": { 1652 | "version": "2.0.0", 1653 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1654 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1655 | "dev": true 1656 | }, 1657 | "wrap-ansi": { 1658 | "version": "5.1.0", 1659 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1660 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1661 | "dev": true, 1662 | "requires": { 1663 | "ansi-styles": "^3.2.0", 1664 | "string-width": "^3.0.0", 1665 | "strip-ansi": "^5.0.0" 1666 | }, 1667 | "dependencies": { 1668 | "ansi-regex": { 1669 | "version": "4.1.0", 1670 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1671 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1672 | "dev": true 1673 | }, 1674 | "ansi-styles": { 1675 | "version": "3.2.1", 1676 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1677 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1678 | "dev": true, 1679 | "requires": { 1680 | "color-convert": "^1.9.0" 1681 | } 1682 | }, 1683 | "strip-ansi": { 1684 | "version": "5.2.0", 1685 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1686 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1687 | "dev": true, 1688 | "requires": { 1689 | "ansi-regex": "^4.1.0" 1690 | } 1691 | } 1692 | } 1693 | }, 1694 | "ws": { 1695 | "version": "6.1.4", 1696 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", 1697 | "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", 1698 | "dev": true, 1699 | "requires": { 1700 | "async-limiter": "~1.0.0" 1701 | } 1702 | }, 1703 | "xmlhttprequest-ssl": { 1704 | "version": "1.5.5", 1705 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", 1706 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", 1707 | "dev": true 1708 | }, 1709 | "y18n": { 1710 | "version": "4.0.0", 1711 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 1712 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 1713 | "dev": true 1714 | }, 1715 | "yargs": { 1716 | "version": "15.4.1", 1717 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", 1718 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 1719 | "dev": true, 1720 | "requires": { 1721 | "cliui": "^6.0.0", 1722 | "decamelize": "^1.2.0", 1723 | "find-up": "^4.1.0", 1724 | "get-caller-file": "^2.0.1", 1725 | "require-directory": "^2.1.1", 1726 | "require-main-filename": "^2.0.0", 1727 | "set-blocking": "^2.0.0", 1728 | "string-width": "^4.2.0", 1729 | "which-module": "^2.0.0", 1730 | "y18n": "^4.0.0", 1731 | "yargs-parser": "^18.1.2" 1732 | }, 1733 | "dependencies": { 1734 | "ansi-regex": { 1735 | "version": "5.0.0", 1736 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 1737 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 1738 | "dev": true 1739 | }, 1740 | "ansi-styles": { 1741 | "version": "4.2.1", 1742 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 1743 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 1744 | "dev": true, 1745 | "requires": { 1746 | "@types/color-name": "^1.1.1", 1747 | "color-convert": "^2.0.1" 1748 | } 1749 | }, 1750 | "cliui": { 1751 | "version": "6.0.0", 1752 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 1753 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 1754 | "dev": true, 1755 | "requires": { 1756 | "string-width": "^4.2.0", 1757 | "strip-ansi": "^6.0.0", 1758 | "wrap-ansi": "^6.2.0" 1759 | } 1760 | }, 1761 | "color-convert": { 1762 | "version": "2.0.1", 1763 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1764 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1765 | "dev": true, 1766 | "requires": { 1767 | "color-name": "~1.1.4" 1768 | } 1769 | }, 1770 | "color-name": { 1771 | "version": "1.1.4", 1772 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1773 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1774 | "dev": true 1775 | }, 1776 | "emoji-regex": { 1777 | "version": "8.0.0", 1778 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1779 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1780 | "dev": true 1781 | }, 1782 | "find-up": { 1783 | "version": "4.1.0", 1784 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1785 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1786 | "dev": true, 1787 | "requires": { 1788 | "locate-path": "^5.0.0", 1789 | "path-exists": "^4.0.0" 1790 | } 1791 | }, 1792 | "is-fullwidth-code-point": { 1793 | "version": "3.0.0", 1794 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1795 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1796 | "dev": true 1797 | }, 1798 | "locate-path": { 1799 | "version": "5.0.0", 1800 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1801 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1802 | "dev": true, 1803 | "requires": { 1804 | "p-locate": "^4.1.0" 1805 | } 1806 | }, 1807 | "p-locate": { 1808 | "version": "4.1.0", 1809 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1810 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1811 | "dev": true, 1812 | "requires": { 1813 | "p-limit": "^2.2.0" 1814 | } 1815 | }, 1816 | "path-exists": { 1817 | "version": "4.0.0", 1818 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1819 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1820 | "dev": true 1821 | }, 1822 | "string-width": { 1823 | "version": "4.2.0", 1824 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1825 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1826 | "dev": true, 1827 | "requires": { 1828 | "emoji-regex": "^8.0.0", 1829 | "is-fullwidth-code-point": "^3.0.0", 1830 | "strip-ansi": "^6.0.0" 1831 | } 1832 | }, 1833 | "strip-ansi": { 1834 | "version": "6.0.0", 1835 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1836 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1837 | "dev": true, 1838 | "requires": { 1839 | "ansi-regex": "^5.0.0" 1840 | } 1841 | }, 1842 | "wrap-ansi": { 1843 | "version": "6.2.0", 1844 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1845 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1846 | "dev": true, 1847 | "requires": { 1848 | "ansi-styles": "^4.0.0", 1849 | "string-width": "^4.1.0", 1850 | "strip-ansi": "^6.0.0" 1851 | } 1852 | }, 1853 | "yargs-parser": { 1854 | "version": "18.1.3", 1855 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 1856 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 1857 | "dev": true, 1858 | "requires": { 1859 | "camelcase": "^5.0.0", 1860 | "decamelize": "^1.2.0" 1861 | } 1862 | } 1863 | } 1864 | }, 1865 | "yargs-parser": { 1866 | "version": "13.1.2", 1867 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 1868 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 1869 | "dev": true, 1870 | "requires": { 1871 | "camelcase": "^5.0.0", 1872 | "decamelize": "^1.2.0" 1873 | } 1874 | }, 1875 | "yeast": { 1876 | "version": "0.1.2", 1877 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 1878 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", 1879 | "dev": true 1880 | } 1881 | } 1882 | } 1883 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "revealfx", 3 | "version": "0.0.2", 4 | "description": "This is a micro animation library based on anime.js to achieve smooth block reveal effects and has a simple API", 5 | "main": "src/revealFx.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "browser-sync demo -w" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/akhil0001/RevealFx.git" 13 | }, 14 | "keywords": [ 15 | "anime.js", 16 | "animation", 17 | "reveal", 18 | "revealFx", 19 | "javascript" 20 | ], 21 | "author": "Akhil Sai Ram", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/akhil0001/RevealFx/issues" 25 | }, 26 | "homepage": "https://github.com/akhil0001/RevealFx#readme", 27 | "dependencies": { 28 | "animejs": "^3.0.1" 29 | }, 30 | "devDependencies": { 31 | "browser-sync": "^2.26.12" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/revealFx.js: -------------------------------------------------------------------------------- 1 | 2 | ;(function(window) { 3 | 4 | 'use strict'; 5 | 6 | // Helper vars and functions. 7 | function extend(a, b) { 8 | for(var key in b) { 9 | if( b.hasOwnProperty( key ) ) { 10 | a[key] = b[key]; 11 | } 12 | } 13 | return a; 14 | } 15 | 16 | function createDOMEl(type, className,content) { 17 | var el = document.createElement(type); 18 | el.className = className || ''; 19 | el.innerHTML = content || ''; 20 | return el; 21 | } 22 | 23 | function createStyleForDOMEL(el,position,top,left,width,height,color,background,opacity,pointerEvents,zIndex) 24 | { 25 | //this is a helper function for creating the styles for a given element 26 | el.style.position = position || 'absolute'; 27 | el.style.top = top || '0'; 28 | el.style.left = left || '0'; 29 | el.style.color = color || '#fff'; 30 | el.style.width = width || '100%'; 31 | el.style.height = height || '100%'; 32 | el.style.backgroundColor = background || '#f0f0f0'; 33 | el.style.opacity = opacity || '0'; 34 | el.style.pointerEvents = pointerEvents || 'none'; 35 | el.style.zIndex = zIndex || 0; 36 | } 37 | 38 | /** 39 | * RevealFx obj. 40 | */ 41 | function RevealFx(el, options) { 42 | this.el = el; 43 | this.revealLayers = []; 44 | this.options = extend({}, this.options); 45 | extend(this.options, options); 46 | this._init(); 47 | } 48 | 49 | /** 50 | * RevealFx options. 51 | */ 52 | RevealFx.prototype.options = { 53 | // If true, then the content will be hidden until it´s "revealed". 54 | isContentHidden: true, 55 | //number of layers to be displayed 56 | layers:1, 57 | // The animation/reveal settings. This can be set initially or passed when calling the reveal method. 58 | revealSettings: { 59 | // Animation direction: left right (lr) || right left (rl) || top bottom (tb) || bottom top (bt). 60 | direction: 'lr', 61 | // Revealers´s background color Array. 62 | bgColors: ['#111'], 63 | // Animation speed. This is the speed to "cover" and also "uncover" the element (seperately, not the total time). 64 | duration: 500, 65 | // Animation easing. This is the easing to "cover" and also "uncover" the element. 66 | easing: 'easeInOutQuint', 67 | // percentage-based value representing how much of the area should be left covered. 68 | coverArea: 0, 69 | //milliseconds of delay between layers animation thatis used in stagger animation 70 | delay:100, 71 | // Callback for when the revealer is covering the element (halfway through of the whole animation) 72 | onHalfway: function(contentEl, revealerEl) { return false; }, 73 | // Callback for when the animation starts (animation start). 74 | onStart: function(contentEl, revealerEl) { return false; }, 75 | // Callback for when the revealer has completed uncovering (animation end). 76 | onComplete: function(contentEl, revealerEl) { return false; }, 77 | } 78 | }; 79 | 80 | /** 81 | * Init. 82 | */ 83 | RevealFx.prototype._init = function() { 84 | this._layout(); 85 | }; 86 | 87 | /** 88 | * Build the necessary structure. 89 | */ 90 | RevealFx.prototype._layout = function() { 91 | //instead of going with the %s go with the pxs for the better view 92 | //create an array of the selected elements and store it as global 93 | var position = getComputedStyle(this.el).position; 94 | if( position !== 'fixed' && position !== 'absolute' && position !== 'relative' ) { 95 | this.el.style.position = 'relative'; 96 | } 97 | var heightOfEl = 100; 98 | var widthOfEl = 100; 99 | // Content element. 100 | this.content = createDOMEl('div', 'block-revealer__content',this.el.innerHTML); 101 | if( this.options.isContentHidden) { 102 | this.content.style.opacity = 0; 103 | } 104 | this.el.innerHTML = ''; 105 | this.el.appendChild(this.content); 106 | 107 | var topOfRevealerElement=0; 108 | var leftOfRevalerElement=0; 109 | const numberOfLayers = this.options.layers; 110 | var colorOfBlockLayer ='#111'; 111 | for(var i=0;i