├── .github └── FUNDING.yml ├── .gitignore ├── README.md ├── build └── rollup.config.js ├── package-lock.json ├── package.json └── src ├── Motion.vue ├── animator.js └── index.js /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [lepikhinb] 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Tinymotion

2 | 3 |

Tinymotion is a Vue.js animation library, that seamlessly works with Tailwind CSS.

4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 19 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 39 | 42 | 45 | 46 |
HoverClickTriggerAuto
14 | 15 | 17 | 18 | 20 | 21 | 23 | 24 |
SwitchGridShuffleLoader
34 | 35 | 37 | 38 | 40 | 41 | 43 | 44 |
47 | 48 | ## Installation 49 | ```sh 50 | npm i -S tinymotion 51 | ``` 52 | 53 | ## How to use 54 | ```vue 55 | 66 | 67 | 90 | ``` 91 | 92 | ### Triggers 93 | #### Hover 94 | Triggers animation on hover. If `rollback` option is enabled, the animation will start rolling back on mouse leave. 95 | 96 | ```vue 97 | 107 | ``` 108 | 109 | #### Click 110 | Triggers animation on click. If `rollback` option is enabled, the animation will start rolling back on mouse up. 111 | 112 | ```vue 113 | 123 | ``` 124 | 125 | #### Custom trigger 126 | Tinymotion supports external triggers. Once the trigger value is changed, the animation will fire. The next time the value is changed, the animation will stop. 127 | 128 | ```vue 129 | 142 | 143 | 156 | ``` 157 | 158 | ## Examples 159 | * [Hover](https://tinymotion.me/#hover) 160 | * [Click](https://tinymotion.me/#click) 161 | * [External trigger](https://tinymotion.me/#trigger) 162 | * [Auto](https://tinymotion.me/#auto) 163 | * [Switch](https://tinymotion.me/usage#switch) 164 | * [Loader](https://tinymotion.me/usage#loader) 165 | 166 | ## Roadmap 167 | This project is in the early development stage. If you want to help to improve this, you are welcome to create a PR. 168 | 169 | ## Author 170 | [Boris Lepikhin](https://twitter.com/lepikhinb) -------------------------------------------------------------------------------- /build/rollup.config.js: -------------------------------------------------------------------------------- 1 | import commonjs from '@rollup/plugin-commonjs'; 2 | import vue from 'rollup-plugin-vue'; 3 | import buble from '@rollup/plugin-buble'; 4 | 5 | export default { 6 | input: 'src/index.js', 7 | output: { 8 | name: 'Motion', 9 | exports: 'named' 10 | }, 11 | plugins: [ 12 | commonjs(), 13 | vue({ 14 | css: true, 15 | compileTemplate: true, 16 | }), 17 | buble({ 18 | objectAssign: 'Object.assign' 19 | }) 20 | ], 21 | }; -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinymotion", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@rollup/plugin-buble": { 8 | "version": "0.21.3", 9 | "resolved": "https://registry.npmjs.org/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz", 10 | "integrity": "sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw==", 11 | "dev": true, 12 | "requires": { 13 | "@rollup/pluginutils": "^3.0.8", 14 | "@types/buble": "^0.19.2", 15 | "buble": "^0.20.0" 16 | }, 17 | "dependencies": { 18 | "buble": { 19 | "version": "0.20.0", 20 | "resolved": "https://registry.npmjs.org/buble/-/buble-0.20.0.tgz", 21 | "integrity": "sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==", 22 | "dev": true, 23 | "requires": { 24 | "acorn": "^6.4.1", 25 | "acorn-dynamic-import": "^4.0.0", 26 | "acorn-jsx": "^5.2.0", 27 | "chalk": "^2.4.2", 28 | "magic-string": "^0.25.7", 29 | "minimist": "^1.2.5", 30 | "regexpu-core": "4.5.4" 31 | } 32 | }, 33 | "regexpu-core": { 34 | "version": "4.5.4", 35 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", 36 | "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", 37 | "dev": true, 38 | "requires": { 39 | "regenerate": "^1.4.0", 40 | "regenerate-unicode-properties": "^8.0.2", 41 | "regjsgen": "^0.5.0", 42 | "regjsparser": "^0.6.0", 43 | "unicode-match-property-ecmascript": "^1.0.4", 44 | "unicode-match-property-value-ecmascript": "^1.1.0" 45 | } 46 | } 47 | } 48 | }, 49 | "@rollup/plugin-commonjs": { 50 | "version": "11.1.0", 51 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", 52 | "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", 53 | "dev": true, 54 | "requires": { 55 | "@rollup/pluginutils": "^3.0.8", 56 | "commondir": "^1.0.1", 57 | "estree-walker": "^1.0.1", 58 | "glob": "^7.1.2", 59 | "is-reference": "^1.1.2", 60 | "magic-string": "^0.25.2", 61 | "resolve": "^1.11.0" 62 | } 63 | }, 64 | "@rollup/pluginutils": { 65 | "version": "3.1.0", 66 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 67 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 68 | "dev": true, 69 | "requires": { 70 | "@types/estree": "0.0.39", 71 | "estree-walker": "^1.0.1", 72 | "picomatch": "^2.2.2" 73 | }, 74 | "dependencies": { 75 | "@types/estree": { 76 | "version": "0.0.39", 77 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 78 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 79 | "dev": true 80 | }, 81 | "estree-walker": { 82 | "version": "1.0.1", 83 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 84 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 85 | "dev": true 86 | } 87 | } 88 | }, 89 | "@types/babel-types": { 90 | "version": "7.0.9", 91 | "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.9.tgz", 92 | "integrity": "sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA==", 93 | "dev": true, 94 | "optional": true 95 | }, 96 | "@types/babylon": { 97 | "version": "6.16.5", 98 | "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", 99 | "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", 100 | "dev": true, 101 | "optional": true, 102 | "requires": { 103 | "@types/babel-types": "*" 104 | } 105 | }, 106 | "@types/buble": { 107 | "version": "0.19.2", 108 | "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.19.2.tgz", 109 | "integrity": "sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==", 110 | "dev": true, 111 | "requires": { 112 | "magic-string": "^0.25.0" 113 | } 114 | }, 115 | "@types/estree": { 116 | "version": "0.0.45", 117 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", 118 | "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", 119 | "dev": true 120 | }, 121 | "@types/node": { 122 | "version": "14.14.20", 123 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", 124 | "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", 125 | "dev": true 126 | }, 127 | "@vue/component-compiler": { 128 | "version": "4.2.3", 129 | "resolved": "https://registry.npmjs.org/@vue/component-compiler/-/component-compiler-4.2.3.tgz", 130 | "integrity": "sha512-B221AV3T/6PF37WnkoqUKIxBeHXmGuZsi/8pby89MAVSj9zmDdLCEZ7LDT8+DJWbElFrPELgnSvEadXxDRcrJQ==", 131 | "dev": true, 132 | "requires": { 133 | "@vue/component-compiler-utils": "^3.0.0", 134 | "clean-css": "^4.1.11", 135 | "hash-sum": "^1.0.2", 136 | "less": "^3.9.0", 137 | "postcss-modules-sync": "^1.0.0", 138 | "pug": "^2.0.3", 139 | "sass": "^1.18.0", 140 | "source-map": "0.6.*", 141 | "stylus": "^0.54.5" 142 | }, 143 | "dependencies": { 144 | "source-map": { 145 | "version": "0.6.1", 146 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 147 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 148 | "dev": true 149 | } 150 | } 151 | }, 152 | "@vue/component-compiler-utils": { 153 | "version": "3.2.0", 154 | "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", 155 | "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", 156 | "dev": true, 157 | "requires": { 158 | "consolidate": "^0.15.1", 159 | "hash-sum": "^1.0.2", 160 | "lru-cache": "^4.1.2", 161 | "merge-source-map": "^1.1.0", 162 | "postcss": "^7.0.14", 163 | "postcss-selector-parser": "^6.0.2", 164 | "prettier": "^1.18.2", 165 | "source-map": "~0.6.1", 166 | "vue-template-es2015-compiler": "^1.9.0" 167 | }, 168 | "dependencies": { 169 | "source-map": { 170 | "version": "0.6.1", 171 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 172 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 173 | "dev": true 174 | } 175 | } 176 | }, 177 | "acorn": { 178 | "version": "6.4.2", 179 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", 180 | "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", 181 | "dev": true 182 | }, 183 | "acorn-dynamic-import": { 184 | "version": "4.0.0", 185 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", 186 | "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", 187 | "dev": true 188 | }, 189 | "acorn-globals": { 190 | "version": "3.1.0", 191 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", 192 | "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", 193 | "dev": true, 194 | "optional": true, 195 | "requires": { 196 | "acorn": "^4.0.4" 197 | }, 198 | "dependencies": { 199 | "acorn": { 200 | "version": "4.0.13", 201 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 202 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", 203 | "dev": true, 204 | "optional": true 205 | } 206 | } 207 | }, 208 | "acorn-jsx": { 209 | "version": "5.3.1", 210 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", 211 | "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", 212 | "dev": true 213 | }, 214 | "align-text": { 215 | "version": "0.1.4", 216 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 217 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 218 | "dev": true, 219 | "optional": true, 220 | "requires": { 221 | "kind-of": "^3.0.2", 222 | "longest": "^1.0.1", 223 | "repeat-string": "^1.5.2" 224 | } 225 | }, 226 | "ansi-regex": { 227 | "version": "2.1.1", 228 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 229 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 230 | "dev": true 231 | }, 232 | "ansi-styles": { 233 | "version": "3.2.1", 234 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 235 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 236 | "dev": true, 237 | "requires": { 238 | "color-convert": "^1.9.0" 239 | } 240 | }, 241 | "anymatch": { 242 | "version": "3.1.1", 243 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 244 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 245 | "dev": true, 246 | "optional": true, 247 | "requires": { 248 | "normalize-path": "^3.0.0", 249 | "picomatch": "^2.0.4" 250 | } 251 | }, 252 | "asap": { 253 | "version": "2.0.6", 254 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 255 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", 256 | "dev": true, 257 | "optional": true 258 | }, 259 | "atob": { 260 | "version": "2.1.2", 261 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 262 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 263 | "dev": true, 264 | "optional": true 265 | }, 266 | "babel-runtime": { 267 | "version": "6.26.0", 268 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 269 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 270 | "dev": true, 271 | "optional": true, 272 | "requires": { 273 | "core-js": "^2.4.0", 274 | "regenerator-runtime": "^0.11.0" 275 | } 276 | }, 277 | "babel-types": { 278 | "version": "6.26.0", 279 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 280 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 281 | "dev": true, 282 | "optional": true, 283 | "requires": { 284 | "babel-runtime": "^6.26.0", 285 | "esutils": "^2.0.2", 286 | "lodash": "^4.17.4", 287 | "to-fast-properties": "^1.0.3" 288 | } 289 | }, 290 | "babylon": { 291 | "version": "6.18.0", 292 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 293 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 294 | "dev": true, 295 | "optional": true 296 | }, 297 | "balanced-match": { 298 | "version": "1.0.0", 299 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 300 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 301 | "dev": true 302 | }, 303 | "big.js": { 304 | "version": "3.2.0", 305 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", 306 | "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", 307 | "dev": true 308 | }, 309 | "binary-extensions": { 310 | "version": "2.1.0", 311 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", 312 | "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", 313 | "dev": true, 314 | "optional": true 315 | }, 316 | "bluebird": { 317 | "version": "3.7.2", 318 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 319 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 320 | "dev": true 321 | }, 322 | "brace-expansion": { 323 | "version": "1.1.11", 324 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 325 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 326 | "dev": true, 327 | "requires": { 328 | "balanced-match": "^1.0.0", 329 | "concat-map": "0.0.1" 330 | } 331 | }, 332 | "braces": { 333 | "version": "3.0.2", 334 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 335 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 336 | "dev": true, 337 | "optional": true, 338 | "requires": { 339 | "fill-range": "^7.0.1" 340 | } 341 | }, 342 | "camelcase": { 343 | "version": "1.2.1", 344 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 345 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 346 | "dev": true, 347 | "optional": true 348 | }, 349 | "center-align": { 350 | "version": "0.1.3", 351 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 352 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 353 | "dev": true, 354 | "optional": true, 355 | "requires": { 356 | "align-text": "^0.1.3", 357 | "lazy-cache": "^1.0.3" 358 | } 359 | }, 360 | "chalk": { 361 | "version": "2.4.2", 362 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 363 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 364 | "dev": true, 365 | "requires": { 366 | "ansi-styles": "^3.2.1", 367 | "escape-string-regexp": "^1.0.5", 368 | "supports-color": "^5.3.0" 369 | } 370 | }, 371 | "character-parser": { 372 | "version": "2.2.0", 373 | "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", 374 | "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", 375 | "dev": true, 376 | "optional": true, 377 | "requires": { 378 | "is-regex": "^1.0.3" 379 | } 380 | }, 381 | "chokidar": { 382 | "version": "3.5.0", 383 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", 384 | "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", 385 | "dev": true, 386 | "optional": true, 387 | "requires": { 388 | "anymatch": "~3.1.1", 389 | "braces": "~3.0.2", 390 | "fsevents": "~2.3.1", 391 | "glob-parent": "~5.1.0", 392 | "is-binary-path": "~2.1.0", 393 | "is-glob": "~4.0.1", 394 | "normalize-path": "~3.0.0", 395 | "readdirp": "~3.5.0" 396 | } 397 | }, 398 | "clean-css": { 399 | "version": "4.2.3", 400 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", 401 | "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", 402 | "dev": true, 403 | "requires": { 404 | "source-map": "~0.6.0" 405 | }, 406 | "dependencies": { 407 | "source-map": { 408 | "version": "0.6.1", 409 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 410 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 411 | "dev": true 412 | } 413 | } 414 | }, 415 | "cliui": { 416 | "version": "2.1.0", 417 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 418 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 419 | "dev": true, 420 | "optional": true, 421 | "requires": { 422 | "center-align": "^0.1.1", 423 | "right-align": "^0.1.1", 424 | "wordwrap": "0.0.2" 425 | } 426 | }, 427 | "color-convert": { 428 | "version": "1.9.3", 429 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 430 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 431 | "dev": true, 432 | "requires": { 433 | "color-name": "1.1.3" 434 | } 435 | }, 436 | "color-name": { 437 | "version": "1.1.3", 438 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 439 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 440 | "dev": true 441 | }, 442 | "commondir": { 443 | "version": "1.0.1", 444 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 445 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 446 | "dev": true 447 | }, 448 | "concat-map": { 449 | "version": "0.0.1", 450 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 451 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 452 | "dev": true 453 | }, 454 | "consolidate": { 455 | "version": "0.15.1", 456 | "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", 457 | "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", 458 | "dev": true, 459 | "requires": { 460 | "bluebird": "^3.1.1" 461 | } 462 | }, 463 | "constantinople": { 464 | "version": "3.1.2", 465 | "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", 466 | "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", 467 | "dev": true, 468 | "optional": true, 469 | "requires": { 470 | "@types/babel-types": "^7.0.0", 471 | "@types/babylon": "^6.16.2", 472 | "babel-types": "^6.26.0", 473 | "babylon": "^6.18.0" 474 | } 475 | }, 476 | "copy-anything": { 477 | "version": "2.0.1", 478 | "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.1.tgz", 479 | "integrity": "sha512-lA57e7viQHOdPQcrytv5jFeudZZOXuyk47lZym279FiDQ8jeZomXiGuVf6ffMKkJ+3TIai3J1J3yi6M+/4U35g==", 480 | "dev": true, 481 | "optional": true, 482 | "requires": { 483 | "is-what": "^3.7.1" 484 | } 485 | }, 486 | "core-js": { 487 | "version": "2.6.12", 488 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", 489 | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", 490 | "dev": true, 491 | "optional": true 492 | }, 493 | "css": { 494 | "version": "2.2.4", 495 | "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", 496 | "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", 497 | "dev": true, 498 | "optional": true, 499 | "requires": { 500 | "inherits": "^2.0.3", 501 | "source-map": "^0.6.1", 502 | "source-map-resolve": "^0.5.2", 503 | "urix": "^0.1.0" 504 | }, 505 | "dependencies": { 506 | "source-map": { 507 | "version": "0.6.1", 508 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 509 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 510 | "dev": true, 511 | "optional": true 512 | } 513 | } 514 | }, 515 | "css-parse": { 516 | "version": "2.0.0", 517 | "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", 518 | "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", 519 | "dev": true, 520 | "optional": true, 521 | "requires": { 522 | "css": "^2.0.0" 523 | } 524 | }, 525 | "css-selector-tokenizer": { 526 | "version": "0.7.3", 527 | "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", 528 | "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", 529 | "dev": true, 530 | "requires": { 531 | "cssesc": "^3.0.0", 532 | "fastparse": "^1.1.2" 533 | } 534 | }, 535 | "cssesc": { 536 | "version": "3.0.0", 537 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 538 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 539 | "dev": true 540 | }, 541 | "de-indent": { 542 | "version": "1.0.2", 543 | "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", 544 | "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", 545 | "dev": true 546 | }, 547 | "debug": { 548 | "version": "4.3.1", 549 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 550 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 551 | "dev": true, 552 | "requires": { 553 | "ms": "2.1.2" 554 | }, 555 | "dependencies": { 556 | "ms": { 557 | "version": "2.1.2", 558 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 559 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 560 | "dev": true 561 | } 562 | } 563 | }, 564 | "decamelize": { 565 | "version": "1.2.0", 566 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 567 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 568 | "dev": true, 569 | "optional": true 570 | }, 571 | "decode-uri-component": { 572 | "version": "0.2.0", 573 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 574 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 575 | "dev": true, 576 | "optional": true 577 | }, 578 | "doctypes": { 579 | "version": "1.1.0", 580 | "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", 581 | "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", 582 | "dev": true, 583 | "optional": true 584 | }, 585 | "emojis-list": { 586 | "version": "2.1.0", 587 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 588 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", 589 | "dev": true 590 | }, 591 | "errno": { 592 | "version": "0.1.8", 593 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", 594 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 595 | "dev": true, 596 | "optional": true, 597 | "requires": { 598 | "prr": "~1.0.1" 599 | } 600 | }, 601 | "escape-string-regexp": { 602 | "version": "1.0.5", 603 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 604 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 605 | "dev": true 606 | }, 607 | "estree-walker": { 608 | "version": "1.0.1", 609 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 610 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 611 | "dev": true 612 | }, 613 | "esutils": { 614 | "version": "2.0.3", 615 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 616 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 617 | "dev": true, 618 | "optional": true 619 | }, 620 | "fastparse": { 621 | "version": "1.1.2", 622 | "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", 623 | "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", 624 | "dev": true 625 | }, 626 | "fill-range": { 627 | "version": "7.0.1", 628 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 629 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 630 | "dev": true, 631 | "optional": true, 632 | "requires": { 633 | "to-regex-range": "^5.0.1" 634 | } 635 | }, 636 | "fs.realpath": { 637 | "version": "1.0.0", 638 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 639 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 640 | "dev": true 641 | }, 642 | "fsevents": { 643 | "version": "2.3.1", 644 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", 645 | "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", 646 | "dev": true, 647 | "optional": true 648 | }, 649 | "function-bind": { 650 | "version": "1.1.1", 651 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 652 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 653 | "dev": true 654 | }, 655 | "generic-names": { 656 | "version": "1.0.3", 657 | "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz", 658 | "integrity": "sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=", 659 | "dev": true, 660 | "requires": { 661 | "loader-utils": "^0.2.16" 662 | } 663 | }, 664 | "glob": { 665 | "version": "7.1.6", 666 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 667 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 668 | "dev": true, 669 | "requires": { 670 | "fs.realpath": "^1.0.0", 671 | "inflight": "^1.0.4", 672 | "inherits": "2", 673 | "minimatch": "^3.0.4", 674 | "once": "^1.3.0", 675 | "path-is-absolute": "^1.0.0" 676 | } 677 | }, 678 | "glob-parent": { 679 | "version": "5.1.1", 680 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 681 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 682 | "dev": true, 683 | "optional": true, 684 | "requires": { 685 | "is-glob": "^4.0.1" 686 | } 687 | }, 688 | "graceful-fs": { 689 | "version": "4.2.4", 690 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 691 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 692 | "dev": true, 693 | "optional": true 694 | }, 695 | "has": { 696 | "version": "1.0.3", 697 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 698 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 699 | "dev": true, 700 | "requires": { 701 | "function-bind": "^1.1.1" 702 | } 703 | }, 704 | "has-ansi": { 705 | "version": "2.0.0", 706 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 707 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 708 | "dev": true, 709 | "requires": { 710 | "ansi-regex": "^2.0.0" 711 | } 712 | }, 713 | "has-flag": { 714 | "version": "3.0.0", 715 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 716 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 717 | "dev": true 718 | }, 719 | "has-symbols": { 720 | "version": "1.0.1", 721 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 722 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 723 | "dev": true, 724 | "optional": true 725 | }, 726 | "hash-sum": { 727 | "version": "1.0.2", 728 | "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", 729 | "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", 730 | "dev": true 731 | }, 732 | "he": { 733 | "version": "1.2.0", 734 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 735 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 736 | "dev": true 737 | }, 738 | "icss-replace-symbols": { 739 | "version": "1.1.0", 740 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", 741 | "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", 742 | "dev": true 743 | }, 744 | "image-size": { 745 | "version": "0.5.5", 746 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", 747 | "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", 748 | "dev": true, 749 | "optional": true 750 | }, 751 | "indexes-of": { 752 | "version": "1.0.1", 753 | "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", 754 | "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", 755 | "dev": true 756 | }, 757 | "inflight": { 758 | "version": "1.0.6", 759 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 760 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 761 | "dev": true, 762 | "requires": { 763 | "once": "^1.3.0", 764 | "wrappy": "1" 765 | } 766 | }, 767 | "inherits": { 768 | "version": "2.0.4", 769 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 770 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 771 | "dev": true 772 | }, 773 | "is-binary-path": { 774 | "version": "2.1.0", 775 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 776 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 777 | "dev": true, 778 | "optional": true, 779 | "requires": { 780 | "binary-extensions": "^2.0.0" 781 | } 782 | }, 783 | "is-buffer": { 784 | "version": "1.1.6", 785 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 786 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 787 | "dev": true, 788 | "optional": true 789 | }, 790 | "is-core-module": { 791 | "version": "2.2.0", 792 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 793 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 794 | "dev": true, 795 | "requires": { 796 | "has": "^1.0.3" 797 | } 798 | }, 799 | "is-expression": { 800 | "version": "3.0.0", 801 | "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", 802 | "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", 803 | "dev": true, 804 | "optional": true, 805 | "requires": { 806 | "acorn": "~4.0.2", 807 | "object-assign": "^4.0.1" 808 | }, 809 | "dependencies": { 810 | "acorn": { 811 | "version": "4.0.13", 812 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 813 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", 814 | "dev": true, 815 | "optional": true 816 | } 817 | } 818 | }, 819 | "is-extglob": { 820 | "version": "2.1.1", 821 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 822 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 823 | "dev": true, 824 | "optional": true 825 | }, 826 | "is-glob": { 827 | "version": "4.0.1", 828 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 829 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 830 | "dev": true, 831 | "optional": true, 832 | "requires": { 833 | "is-extglob": "^2.1.1" 834 | } 835 | }, 836 | "is-number": { 837 | "version": "7.0.0", 838 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 839 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 840 | "dev": true, 841 | "optional": true 842 | }, 843 | "is-promise": { 844 | "version": "2.2.2", 845 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", 846 | "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", 847 | "dev": true, 848 | "optional": true 849 | }, 850 | "is-reference": { 851 | "version": "1.2.1", 852 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 853 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 854 | "dev": true, 855 | "requires": { 856 | "@types/estree": "*" 857 | } 858 | }, 859 | "is-regex": { 860 | "version": "1.1.1", 861 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 862 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 863 | "dev": true, 864 | "optional": true, 865 | "requires": { 866 | "has-symbols": "^1.0.1" 867 | } 868 | }, 869 | "is-what": { 870 | "version": "3.12.0", 871 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.12.0.tgz", 872 | "integrity": "sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw==", 873 | "dev": true, 874 | "optional": true 875 | }, 876 | "js-base64": { 877 | "version": "2.6.4", 878 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", 879 | "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", 880 | "dev": true 881 | }, 882 | "js-stringify": { 883 | "version": "1.0.2", 884 | "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", 885 | "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", 886 | "dev": true, 887 | "optional": true 888 | }, 889 | "json5": { 890 | "version": "0.5.1", 891 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 892 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 893 | "dev": true 894 | }, 895 | "jstransformer": { 896 | "version": "1.0.0", 897 | "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", 898 | "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", 899 | "dev": true, 900 | "optional": true, 901 | "requires": { 902 | "is-promise": "^2.0.0", 903 | "promise": "^7.0.1" 904 | } 905 | }, 906 | "kind-of": { 907 | "version": "3.2.2", 908 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 909 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 910 | "dev": true, 911 | "optional": true, 912 | "requires": { 913 | "is-buffer": "^1.1.5" 914 | } 915 | }, 916 | "lazy-cache": { 917 | "version": "1.0.4", 918 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 919 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 920 | "dev": true, 921 | "optional": true 922 | }, 923 | "less": { 924 | "version": "3.13.1", 925 | "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", 926 | "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", 927 | "dev": true, 928 | "optional": true, 929 | "requires": { 930 | "copy-anything": "^2.0.1", 931 | "errno": "^0.1.1", 932 | "graceful-fs": "^4.1.2", 933 | "image-size": "~0.5.0", 934 | "make-dir": "^2.1.0", 935 | "mime": "^1.4.1", 936 | "native-request": "^1.0.5", 937 | "source-map": "~0.6.0", 938 | "tslib": "^1.10.0" 939 | }, 940 | "dependencies": { 941 | "source-map": { 942 | "version": "0.6.1", 943 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 944 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 945 | "dev": true, 946 | "optional": true 947 | } 948 | } 949 | }, 950 | "loader-utils": { 951 | "version": "0.2.17", 952 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", 953 | "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", 954 | "dev": true, 955 | "requires": { 956 | "big.js": "^3.1.3", 957 | "emojis-list": "^2.0.0", 958 | "json5": "^0.5.0", 959 | "object-assign": "^4.0.1" 960 | } 961 | }, 962 | "lodash": { 963 | "version": "4.17.20", 964 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 965 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", 966 | "dev": true, 967 | "optional": true 968 | }, 969 | "longest": { 970 | "version": "1.0.1", 971 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 972 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", 973 | "dev": true, 974 | "optional": true 975 | }, 976 | "lru-cache": { 977 | "version": "4.1.5", 978 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 979 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 980 | "dev": true, 981 | "requires": { 982 | "pseudomap": "^1.0.2", 983 | "yallist": "^2.1.2" 984 | } 985 | }, 986 | "magic-string": { 987 | "version": "0.25.7", 988 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 989 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 990 | "dev": true, 991 | "requires": { 992 | "sourcemap-codec": "^1.4.4" 993 | } 994 | }, 995 | "make-dir": { 996 | "version": "2.1.0", 997 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 998 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 999 | "dev": true, 1000 | "optional": true, 1001 | "requires": { 1002 | "pify": "^4.0.1", 1003 | "semver": "^5.6.0" 1004 | } 1005 | }, 1006 | "merge-source-map": { 1007 | "version": "1.1.0", 1008 | "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", 1009 | "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", 1010 | "dev": true, 1011 | "requires": { 1012 | "source-map": "^0.6.1" 1013 | }, 1014 | "dependencies": { 1015 | "source-map": { 1016 | "version": "0.6.1", 1017 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1018 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1019 | "dev": true 1020 | } 1021 | } 1022 | }, 1023 | "mime": { 1024 | "version": "1.6.0", 1025 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1026 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1027 | "dev": true, 1028 | "optional": true 1029 | }, 1030 | "minimatch": { 1031 | "version": "3.0.4", 1032 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1033 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1034 | "dev": true, 1035 | "requires": { 1036 | "brace-expansion": "^1.1.7" 1037 | } 1038 | }, 1039 | "minimist": { 1040 | "version": "1.2.5", 1041 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1042 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1043 | "dev": true 1044 | }, 1045 | "mkdirp": { 1046 | "version": "1.0.4", 1047 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1048 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1049 | "dev": true, 1050 | "optional": true 1051 | }, 1052 | "ms": { 1053 | "version": "2.0.0", 1054 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1055 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1056 | "dev": true, 1057 | "optional": true 1058 | }, 1059 | "native-request": { 1060 | "version": "1.0.8", 1061 | "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz", 1062 | "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==", 1063 | "dev": true, 1064 | "optional": true 1065 | }, 1066 | "normalize-path": { 1067 | "version": "3.0.0", 1068 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1069 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1070 | "dev": true, 1071 | "optional": true 1072 | }, 1073 | "object-assign": { 1074 | "version": "4.1.1", 1075 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1076 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1077 | "dev": true 1078 | }, 1079 | "once": { 1080 | "version": "1.4.0", 1081 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1082 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1083 | "dev": true, 1084 | "requires": { 1085 | "wrappy": "1" 1086 | } 1087 | }, 1088 | "path-is-absolute": { 1089 | "version": "1.0.1", 1090 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1091 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1092 | "dev": true 1093 | }, 1094 | "path-parse": { 1095 | "version": "1.0.6", 1096 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1097 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1098 | "dev": true 1099 | }, 1100 | "picomatch": { 1101 | "version": "2.2.2", 1102 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1103 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1104 | "dev": true 1105 | }, 1106 | "pify": { 1107 | "version": "4.0.1", 1108 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 1109 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 1110 | "dev": true, 1111 | "optional": true 1112 | }, 1113 | "postcss": { 1114 | "version": "7.0.35", 1115 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", 1116 | "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", 1117 | "dev": true, 1118 | "requires": { 1119 | "chalk": "^2.4.2", 1120 | "source-map": "^0.6.1", 1121 | "supports-color": "^6.1.0" 1122 | }, 1123 | "dependencies": { 1124 | "source-map": { 1125 | "version": "0.6.1", 1126 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1127 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1128 | "dev": true 1129 | }, 1130 | "supports-color": { 1131 | "version": "6.1.0", 1132 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 1133 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 1134 | "dev": true, 1135 | "requires": { 1136 | "has-flag": "^3.0.0" 1137 | } 1138 | } 1139 | } 1140 | }, 1141 | "postcss-modules-local-by-default": { 1142 | "version": "1.2.0", 1143 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", 1144 | "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", 1145 | "dev": true, 1146 | "requires": { 1147 | "css-selector-tokenizer": "^0.7.0", 1148 | "postcss": "^6.0.1" 1149 | }, 1150 | "dependencies": { 1151 | "postcss": { 1152 | "version": "6.0.23", 1153 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", 1154 | "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", 1155 | "dev": true, 1156 | "requires": { 1157 | "chalk": "^2.4.1", 1158 | "source-map": "^0.6.1", 1159 | "supports-color": "^5.4.0" 1160 | } 1161 | }, 1162 | "source-map": { 1163 | "version": "0.6.1", 1164 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1165 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1166 | "dev": true 1167 | } 1168 | } 1169 | }, 1170 | "postcss-modules-scope": { 1171 | "version": "1.1.0", 1172 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", 1173 | "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", 1174 | "dev": true, 1175 | "requires": { 1176 | "css-selector-tokenizer": "^0.7.0", 1177 | "postcss": "^6.0.1" 1178 | }, 1179 | "dependencies": { 1180 | "postcss": { 1181 | "version": "6.0.23", 1182 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", 1183 | "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", 1184 | "dev": true, 1185 | "requires": { 1186 | "chalk": "^2.4.1", 1187 | "source-map": "^0.6.1", 1188 | "supports-color": "^5.4.0" 1189 | } 1190 | }, 1191 | "source-map": { 1192 | "version": "0.6.1", 1193 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1194 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1195 | "dev": true 1196 | } 1197 | } 1198 | }, 1199 | "postcss-modules-sync": { 1200 | "version": "1.0.0", 1201 | "resolved": "https://registry.npmjs.org/postcss-modules-sync/-/postcss-modules-sync-1.0.0.tgz", 1202 | "integrity": "sha1-YZpxnPeN0WpINBNRQLMkz3czS+E=", 1203 | "dev": true, 1204 | "requires": { 1205 | "generic-names": "^1.0.2", 1206 | "icss-replace-symbols": "^1.0.2", 1207 | "postcss": "^5.2.5", 1208 | "postcss-modules-local-by-default": "^1.1.1", 1209 | "postcss-modules-scope": "^1.0.2", 1210 | "string-hash": "^1.1.0" 1211 | }, 1212 | "dependencies": { 1213 | "ansi-styles": { 1214 | "version": "2.2.1", 1215 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1216 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1217 | "dev": true 1218 | }, 1219 | "chalk": { 1220 | "version": "1.1.3", 1221 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1222 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1223 | "dev": true, 1224 | "requires": { 1225 | "ansi-styles": "^2.2.1", 1226 | "escape-string-regexp": "^1.0.2", 1227 | "has-ansi": "^2.0.0", 1228 | "strip-ansi": "^3.0.0", 1229 | "supports-color": "^2.0.0" 1230 | }, 1231 | "dependencies": { 1232 | "supports-color": { 1233 | "version": "2.0.0", 1234 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1235 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1236 | "dev": true 1237 | } 1238 | } 1239 | }, 1240 | "has-flag": { 1241 | "version": "1.0.0", 1242 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 1243 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 1244 | "dev": true 1245 | }, 1246 | "postcss": { 1247 | "version": "5.2.18", 1248 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", 1249 | "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", 1250 | "dev": true, 1251 | "requires": { 1252 | "chalk": "^1.1.3", 1253 | "js-base64": "^2.1.9", 1254 | "source-map": "^0.5.6", 1255 | "supports-color": "^3.2.3" 1256 | } 1257 | }, 1258 | "source-map": { 1259 | "version": "0.5.7", 1260 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1261 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1262 | "dev": true 1263 | }, 1264 | "supports-color": { 1265 | "version": "3.2.3", 1266 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 1267 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 1268 | "dev": true, 1269 | "requires": { 1270 | "has-flag": "^1.0.0" 1271 | } 1272 | } 1273 | } 1274 | }, 1275 | "postcss-selector-parser": { 1276 | "version": "6.0.4", 1277 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", 1278 | "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", 1279 | "dev": true, 1280 | "requires": { 1281 | "cssesc": "^3.0.0", 1282 | "indexes-of": "^1.0.1", 1283 | "uniq": "^1.0.1", 1284 | "util-deprecate": "^1.0.2" 1285 | } 1286 | }, 1287 | "prettier": { 1288 | "version": "1.19.1", 1289 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", 1290 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", 1291 | "dev": true, 1292 | "optional": true 1293 | }, 1294 | "promise": { 1295 | "version": "7.3.1", 1296 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 1297 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 1298 | "dev": true, 1299 | "optional": true, 1300 | "requires": { 1301 | "asap": "~2.0.3" 1302 | } 1303 | }, 1304 | "prr": { 1305 | "version": "1.0.1", 1306 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 1307 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 1308 | "dev": true, 1309 | "optional": true 1310 | }, 1311 | "pseudomap": { 1312 | "version": "1.0.2", 1313 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1314 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1315 | "dev": true 1316 | }, 1317 | "pug": { 1318 | "version": "2.0.4", 1319 | "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", 1320 | "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", 1321 | "dev": true, 1322 | "optional": true, 1323 | "requires": { 1324 | "pug-code-gen": "^2.0.2", 1325 | "pug-filters": "^3.1.1", 1326 | "pug-lexer": "^4.1.0", 1327 | "pug-linker": "^3.0.6", 1328 | "pug-load": "^2.0.12", 1329 | "pug-parser": "^5.0.1", 1330 | "pug-runtime": "^2.0.5", 1331 | "pug-strip-comments": "^1.0.4" 1332 | } 1333 | }, 1334 | "pug-attrs": { 1335 | "version": "2.0.4", 1336 | "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", 1337 | "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", 1338 | "dev": true, 1339 | "optional": true, 1340 | "requires": { 1341 | "constantinople": "^3.0.1", 1342 | "js-stringify": "^1.0.1", 1343 | "pug-runtime": "^2.0.5" 1344 | } 1345 | }, 1346 | "pug-code-gen": { 1347 | "version": "2.0.2", 1348 | "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", 1349 | "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", 1350 | "dev": true, 1351 | "optional": true, 1352 | "requires": { 1353 | "constantinople": "^3.1.2", 1354 | "doctypes": "^1.1.0", 1355 | "js-stringify": "^1.0.1", 1356 | "pug-attrs": "^2.0.4", 1357 | "pug-error": "^1.3.3", 1358 | "pug-runtime": "^2.0.5", 1359 | "void-elements": "^2.0.1", 1360 | "with": "^5.0.0" 1361 | } 1362 | }, 1363 | "pug-error": { 1364 | "version": "1.3.3", 1365 | "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", 1366 | "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", 1367 | "dev": true, 1368 | "optional": true 1369 | }, 1370 | "pug-filters": { 1371 | "version": "3.1.1", 1372 | "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", 1373 | "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", 1374 | "dev": true, 1375 | "optional": true, 1376 | "requires": { 1377 | "clean-css": "^4.1.11", 1378 | "constantinople": "^3.0.1", 1379 | "jstransformer": "1.0.0", 1380 | "pug-error": "^1.3.3", 1381 | "pug-walk": "^1.1.8", 1382 | "resolve": "^1.1.6", 1383 | "uglify-js": "^2.6.1" 1384 | } 1385 | }, 1386 | "pug-lexer": { 1387 | "version": "4.1.0", 1388 | "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", 1389 | "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", 1390 | "dev": true, 1391 | "optional": true, 1392 | "requires": { 1393 | "character-parser": "^2.1.1", 1394 | "is-expression": "^3.0.0", 1395 | "pug-error": "^1.3.3" 1396 | } 1397 | }, 1398 | "pug-linker": { 1399 | "version": "3.0.6", 1400 | "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", 1401 | "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", 1402 | "dev": true, 1403 | "optional": true, 1404 | "requires": { 1405 | "pug-error": "^1.3.3", 1406 | "pug-walk": "^1.1.8" 1407 | } 1408 | }, 1409 | "pug-load": { 1410 | "version": "2.0.12", 1411 | "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", 1412 | "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", 1413 | "dev": true, 1414 | "optional": true, 1415 | "requires": { 1416 | "object-assign": "^4.1.0", 1417 | "pug-walk": "^1.1.8" 1418 | } 1419 | }, 1420 | "pug-parser": { 1421 | "version": "5.0.1", 1422 | "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", 1423 | "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", 1424 | "dev": true, 1425 | "optional": true, 1426 | "requires": { 1427 | "pug-error": "^1.3.3", 1428 | "token-stream": "0.0.1" 1429 | } 1430 | }, 1431 | "pug-runtime": { 1432 | "version": "2.0.5", 1433 | "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", 1434 | "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", 1435 | "dev": true, 1436 | "optional": true 1437 | }, 1438 | "pug-strip-comments": { 1439 | "version": "1.0.4", 1440 | "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", 1441 | "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", 1442 | "dev": true, 1443 | "optional": true, 1444 | "requires": { 1445 | "pug-error": "^1.3.3" 1446 | } 1447 | }, 1448 | "pug-walk": { 1449 | "version": "1.1.8", 1450 | "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", 1451 | "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", 1452 | "dev": true, 1453 | "optional": true 1454 | }, 1455 | "querystring": { 1456 | "version": "0.2.0", 1457 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 1458 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 1459 | "dev": true 1460 | }, 1461 | "readdirp": { 1462 | "version": "3.5.0", 1463 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 1464 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 1465 | "dev": true, 1466 | "optional": true, 1467 | "requires": { 1468 | "picomatch": "^2.2.1" 1469 | } 1470 | }, 1471 | "regenerate": { 1472 | "version": "1.4.2", 1473 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", 1474 | "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", 1475 | "dev": true 1476 | }, 1477 | "regenerate-unicode-properties": { 1478 | "version": "8.2.0", 1479 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", 1480 | "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", 1481 | "dev": true, 1482 | "requires": { 1483 | "regenerate": "^1.4.0" 1484 | } 1485 | }, 1486 | "regenerator-runtime": { 1487 | "version": "0.11.1", 1488 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1489 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 1490 | "dev": true, 1491 | "optional": true 1492 | }, 1493 | "regjsgen": { 1494 | "version": "0.5.2", 1495 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", 1496 | "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", 1497 | "dev": true 1498 | }, 1499 | "regjsparser": { 1500 | "version": "0.6.4", 1501 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", 1502 | "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", 1503 | "dev": true, 1504 | "requires": { 1505 | "jsesc": "~0.5.0" 1506 | }, 1507 | "dependencies": { 1508 | "jsesc": { 1509 | "version": "0.5.0", 1510 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1511 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1512 | "dev": true 1513 | } 1514 | } 1515 | }, 1516 | "repeat-string": { 1517 | "version": "1.6.1", 1518 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1519 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1520 | "dev": true, 1521 | "optional": true 1522 | }, 1523 | "resolve": { 1524 | "version": "1.19.0", 1525 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 1526 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 1527 | "dev": true, 1528 | "requires": { 1529 | "is-core-module": "^2.1.0", 1530 | "path-parse": "^1.0.6" 1531 | } 1532 | }, 1533 | "resolve-url": { 1534 | "version": "0.2.1", 1535 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 1536 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 1537 | "dev": true, 1538 | "optional": true 1539 | }, 1540 | "right-align": { 1541 | "version": "0.1.3", 1542 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 1543 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 1544 | "dev": true, 1545 | "optional": true, 1546 | "requires": { 1547 | "align-text": "^0.1.1" 1548 | } 1549 | }, 1550 | "rollup": { 1551 | "version": "1.32.1", 1552 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", 1553 | "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", 1554 | "dev": true, 1555 | "requires": { 1556 | "@types/estree": "*", 1557 | "@types/node": "*", 1558 | "acorn": "^7.1.0" 1559 | }, 1560 | "dependencies": { 1561 | "acorn": { 1562 | "version": "7.4.1", 1563 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 1564 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 1565 | "dev": true 1566 | } 1567 | } 1568 | }, 1569 | "rollup-plugin-vue": { 1570 | "version": "5.1.9", 1571 | "resolved": "https://registry.npmjs.org/rollup-plugin-vue/-/rollup-plugin-vue-5.1.9.tgz", 1572 | "integrity": "sha512-DXzrBUD2j68Y6nls4MmuJsFL1SrQDpdgjxvhk/oy04LzJmXJoX1x31yLEBFkkmvpbon6Q885WJLvEMiMyT+3rA==", 1573 | "dev": true, 1574 | "requires": { 1575 | "@vue/component-compiler": "^4.2.3", 1576 | "@vue/component-compiler-utils": "^3.1.2", 1577 | "debug": "^4.1.1", 1578 | "hash-sum": "^1.0.2", 1579 | "magic-string": "^0.25.7", 1580 | "querystring": "^0.2.0", 1581 | "rollup-pluginutils": "^2.8.2", 1582 | "source-map": "0.7.3", 1583 | "vue-runtime-helpers": "^1.1.2" 1584 | } 1585 | }, 1586 | "rollup-pluginutils": { 1587 | "version": "2.8.2", 1588 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 1589 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1590 | "dev": true, 1591 | "requires": { 1592 | "estree-walker": "^0.6.1" 1593 | }, 1594 | "dependencies": { 1595 | "estree-walker": { 1596 | "version": "0.6.1", 1597 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1598 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1599 | "dev": true 1600 | } 1601 | } 1602 | }, 1603 | "safer-buffer": { 1604 | "version": "2.1.2", 1605 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1606 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1607 | "dev": true, 1608 | "optional": true 1609 | }, 1610 | "sass": { 1611 | "version": "1.32.2", 1612 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.2.tgz", 1613 | "integrity": "sha512-u1pUuzqwz3SAgvHSWp1k0mRhX82b2DdlVnP6UIetQPZtYbuJUDaPQhZE12jyjB7vYeOScfz9WPsZJB6Rpk7heA==", 1614 | "dev": true, 1615 | "optional": true, 1616 | "requires": { 1617 | "chokidar": ">=2.0.0 <4.0.0" 1618 | } 1619 | }, 1620 | "sax": { 1621 | "version": "1.2.4", 1622 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 1623 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 1624 | "dev": true, 1625 | "optional": true 1626 | }, 1627 | "semver": { 1628 | "version": "5.7.1", 1629 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1630 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1631 | "dev": true, 1632 | "optional": true 1633 | }, 1634 | "source-map": { 1635 | "version": "0.7.3", 1636 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 1637 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 1638 | "dev": true 1639 | }, 1640 | "source-map-resolve": { 1641 | "version": "0.5.3", 1642 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 1643 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 1644 | "dev": true, 1645 | "optional": true, 1646 | "requires": { 1647 | "atob": "^2.1.2", 1648 | "decode-uri-component": "^0.2.0", 1649 | "resolve-url": "^0.2.1", 1650 | "source-map-url": "^0.4.0", 1651 | "urix": "^0.1.0" 1652 | } 1653 | }, 1654 | "source-map-url": { 1655 | "version": "0.4.0", 1656 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 1657 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 1658 | "dev": true, 1659 | "optional": true 1660 | }, 1661 | "sourcemap-codec": { 1662 | "version": "1.4.8", 1663 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1664 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1665 | "dev": true 1666 | }, 1667 | "string-hash": { 1668 | "version": "1.1.3", 1669 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 1670 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", 1671 | "dev": true 1672 | }, 1673 | "strip-ansi": { 1674 | "version": "3.0.1", 1675 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1676 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1677 | "dev": true, 1678 | "requires": { 1679 | "ansi-regex": "^2.0.0" 1680 | } 1681 | }, 1682 | "stylus": { 1683 | "version": "0.54.8", 1684 | "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", 1685 | "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", 1686 | "dev": true, 1687 | "optional": true, 1688 | "requires": { 1689 | "css-parse": "~2.0.0", 1690 | "debug": "~3.1.0", 1691 | "glob": "^7.1.6", 1692 | "mkdirp": "~1.0.4", 1693 | "safer-buffer": "^2.1.2", 1694 | "sax": "~1.2.4", 1695 | "semver": "^6.3.0", 1696 | "source-map": "^0.7.3" 1697 | }, 1698 | "dependencies": { 1699 | "debug": { 1700 | "version": "3.1.0", 1701 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1702 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1703 | "dev": true, 1704 | "optional": true, 1705 | "requires": { 1706 | "ms": "2.0.0" 1707 | } 1708 | }, 1709 | "semver": { 1710 | "version": "6.3.0", 1711 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1712 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1713 | "dev": true, 1714 | "optional": true 1715 | } 1716 | } 1717 | }, 1718 | "supports-color": { 1719 | "version": "5.5.0", 1720 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1721 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1722 | "dev": true, 1723 | "requires": { 1724 | "has-flag": "^3.0.0" 1725 | } 1726 | }, 1727 | "to-fast-properties": { 1728 | "version": "1.0.3", 1729 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1730 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 1731 | "dev": true, 1732 | "optional": true 1733 | }, 1734 | "to-regex-range": { 1735 | "version": "5.0.1", 1736 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1737 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1738 | "dev": true, 1739 | "optional": true, 1740 | "requires": { 1741 | "is-number": "^7.0.0" 1742 | } 1743 | }, 1744 | "token-stream": { 1745 | "version": "0.0.1", 1746 | "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", 1747 | "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", 1748 | "dev": true, 1749 | "optional": true 1750 | }, 1751 | "tslib": { 1752 | "version": "1.14.1", 1753 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1754 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 1755 | "dev": true, 1756 | "optional": true 1757 | }, 1758 | "uglify-js": { 1759 | "version": "2.8.29", 1760 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 1761 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 1762 | "dev": true, 1763 | "optional": true, 1764 | "requires": { 1765 | "source-map": "~0.5.1", 1766 | "uglify-to-browserify": "~1.0.0", 1767 | "yargs": "~3.10.0" 1768 | }, 1769 | "dependencies": { 1770 | "source-map": { 1771 | "version": "0.5.7", 1772 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1773 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1774 | "dev": true, 1775 | "optional": true 1776 | } 1777 | } 1778 | }, 1779 | "uglify-to-browserify": { 1780 | "version": "1.0.2", 1781 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 1782 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 1783 | "dev": true, 1784 | "optional": true 1785 | }, 1786 | "unicode-canonical-property-names-ecmascript": { 1787 | "version": "1.0.4", 1788 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 1789 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 1790 | "dev": true 1791 | }, 1792 | "unicode-match-property-ecmascript": { 1793 | "version": "1.0.4", 1794 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 1795 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 1796 | "dev": true, 1797 | "requires": { 1798 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 1799 | "unicode-property-aliases-ecmascript": "^1.0.4" 1800 | } 1801 | }, 1802 | "unicode-match-property-value-ecmascript": { 1803 | "version": "1.2.0", 1804 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", 1805 | "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", 1806 | "dev": true 1807 | }, 1808 | "unicode-property-aliases-ecmascript": { 1809 | "version": "1.1.0", 1810 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", 1811 | "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", 1812 | "dev": true 1813 | }, 1814 | "uniq": { 1815 | "version": "1.0.1", 1816 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 1817 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", 1818 | "dev": true 1819 | }, 1820 | "urix": { 1821 | "version": "0.1.0", 1822 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 1823 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 1824 | "dev": true, 1825 | "optional": true 1826 | }, 1827 | "util-deprecate": { 1828 | "version": "1.0.2", 1829 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1830 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1831 | "dev": true 1832 | }, 1833 | "void-elements": { 1834 | "version": "2.0.1", 1835 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 1836 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", 1837 | "dev": true, 1838 | "optional": true 1839 | }, 1840 | "vue": { 1841 | "version": "2.6.12", 1842 | "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", 1843 | "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==", 1844 | "dev": true 1845 | }, 1846 | "vue-runtime-helpers": { 1847 | "version": "1.1.2", 1848 | "resolved": "https://registry.npmjs.org/vue-runtime-helpers/-/vue-runtime-helpers-1.1.2.tgz", 1849 | "integrity": "sha512-pZfGp+PW/IXEOyETE09xQHR1CKkR9HfHZdnMD/FVLUNI+HxYTa82evx5WrF6Kz4s82qtqHvMZ8MZpbk2zT2E1Q==", 1850 | "dev": true 1851 | }, 1852 | "vue-template-compiler": { 1853 | "version": "2.6.12", 1854 | "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", 1855 | "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", 1856 | "dev": true, 1857 | "requires": { 1858 | "de-indent": "^1.0.2", 1859 | "he": "^1.1.0" 1860 | } 1861 | }, 1862 | "vue-template-es2015-compiler": { 1863 | "version": "1.9.1", 1864 | "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", 1865 | "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", 1866 | "dev": true 1867 | }, 1868 | "window-size": { 1869 | "version": "0.1.0", 1870 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 1871 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 1872 | "dev": true, 1873 | "optional": true 1874 | }, 1875 | "with": { 1876 | "version": "5.1.1", 1877 | "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", 1878 | "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", 1879 | "dev": true, 1880 | "optional": true, 1881 | "requires": { 1882 | "acorn": "^3.1.0", 1883 | "acorn-globals": "^3.0.0" 1884 | }, 1885 | "dependencies": { 1886 | "acorn": { 1887 | "version": "3.3.0", 1888 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 1889 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 1890 | "dev": true, 1891 | "optional": true 1892 | } 1893 | } 1894 | }, 1895 | "wordwrap": { 1896 | "version": "0.0.2", 1897 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 1898 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 1899 | "dev": true, 1900 | "optional": true 1901 | }, 1902 | "wrappy": { 1903 | "version": "1.0.2", 1904 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1905 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1906 | "dev": true 1907 | }, 1908 | "yallist": { 1909 | "version": "2.1.2", 1910 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 1911 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 1912 | "dev": true 1913 | }, 1914 | "yargs": { 1915 | "version": "3.10.0", 1916 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 1917 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 1918 | "dev": true, 1919 | "optional": true, 1920 | "requires": { 1921 | "camelcase": "^1.0.2", 1922 | "cliui": "^2.1.0", 1923 | "decamelize": "^1.0.0", 1924 | "window-size": "0.1.0" 1925 | } 1926 | } 1927 | } 1928 | } 1929 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinymotion", 3 | "version": "0.2.0", 4 | "license": "MIT", 5 | "main": "dist/tinymotion.umd.js", 6 | "module": "dist/tinymotion.esm.js", 7 | "unpkg": "dist/tinymotion.min.js", 8 | "browser": { 9 | "./sfc": "src/Motion.vue" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/lepikhinb/tinymotion.git" 14 | }, 15 | "files": [ 16 | "dist" 17 | ], 18 | "tags": [ 19 | "vue", 20 | "animation", 21 | "tailwind", 22 | "tailwindcss", 23 | "motion", 24 | "framer" 25 | ], 26 | "engines": { 27 | "node": ">=10" 28 | }, 29 | "scripts": { 30 | "build": "npm run build:umd & npm run build:es & npm run build:unpkg", 31 | "build:umd": "rollup --config build/rollup.config.js --format umd --file dist/tinymotion.umd.js", 32 | "build:es": "rollup --config build/rollup.config.js --format es --file dist/tinymotion.esm.js", 33 | "build:unpkg": "rollup --config build/rollup.config.js --format iife --file dist/tinymotion.min.js" 34 | }, 35 | "devDependencies": { 36 | "rollup": "^1.17.0", 37 | "@rollup/plugin-buble": "^0.21.3", 38 | "@rollup/plugin-commonjs": "^11.1.0", 39 | "rollup-plugin-vue": "^5.0.1", 40 | "vue": "^2.6.10", 41 | "vue-template-compiler": "^2.6.10" 42 | } 43 | } -------------------------------------------------------------------------------- /src/Motion.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/animator.js: -------------------------------------------------------------------------------- 1 | const SINGLE_WORD_PROPERTIES = [ 2 | 'bg', 3 | 'text', 4 | 'border', 5 | 'ring', 6 | ]; 7 | 8 | class Animator { 9 | constructor(el, options, trigger, action) { 10 | this.el = el; 11 | this.options = options; 12 | this.action = action; 13 | this.trigger = trigger; 14 | this.index = 0; 15 | this.timeline = []; 16 | this.runTimer = {}; 17 | this.rollbackTimer = {}; 18 | this.durations = []; 19 | } 20 | 21 | setup() { 22 | this.registerListeners(); 23 | this.buildTimeline(); 24 | 25 | this.timeline[0].forEach(className => { 26 | this.el.classList.add(className); 27 | }); 28 | } 29 | 30 | registerListeners() { 31 | if (this.action === 'hover') { 32 | this.el.addEventListener('mouseenter', () => this.start(true)) 33 | 34 | if (this.options.rollback) { 35 | this.el.addEventListener('mouseleave', () => this.stop(true)) 36 | } 37 | } 38 | 39 | else if (this.action === 'click') { 40 | this.el.addEventListener('mousedown', () => this.start(true)) 41 | this.el.addEventListener('touchstart', () => this.start(true)) 42 | 43 | if (this.options.rollback) { 44 | this.el.addEventListener('mouseup', () => this.stop(true)) 45 | this.el.addEventListener('touchend', () => this.stop(true)) 46 | } 47 | } 48 | 49 | else if (this.action === 'auto') { 50 | this.start(true); 51 | } 52 | } 53 | 54 | destroyListeners() { 55 | this.el.removeEventListener('mouseenter', this.start) 56 | this.el.removeEventListener('mouseleave', this.stop) 57 | this.el.removeEventListener('mousedown', this.start) 58 | this.el.removeEventListener('mouseup', this.stop) 59 | this.el.removeEventListener('touchstart', this.start) 60 | this.el.removeEventListener('touchend', this.stop) 61 | } 62 | 63 | parseProperty(property) { 64 | let propertyParts = property.split("-"); 65 | let propertyNameParts = []; 66 | let value; 67 | 68 | // bg-green-500 is a "single-word" property, while translate-x-3 is not 69 | if (SINGLE_WORD_PROPERTIES.includes(propertyParts[0]) && propertyParts.length == 3) { 70 | propertyNameParts = propertyParts.splice( 71 | 0, 72 | 1 73 | ); 74 | 75 | value = propertyParts.join('-'); 76 | } 77 | 78 | // property without a value part (rounded, shadow, border) 79 | else if (propertyParts.length == 1) { 80 | propertyNameParts = propertyParts; 81 | 82 | value = null; 83 | } 84 | 85 | // other properties (w-16, shadow-lg) 86 | else { 87 | propertyNameParts = propertyParts.splice( 88 | 0, 89 | propertyParts.length - 1 90 | ); 91 | 92 | value = propertyParts[propertyParts.length - 1]; 93 | } 94 | 95 | let propertyName = propertyNameParts.join("-"); 96 | 97 | // -translate-x-3 converts to a property translate-x with the value of -3 98 | if (propertyNameParts[0] == "") { 99 | propertyName = propertyNameParts 100 | .splice(1) 101 | .join("-"); 102 | value = -value; 103 | } 104 | 105 | return [propertyName, value]; 106 | } 107 | 108 | getUsedProperties(keyframes) { 109 | return keyframes.map((keyframe) => { 110 | return keyframe.split(" ").map((property) => { 111 | let [propertyName] = this.parseProperty(property); 112 | 113 | return propertyName; 114 | }); 115 | }) 116 | .flat(1) 117 | .filter((v, i, a) => a.indexOf(v) === i); 118 | } 119 | 120 | buildTimeline() { 121 | let properties = this.getUsedProperties(this.options[this.action]); 122 | let timeline = []; 123 | 124 | // build a list of properties with values 125 | this.options[this.action].forEach((keyframe, index) => { 126 | let classList = {}; 127 | 128 | keyframe = keyframe.split(" ").map((property) => { 129 | let [propertyName, value] = this.parseProperty(property); 130 | let result = {}; 131 | 132 | result[propertyName] = value; 133 | return result; 134 | }); 135 | 136 | keyframe = Object.assign({}, ...keyframe); 137 | 138 | properties.forEach((propertyName) => { 139 | if (keyframe[propertyName] !== undefined) { 140 | classList[propertyName] = keyframe[propertyName]; 141 | } else if (index != 0 && propertyName != 'duration') { 142 | classList[propertyName] = timeline[index - 1][propertyName]; 143 | } else { 144 | classList[propertyName] = null; 145 | } 146 | }); 147 | 148 | if (!classList.duration) { 149 | classList.duration = this.options.duration; 150 | } 151 | 152 | timeline.push(classList); 153 | }); 154 | 155 | // build a sequence of css classes 156 | timeline.forEach((timeframe) => { 157 | let classList = Object.entries(timeframe) 158 | .map(([propertyName, value]) => { 159 | if (value == null) { 160 | return propertyName; 161 | } 162 | else if (parseInt(value) === value && value < 0) { 163 | return `-${propertyName}-${Math.abs(value)}`; 164 | } else { 165 | return `${propertyName}-${value}`; 166 | } 167 | }); 168 | 169 | if (timeframe.duration) { 170 | this.durations.push(timeframe.duration); 171 | } 172 | else { 173 | this.durations.push(this.options.duration); 174 | } 175 | 176 | this.timeline.push(classList); 177 | }); 178 | } 179 | 180 | start(firstInteraction = false) { 181 | if (this.rollbackTimer) { 182 | clearTimeout(this.rollbackTimer); 183 | } 184 | 185 | let duration = firstInteraction ? 0 : this.durations[this.index]; 186 | 187 | if (this.index == 0 && !firstInteraction && this.options.factor) { 188 | duration = this.options.duration * (this.options.factor - 1); 189 | } 190 | 191 | if (firstInteraction) { 192 | duration += this.options.skip * this.durations[this.index]; 193 | duration += this.options.delay; 194 | } 195 | 196 | if (!firstInteraction && this.options.stepDelay) { 197 | duration += this.options.stepDelay; 198 | } 199 | 200 | this.runTimer = setTimeout(() => this.run(), duration); 201 | } 202 | 203 | run() { 204 | if (this.index == this.timeline.length - 1 && !this.options.repeat) { 205 | return; 206 | } 207 | 208 | this.timeline[this.index].forEach(className => { 209 | this.el.classList.remove(className); 210 | }); 211 | 212 | if (this.index == this.timeline.length - 1 && this.options.repeat) { 213 | this.index = 0; 214 | } 215 | else { 216 | this.index++; 217 | } 218 | 219 | this.timeline[this.index].forEach(className => { 220 | this.el.classList.add(className); 221 | }); 222 | 223 | this.start(); 224 | } 225 | 226 | forceRollback() { 227 | return new Promise((resolve) => { 228 | while (this.index > 0) { 229 | this.timeline[this.index].forEach(className => { 230 | this.el.classList.remove(className); 231 | }); 232 | 233 | this.index--; 234 | } 235 | 236 | this.timeline[0].forEach(className => { 237 | this.el.classList.add(className); 238 | }); 239 | 240 | resolve(); 241 | }); 242 | } 243 | 244 | stop(firstInteraction = false) { 245 | if (this.runTimer) { 246 | clearTimeout(this.runTimer); 247 | } 248 | 249 | if (!this.options.rollback) { 250 | return; 251 | } 252 | 253 | if (this.options.instantRollback) { 254 | return this.forceRollback(); 255 | } 256 | 257 | let duration = firstInteraction ? 0 : this.durations[this.index]; 258 | 259 | if (firstInteraction) { 260 | duration += this.options.skip * this.durations[this.index]; 261 | duration += this.options.delay; 262 | } 263 | 264 | if (!firstInteraction && this.options.stepDelay) { 265 | duration += this.options.stepDelay; 266 | } 267 | 268 | this.rollbackTimer = setTimeout(() => this.rollback(), duration); 269 | } 270 | 271 | rollback() { 272 | if (this.index == 0) { 273 | return; 274 | } 275 | 276 | this.timeline[this.index].forEach(className => { 277 | this.el.classList.remove(className); 278 | }); 279 | 280 | this.index--; 281 | 282 | this.timeline[this.index].forEach(className => { 283 | this.el.classList.add(className); 284 | }); 285 | 286 | this.stop(); 287 | } 288 | } 289 | 290 | export { Animator as default }; -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import component from './Motion.vue'; 2 | import Animator from './animator'; 3 | 4 | export function install(Vue) { 5 | if (install.installed) return; 6 | install.installed = true; 7 | Vue.component('Motion', component); 8 | } 9 | 10 | const plugin = { 11 | install 12 | }; 13 | 14 | let GlobalVue = null; 15 | if (typeof window !== 'undefined') { 16 | GlobalVue = window.Vue; 17 | } else if (typeof global !== 'undefined') { 18 | GlobalVue = global.Vue; 19 | } 20 | if (GlobalVue) { 21 | GlobalVue.use(plugin); 22 | } 23 | 24 | export default component; 25 | export { Animator }; --------------------------------------------------------------------------------