kamrify commited on
Commit
a98e9c8
·
1 Parent(s): 7d21098

Refactor demo template

Browse files
config/webpack.config.demo.js CHANGED
@@ -2,6 +2,7 @@ const path = require('path');
2
  const CopyWebpackPlugin = require('copy-webpack-plugin');
3
  const ExtractTextPlugin = require('extract-text-webpack-plugin');
4
  const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
 
5
 
6
  const isProduction = process.env.NODE_ENV === 'production';
7
  const scriptFileName = 'driver-demo.min.js';
@@ -17,7 +18,7 @@ module.exports = {
17
  ],
18
  output: {
19
  path: path.join(__dirname, '/../dist/demo'),
20
- publicPath: '/dist/demo/',
21
  filename: scriptFileName,
22
  libraryTarget: 'umd',
23
  library: 'Driver',
@@ -71,9 +72,12 @@ module.exports = {
71
  canPrint: true,
72
  }),
73
  new CopyWebpackPlugin([
74
- './demo/images/separator.png',
75
- './demo/images/driver.png',
76
  ]),
 
 
 
 
77
  ],
78
  stats: {
79
  colors: true,
 
2
  const CopyWebpackPlugin = require('copy-webpack-plugin');
3
  const ExtractTextPlugin = require('extract-text-webpack-plugin');
4
  const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
5
+ const HtmlWebpackPlugin = require('html-webpack-plugin');
6
 
7
  const isProduction = process.env.NODE_ENV === 'production';
8
  const scriptFileName = 'driver-demo.min.js';
 
18
  ],
19
  output: {
20
  path: path.join(__dirname, '/../dist/demo'),
21
+ publicPath: './',
22
  filename: scriptFileName,
23
  libraryTarget: 'umd',
24
  library: 'Driver',
 
72
  canPrint: true,
73
  }),
74
  new CopyWebpackPlugin([
75
+ { from: './demo/images/', to: 'images' }
 
76
  ]),
77
+ new HtmlWebpackPlugin({
78
+ template: 'demo/index.html',
79
+ favicon: 'demo/images/favicon.png',
80
+ }),
81
  ],
82
  stats: {
83
  colors: true,
demo/images/favicon.png ADDED
index.html → demo/index.html RENAMED
@@ -6,16 +6,14 @@
6
  content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
7
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
8
  <title>Driver</title>
9
- <meta name="description" itemprop="description"
10
- content="A light-weight, no-dependency, vanilla JavaScript library to drive the user's focus across the page"/>
11
- <link rel="stylesheet" href="./dist/demo/driver-demo.min.css">
12
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/monokai.min.css">
13
  </head>
14
  <body>
15
  <div class="page-wrap">
16
  <section class="section__header" id="driver-demo-head">
17
  <h1 class="brand">
18
- <img id="logo_img" src="./dist/demo/driver.png"/>
19
  <span id="name_driver">Driver.js</span>
20
  </h1>
21
  <p class="text-muted tagline">Light-weight, no-dependency, vanilla JavaScript engine to drive user's focus across
@@ -377,11 +375,8 @@ activeElement.getNode(); // Gets the DOM Element behind this element
377
 
378
  <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
379
  <script async defer src="//buttons.github.io/buttons.js"></script>
380
- <script src="//twemoji.maxcdn.com/2/twemoji.min.js?2.5"></script>
381
  <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
382
 
383
- <script src="./dist/demo/driver-demo.min.js"></script>
384
-
385
  <script>
386
  (function (i, s, o, g, r, a, m) {
387
  i['GoogleAnalyticsObject'] = r;
 
6
  content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
7
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
8
  <title>Driver</title>
9
+ <meta name="description" itemprop="description" content="A light-weight, no-dependency, vanilla JavaScript library to drive the user's focus across the page"/>
 
 
10
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/monokai.min.css">
11
  </head>
12
  <body>
13
  <div class="page-wrap">
14
  <section class="section__header" id="driver-demo-head">
15
  <h1 class="brand">
16
+ <img id="logo_img" src="./images/driver.png"/>
17
  <span id="name_driver">Driver.js</span>
18
  </h1>
19
  <p class="text-muted tagline">Light-weight, no-dependency, vanilla JavaScript engine to drive user's focus across
 
375
 
376
  <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
377
  <script async defer src="//buttons.github.io/buttons.js"></script>
 
378
  <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
379
 
 
 
380
  <script>
381
  (function (i, s, o, g, r, a, m) {
382
  i['GoogleAnalyticsObject'] = r;
demo/styles/base.scss CHANGED
@@ -61,7 +61,7 @@ hr, .hr {
61
  height: 1px;
62
 
63
  &.hr__fancy {
64
- background: url("./separator.png") repeat-y;
65
  height: 5px;
66
  background-size: cover;
67
  }
 
61
  height: 1px;
62
 
63
  &.hr__fancy {
64
+ background: url("./images/separator.png") repeat-y;
65
  height: 5px;
66
  background-size: cover;
67
  }
dist/demo/driver-demo.min.css CHANGED
@@ -1 +1 @@
1
- *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0}*,:after,:before{box-sizing:border-box}body,html{position:relative;margin:0;width:100%;height:100%}body{padding-top:1px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.4;color:#fff;background-color:#2e2e30;overflow-x:hidden}label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;cursor:pointer}p{margin-top:0;margin-bottom:20px;line-height:1.5}.hr,hr{display:block;margin:30px 0;border:0;border-bottom:1px solid #eaeaea;height:1px}.hr.hr__fancy,hr.hr__fancy{background:url(separator.png) repeat-y;height:5px;background-size:cover}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:12px;font-weight:700;line-height:1.2}a,a:focus,a:visited{color:#fff;text-decoration:none;font-weight:600}.form-control{display:block;width:100%;background-color:#f9f9f9;padding:12px;border:1px solid #ddd;border-radius:2.5px;font-size:14px;-webkit-appearance:none;appearance:none;outline:none;margin-bottom:24px}.h1,h1{font-size:32px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:18px}.h5,h5{font-size:16px}.h6,h6{font-size:14px}ol li,ul li{list-style-type:none;line-height:1.5;margin-bottom:3px}blockquote{background:#f5f3f1;padding:10px;margin-bottom:35px;border-radius:10px}.top-20{margin-top:20px}.top-30{margin-top:30px}.zero-bottom{margin-bottom:0}.zero-top{margin-top:0}.text-center{text-align:center}div#driver-popover-item{display:none;position:absolute;background:#fff;color:#2d2d2d;margin:0;padding:15px;border-radius:5px;min-width:250px;max-width:300px;box-shadow:0 1px 10px rgba(0,0,0,.4);z-index:1000000000}div#driver-popover-item .driver-popover-tip{border:5px solid #fff;content:"";position:absolute}div#driver-popover-item .driver-popover-tip.bottom{bottom:-10px;border-color:#fff transparent transparent}div#driver-popover-item .driver-popover-tip.bottom.position-center{left:49%}div#driver-popover-item .driver-popover-tip.bottom.position-right{right:20px}div#driver-popover-item .driver-popover-tip.left{left:-10px;top:10px;border-color:transparent #fff transparent transparent}div#driver-popover-item .driver-popover-tip.left.position-center{top:46%}div#driver-popover-item .driver-popover-tip.left.position-bottom{top:auto;bottom:20px}div#driver-popover-item .driver-popover-tip.right{right:-10px;top:10px;border-color:transparent transparent transparent #fff}div#driver-popover-item .driver-popover-tip.right.position-center{top:46%}div#driver-popover-item .driver-popover-tip.right.position-bottom{top:auto;bottom:20px}div#driver-popover-item .driver-popover-tip.top{top:-10px;border-color:transparent transparent #fff}div#driver-popover-item .driver-popover-tip.top.position-center{left:49%}div#driver-popover-item .driver-popover-tip.top.position-right{right:20px}div#driver-popover-item .driver-popover-footer{display:block;clear:both;margin-top:5px}div#driver-popover-item .driver-popover-footer button{display:inline-block;padding:3px 10px;border:1px solid #d4d4d4;text-decoration:none;text-shadow:1px 1px 0 #fff;color:#2d2d2d;font:11px/normal sans-serif;cursor:pointer;outline:0;background-color:#f1f1f1;border-radius:2px;zoom:1;margin:10px 0 0;line-height:1.3}div#driver-popover-item .driver-popover-footer button.driver-disabled{color:grey;cursor:default;pointer-events:none}div#driver-popover-item .driver-popover-footer .driver-close-btn{float:left}div#driver-popover-item .driver-popover-footer .driver-btn-group{float:right}div#driver-popover-item .driver-popover-title{font:19px/normal sans-serif;margin:0 0 5px;font-weight:700;display:block;position:relative;line-height:1.5;zoom:1}div#driver-popover-item .driver-popover-description{margin-bottom:0;font:14px/normal sans-serif;line-height:1.5;color:#2d2d2d;font-weight:400;zoom:1}.driver-stage-no-animation{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important;background:transparent!important;outline:5000px solid rgba(0,0,0,.75)}div#driver-page-overlay{background:#000;position:fixed;bottom:0;right:0;display:block;width:100%;height:100%;zoom:1;filter:alpha(opacity=75);opacity:.75;z-index:100002!important}div#driver-highlighted-element-stage,div#driver-page-overlay{top:0;left:0;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s}div#driver-highlighted-element-stage{position:absolute;height:50px;width:300px;background:#fff;z-index:100003!important;display:none;border-radius:2px}.driver-highlighted-element{z-index:100004!important}.driver-position-relative{position:relative!important}.driver-fix-stacking{z-index:auto!important;opacity:1!important;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;transform:none!important;-webkit-filter:none!important;-moz-filter:none!important;-ms-filter:none!important;-o-filter:none!important;filter:none!important;-webkit-perspective:none!important;-moz-perspective:none!important;-ms-perspective:none!important;-o-perspective:none!important;perspective:none!important;-webkit-transform-style:flat!important;-moz-transform-style:flat!important;-ms-transform-style:flat!important;transform-style:flat!important;-webkit-transform-box:border-box!important;-moz-transform-box:border-box!important;-ms-transform-box:border-box!important;-o-transform-box:border-box!important;transform-box:border-box!important;will-change:unset!important}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.brand,.brand img{position:relative}.brand img{height:67px;top:10px}.page-wrap{max-width:550px;margin:50px auto;background:#fff;padding:10px 30px;border-radius:5px;color:#1f1f1f}.page-wrap a,.page-wrap a:focus,.page-wrap a:visited{color:#1f1f1f;text-decoration:underline}.page-wrap a.btn__dark{text-decoration:none;color:#fff;background-color:#f44336;padding:0 18px;height:40px;line-height:40px;border-radius:8px;cursor:pointer;transition:background-color .2s,color .2s;font-weight:500;width:195px;font-size:17px;display:inline-block;margin-top:2px}.page-wrap a.btn__run-demo{text-decoration:none;background:#f54336;padding:5px;border-radius:20px;color:#fff;display:block;margin:15px 0 10px;text-align:center}section{margin-bottom:30px}.section__header{margin:10px 0 20px;text-align:center;display:block;padding:10px}.section__header h1{font-size:55px}.section__header h1 .emoji{font-size:45px;top:-4px;margin-right:3px;position:relative}.section__header .tagline{max-width:450px;margin:0 auto 25px;text-align:center}.section__examples .section__example{margin-bottom:20px}.section__examples #creation-input{margin-top:20px}.section__examples input{padding:10px;background-color:#fafbfc;border:3px solid #e1e4e8;border-radius:3px;box-shadow:inset 0 0 10px rgba(27,31,35,.05);margin-bottom:0;margin-top:7px}.position-btns a{text-decoration:none;font-size:13px;padding:10px 15px;background:#f54336;color:#fff!important;border-radius:6px}
 
1
+ *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0}*,:after,:before{box-sizing:border-box}body,html{position:relative;margin:0;width:100%;height:100%}body{padding-top:1px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.4;color:#fff;background-color:#2e2e30;overflow-x:hidden}label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;cursor:pointer}p{margin-top:0;margin-bottom:20px;line-height:1.5}.hr,hr{display:block;margin:30px 0;border:0;border-bottom:1px solid #eaeaea;height:1px}.hr.hr__fancy,hr.hr__fancy{background:url(images/separator.png) repeat-y;height:5px;background-size:cover}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:12px;font-weight:700;line-height:1.2}a,a:focus,a:visited{color:#fff;text-decoration:none;font-weight:600}.form-control{display:block;width:100%;background-color:#f9f9f9;padding:12px;border:1px solid #ddd;border-radius:2.5px;font-size:14px;-webkit-appearance:none;appearance:none;outline:none;margin-bottom:24px}.h1,h1{font-size:32px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:18px}.h5,h5{font-size:16px}.h6,h6{font-size:14px}ol li,ul li{list-style-type:none;line-height:1.5;margin-bottom:3px}blockquote{background:#f5f3f1;padding:10px;margin-bottom:35px;border-radius:10px}.top-20{margin-top:20px}.top-30{margin-top:30px}.zero-bottom{margin-bottom:0}.zero-top{margin-top:0}.text-center{text-align:center}div#driver-popover-item{display:none;position:absolute;background:#fff;color:#2d2d2d;margin:0;padding:15px;border-radius:5px;min-width:250px;max-width:300px;box-shadow:0 1px 10px rgba(0,0,0,.4);z-index:1000000000}div#driver-popover-item .driver-popover-tip{border:5px solid #fff;content:"";position:absolute}div#driver-popover-item .driver-popover-tip.bottom{bottom:-10px;border-color:#fff transparent transparent}div#driver-popover-item .driver-popover-tip.bottom.position-center{left:49%}div#driver-popover-item .driver-popover-tip.bottom.position-right{right:20px}div#driver-popover-item .driver-popover-tip.left{left:-10px;top:10px;border-color:transparent #fff transparent transparent}div#driver-popover-item .driver-popover-tip.left.position-center{top:46%}div#driver-popover-item .driver-popover-tip.left.position-bottom{top:auto;bottom:20px}div#driver-popover-item .driver-popover-tip.right{right:-10px;top:10px;border-color:transparent transparent transparent #fff}div#driver-popover-item .driver-popover-tip.right.position-center{top:46%}div#driver-popover-item .driver-popover-tip.right.position-bottom{top:auto;bottom:20px}div#driver-popover-item .driver-popover-tip.top{top:-10px;border-color:transparent transparent #fff}div#driver-popover-item .driver-popover-tip.top.position-center{left:49%}div#driver-popover-item .driver-popover-tip.top.position-right{right:20px}div#driver-popover-item .driver-popover-footer{display:block;clear:both;margin-top:5px}div#driver-popover-item .driver-popover-footer button{display:inline-block;padding:3px 10px;border:1px solid #d4d4d4;text-decoration:none;text-shadow:1px 1px 0 #fff;color:#2d2d2d;font:11px/normal sans-serif;cursor:pointer;outline:0;background-color:#f1f1f1;border-radius:2px;zoom:1;margin:10px 0 0;line-height:1.3}div#driver-popover-item .driver-popover-footer button.driver-disabled{color:grey;cursor:default;pointer-events:none}div#driver-popover-item .driver-popover-footer .driver-close-btn{float:left}div#driver-popover-item .driver-popover-footer .driver-btn-group{float:right}div#driver-popover-item .driver-popover-title{font:19px/normal sans-serif;margin:0 0 5px;font-weight:700;display:block;position:relative;line-height:1.5;zoom:1}div#driver-popover-item .driver-popover-description{margin-bottom:0;font:14px/normal sans-serif;line-height:1.5;color:#2d2d2d;font-weight:400;zoom:1}.driver-stage-no-animation{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important;background:transparent!important;outline:5000px solid rgba(0,0,0,.75)}div#driver-page-overlay{background:#000;position:fixed;bottom:0;right:0;display:block;width:100%;height:100%;zoom:1;filter:alpha(opacity=75);opacity:.75;z-index:100002!important}div#driver-highlighted-element-stage,div#driver-page-overlay{top:0;left:0;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s}div#driver-highlighted-element-stage{position:absolute;height:50px;width:300px;background:#fff;z-index:100003!important;display:none;border-radius:2px}.driver-highlighted-element{z-index:100004!important}.driver-position-relative{position:relative!important}.driver-fix-stacking{z-index:auto!important;opacity:1!important;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;transform:none!important;-webkit-filter:none!important;-moz-filter:none!important;-ms-filter:none!important;-o-filter:none!important;filter:none!important;-webkit-perspective:none!important;-moz-perspective:none!important;-ms-perspective:none!important;-o-perspective:none!important;perspective:none!important;-webkit-transform-style:flat!important;-moz-transform-style:flat!important;-ms-transform-style:flat!important;transform-style:flat!important;-webkit-transform-box:border-box!important;-moz-transform-box:border-box!important;-ms-transform-box:border-box!important;-o-transform-box:border-box!important;transform-box:border-box!important;will-change:unset!important}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.brand,.brand img{position:relative}.brand img{height:67px;top:10px}.page-wrap{max-width:550px;margin:50px auto;background:#fff;padding:10px 30px;border-radius:5px;color:#1f1f1f}.page-wrap a,.page-wrap a:focus,.page-wrap a:visited{color:#1f1f1f;text-decoration:underline}.page-wrap a.btn__dark{text-decoration:none;color:#fff;background-color:#f44336;padding:0 18px;height:40px;line-height:40px;border-radius:8px;cursor:pointer;transition:background-color .2s,color .2s;font-weight:500;width:195px;font-size:17px;display:inline-block;margin-top:2px}.page-wrap a.btn__run-demo{text-decoration:none;background:#f54336;padding:5px;border-radius:20px;color:#fff;display:block;margin:15px 0 10px;text-align:center}section{margin-bottom:30px}.section__header{margin:10px 0 20px;text-align:center;display:block;padding:10px}.section__header h1{font-size:55px}.section__header h1 .emoji{font-size:45px;top:-4px;margin-right:3px;position:relative}.section__header .tagline{max-width:450px;margin:0 auto 25px;text-align:center}.section__examples .section__example{margin-bottom:20px}.section__examples #creation-input{margin-top:20px}.section__examples input{padding:10px;background-color:#fafbfc;border:3px solid #e1e4e8;border-radius:3px;box-shadow:inset 0 0 10px rgba(27,31,35,.05);margin-bottom:0;margin-top:7px}.position-btns a{text-decoration:none;font-size:13px;padding:10px 15px;background:#f54336;color:#fff!important;border-radius:6px}
dist/demo/driver-demo.min.js CHANGED
The diff for this file is too large to render. See raw diff
 
dist/demo/favicon.png ADDED
dist/demo/images/browserstack.png ADDED
dist/demo/{driver.png → images/driver.png} RENAMED
File without changes
dist/demo/images/driver.svg ADDED
dist/demo/images/favicon.png ADDED
dist/demo/{separator.png → images/separator.png} RENAMED
File without changes
dist/demo/images/split.png ADDED
dist/demo/index.html ADDED
@@ -0,0 +1,396 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport"
6
+ content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
7
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
8
+ <title>Driver</title>
9
+ <meta name="description" itemprop="description" content="A light-weight, no-dependency, vanilla JavaScript library to drive the user's focus across the page"/>
10
+ <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/monokai.min.css">
11
+ <link rel="shortcut icon" href="./favicon.png"><link href="./driver-demo.min.css" rel="stylesheet"></head>
12
+ <body>
13
+ <div class="page-wrap">
14
+ <section class="section__header" id="driver-demo-head">
15
+ <h1 class="brand">
16
+ <img id="logo_img" src="./images/driver.png"/>
17
+ <span id="name_driver">Driver.js</span>
18
+ </h1>
19
+ <p class="text-muted tagline">Light-weight, no-dependency, vanilla JavaScript engine to drive user's focus across
20
+ the
21
+ page</p>
22
+
23
+ <a id="animated-tour" href="javascript:void(0)" class="btn btn__example btn__dark">With Animation</a>
24
+ <a id="boring-tour" href="javascript:void(0)" class="btn btn__example btn__dark">Without Animation</a>
25
+
26
+ <div class="github-button top-30">
27
+ <!-- Place this tag where you want the button to render. -->
28
+ <a class="github-button" href="https://github.com/kamranahmedse/driver.js" data-size="large"
29
+ data-show-count="true" aria-label="Star kamranahmedse/driver.js on GitHub">Star</a>
30
+ </div>
31
+
32
+ </section>
33
+
34
+ <blockquote>
35
+ <p>A lightweight (~4kb gzipped) yet powerful JavaScript engine that helps you drive the user's focus on page.</p>
36
+ <p class="zero-bottom">Some sample use-cases can be creating powerful feature introductions, call-to-action
37
+ components, focus shifters etc.</p>
38
+ </blockquote>
39
+
40
+ <section class="section__purpose">
41
+ <h3>What are the features?</h3>
42
+ <p>Driver is compatible with all the major browsers and can be used for any of your overlay needs. Feature
43
+ introductions, focus shifters, call-to-action are just a few examples.</p>
44
+ <ul>
45
+ <li id="highlight_feature">🔆 <strong>Highlight</strong> any (literally any) item on page</li>
46
+ <li id="interactions_feature">✋ <strong>Block user interactions</strong></li>
47
+ <li id="feature_introductions_feature">📣 Create <strong>feature introductions</strong></li>
48
+ <li id="focus_shifters_feature">👓 Add <strong>focus shifters</strong> for users</li>
49
+ <li id="customizable_feature">🛠️ Highly customizable – <strong>Use it anywhere</strong> for overlay</li>
50
+ <li id="keyboard_feature">⌨️ User Friendly – <strong>Controllable by keys</strong></li>
51
+ <li id="free_use_feature">🆓 <strong>MIT Licensed</strong> – Free for personal and commercial use</li>
52
+ <li id="lightweight_feature">🕊️ Lightweight – Only <strong>~4kb</strong> when gzipped</li>
53
+ <li id="major_browsers_feature">🌀 <strong>Consistent behavior</strong> across all major browsers</li>
54
+ </ul>
55
+ </section>
56
+ <hr class="hr__fancy">
57
+ <section class="section__how">
58
+ <h3>How does it do that?</h3>
59
+ <p>In it simplest, it puts the canvas on top of the whole page and then cuts the part that is over the element to be
60
+ highlighted and provides you several hooks when highlighting, highlighted or un-highlighting elements making it
61
+ highly customizable.</p>
62
+ </section>
63
+ <hr class="hr__fancy">
64
+ <section class="section__examples">
65
+ <div id="examples_section">
66
+ <h3>Can you show some Examples?</h3>
67
+ <p>Below you find some of the examples and sample use-cases on how you can use it. Run by clicking the
68
+ <code>RUN</code> button.</p>
69
+ </div>
70
+ <div id="single-element-no-popover" class="section__example">
71
+ <h4>Highlighting a Single Element – Without Popover</h4>
72
+ <p class="zero-bottom">If all you want is just highlight a single element, you can do that simply by passing the
73
+ selector</p>
74
+ <a href="#" class="btn__run-demo" id="run-single-element-no-popover">Show Demo</a>
75
+ <pre><code class="javascript">const driver = new Driver();
76
+ driver.highlight('#create-post');
77
+ </code></pre>
78
+ </div>
79
+
80
+ <hr class="hr__fancy">
81
+
82
+ <div class="section__example">
83
+ <p>A <strong>real world use-case</strong> for this could be highlighting an element when user is interacting with
84
+ it</p>
85
+ <pre><code class="javascript">const focusDriver = new Driver();
86
+
87
+ // Highlight the section on focus
88
+ document.getElementById('creation-input')
89
+ .addEventListener('focus', (e) => {
90
+ focusDriver.focus('#creation-input');
91
+ });
92
+ </code></pre>
93
+ <p class="top-20">Focus any of the inputs and see how it moves the highlight from one element to the other</p>
94
+ <div id="creation-forms">
95
+ <input type="text" id="creation-input" class="form-control" placeholder="Focus any of the inputs">
96
+ <input type="text" id="creation-input-2" class="form-control" placeholder="Focus any of the inputs">
97
+ <input type="text" id="creation-input-3" class="form-control" placeholder="Focus any of the inputs">
98
+ <input type="text" id="creation-input-4" class="form-control" placeholder="Focus any of the inputs">
99
+ </div>
100
+ </div>
101
+
102
+ <p>You can also turn off the animation or set the padding around the corner. More on it later.</p>
103
+
104
+ <hr class="hr__fancy">
105
+
106
+ <div id="single-element-with-popover" class="section__example">
107
+ <h4>Highlighting a Single Element – With Popover</h4>
108
+ <p>If you would like to show some details alongside the highlighted element, you can do that easily by specifying
109
+ title and description</p>
110
+ <a href="#" class="btn__run-demo" id="run-single-element-with-popover">Show Demo</a>
111
+ <pre><code class="javascript">const driver = new Driver();
112
+ driver.highlight({
113
+ element: '#some-element',
114
+ popover: {
115
+ title: 'Title for the Popover',
116
+ description: 'Description for it',
117
+ }
118
+ });
119
+ </code></pre>
120
+ <p class="top-20">You can modify the behavior of this popover also by a certain set of options. More on it
121
+ below.</p>
122
+ </div>
123
+
124
+ <hr class="hr__fancy">
125
+
126
+ <div id="single-element-with-popover-position" class="section__example">
127
+ <h4>Popover Positioning</h4>
128
+ <p>You can also, change the position of the popover to be either <code>left</code>, <code>left-center</code>, <code>left-bottom</code>, <code>top</code>, <code>top-center</code>, <code>top-right</code>,
129
+ <code>right</code>, <code>right-center</code>, <code>right-bottom</code> or <code>bottom</code>, <code>bottom-center</code>, <code>bottom-right</code>.</p>
130
+ <a href="#" class="btn__run-demo" id="run-single-element-with-popover-position">Show Demo</a>
131
+ <pre><code class="javascript">const driver = new Driver();
132
+ driver.highlight({
133
+ element: '#some-element',
134
+ popover: {
135
+ title: 'Title for the Popover',
136
+ description: 'Description for it',
137
+ // position can be left, left-center, left-bottom, top,
138
+ // top-center, top-right, right, right-center, right-bottom,
139
+ // bottom, bottom-center, bottom-right
140
+ position: 'left',
141
+ }
142
+ });
143
+ </code></pre>
144
+ </div>
145
+ <div class="section__example">
146
+ <div class="top-20 position-btns">
147
+ <a href="#" id="position-btn-left">On my Left</a>
148
+ <a href="#" id="position-btn-top">On my Top</a>
149
+ <a href="#" id="position-btn-bottom">On my Bottom</a>
150
+ <a href="#" id="position-btn-right">On my Right</a>
151
+ </div>
152
+ <p class="top-20">If you don't specify the position or specify it to be <code>auto</code>, it will automatically
153
+ find the suitable position for the popover and show it</p>
154
+ </div>
155
+ <hr class="hr__fancy">
156
+ <div id="single-element-with-popover-html" class="section__example">
157
+ <h4>HTML in Popovers</h4>
158
+ <p>You can also specify HTML in the body or the title of the popovers. Here is an example:</p>
159
+ <a href="#" class="btn__run-demo" id="run-single-element-with-popover-html">Show Demo</a>
160
+ <pre><code class="javascript">const driver = new Driver();
161
+ driver.highlight({
162
+ element: '#some-element',
163
+ popover: {
164
+ title: '&lt;em&gt;An italicized title&lt;/em&gt;',
165
+ description: 'Description may also contain &lt;strong&gt;HTML&lt;/strong&gt;'
166
+ }
167
+ });
168
+ </code></pre>
169
+ </div>
170
+
171
+ <p class="top-20">And of course it can be any valid HTML.</p>
172
+
173
+ <hr class="hr__fancy">
174
+ <div id="single-element-no-close" class="section__example">
175
+ <h4>Disable Close on Outside Click</h4>
176
+ <p>By default, driver.js gets reset if user clicks outside the highlighted element, you can disable this:</p>
177
+ <a href="#" class="btn__run-demo" id="run-single-element-no-close">Show Demo</a>
178
+ <pre><code class="javascript">const driver = new Driver({
179
+ allowClose: false,
180
+ });
181
+
182
+ driver.highlight({
183
+ element: '#some-element',
184
+ popover: {
185
+ title: '&lt;em&gt;An italicized title&lt;/em&gt;',
186
+ description: 'Description may also contain &lt;strong&gt;HTML&lt;/strong&gt;'
187
+ }
188
+ });
189
+ </code></pre>
190
+ <p class="top-20">
191
+ If you use this option, for multi-step driver, it would close after you are done with the popover or you can close it programmatically. For single element popover, you need to close it properly, otherwise it won't be closed
192
+ </p>
193
+ <pre><code class="javascript">driver.reset()</code>
194
+ </div>
195
+
196
+ <hr class="hr__fancy">
197
+ <div id="third-element-introduction" class="section__example">
198
+ <h4 id="first-element-introduction">Creating Feature Introductions</h4>
199
+ <p id="second-para-feature-introductions">You can also make powerful feature introductions to guide the users
200
+ about the features. Just provide an array of steps where each step specifies an element to highlight.</p>
201
+ <p id="third-para-feature-introductions">Below is just a quick example showing you how to combine the steps in
202
+ introduction.</p>
203
+ <a href="#" class="btn__run-demo" id="run-multi-element-popovers">Show Demo</a>
204
+ </div>
205
+ <pre><code class="javascript">const driver = new Driver();
206
+ // Define the steps for introduction
207
+ driver.defineSteps([
208
+ {
209
+ element: '#first-element-introduction',
210
+ popover: {
211
+ title: 'Title on Popover',
212
+ description: 'Body of the popover',
213
+ position: 'left'
214
+ }
215
+ },
216
+ {
217
+ element: '#second-element-introduction',
218
+ popover: {
219
+ title: 'Title on Popover',
220
+ description: 'Body of the popover',
221
+ position: 'top'
222
+ }
223
+ },
224
+ {
225
+ element: '#third-element-introduction',
226
+ popover: {
227
+ title: 'Title on Popover',
228
+ description: 'Body of the popover',
229
+ position: 'right'
230
+ }
231
+ },
232
+ ]);
233
+ // Start the introduction
234
+ driver.start();
235
+ </code></pre>
236
+ <p class="top-20">This is just a quick example for the feature introduction. For a richer one, please have a look at
237
+ the
238
+ <a href="#" class="btn__example">"Quick Tour"</a></p>
239
+
240
+ <p>You may also turn off the footer buttons in popover, in which case user can control the popover using the arrows
241
+ keys on keyboard. Or you may control it using the methods provided by Driver.</p>
242
+
243
+ <hr class="hr__fancy">
244
+
245
+ <div id="element-without-popover" class="section__example">
246
+ <h4>Without Overlay</h4>
247
+ <p>You can create feature introductions and do everything listed above without overlays also. All you have to do
248
+ is just set the opacity to `0`.</p>
249
+ <a href="#" class="btn__run-demo" id="run-element-without-popover">Show Demo</a>
250
+ <pre><code class="javascript">const driver = new Driver({
251
+ opacity: 0,
252
+ });
253
+
254
+ driver.highlight({
255
+ element: '#run-element-without-popover',
256
+ popover: {
257
+ title: 'Title for the Popover',
258
+ description: 'Description for it',
259
+ position: 'top', // can be `top`, `left`, `right`, `bottom`
260
+ }
261
+ });
262
+ </code></pre>
263
+ <p class="top-20">..and you can do the same for the feature introductions</p>
264
+ </div>
265
+
266
+ <hr class="hr__fancy">
267
+
268
+ <div class="section__example">
269
+ <div id="api_section">
270
+ <h3>..and much much more</h3>
271
+ <p>Driver comes with many options that you can manipulate to make driver behave as you may like</p>
272
+ </div>
273
+ <h4>Driver Definition</h4>
274
+ <p>Here are the options that Driver understands</p>
275
+ <pre><code class="javascript">const driver = new Driver({
276
+ animate: true, // Animate while changing highlighted element
277
+ opacity: 0.75, // Background opacity (0 means only popovers and without overlay)
278
+ padding: 10, // Distance of element from around the edges
279
+ allowClose: true, // Whether clicking on overlay should close or not
280
+ overlayClickNext: false, // Should it move to next step on overlay click
281
+ doneBtnText: 'Done', // Text on the final button
282
+ closeBtnText: 'Close', // Text on the close button for this step
283
+ nextBtnText: 'Next', // Next button text for this step
284
+ prevBtnText: 'Previous', // Previous button text for this step
285
+ showButtons: false, // Do not show control buttons in footer
286
+ keyboardControl: true, // Allow controlling through keyboard (escape to close, arrow keys to move)
287
+ scrollIntoViewOptions: {}, // We use `scrollIntoView()` when possible, pass here the options for it if you want any
288
+ onHighlightStarted: (Element) {}, // Called when element is about to be highlighted
289
+ onHighlighted: (Element) {}, // Called when element is fully highlighted
290
+ onDeselected: (Element) {}, // Called when element has been deselected
291
+ onReset: (Element) {}, // Called when overlay is about to be cleared
292
+ onNext: (Element) => {}, // Called when moving to next step on any step
293
+ onPrevious: (Element) => {}, // Called when moving to next step on any step
294
+ });
295
+ </code></pre>
296
+ </div>
297
+ <p class="top-20">Note that all the button options that you provide in the driver definition can be overridden for a
298
+ specific step by giving them in the step definition</p>
299
+ <div class="section__example">
300
+ <h4>Step Definition</h4>
301
+ <p>Here are the set of options that you can pass in each step i.e. an item in array of steps or the object that
302
+ you pass to <code>highlight</code> method</p>
303
+ <pre><code class="javascript">const stepDefinition = {
304
+ element: '#some-item', // Query selector string or Node to be highlighted
305
+ popover: { // There will be no popover if empty or not given
306
+ title: 'Title', // Title on the popover
307
+ description: 'Description', // Body of the popover
308
+ showButtons: false, // Do not show control buttons in footer
309
+ closeBtnText: 'Close', // Text on the close button for this step
310
+ nextBtnText: 'Next', // Next button text for this step
311
+ prevBtnText: 'Previous', // Previous button text for this step
312
+ }
313
+ };
314
+ </code></pre>
315
+ </div>
316
+ <div class="section__example">
317
+ <h4>API Methods</h4>
318
+ <p>Below are the set of methods that are available to you</p>
319
+ <pre><code class="javascript">const driver = new Driver(driverOptions);
320
+
321
+ const isActivated = driver.isActivated; // Checks if the driver is active or not
322
+ driver.moveNext(); // Moves to next step in the steps list
323
+ driver.movePrevious(); // Moves to previous step in the steps list
324
+ driver.start(stepNumber = 0); // Starts driving through the defined steps
325
+ driver.highlight(string|stepDefinition); // highlights the element using query selector or the step definition
326
+ driver.reset(); // Resets the overlay and clears the screen
327
+ driver.hasHighlightedElement(); // Checks if there is any highlighted element
328
+ driver.hasNextStep(); // Checks if there is next step to move to
329
+ driver.hasPreviousStep(); // Checks if there is previous step to move to
330
+
331
+ // Prevents the current move. Useful in `onNext` or `onPrevious` if you want to
332
+ // perform some asynchronous task and manually move to next step
333
+ driver.preventMove();
334
+
335
+ // Gets the currently highlighted element on screen
336
+ const activeElement = driver.getHighlightedElement();
337
+ const lastActiveElement = driver.getLastHighlightedElement();
338
+ activeElement.getCalculatedPosition(); // Gets screen co-ordinates of the active element
339
+ activeElement.hidePopover(); // Hide the popover
340
+ activeElement.showPopover(); // Show the popover
341
+
342
+ activeElement.getNode(); // Gets the DOM Element behind this element
343
+ </code></pre>
344
+ </div>
345
+ <p class="top-20">You can use a variety of options to achieve whatever you may want. I have some plans on improving
346
+ it further, make sure to keep an eye on the <a href="https://github.com/kamranahmedse/driver.js" target="_blank">GitHub
347
+ page</a></p>
348
+ </section>
349
+ <hr class="hr__fancy">
350
+ <div class="section__example">
351
+ <h4>Contributing</h4>
352
+ <p>You can find the contribution instructions on the <a href="https://github.com/kamranahmedse/driver.js"
353
+ target="_blank">GitHub page</a>. Feel free to submit an
354
+ issue, create a pull request or spread the word</p>
355
+ </div>
356
+ <hr class="hr__fancy">
357
+ <div class="section__example">
358
+ <p>A product by <a href="http://twitter.com/kamranahmedse" target="_blank">Kamran</a> produced out of boredom and
359
+ frustration after he gave up on trying to find a perfect solution to integrate journey introduction
360
+ and overlays.</p>
361
+ <a href="https://twitter.com/kamranahmedse?ref_src=twsrc%5Etfw"
362
+ class="twitter-follow-button mr-3"
363
+ data-show-screen-name="false"
364
+ data-size="large"
365
+ target="_blank"
366
+ data-show-count="true">Follow @kamranahmedse</a>
367
+
368
+ <a class="github-button" href="https://github.com/kamranahmedse"
369
+ data-size="large"
370
+ target="_blank"
371
+ data-show-count="true"
372
+ aria-label="Follow @kamranahmedse on GitHub">Follow</a>
373
+ </div>
374
+ </div>
375
+
376
+ <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
377
+ <script async defer src="//buttons.github.io/buttons.js"></script>
378
+ <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
379
+
380
+ <script>
381
+ (function (i, s, o, g, r, a, m) {
382
+ i['GoogleAnalyticsObject'] = r;
383
+ i[r] = i[r] || function () {
384
+ (i[r].q = i[r].q || []).push(arguments);
385
+ }, i[r].l = 1 * new Date();
386
+ a = s.createElement(o),
387
+ m = s.getElementsByTagName(o)[0];
388
+ a.async = 1;
389
+ a.src = g;
390
+ m.parentNode.insertBefore(a, m);
391
+ })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
392
+ ga('create', 'UA-58155965-1', 'auto');
393
+ ga('send', 'pageview');
394
+ </script>
395
+ <script type="text/javascript" src="./driver-demo.min.js"></script></body>
396
+ </html>
dist/driver.min.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.min.css","sources":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","sourceRoot":""}
 
 
package.json CHANGED
@@ -8,7 +8,7 @@
8
  "start": "node server.js",
9
  "build-demo": "NODE_ENV=production webpack --config config/webpack.config.demo.js",
10
  "build": "webpack --config config/webpack.config.prod.js",
11
- "deploy-demo": "gh-pages -d dist/demo"
12
  },
13
  "bugs": {
14
  "url": "https://github.com/kamranahmedse/driver.js/issues"
@@ -36,6 +36,7 @@
36
  "extract-text-webpack-plugin": "next",
37
  "file-loader": "^2.0.0",
38
  "gh-pages": "^2.0.1",
 
39
  "node-sass": "^4.7.2",
40
  "opn": "^5.2.0",
41
  "optimize-css-assets-webpack-plugin": "^5.0.1",
 
8
  "start": "node server.js",
9
  "build-demo": "NODE_ENV=production webpack --config config/webpack.config.demo.js",
10
  "build": "webpack --config config/webpack.config.prod.js",
11
+ "deploy-demo": "NODE_DEBUG=gh-pages gh-pages -d dist/demo"
12
  },
13
  "bugs": {
14
  "url": "https://github.com/kamranahmedse/driver.js/issues"
 
36
  "extract-text-webpack-plugin": "next",
37
  "file-loader": "^2.0.0",
38
  "gh-pages": "^2.0.1",
39
+ "html-webpack-plugin": "^3.2.0",
40
  "node-sass": "^4.7.2",
41
  "opn": "^5.2.0",
42
  "optimize-css-assets-webpack-plugin": "^5.0.1",
server.js CHANGED
@@ -6,7 +6,7 @@ const config = require('./config/webpack.config.demo');
6
 
7
  const PORT = 3000;
8
  const HOST = 'localhost';
9
- const URL = `http://${HOST}:${PORT}`;
10
 
11
  new WebpackDevServer(webpack(config), {
12
  publicPath: config.output.publicPath,
 
6
 
7
  const PORT = 3000;
8
  const HOST = 'localhost';
9
+ const URL = `http://${HOST}:${PORT}/dist/demo`;
10
 
11
  new WebpackDevServer(webpack(config), {
12
  publicPath: config.output.publicPath,
yarn.lock CHANGED
@@ -1354,6 +1354,14 @@ callsites@^0.2.0:
1354
  resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
1355
  integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
1356
 
 
 
 
 
 
 
 
 
1357
  camelcase-keys@^2.0.0:
1358
  version "2.1.0"
1359
  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -1482,6 +1490,13 @@ class-utils@^0.3.5:
1482
  isobject "^3.0.0"
1483
  static-extend "^0.1.1"
1484
 
 
 
 
 
 
 
 
1485
  cli-cursor@^2.1.0:
1486
  version "2.1.0"
1487
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -1604,6 +1619,11 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
1604
  dependencies:
1605
  delayed-stream "~1.0.0"
1606
 
 
 
 
 
 
1607
  commander@^2.18.0:
1608
  version "2.19.0"
1609
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
@@ -1897,6 +1917,16 @@ css-select-base-adapter@~0.1.0:
1897
  resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990"
1898
  integrity sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=
1899
 
 
 
 
 
 
 
 
 
 
 
1900
  css-select@^2.0.0:
1901
  version "2.0.0"
1902
  resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.0.tgz#7aa2921392114831f68db175c0b6a555df74bbd5"
@@ -2261,6 +2291,13 @@ doctrine@^2.1.0:
2261
  dependencies:
2262
  esutils "^2.0.2"
2263
 
 
 
 
 
 
 
 
2264
  dom-serializer@0:
2265
  version "0.1.0"
2266
  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -2284,6 +2321,28 @@ domelementtype@~1.1.1:
2284
  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
2285
  integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
2286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2287
  domutils@^1.7.0:
2288
  version "1.7.0"
2289
  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
@@ -3382,6 +3441,11 @@ hawk@~3.1.3:
3382
  hoek "2.x.x"
3383
  sntp "1.x.x"
3384
 
 
 
 
 
 
3385
  hex-color-regex@^1.1.0:
3386
  version "1.1.0"
3387
  resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
@@ -3436,6 +3500,42 @@ html-entities@^1.2.0:
3436
  resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
3437
  integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
3438
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3439
  http-deceiver@^1.2.7:
3440
  version "1.2.7"
3441
  resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
@@ -3978,6 +4078,11 @@ is-wsl@^1.1.0:
3978
  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
3979
  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
3980
 
 
 
 
 
 
3981
  [email protected], isarray@^1.0.0, isarray@~1.0.0:
3982
  version "1.0.0"
3983
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -4215,6 +4320,16 @@ loader-runner@^2.3.0:
4215
  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
4216
  integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=
4217
 
 
 
 
 
 
 
 
 
 
 
4218
  loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
4219
  version "1.1.0"
4220
  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
@@ -4285,6 +4400,11 @@ lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10:
4285
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
4286
  integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==
4287
 
 
 
 
 
 
4288
  log-symbols@^2.1.0:
4289
  version "2.2.0"
4290
  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
@@ -4325,6 +4445,11 @@ loud-rejection@^1.0.0, loud-rejection@^1.6.0:
4325
  currently-unhandled "^0.4.1"
4326
  signal-exit "^3.0.0"
4327
 
 
 
 
 
 
4328
  lru-cache@^4.0.1, lru-cache@^4.1.1:
4329
  version "4.1.3"
4330
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
@@ -4673,6 +4798,13 @@ nice-try@^1.0.4:
4673
  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
4674
  integrity sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==
4675
 
 
 
 
 
 
 
 
4676
4677
  version "0.7.5"
4678
  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
@@ -4850,7 +4982,7 @@ npm-run-path@^2.0.0:
4850
  gauge "~2.7.3"
4851
  set-blocking "~2.0.0"
4852
 
4853
- nth-check@^1.0.1:
4854
  version "1.0.1"
4855
  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
4856
  integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=
@@ -5128,6 +5260,13 @@ parallel-transform@^1.1.0:
5128
  inherits "^2.0.3"
5129
  readable-stream "^2.1.5"
5130
 
 
 
 
 
 
 
 
5131
  parse-asn1@^5.0.0:
5132
  version "5.1.1"
5133
  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
@@ -5660,6 +5799,14 @@ prepend-http@^1.0.0:
5660
  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
5661
  integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
5662
 
 
 
 
 
 
 
 
 
5663
  private@^0.1.6:
5664
  version "0.1.8"
5665
  resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
@@ -5876,6 +6023,16 @@ read-pkg@^2.0.0:
5876
  string_decoder "~1.1.1"
5877
  util-deprecate "~1.0.1"
5878
 
 
 
 
 
 
 
 
 
 
 
5879
  readdirp@^2.0.0:
5880
  version "2.1.0"
5881
  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
@@ -5984,11 +6141,27 @@ regjsparser@^0.3.0:
5984
  dependencies:
5985
  jsesc "~0.5.0"
5986
 
 
 
 
 
 
5987
  remove-trailing-separator@^1.0.1:
5988
  version "1.1.0"
5989
  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
5990
  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
5991
 
 
 
 
 
 
 
 
 
 
 
 
5992
  repeat-element@^1.1.2:
5993
  version "1.1.2"
5994
  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
@@ -6519,7 +6692,7 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6:
6519
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
6520
  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
6521
 
6522
- source-map@^0.6.1, source-map@~0.6.1:
6523
  version "0.6.1"
6524
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
6525
  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -6701,6 +6874,11 @@ string_decoder@^1.0.0, string_decoder@~1.1.1:
6701
  dependencies:
6702
  safe-buffer "~5.1.0"
6703
 
 
 
 
 
 
6704
  stringstream@~0.0.4:
6705
  version "0.0.6"
6706
  resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
@@ -6933,6 +7111,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
6933
  regex-not "^1.0.2"
6934
  safe-regex "^1.1.0"
6935
 
 
 
 
 
 
6936
  tough-cookie@~2.3.0:
6937
  version "2.3.4"
6938
  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
@@ -7019,6 +7202,14 @@ uglify-es@^3.3.4:
7019
  commander "~2.13.0"
7020
  source-map "~0.6.1"
7021
 
 
 
 
 
 
 
 
 
7022
  uglifyjs-webpack-plugin@^1.2.4:
7023
  version "1.2.7"
7024
  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
@@ -7118,6 +7309,11 @@ upath@^1.0.5:
7118
  resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
7119
  integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
7120
 
 
 
 
 
 
7121
  uri-js@^4.2.1, uri-js@^4.2.2:
7122
  version "4.2.2"
7123
  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
@@ -7163,7 +7359,7 @@ util-deprecate@~1.0.1:
7163
  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
7164
  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
7165
 
7166
- util.promisify@^1.0.0, util.promisify@~1.0.0:
7167
  version "1.0.0"
7168
  resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
7169
  integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
@@ -7185,6 +7381,11 @@ util@^0.10.3:
7185
  dependencies:
7186
  inherits "2.0.3"
7187
 
 
 
 
 
 
7188
7189
  version "1.0.1"
7190
  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
 
1354
  resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
1355
  integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
1356
 
1357
1358
+ version "3.0.0"
1359
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
1360
+ integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
1361
+ dependencies:
1362
+ no-case "^2.2.0"
1363
+ upper-case "^1.1.1"
1364
+
1365
  camelcase-keys@^2.0.0:
1366
  version "2.1.0"
1367
  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
 
1490
  isobject "^3.0.0"
1491
  static-extend "^0.1.1"
1492
 
1493
1494
+ version "4.2.1"
1495
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
1496
+ integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==
1497
+ dependencies:
1498
+ source-map "~0.6.0"
1499
+
1500
  cli-cursor@^2.1.0:
1501
  version "2.1.0"
1502
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
 
1619
  dependencies:
1620
  delayed-stream "~1.0.0"
1621
 
1622
+ [email protected], commander@~2.17.1:
1623
+ version "2.17.1"
1624
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
1625
+ integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
1626
+
1627
  commander@^2.18.0:
1628
  version "2.19.0"
1629
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
 
1917
  resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990"
1918
  integrity sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=
1919
 
1920
+ css-select@^1.1.0:
1921
+ version "1.2.0"
1922
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
1923
+ integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
1924
+ dependencies:
1925
+ boolbase "~1.0.0"
1926
+ css-what "2.1"
1927
+ domutils "1.5.1"
1928
+ nth-check "~1.0.1"
1929
+
1930
  css-select@^2.0.0:
1931
  version "2.0.0"
1932
  resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.0.tgz#7aa2921392114831f68db175c0b6a555df74bbd5"
 
2291
  dependencies:
2292
  esutils "^2.0.2"
2293
 
2294
+ dom-converter@~0.2:
2295
+ version "0.2.0"
2296
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
2297
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
2298
+ dependencies:
2299
+ utila "~0.4"
2300
+
2301
  dom-serializer@0:
2302
  version "0.1.0"
2303
  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
 
2321
  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
2322
  integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
2323
 
2324
2325
+ version "2.1.0"
2326
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
2327
+ integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=
2328
+ dependencies:
2329
+ domelementtype "1"
2330
+
2331
2332
+ version "1.1.6"
2333
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
2334
+ integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=
2335
+ dependencies:
2336
+ domelementtype "1"
2337
+
2338
2339
+ version "1.5.1"
2340
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
2341
+ integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
2342
+ dependencies:
2343
+ dom-serializer "0"
2344
+ domelementtype "1"
2345
+
2346
  domutils@^1.7.0:
2347
  version "1.7.0"
2348
  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
 
3441
  hoek "2.x.x"
3442
  sntp "1.x.x"
3443
 
3444
3445
+ version "1.1.1"
3446
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
3447
+ integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
3448
+
3449
  hex-color-regex@^1.1.0:
3450
  version "1.1.0"
3451
  resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
 
3500
  resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
3501
  integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
3502
 
3503
+ html-minifier@^3.2.3:
3504
+ version "3.5.20"
3505
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14"
3506
+ integrity sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==
3507
+ dependencies:
3508
+ camel-case "3.0.x"
3509
+ clean-css "4.2.x"
3510
+ commander "2.17.x"
3511
+ he "1.1.x"
3512
+ param-case "2.1.x"
3513
+ relateurl "0.2.x"
3514
+ uglify-js "3.4.x"
3515
+
3516
+ html-webpack-plugin@^3.2.0:
3517
+ version "3.2.0"
3518
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b"
3519
+ integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s=
3520
+ dependencies:
3521
+ html-minifier "^3.2.3"
3522
+ loader-utils "^0.2.16"
3523
+ lodash "^4.17.3"
3524
+ pretty-error "^2.0.2"
3525
+ tapable "^1.0.0"
3526
+ toposort "^1.0.0"
3527
+ util.promisify "1.0.0"
3528
+
3529
+ htmlparser2@~3.3.0:
3530
+ version "3.3.0"
3531
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
3532
+ integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=
3533
+ dependencies:
3534
+ domelementtype "1"
3535
+ domhandler "2.1"
3536
+ domutils "1.1"
3537
+ readable-stream "1.0"
3538
+
3539
  http-deceiver@^1.2.7:
3540
  version "1.2.7"
3541
  resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
 
4078
  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
4079
  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
4080
 
4081
4082
+ version "0.0.1"
4083
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
4084
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
4085
+
4086
  [email protected], isarray@^1.0.0, isarray@~1.0.0:
4087
  version "1.0.0"
4088
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 
4320
  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
4321
  integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=
4322
 
4323
+ loader-utils@^0.2.16:
4324
+ version "0.2.17"
4325
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
4326
+ integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
4327
+ dependencies:
4328
+ big.js "^3.1.3"
4329
+ emojis-list "^2.0.0"
4330
+ json5 "^0.5.0"
4331
+ object-assign "^4.0.1"
4332
+
4333
  loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
4334
  version "1.1.0"
4335
  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
 
4400
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
4401
  integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==
4402
 
4403
+ lodash@^4.17.3:
4404
+ version "4.17.11"
4405
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
4406
+ integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
4407
+
4408
  log-symbols@^2.1.0:
4409
  version "2.2.0"
4410
  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
 
4445
  currently-unhandled "^0.4.1"
4446
  signal-exit "^3.0.0"
4447
 
4448
+ lower-case@^1.1.1:
4449
+ version "1.1.4"
4450
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
4451
+ integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
4452
+
4453
  lru-cache@^4.0.1, lru-cache@^4.1.1:
4454
  version "4.1.3"
4455
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
 
4798
  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
4799
  integrity sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==
4800
 
4801
+ no-case@^2.2.0:
4802
+ version "2.3.2"
4803
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
4804
+ integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
4805
+ dependencies:
4806
+ lower-case "^1.1.1"
4807
+
4808
4809
  version "0.7.5"
4810
  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
 
4982
  gauge "~2.7.3"
4983
  set-blocking "~2.0.0"
4984
 
4985
+ nth-check@^1.0.1, nth-check@~1.0.1:
4986
  version "1.0.1"
4987
  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
4988
  integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=
 
5260
  inherits "^2.0.3"
5261
  readable-stream "^2.1.5"
5262
 
5263
5264
+ version "2.1.1"
5265
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
5266
+ integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
5267
+ dependencies:
5268
+ no-case "^2.2.0"
5269
+
5270
  parse-asn1@^5.0.0:
5271
  version "5.1.1"
5272
  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
 
5799
  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
5800
  integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
5801
 
5802
+ pretty-error@^2.0.2:
5803
+ version "2.1.1"
5804
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
5805
+ integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=
5806
+ dependencies:
5807
+ renderkid "^2.0.1"
5808
+ utila "~0.4"
5809
+
5810
  private@^0.1.6:
5811
  version "0.1.8"
5812
  resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
 
6023
  string_decoder "~1.1.1"
6024
  util-deprecate "~1.0.1"
6025
 
6026
6027
+ version "1.0.34"
6028
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
6029
+ integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
6030
+ dependencies:
6031
+ core-util-is "~1.0.0"
6032
+ inherits "~2.0.1"
6033
+ isarray "0.0.1"
6034
+ string_decoder "~0.10.x"
6035
+
6036
  readdirp@^2.0.0:
6037
  version "2.1.0"
6038
  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
 
6141
  dependencies:
6142
  jsesc "~0.5.0"
6143
 
6144
6145
+ version "0.2.7"
6146
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
6147
+ integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
6148
+
6149
  remove-trailing-separator@^1.0.1:
6150
  version "1.1.0"
6151
  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
6152
  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
6153
 
6154
+ renderkid@^2.0.1:
6155
+ version "2.0.2"
6156
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa"
6157
+ integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==
6158
+ dependencies:
6159
+ css-select "^1.1.0"
6160
+ dom-converter "~0.2"
6161
+ htmlparser2 "~3.3.0"
6162
+ strip-ansi "^3.0.0"
6163
+ utila "^0.4.0"
6164
+
6165
  repeat-element@^1.1.2:
6166
  version "1.1.2"
6167
  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
 
6692
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
6693
  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
6694
 
6695
+ source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
6696
  version "0.6.1"
6697
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
6698
  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
 
6874
  dependencies:
6875
  safe-buffer "~5.1.0"
6876
 
6877
+ string_decoder@~0.10.x:
6878
+ version "0.10.31"
6879
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
6880
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
6881
+
6882
  stringstream@~0.0.4:
6883
  version "0.0.6"
6884
  resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
 
7111
  regex-not "^1.0.2"
7112
  safe-regex "^1.1.0"
7113
 
7114
+ toposort@^1.0.0:
7115
+ version "1.0.7"
7116
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
7117
+ integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
7118
+
7119
  tough-cookie@~2.3.0:
7120
  version "2.3.4"
7121
  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
 
7202
  commander "~2.13.0"
7203
  source-map "~0.6.1"
7204
 
7205
7206
+ version "3.4.9"
7207
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
7208
+ integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
7209
+ dependencies:
7210
+ commander "~2.17.1"
7211
+ source-map "~0.6.1"
7212
+
7213
  uglifyjs-webpack-plugin@^1.2.4:
7214
  version "1.2.7"
7215
  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
 
7309
  resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
7310
  integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
7311
 
7312
+ upper-case@^1.1.1:
7313
+ version "1.1.3"
7314
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
7315
+ integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
7316
+
7317
  uri-js@^4.2.1, uri-js@^4.2.2:
7318
  version "4.2.2"
7319
  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
 
7359
  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
7360
  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
7361
 
7362
+ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0:
7363
  version "1.0.0"
7364
  resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
7365
  integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
 
7381
  dependencies:
7382
  inherits "2.0.3"
7383
 
7384
+ utila@^0.4.0, utila@~0.4:
7385
+ version "0.4.0"
7386
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
7387
+ integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
7388
+
7389
7390
  version "1.0.1"
7391
  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"