diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 1fe42926..00000000 --- a/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -# top-most editorconfig file -root = true - -# editor configuration -[*] -charset = utf-8 -end_of_line = lf -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true -insert_final_newline = true - -# preserve markdown line break -[*.md] -trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe07704..00000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml deleted file mode 100644 index f260960f..00000000 --- a/.github/workflows/deploy-docs.yml +++ /dev/null @@ -1,29 +0,0 @@ -# Github workflow to deploy the documentation to Github Pages - -name: Deploy docs - -on: - push: - branches: - - source - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '18' - - - name: Install dependencies - run: npm ci - - - name: Build docs bundle - run: npm run build - - - name: Deploy the documentation - uses: JamesIves/github-pages-deploy-action@releases/v4 - with: - branch: main - folder: docs/.vuepress/dist diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 06e4bad7..00000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -.DS_Store -docs/.vuepress/dist -.vscode \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 00000000..c506125b --- /dev/null +++ b/404.html @@ -0,0 +1,28 @@ + + + + + + mo.js + + + + + + + + + + + + + + + + +

404

There's nothing here.
+ Take me home. +
+ + + diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 8bb1fda7..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Jonas Sandstedt, Xavier Foucrier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 18846dde..d0d030bc 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,4 @@ -# mojs.github.io – [![deploy](https://img.shields.io/github/actions/workflow/status/mojs/mojs.github.io/deploy-docs.yml)](https://github.com/mojs/mojs.github.io/actions/workflows/deploy-docs.yml) +# mojs.github.io +This is the deployed branch for mo · js. To edit the source files. Checkout to the source branch. -Website for tutorials and documentation. - -[![mo · js](logo.svg "mo · js")](https://mojs.github.io/) - -## Get started -* Run `npm i` to install all dependencies -* Run `npm run dev` to run the project locally at `http://localhost:8080`, your browser will open the URL automatically - -## Deploy -* Run `npm run build` -* Try the build locally using `npx serve docs/.vuepress/dist` -* Automatic deployment through Github Actions on the `main` branch - -## Tips for docs writers -If you need very special demo that doesn't work with the `` or the `MojsInteractive` components, create a new one and add it to the "components" folder. Make sure the name doesn't contain a number, VuePress doesn't like that. - -### Known bugs -* If you get an `Unknown custom element` or any other weird errors, try restarting VuePress by stopping the process in your terminal, then run `npm run dev` again to clear the VuePress cache. It's probably due to some JS error in a custom component that you used to wrote. - -* If you get an `Errors compiling template: tag

has no matching end tag.` error, make sure you have a double line break before any HTML comments (` -``` - -### Conversion guide -Guide to convert jsx pages from the old mojs website to markdown. - -#### Use find and replace in the file: -- `(.+?)` replace with `[$2]($1)` -- `` replace with `> ` (make sure to remove the newline too) -- `` replace with `` -- `(.+?)` replace with "`$1`" -- `

(.+?)
` replace with `# $1` -- `` replace with `
` -- `https://github.com/legomushroom/mojs/blob/master/api/` replace with `/api/` -- `` and `` replace with -```html - -[Link to pen](https://codepen.io/sol0mka/pen/$1) -``` -- `` replace with `Example gif` -- `` replace with `// pen $1 \n```js` -- `` replace with "```" -- ` or MojsInteractive element - -Happy coding with `mojs` :tada: +![mo · js](logo.png "mo · js") diff --git a/api/easing/approximate.html b/api/easing/approximate.html new file mode 100644 index 00000000..de5d36d2 --- /dev/null +++ b/api/easing/approximate.html @@ -0,0 +1,61 @@ + + + + + + Approximate | mo.js + + + + + + + + + + + + + + + + +

# Approximate

The approximate function samples any given function with slow running time and returns new easing function with very fast one. The result still slower than base easing functions and may contain a tiny approximation error (by default less than 0.0001).

The syntax:

  var fastEasing = mojs.easing.approximate( slowEasing, n = 4 );
+  // where `n` is optional quantity of samples as `10^n` (larger `n` - smaller error).
+

Another strategy for the approximate function is to feed it with precomputed JSON data to same CPU pressure from presampling the slow function:

  var samples = require('./samples.json');
+  var fastEasing = mojs.easing.approximate( slowEasing, samples );
+  // where `samples` is `JSON` object that contains presampled data.
+

You can have the presampled data by calling getSamples function:

  var fastEasing = mojs.easing.approximate( slowEasing );
+  var samples = fastEasing.getSamples();
+
+ + + diff --git a/api/easing/base-functions.html b/api/easing/base-functions.html new file mode 100644 index 00000000..d9ba6eb7 --- /dev/null +++ b/api/easing/base-functions.html @@ -0,0 +1,106 @@ + + + + + + Base Easing Functions | mo.js + + + + + + + + + + + + + + + + +

# Base Easing Functions

The base easing functions could be expressed with strings that contain easing name and direction delimited by . or could be accessed directly on mojs.easing object:

  // ...
+  easing: 'cubic.in',
+  // or
+  easing: mojs.easing.cubic.in
+  // ...
+

The full list of base functions:


+  'linear.none'
+
+  'ease.in'
+  'ease.out'
+  'ease.inout'
+
+  'sin.in'
+  'sin.out'
+  'sin.inout'
+
+  'quad.in'
+  'quad.out'
+  'quad.inout'
+
+  'cubic.in'
+  'cubic.out'
+  'cubic.inout'
+
+  'quart.in'
+  'quart.out'
+  'quart.inout'
+
+  'quint.in'
+  'quint.out'
+  'quint.inout'
+
+  'expo.in'
+  'expo.out'
+  'expo.inout'
+
+  'circ.in'
+  'circ.out'
+  'circ.inout'
+
+  'back.in'
+  'back.out'
+  'back.inout'
+
+  'elastic.in'
+  'elastic.out'
+  'elastic.inout'
+
+  'bounce.in'
+  'bounce.out'
+  'bounce.inout'
+
+
+ + + diff --git a/api/easing/bezier-curves.html b/api/easing/bezier-curves.html new file mode 100644 index 00000000..5e555398 --- /dev/null +++ b/api/easing/bezier-curves.html @@ -0,0 +1,59 @@ + + + + + + Bezier Curves | mo.js + + + + + + + + + + + + + + + + +

# Bezier Curves

The bezier curves functions can be expressed with string containing bezier() function or with mojs.easing.bezier constructor that returns a function:

  // ...
+  easing: 'bezier()',
+  // or
+  easing: mojs.easing.path('M0,100 C50,100 50,67.578125 50,50 C50,32.421875 50,0 100,0')
+  // ...
+
+ + + diff --git a/api/easing/path-easing.html b/api/easing/path-easing.html new file mode 100644 index 00000000..b6360b0e --- /dev/null +++ b/api/easing/path-easing.html @@ -0,0 +1,59 @@ + + + + + + Path Easing | mo.js + + + + + + + + + + + + + + + + +

# Path Easing

The path easing functions can be expressed with string containing svg path cordinates or with easing.path constructor that returns a function:

  // ...
+  easing: 'M0,100 C50,100 50,67.578125 50,50 C50,32.421875 50,0 100,0',
+  // or
+  easing: mojs.easing.path('M0,100 C50,100 50,67.578125 50,50 C50,32.421875 50,0 100,0')
+  // ...
+
+ + + diff --git a/api/index.html b/api/index.html new file mode 100644 index 00000000..995d8982 --- /dev/null +++ b/api/index.html @@ -0,0 +1,54 @@ + + + + + + API overview | mo.js + + + + + + + + + + + + + + + + + + + + diff --git a/api/modules/burst/index.html b/api/modules/burst/index.html new file mode 100644 index 00000000..0d113a9d --- /dev/null +++ b/api/modules/burst/index.html @@ -0,0 +1,205 @@ + + + + + + Burst | mo.js + + + + + + + + + + + + + + + + +

# Burst

Full API reference:

const burst = new mojs.Burst({
+
+  /* BURST PROPERTIES */
+
+  // Parent of the module. {String, Object} [selector, HTMLElement]
+  parent:           document.body,
+
+  // Class name. {String}
+  className:        '',
+
+  // ∆ , Units :: Left position of the module. {Number, String}
+  left:             '50%',
+
+  // ∆ , Units :: Top position of the module. {Number, String}
+  top:              '50%',
+
+  // ∆ , Units :: X shift. {Number, String}
+  x:                0,
+
+  // ∆ , Units :: Y shift. {Number, String}
+  y:                0,
+
+  // ∆ :: Angle. {Number, String}
+  rotate:            0,
+
+  // ∆ :: Scale of the module. {Number}
+  scale:            1,
+
+  // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number}
+  scaleX:           null,
+
+  // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number}
+  scaleY:           null,
+
+  // ∆ , Unit :: Origin for `x`, `y`, `scale`, `rotate` properties. {String}
+  origin:           '50% 50%',
+
+  // ∆ :: Opacity. {Number} [ 0..1 ]
+  opacity:          1,
+
+  /*
+    Radius of the radial shape that child particles form. Note that it has different meaning compared to shape-swirl. Burst `radius` defines radius of the children module
+  */
+  radius:       null,
+
+  // Quantity of Burst particles. {Number} [ > 0 ]
+  count:    5,
+
+  // Degree of circlular shape that the particles form. {Number} [ > 0 ]
+  degree:   360,
+
+  // ∆ :: Radius of the Burst. {Number}
+  radius:   { 0: 50 },
+
+  // ∆ :: Radius X of the Burst (fallbacks to `radius`). {Number}
+  radiusX:  null,
+
+  // ∆ :: Radius Y of the Burst (fallbacks to `radius`). {Number}
+  radiusY:  null,
+
+  // If should hide module with `transforms` instead of `display`. {Boolean}
+  isSoftHide:       true,
+
+  // If should trigger composite layer for the module. {Boolean}
+  isForce3d:        false,
+
+  // If should be shown before animation starts. {Boolean}
+  isShowStart:      false,
+
+  // If should stay shown after animation ends. {Boolean}
+  isShowEnd:        true,
+
+  // If refresh state on subsequent plays. {Boolean}
+  isRefreshState:   true,
+
+  /*
+    Options for each children ShapeSwirl element. {Object}
+    Supports `Stagger` strings for numeric values and `Property Maps` overall.
+    see `Stagger Strings` and `Property Maps` section for more info.
+  */
+  children: {
+    /* (+) SHAPE SWIRL PROPERTIES AND CALLBACKS (excluding `x` and `y`) - see ShapeSwirl API */
+  }
+
+  // Options for timeline that controls all child and main Shape Swirls. {Object}
+  timeline: {
+   /* (+) TIMELINE PROPERTIES AND CALLBACKS - see Tween API */
+  }
+
+})
+
+  /*
+    Creates next state transition chain.
+    @param options {Object} Next shape state.
+  */
+  .then({ /* next state options */ })
+
+  /*
+    Tunes start state with new options.
+    @param options {Object} New start properties.
+  */
+  .tune({ /* new start properties */ })
+
+  /*
+    Regenerates all randoms in initial properties.
+  */
+  .generate()
+
+  /*
+    Starts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .play( shift = 0 )
+  /*
+    Starts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .playBackward( shift = 0 )
+  /*
+    Pauses playback.
+  */
+  .pause()
+  /*
+    Restarts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replay( shift = 0 )
+  /*
+    Restarts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replayBackward( shift = 0 )
+  /*
+    Resumes playback in direction it was prior to `pause`.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .resume( shift = 0 )
+  /*
+    Sets progress of the tween.
+    @param progress {Number} Progress to set [ 0..1 ].
+  */
+  .setProgress( progress )
+  /*
+    Sets speed of the tween.
+    @param speed {Number} Progress to set [ 0..∞ ].
+  */
+  setSpeed ( speed )
+
+  /* Stops and resets the tween. */
+  reset ( speed )
+
+
+ + + diff --git a/api/modules/html/index.html b/api/modules/html/index.html new file mode 100644 index 00000000..8f9068b7 --- /dev/null +++ b/api/modules/html/index.html @@ -0,0 +1,252 @@ + + + + + + Html | mo.js + + + + + + + + + + + + + + + + +

# Html


# References:

# Contents:

# Full API Reference:

The module has transforms/opacity (x, y, opacity etc.) predefined properties listed below. Browsers can handle animation of that properties easily, so ideally you should not use properties besides predefined set.

const html = new mojs.Html({
+  // HTMLElement to animate. {String, Object} [selector, HTMLElement]
+  el:           null,
+  // ∆ :: translateX property. {String, Number, Object} [value, delta]
+  x:          0,
+  // ∆ :: translateY property. {String, Number, Object} [value, delta]
+  y:          0,
+  // ∆ :: translateZ property. {String, Number, Object} [value, delta]
+  z:          0,
+  // ∆ :: skewX property. {String, Number, Object} [value, delta]
+  skewX:      0,
+  // ∆ :: skewY property. {String, Number, Object} [value, delta]
+  skewY:      0,
+  // ∆ :: rotateX property. {String, Number, Object} [value, delta]
+  rotateX:     0,
+  // ∆ :: rotateY property. {String, Number, Object} [value, delta]
+  rotateY:     0,
+  // ∆ :: rotateZ property. {String, Number, Object} [value, delta]
+  rotateZ:     0,
+  // ∆ :: scale property. {String, Number, Object} [value, delta]
+  scale:      1,
+  // ∆ :: scaleX property. {String, Number, Object} [value, delta]
+  scaleX:     1,
+  // ∆ :: scaleY property. {String, Number, Object} [value, delta]
+  scaleY:     1,
+  // ∆ :: opacity property. {String, Number, Object} [value, delta]
+  opacity:    1,
+
+  /*
+    For other CSS properties please see `Other CSS properties` section.
+  */
+
+  // Custom properties to alter mojs behaviour (see `Teach mojs with customProperties` section). {Object}
+  customProperties: null,
+  // If should be shown before animation starts. {Boolean}
+  isShowStart:      true,
+  // If should stay shown after animation ends. {Boolean}
+  isShowEnd:        true,
+  // If should trigger composite layer for the module. {Boolean}
+  isForce3d:        false,
+  // If should hide module with `transforms` instead of `display`. {Boolean}
+  isSoftHide:       true,
+  // If refresh state on subsequent plays. {Boolean}
+  isRefreshState:   true,
+  // Context callbacks will be called with. {Object}
+  callbacksContext: this
+
+  /* TWEEN PROPERTIES */
+  // Duration {Number}
+  duration:       350,
+  // Delay {Number}
+  delay:          0,
+  // If should repeat after animation finished {Number} *(1)
+  repeat:         0,
+  // Speed of the tween {Number}[0..∞]
+  speed:          1,
+  // If the progress should be flipped on repeat animation end {Boolean}
+  isYoyo:         false,
+  // Easing function {String, Function}[ easing name, path coordinates, bezier string, easing function ]
+  easing:         'sin.out',
+  // Easing function for backward direction of the tween animation (fallbacks to `easing`) {String, Function}[ easing name, path coordinates, bezier string, easing function ]
+  backwardEasing: null,
+  // properties fro entire timeline
+  timeline: {
+   /* (+) TIMELINE PROPERTIES AND CALLBACKS - see Tween API */
+  },
+
+  /* TWEEN CALLBACKS */
+  /*
+    Fires on every update of the tween in any period (including delay periods). You probably want to use `onUpdate` method instead.
+    @param p {Number} Normal (not eased) progress.
+    @param isForward {Boolean} Direction of the progress.
+    @param isYoyo {Boolean} If in `yoyo` period.
+  */
+  onProgress (p, isForward, isYoyo) {},
+  /*
+    Fires when tween's the entire progress reaches `0` point(doesn't fire in repeat periods).
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onStart (isForward, isYoyo) {},
+  /*
+    Fires when tween's the progress reaches `0` point in normal or repeat period.
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onFirstUpdate (isForward, isYoyo) {},
+  /*
+    Fires on first update of the tween in sufficiently active period (excluding delay periods).
+    @param ep {Number} Eased progress.
+    @param p {Number} Normal (not eased) progress.
+    @param isForward {Boolean} Direction of the progress.
+    @param isYoyo {Boolean} If in `yoyo` period.
+  */
+  onUpdate (ep, p, isForward, isYoyo) {},
+  /*
+    Fires when tween's the progress reaches `1` point in normal or repeat period.
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onRepeatComplete (isForward, isYoyo) {},
+  /*
+    Fires when tween's the entire progress reaches `1` point(doesn't fire in repeat periods).
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onComplete (isForward, isYoyo) {},
+  /* Fires when the `.play` method called and tween isn't in play state yet. */
+  onPlaybackStart () {},
+  /* Fires when the `.pause` method called and tween isn't in pause state yet. */
+  onPlaybackPause () {},
+  /* Fires when the `.stop` method called and tween isn't in stop state yet. */
+  onPlaybackStop () {},
+  /* Fires when the tween end's animation (regardless progress) */
+  onPlaybackComplete () {},
+
+})
+  /*
+    Creates next state transition chain.
+    @param options {Object} Next shape state.
+  */
+  .then({ /* next state options */ })
+
+  /*
+    Starts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .play( shift = 0 )
+  /*
+    Starts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .playBackward( shift = 0 )
+  /*
+    Resumes playback in direction it was prior to `pause`.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .resume( shift = 0 )
+  /*
+    Pauses playback.
+  */
+  .pause()
+  /*
+    Stops playback.
+    @param {Number} Progress to set after the stop [0...1].
+  */
+  .stop( progress = 0 )
+  /*
+    Restarts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replay( shift = 0 )
+  /*
+    Restarts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replayBackward( shift = 0 )
+  /*
+    Sets progress of the tween.
+    @param progress {Number} Progress to set [ 0..1 ].
+  */
+  .setProgress( progress )
+  /*
+    Sets speed of the tween.
+    @param speed {Number} Progress to set [ 0..∞ ].
+  */
+  .setSpeed ( speed )
+
+  /* Stops and resets the tween. */
+  .reset ( speed )
+
+

# Other CSS properties

Other CSS properties would be inferred automatically, please set them in camelCase:

const html = new mojs.Html({
+  el: "#js-el",
+  borderColor: { cyan: "#FA3204" },
+  borderWidth: { 2: 12 },
+});
+

# Teach mojs with customProperties

If property doesn't work as expected you can teach mojs with a customProperties definition:

const html = new mojs.Html({
+  el: "#js-el",
+  customProperties: {
+    originY: 50,
+    anotherCustomProp: 0,
+    draw(el, props) {
+      el.style["transformOrigin"] = `50% ${props.originY}%`;
+    },
+  },
+});
+

customProperties object should have

  • list of custom properties names with their default value (originY: 50, anotherCustomProp: 0).
  • draw function that will be responsible for rendering that custom properties. It will be called on each animation frame and will be provided with el and props object that contain current states for all custom properties (props.originY, props.anotherCustomProp). Feel free to apply that state to the el any way that works for you.

All custom properties are expected to be plain numbers, you can define units in the draw function.

# Independent deltas

All delta values of the Html module could have entire set of Tween properties and can be animated individually:

const html = new mojs.Html({
+  el: "#js-el",
+  x: { 200: 0, delay: 200, duration: 2000, easing: "cubic.in" },
+  y: {
+    0: 200,
+    duration: 2000,
+    easing: "cubic.out",
+    onComplete() {
+      /* ... */
+    },
+  },
+});
+

This makes mojs animations ultimately flexible.

References:

+ + + diff --git a/api/modules/shape-swirl/index.html b/api/modules/shape-swirl/index.html new file mode 100644 index 00000000..da9874fb --- /dev/null +++ b/api/modules/shape-swirl/index.html @@ -0,0 +1,138 @@ + + + + + + ShapeSwirl | mo.js + + + + + + + + + + + + + + + + +

# ShapeSwirl

Full API reference:

const shapeSwirl = new mojs.ShapeSwirl({
+
+  // ∆ :: Diviation size of sine. {Number}
+  swirlSize:          10,
+
+  // ∆ :: Frequency of sine. {Number}
+  swirlFrequency:     3,
+
+  // ∆ :: Sine length scale. {Number} [ 0..1 ]
+  pathScale:          1,
+
+  // ∆ :: Degree shift for sine path. {Number}
+  degreeShift:        0,
+
+  // [number: -1, 1] :: Directon of sine. {Number} [ -1, 1 ]
+  direction:          1
+
+  // If shape should follow sinusoidal path. {Boolean}
+  isSwirl:            true
+
+  /* (+) SHAPE PROPERTIES AND CALLBACKS - see Shape API */
+
+})
+
+  /*
+    Creates next state transition chain.
+    @param options {Object} Next shape state.
+  */
+  .then({ /* next state options */ })
+
+  /*
+    Tunes start state with new options.
+    @param options {Object} New start properties.
+  */
+  .tune({ /* new start properties */ })
+
+  /*
+    Regenerates all randoms in initial properties.
+  */
+  .generate()
+
+  /*
+    Starts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .play( shift = 0 )
+  /*
+    Starts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .playBackward( shift = 0 )
+  /*
+    Pauses playback.
+  */
+  .pause()
+  /*
+    Restarts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replay( shift = 0 )
+  /*
+    Restarts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replayBackward( shift = 0 )
+  /*
+    Resumes playback in direction it was prior to `pause`.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .resume( shift = 0 )
+  /*
+    Sets progress of the tween.
+    @param progress {Number} Progress to set [ 0..1 ].
+  */
+  .setProgress( progress )
+  /*
+    Sets speed of the tween.
+    @param speed {Number} Progress to set [ 0..∞ ].
+  */
+  setSpeed ( speed )
+
+  /* Stops and resets the tween. */
+  reset ( speed )
+
+
+ + + diff --git a/api/modules/shape/index.html b/api/modules/shape/index.html new file mode 100644 index 00000000..4b5084bf --- /dev/null +++ b/api/modules/shape/index.html @@ -0,0 +1,280 @@ + + + + + + Shape | mo.js + + + + + + + + + + + + + + + + +

# Shape

Full API reference:

const shape = new mojs.Shape({
+
+  /* SHAPE PROPERTIES */
+
+  // Parent of the module. {String, Object} [selector, HTMLElement]
+  parent:           document.body,
+
+  // Class name. {String}
+  className:        '',
+
+  // Shape name. {String} [ 'circle' | 'rect' | 'polygon' | 'line' | 'cross' | 'equal' | 'curve' | 'zigzag' | '*custom defined name*' ]
+  shape:            'circle',
+
+  // ∆ :: Stroke color. {String} [color name, rgb, rgba, hex]
+  stroke:           'transparent',
+
+  // ∆ :: Stroke Opacity. {Number} [ 0..1 ]
+  strokeOpacity:    1,
+
+  // Stroke Line Cap. {String} ['butt' | 'round' | 'square']
+  strokeLinecap:    '',
+
+  // ∆ :: Stroke Width. {Number} [ number ]
+  strokeWidth:      2,
+
+  // ∆ , Units :: Stroke Dash Array. {String, Number}
+  strokeDasharray:  0,
+
+  // ∆ , Units :: Stroke Dash Offset. {String, Number}
+  strokeDashoffset: 0,
+
+  // ∆ :: Fill Color. {String} [color name, rgb, rgba, hex]
+  fill:             'deeppink',
+
+  // ∆ :: Fill Opacity. {Number} [ 0..1 ]
+  fillOpacity:      1,
+
+  // ∆ , Units :: Left position of the module. {Number, String}
+  left:             '50%',
+
+  // ∆ , Units :: Top position of the module. {Number, String}
+  top:              '50%',
+
+  // ∆ , Units :: X shift. {Number, String}
+  x:                0,
+
+  // ∆ , Units :: Y shift. {Number, String}
+  y:                0,
+
+  // ∆ :: Angle. {Number, String}
+  rotate:            0,
+
+  // ∆ :: Scale of the module. {Number}
+  scale:            1,
+
+  // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number}
+  scaleX:           null,
+
+  // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number}
+  scaleY:           null,
+
+  // ∆ , Unit :: Origin for `x`, `y`, `scale`, `rotate` properties. {String}
+  origin:           '50% 50%',
+
+  // ∆ :: Opacity. {Number} [ 0..1 ]
+  opacity:          1,
+
+  // ∆ :: X border radius. {Number, String}
+  rx:               0,
+
+  // ∆ :: Y border radius. {Number, String}
+  ry:               0,
+
+  // ∆ :: Points count ( for polygon, zigzag, equal ). {Number, String}
+  points:           3,
+
+  // ∆ :: Radius of the shape. {Number, String}
+  radius:           50,
+
+  // ∆ :: Radius X of the shape (fallbacks to `radius`). {Number, String}
+  radiusX:          null,
+
+  // ∆ :: Radius Y of the shape (fallbacks to `radius`). {Number, String}
+  radiusY:          null,
+
+  // If should hide module with `transforms` instead of `display`. {Boolean}
+  isSoftHide:       true,
+
+  // If should trigger composite layer for the module. {Boolean}
+  isForce3d:        false,
+
+  // If should be shown before animation starts. {Boolean}
+  isShowStart:      false,
+
+  // If should stay shown after animation ends. {Boolean}
+  isShowEnd:        true,
+
+  // If refresh state on subsequent plays. {Boolean}
+  isRefreshState:   true,
+
+  // Context callbacks will be called with. {Object}
+  callbacksContext: this,
+
+  /* TWEEN PROPERTIES */
+  // Duration {Number}
+  duration:       350,
+  // Delay {Number}
+  delay:          0,
+  // If should repeat after animation finished {Number} *(1)
+  repeat:         0,
+  // Speed of the tween {Number}[0..∞]
+  speed:          1,
+  // If the progress should be flipped on repeat animation end {Boolean}
+  isYoyo:         false,
+  // Easing function {String, Function}[ easing name, path coordinates, bezier string, easing function ]
+  easing:         'sin.out',
+  // Easing function for backward direction of the tween animation (fallbacks to `easing`) {String, Function}[ easing name, path coordinates, bezier string, easing function ]
+  backwardEasing: null,
+
+  /* TWEEN CALLBACKS */
+  /*
+    Fires on every update of the tween in any period (including delay periods). You probably want to use `onUpdate` method instead.
+    @param p {Number} Normal (not eased) progress.
+    @param isForward {Boolean} Direction of the progress.
+    @param isYoyo {Boolean} If in `yoyo` period.
+  */
+  onProgress (p, isForward, isYoyo) {},
+  /*
+    Fires when tween's the entire progress reaches `0` point(doesn't fire in repeat periods).
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onStart (isForward, isYoyo) {},
+  /*
+    Fires when tween's the progress reaches `0` point in normal or repeat period.
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onFirstUpdate (isForward, isYoyo) {},
+  /*
+    Fires on first update of the tween in sufficiently active period (excluding delay periods).
+    @param ep {Number} Eased progress.
+    @param p {Number} Normal (not eased) progress.
+    @param isForward {Boolean} Direction of the progress.
+    @param isYoyo {Boolean} If in `yoyo` period.
+  */
+  onUpdate (ep, p, isForward, isYoyo) {},
+  /*
+    Fires when tween's the progress reaches `1` point in normal or repeat period.
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onRepeatComplete (isForward, isYoyo) {},
+  /*
+    Fires when tween's the entire progress reaches `1` point(doesn't fire in repeat periods).
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onComplete (isForward, isYoyo) {},
+  /* Fires when the `.play` method called and tween isn't in play state yet. */
+  onPlaybackStart () {},
+  /* Fires when the `.pause` method called and tween isn't in pause state yet. */
+  onPlaybackPause () {},
+  /* Fires when the `.stop` method called and tween isn't in stop state yet. */
+  onPlaybackStop () {},
+  /* Fires when the tween end's animation (regardless progress) */
+  onPlaybackComplete () {},
+
+})
+  /*
+    Creates next state transition chain.
+    @param options {Object} Next shape state.
+  */
+  .then({ /* next state options */ })
+  /*
+    Tunes start state with new options.
+    @param options {Object} New start properties.
+  */
+  .tune({ /* new start properties */ })
+
+  /*
+    Regenerates all randoms in initial properties.
+  */
+  .generate()
+  /*
+    Starts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .play( shift = 0 )
+  /*
+    Starts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .playBackward( shift = 0 )
+  /*
+    Pauses playback.
+  */
+  .pause()
+  /*
+    Restarts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replay( shift = 0 )
+  /*
+    Restarts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replayBackward( shift = 0 )
+  /*
+    Resumes playback in direction it was prior to `pause`.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .resume( shift = 0 )
+  /*
+    Sets progress of the tween.
+    @param progress {Number} Progress to set [ 0..1 ].
+  */
+  .setProgress( progress )
+  /*
+    Sets speed of the tween.
+    @param speed {Number} Progress to set [ 0..∞ ].
+  */
+  setSpeed ( speed )
+  /* Stops and resets the tween. */
+  reset ( speed )
+
+
+ + + diff --git a/api/syntax/property-maps.html b/api/syntax/property-maps.html new file mode 100644 index 00000000..d46e3a90 --- /dev/null +++ b/api/syntax/property-maps.html @@ -0,0 +1,58 @@ + + + + + + Property Map Syntax | mo.js + + + + + + + + + + + + + + + + +

# Property Map Syntax

Property Map array was designed to express sequential values. Often used with Burst and Stagger modules to generate values that repeat over children length. Basically it is just an array that maps its values to children based on child index with mod function. So if you have property map with 3 values and 5 children, then 4th and 5th items will recieve 0th and 1st values from the map respecively. Works with any values inside the array.

You can provide a null value if you wanna use the default value.

Full API reference:

  // ...
+  property : [ 20, { 20 : 0 }, 'rand(0, 20)', null ]
+  // ...
+
+
+ + + diff --git a/api/syntax/rand.html b/api/syntax/rand.html new file mode 100644 index 00000000..ca142599 --- /dev/null +++ b/api/syntax/rand.html @@ -0,0 +1,79 @@ + + + + + + Rand Strings Syntax | mo.js + + + + + + + + + + + + + + + + +

# Rand Strings Syntax

Rand string was designed to express random numeric values. Can be unit based (percents, pixels, rems etc.).

Full API reference:

  // ...
+  property : 'rand(min, max)',
+  // ...
+
+

TIP

If you wanna update the random value after it's been declared, you can use the generate() function.

# Example usage

const example = new mojs.ShapeSwirl({
+  parent: '#example',
+  left: 0, top: 0,
+  duration:       'rand(600, 1000)',
+  radius:         'rand(10, 20)',
+  pathScale:      'rand(.5, 1)',
+  swirlFrequency: 'rand(2, 4)',
+  swirlSize:      'rand(6, 14)',
+});
+
+document.getElementById('example').addEventListener( 'click', function (e) {
+  const x = e.layerX,
+    y = { [e.layerY]: e.layerY - 150 };
+  example
+    .tune({ x, y })
+    .generate()
+    .replay();
+});
+
+example.play();

Click anywere to see the updated random value

+ + + diff --git a/api/syntax/stagger.html b/api/syntax/stagger.html new file mode 100644 index 00000000..e4ced4a8 --- /dev/null +++ b/api/syntax/stagger.html @@ -0,0 +1,58 @@ + + + + + + Stagger Strings Syntax | mo.js + + + + + + + + + + + + + + + + +

# Stagger Strings Syntax

Stagger string was designed to express continious numeric values. Often used with Burst and Stagger modules to generate a value on children with some step.

Takes 2 parameters:

  1. start - start value for all children.
  2. step - step of addition. It gets multiplied by child index and added to the start.

Full API reference:

  // ...
+  property : 'stagger( start, step )'
+  // ...
+
+
+ + + diff --git a/api/syntax/units.html b/api/syntax/units.html new file mode 100644 index 00000000..21a76d7f --- /dev/null +++ b/api/syntax/units.html @@ -0,0 +1,55 @@ + + + + + + Available Units | mo.js + + + + + + + + + + + + + + + + +

# Available Units

The list of available units: px|%|rem|em|ex|cm|ch|mm|in|pt|pc|vh|vw|vmin.

If start and end units of delta are different - mojs will fallback to end units.

Usage with properties:

  // ...
+  property :   '20rem',
+  property2 :  { '10%' : '100%' },
+  // ...
+
+
+ + + diff --git a/api/tweens/timeline.html b/api/tweens/timeline.html new file mode 100644 index 00000000..fda3db59 --- /dev/null +++ b/api/tweens/timeline.html @@ -0,0 +1,82 @@ + + + + + + Timeline | mo.js + + + + + + + + + + + + + + + + +

# Timeline

Timeline inherits all properties, callbacks and public methods from Tween, the only difference between Tween and Timeline is that the later doesn't have the duration property - it gets calculated from durations/delays of children. Also Timeline add two public methods that can recieve children. Please check the Tween API for reference.

Full API reference:

const timeline = new mojs.Timeline({
+
+  /* PROPERTIES */
+
+  /* (+) TWEEN PROPERTIES AND CALLBACKS - see Tween API */
+
+  /*
+    Note: The timeline inherits all tween properties, callbacks and public methods excluding `duration` property. The `duration` property is computed automatically regarding children tweens and timelines.
+  */
+  duration:     null
+
+})
+
+  /* PUBLIC METHODS */
+
+  /*
+    Adds children tweens/timelines to the timeline.
+    @param children {Object, Array} Tweens/Timelines or array of such.
+  */
+  .add( tween ) {}
+  /*
+    Appends children tweens/timelines to the timeline after the current children.
+    @param children {Object, Array} Tweens/Timelines or array of such.
+  */
+  .append( tween ) {}
+
+  /* (+) TWEEN PUBLIC METHODS - see Tween API */
+
+
+ + + diff --git a/api/tweens/tween.html b/api/tweens/tween.html new file mode 100644 index 00000000..a34969e3 --- /dev/null +++ b/api/tweens/tween.html @@ -0,0 +1,181 @@ + + + + + + Tween | mo.js + + + + + + + + + + + + + + + + +

# Tween

Full API reference:

const tween = new mojs.Tween({
+
+  /* PROPERTIES */
+
+  // Duration {Number}
+  duration:       350,
+  // Delay {Number}
+  delay:          0,
+  // If should repeat after animation finished {Number} *(1)
+  repeat:         0,
+  // Speed of the tween {Number}[0..∞]
+  speed:          1,
+  // If the progress should be flipped on repeat animation end {Boolean}
+  isYoyo:         false,
+  // Easing function {String, Function}[ easing name, path coordinates, bezier string, easing function ]
+  easing:         'sin.out',
+  // Easing function for backward direction of the tween animation (fallbacks to `easing`) {String, Function}[ easing name, path coordinates, bezier string, easing function ]
+  backwardEasing: null,
+
+  /* CALLBACKS (in order of firing) */
+
+  /*
+    Fires on every when progress needs an update. For instance when tween was finished an remains in `1` progress state, and you will play it again - it will stay in the `1` state until first sufficient update after delay. So the `onRefresh` callback serves you to `refresh` the `1` state with `0` update.
+
+    @param isBefore {Boolean} If `true` - the refresh is before start time.
+  */
+  onRefresh (p, isForward, isYoyo) {},
+
+  /*
+    Fires on every update of the tween in any period (including delay periods). You probably want to use `onUpdate` method instead.
+    @param p {Number} Normal (not eased) progress.
+    @param isForward {Boolean} Direction of the progress.
+    @param isYoyo {Boolean} If in `yoyo` period.
+  */
+  onProgress (p, isForward, isYoyo) {},
+  /*
+    Fires when tween's the entire progress reaches `0` point(doesn't fire in repeat periods).
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onStart (isForward, isYoyo) {},
+  /*
+    Fires when tween's the progress reaches `0` point in normal or repeat period.
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onFirstUpdate (isForward, isYoyo) {},
+  /*
+    Fires on first update of the tween in sufficiently active period (excluding delay periods).
+    @param ep {Number} Eased progress.
+    @param p {Number} Normal (not eased) progress.
+    @param isForward {Boolean} Direction of the progress.
+    @param isYoyo {Boolean} If in `yoyo` period.
+  */
+  onUpdate (ep, p, isForward, isYoyo) {},
+  /*
+    Fires when tween's the progress reaches `1` point in normal or repeat period.
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onRepeatComplete (isForward, isYoyo) {},
+  /*
+    Fires when tween's the entire progress reaches `1` point(doesn't fire in repeat periods).
+    @param isForward {Boolean} If progress moves in forward direction.
+    @param isYoyo {Boolean} If progress inside `yoyo` flip period.
+  */
+  onComplete (isForward, isYoyo) {},
+  /* Fires when the `.play` method called and tween isn't in play state yet. */
+  onPlaybackStart () {},
+  /* Fires when the `.pause` method called and tween isn't in pause state yet. */
+  onPlaybackPause () {},
+  /* Fires when the `.stop` method called and tween isn't in stop state yet. */
+  onPlaybackStop () {},
+  /* Fires when the tween end's animation (regardless progress) */
+  onPlaybackComplete () {},
+})
+  /* PUBLIC METHODS */
+
+  /*
+    Starts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .play( shift = 0 )
+  /*
+    Starts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .playBackward( shift = 0 )
+
+  /*
+    Stops playback.
+    @param progress {Number} Progress to set after stop [0..1]. *Default* is `0`.
+  */
+  .stop( progress = 0 )
+  /*
+    Pauses playback.
+  */
+  .pause()
+  /*
+    Restarts playback.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replay( shift = 0 )
+  /*
+    Restarts playback in backward direction.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .replayBackward( shift = 0 )
+  /*
+    Resumes playback in direction it was prior to `pause`.
+    @param shift {Number} Start progress shift in milliseconds.
+  */
+  .resume( shift = 0 )
+  /*
+    Sets progress of the tween.
+    @param progress {Number} Progress to set [ 0..1 ].
+  */
+  .setProgress( progress )
+  /*
+    Sets speed of the tween.
+    @param speed {Number} Progress to set [ 0..∞ ].
+  */
+  .setSpeed( speed )
+
+  /* Stops and resets the tween state. */
+  .reset()
+
+
+ + + diff --git a/api/utils/stagger.html b/api/utils/stagger.html new file mode 100644 index 00000000..51a402e0 --- /dev/null +++ b/api/utils/stagger.html @@ -0,0 +1,173 @@ + + + + + + Stagger | mo.js + + + + + + + + + + + + + + + + +

# Stagger

References:

Contents:

# Basic Usage:

stagger is a function not constructor! that wraps ANY module to create staggered animations. You can treat stagger function as a prism is mounted on top of modules and splits input properties evenly between them:

// wrap shape in stagger
+const Shapes = mojs.stagger( mojs.Shape );
+// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes
+const shapes = new Shapes({
+  // quantifier defines number of modules to create
+  quantifier:   5,
+  // each module will have the same scale transition
+  scale:        { 1: 0 }
+});
+
+

CodePen Example (opens new window)

You can use array to specify property value for each shape:

// wrap shape in stagger
+const StaggeredShape = mojs.stagger( mojs.Shape );
+// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes
+const shapes = new StaggeredShape({
+  // quantifier defines number of modules to create
+  quantifier:   5,
+  // each module will receive value from this array. if array is smaller than amount of modules (4 vs 5), the stagger prism will loop on the array, thus `5th` item will receive value by `index = 0`, `6th` item will receive value by `index = 1` and so on. This is called `property map` because it maps properties array to modules inside stagger.
+  scale: [{ 0: 1 }, {0: 1.25}, { 0: 1.5 }, { 0: 2 }],
+});
+
+

CodePen Example (opens new window)

You can use stagger string incremental properties:

// wrap shape in stagger
+const StaggeredShape = mojs.stagger( mojs.Shape );
+// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes
+const shapes = new StaggeredShape({
+  // quantifier defines number of modules to create
+  quantifier:   5,
+  // the value of the property will be increased for each module with specified `step`(.25), starting from the `initial value`(1). Step could be `positive` or `negative`.
+  scale: 'stagger(1, .25)'
+});
+
+

CodePen Example (opens new window)

The initial value could be omitted - it will fallback to 0:

// wrap shape in stagger
+const Shapes = mojs.stagger( mojs.Shape );
+// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes
+const shapes = new Shapes({
+  // quantifier defines number of modules to create
+  quantifier:   5,
+  // this means stagger with step of `50` starting from `0`
+  x:            'stagger(50)'
+});
+
+

CodePen Example (opens new window)

stagger strings can be used inside deltas and can contain rand expressions:

// wrap shape in stagger
+const StaggeredShape = mojs.stagger( mojs.Shape );
+// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes
+const shapes = new StaggeredShape({
+  // quantifier defines number of modules to create
+  quantifier:   5,
+  // animate scale from `0` to staggered value (`1` for 1st module, `1.25` for 2nd, `1.5` for 3rd etc.)
+  scale: { 0: 'stagger(1, .25)' },
+  // random value in range from `0` to staggered value (`200` for 1st module, `400` for 2nd, `600` for 3rd etc.)
+  x: 'stagger(-300, rand(100, 200))'
+});
+
+

CodePen Example (opens new window)

# Full API Reference

const shape = new mojs.Shape({
+  // how many modules to create. {Number, String} [amount of modules, property name]
+  // if `string` is set instead of `number` it is treated as `property name` pointer - the number of modules will be inferred on value of that property, for instance if `quantifier` is set to `el` and `el` property has `array like` as it's value - quantifier will be set to length of that array.
+  quantifier: 'el',
+  // options for timeline that controls all modules
+  timeline: {},
+  /*
+    Module's properties and callbacks, depends on what module has been wrapped into stagger, please see wrapped module API reference.
+  */
+})
+/*
+  Creates next state transition chain.
+  @param options {Object} Next shape state.
+*/
+.then({ /* next state options */ })
+
+/*
+  Tunes start state with new options.
+  @param options {Object} New start properties.
+*/
+.tune({ /* new start properties */ })
+
+/*
+  Regenerates all randoms in initial properties.
+*/
+.generate()
+/*
+  Starts playback.
+  @param shift {Number} Start progress shift in milliseconds.
+*/
+.play( shift = 0 )
+/*
+  Starts playback in backward direction.
+  @param shift {Number} Start progress shift in milliseconds.
+*/
+.playBackward( shift = 0 )
+/*
+  Pauses playback.
+*/
+.pause()
+/*
+  Restarts playback.
+  @param shift {Number} Start progress shift in milliseconds.
+*/
+.replay( shift = 0 )
+/*
+  Restarts playback in backward direction.
+  @param shift {Number} Start progress shift in milliseconds.
+*/
+.replayBackward( shift = 0 )
+/*
+  Resumes playback in direction it was prior to `pause`.
+  @param shift {Number} Start progress shift in milliseconds.
+*/
+.resume( shift = 0 )
+/*
+  Sets progress of the tween.
+  @param progress {Number} Progress to set [ 0..1 ].
+*/
+.setProgress( progress )
+/*
+  Sets speed of the tween.
+  @param speed {Number} Progress to set [ 0..∞ ].
+*/
+setSpeed ( speed )
+/* Stops and resets the tween. */
+reset ( speed );
+
+ + + diff --git a/docs/.vuepress/public/assets/burst/burst-pic.png b/assets/burst/burst-pic.png similarity index 100% rename from docs/.vuepress/public/assets/burst/burst-pic.png rename to assets/burst/burst-pic.png diff --git a/assets/css/0.styles.664372c2.css b/assets/css/0.styles.664372c2.css new file mode 100644 index 00000000..01d0a72f --- /dev/null +++ b/assets/css/0.styles.664372c2.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css?family=Oswald&display=swap);.theme-default-content code{color:#f4e8df;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#f64040}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#2b062a;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#2b062a;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#2b062a}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#f1e2d7}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#f1e2d7}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#f1e2d7}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid rgba(246,64,64,.5)}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid rgba(246,64,64,.5);overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#f64040}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid rgba(246,64,64,.5)}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;-webkit-user-select:none;user-select:none;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}body,html{color:#f1e2d7;background:#3a0839;font-family:Century Gothic,AppleGothic,CenturyGothic,apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}:root h1,:root h2,:root h3,:root h4,:root h5{font-weight:400}:root h1,:root h2{color:#f64040}:root h2{border:none}:root h4{font-weight:700}:root ol,:root p,:root ul{line-height:2}:root .navbar{background-color:#4e214d;border:none;position:sticky;top:0;z-index:200}:root .navbar .links{background-color:transparent}:root .sidebar{background-color:#3a0839;z-index:100}:root .sidebar-mask{background-color:#3a0839;opacity:.85}:root .content__default{max-width:60em;margin:0 auto;padding:0 4%}:root a{font-weight:700}:root a .icon{margin-left:.4rem}:root .custom-block{color:#f1e2d7}:root .custom-block,:root .custom-block.danger,:root .custom-block.tip,:root .custom-block.warning{background-color:#4e214d}:root .custom-block.tip{border-color:#00f87f}:root .custom-block.warning{border-color:#ffe952}:root .custom-block.warning .custom-block-title{color:#ffe952}:root .custom-block.danger{border-color:#f64040}:root .custom-block.danger .custom-block-title{color:#f64040}:root .content__default code{color:#f64040;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:transparent;border:1px solid #f64040;border-radius:3px;-webkit-user-select:all;user-select:all}:root .content__default pre code{border:none}:root .content__default .language-javascript code,:root .content__default .language-js code,:root .content__default .language-jsx code{-webkit-user-select:auto;user-select:auto}hr{border:0;border-top:1px solid rgba(246,64,64,.5);position:relative;margin-top:4rem;margin-bottom:2rem;overflow:visible}hr:after{content:"";display:block;position:absolute;top:-.5rem;left:0;width:4rem;height:.875rem;padding-right:1rem;background:#3a0839 url(/assets/img/symbols.svg) no-repeat}.example-anim{background:#f1e2d7;width:100%;height:300px;position:relative}.example-anim svg{overflow:visible}.button{background:#f64040;color:#f1e2d7;border:none;padding:1em 2em;font-size:.7rem;font-family:inherit;font-weight:700;border-radius:4px;cursor:pointer;text-transform:uppercase}.button--secondary{background:#3a0839;border:1px solid #f64040;color:#f64040}.button--icon{background:transparent;font-size:2rem;padding:.4em;line-height:1;color:#f64040}.button+.button{margin-left:.5rem}blockquote{display:flex;align-items:center;border:none;color:inherit;padding-left:0}blockquote:before{content:"";display:block;height:4rem;width:.875rem;background:url(/assets/img/symbols_vertical.svg) no-repeat;border-right:2px solid #f64040;margin-right:1rem;padding-right:1rem}.mojs-interactive__code{position:relative;padding-bottom:1.2em}.mojs-interactive__code .buttons{position:absolute;bottom:1rem;right:1rem}.mojs-interactive__result{background:#f1e2d7;width:100%;height:400px;position:relative;overflow:hidden}.mojs-interactive__result--dark{background:#2b062a}.mojs-interactive__result--transparent{background:none}.mojs-interactive__result svg{overflow:visible}.mojs-interactive__controller{position:absolute;bottom:0;left:0;right:0;z-index:0}.mojs-interactive__controller .controller{position:absolute}.mojs-interactive__clicknotice{font-size:.85em;color:#fdf7f7;background:#4e214d;padding:.4rem 1.5rem;margin:0}._curve-editor_10g8s_3{z-index:200!important}:root .no-pointer{pointer-events:none}:root .measure-grid{background:#f1e2d7 url(/assets/img/measure-grid.svg) repeat-x;background-size:2000px 1000px;background-position:0}#nprogress{pointer-events:none}#nprogress .bar{background:#f64040;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #f64040,0 0 5px #f64040;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#f64040 transparent transparent #f64040;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.algolia-search-wrapper>span{vertical-align:middle}.algolia-search-wrapper .algolia-autocomplete{line-height:normal}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu{background-color:#fff;border:1px solid #999;border-radius:4px;font-size:16px;margin:6px 0 0;padding:4px;text-align:left}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu:before{border-color:#999}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu [class*=ds-dataset-]{border:none;padding:0}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu .ds-suggestions{margin-top:0}.algolia-search-wrapper .algolia-autocomplete .ds-dropdown-menu .ds-suggestion{border-bottom:1px solid rgba(246,64,64,.5)}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#2c815b}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion{border-color:rgba(246,64,64,.5);padding:0}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--category-header{padding:5px 10px;margin-top:0;background:#f64040;color:#fff;font-weight:600}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background:hsla(0,0%,100%,.6)}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--wrapper{padding:0}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--title{font-weight:600;margin-bottom:0;color:#f1e2d7}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{vertical-align:top;padding:5px 7px 5px 5px;border-color:rgba(246,64,64,.5);background:#f1f3f5}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{display:none}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column-text{color:#555}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-footer{border-color:rgba(246,64,64,.5)}.algolia-search-wrapper .algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--content{background-color:#e7edf3!important;color:#f1e2d7}@media (min-width:719px){.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{float:none;width:150px;min-width:150px;display:table-cell}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{float:none;display:table-cell;width:100%;vertical-align:top}.algolia-search-wrapper .algolia-autocomplete .algolia-docsearch-suggestion .ds-dropdown-menu{min-width:515px!important}}@media (max-width:719px){.algolia-search-wrapper .ds-dropdown-menu{min-width:calc(100vw - 4rem)!important;max-width:calc(100vw - 4rem)!important}.algolia-search-wrapper .algolia-docsearch-suggestion--wrapper{padding:5px 7px 5px 5px!important}.algolia-search-wrapper .algolia-docsearch-suggestion--subcategory-column{padding:0!important;background:#fff!important}.algolia-search-wrapper .algolia-docsearch-suggestion--subcategory-column-text:after{content:" > ";font-size:10px;line-height:14.4px;display:inline-block;width:5px;margin:-3px 3px 0;vertical-align:middle}}.home{display:block}.home .hero img{max-width:100%}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto}.home .hero{text-align:center}.home .hero img{max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#f7eee7}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#f64040;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #f52222}.home .hero .action-button:hover{background-color:#f75353}.home .features{border-top:1px solid rgba(246,64,64,.5);padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%;padding-top:2rem}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;margin:0;color:#f2e5db}.home .feature p{color:#f4e9e1}.home .feature__image{max-width:6.125rem;margin:0 auto 2rem;display:block}.home .feature__image--retina{max-width:4.5rem}.home .feature__image--simple{max-width:4.25rem}.home .feature__image--modular{max-width:5.0625rem}.home .feature__image--robust{max-width:8.75rem}.home .feature__image--open-sourced{max-width:4.75rem}.home .footer{padding:2.5rem;border-top:1px solid rgba(246,64,64,.5);text-align:center;color:#f4e9e1}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem;padding-top:0}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#f4e9e1;display:inline-block;border:1px solid rgba(245,34,34,.5);border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#f64040}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid rgba(245,34,34,.5);border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#f6ece5}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#f64040}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770],.badge[data-v-15b7b770]{background-color:#42b983}.badge.error[data-v-15b7b770]{background-color:#da5961}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#e7c000}.badge+.badge[data-v-15b7b770]{margin-left:5px}.theme-code-block[data-v-759a7d02]{display:none}.theme-code-block__active[data-v-759a7d02]{display:block}.theme-code-block>pre[data-v-759a7d02]{background-color:orange}.theme-code-group__nav[data-v-deefee04]{margin-bottom:-35px;background-color:#2b062a;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-deefee04]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-deefee04]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-deefee04]{border-bottom:1px solid #42b983}.pre-blank[data-v-deefee04]{color:#42b983}.character{color:#fff;font-size:68px;position:absolute;left:0;top:0;bottom:0;right:0;text-align:center;line-height:.475;font-family:Oswald,monospace}.demo-love__inputs{text-align:center;margin-top:.85rem}.demo-love__input{border:none;padding:.4rem .85rem;width:2em;background:#f1e2d7;text-align:center;font-size:1rem;margin:4px;box-shadow:0 0 0 0 rgba(241,226,215,.3);transition:box-shadow .2s}.demo-love__input:focus{box-shadow:0 0 0 6px rgba(241,226,215,.3)}.demo-mojs-logo-reveal{position:absolute;left:50%;top:50%;height:25px;width:120px;z-index:2;margin-left:-60px;margin-top:-32px;transform-origin:50% 0}.curve-example{margin-top:20px}.curve-example--open{height:300px}.curve-example--closed{height:1px}.accordion__header{display:flex;justify-content:space-between;border:none;background:#4e214d;color:#fdf7f7;padding:.4rem .85rem;font-weight:700;font-size:1em;width:100%;text-align:left;cursor:pointer}.accordion__panel{margin:0}.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-moz-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;animation-name:sbx-reset-in;animation-duration:.15s}@keyframes sbx-reset-in{0%{transform:translate3d(-20%,0,0);opacity:0}to{transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 012.966 2.966V20.5a2.967 2.967 0 01-2.966 2.964H78.988a2.967 2.967 0 01-2.966-2.964V3.897A2.961 2.961 0 0178.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 00-1.574-.199 5.7 5.7 0 00-.897.069 2.699 2.699 0 00-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 01-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 01-1.471-.636 3.085 3.085 0 01-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 011.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 011.82-.185 8.404 8.404 0 011.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 00-.384-.73 1.784 1.784 0 00-.724-.493 3.164 3.164 0 00-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 00-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 012.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 00-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 00-.814.24 1.46 1.46 0 00-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 01.233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 01-1.471-.635 3.085 3.085 0 01-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 012.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 00-.109-.875 1.873 1.873 0 00-.384-.731 1.784 1.784 0 00-.724-.492 3.165 3.165 0 00-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 00-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 012.073-.177zm-8.034-1.271a1.626 1.626 0 01-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 01-1.128 1.906 4.986 4.986 0 01-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 01-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 01-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 011.15-1.892 5.133 5.133 0 011.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 011.753 1.216 5.644 5.644 0 011.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 00-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 01-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 01-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 012.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 00-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 01-.582-.271 13.67 13.67 0 01-.55-.287 4.275 4.275 0 01-.567-.351 6.92 6.92 0 01-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 01-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 00-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 00-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 00-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 01-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 00-.978-.977h-2.28a.978.978 0 00-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 011.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 00-1.382 0l-.465.465a.973.973 0 000 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 00-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 01-4.49-4.482 4.488 4.488 0 014.49-4.482 4.488 4.488 0 014.489 4.482 4.484 4.484 0 01-4.49 4.482m0-10.85a6.363 6.363 0 100 12.729 6.37 6.37 0 006.372-6.368 6.358 6.358 0 00-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#f1e2d7}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#f64040}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#f64040}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #f64040;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#f64040}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#f1e2d7}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #f74f4f}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#f1e2d7;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#f4e9e1;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#f4e9e1}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid rgba(246,64,64,.5);padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#f1e2d7;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#f64040;border-left-color:#f64040}.sidebar-heading.clickable:hover{color:#f64040}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#f1e2d7;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#f64040}a.sidebar-link.active{font-weight:600;color:#f64040;border-left-color:#f64040}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid rgba(246,64,64,.5);padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green} \ No newline at end of file diff --git a/docs/.vuepress/public/assets/favicons/android-chrome-192x192.png b/assets/favicons/android-chrome-192x192.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/android-chrome-192x192.png rename to assets/favicons/android-chrome-192x192.png diff --git a/docs/.vuepress/public/assets/favicons/android-chrome-512x512.png b/assets/favicons/android-chrome-512x512.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/android-chrome-512x512.png rename to assets/favicons/android-chrome-512x512.png diff --git a/docs/.vuepress/public/assets/favicons/apple-touch-icon.png b/assets/favicons/apple-touch-icon.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/apple-touch-icon.png rename to assets/favicons/apple-touch-icon.png diff --git a/docs/.vuepress/public/assets/favicons/browserconfig.xml b/assets/favicons/browserconfig.xml similarity index 100% rename from docs/.vuepress/public/assets/favicons/browserconfig.xml rename to assets/favicons/browserconfig.xml diff --git a/docs/.vuepress/public/assets/favicons/favicon-16x16.png b/assets/favicons/favicon-16x16.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/favicon-16x16.png rename to assets/favicons/favicon-16x16.png diff --git a/docs/.vuepress/public/assets/favicons/favicon-32x32.png b/assets/favicons/favicon-32x32.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/favicon-32x32.png rename to assets/favicons/favicon-32x32.png diff --git a/docs/.vuepress/public/assets/favicons/favicon.ico b/assets/favicons/favicon.ico similarity index 100% rename from docs/.vuepress/public/assets/favicons/favicon.ico rename to assets/favicons/favicon.ico diff --git a/docs/.vuepress/public/assets/favicons/favicon.svg b/assets/favicons/favicon.svg similarity index 100% rename from docs/.vuepress/public/assets/favicons/favicon.svg rename to assets/favicons/favicon.svg diff --git a/docs/.vuepress/public/assets/favicons/logo-symbol-square.svg b/assets/favicons/logo-symbol-square.svg similarity index 100% rename from docs/.vuepress/public/assets/favicons/logo-symbol-square.svg rename to assets/favicons/logo-symbol-square.svg diff --git a/docs/.vuepress/public/assets/favicons/mstile-144x144.png b/assets/favicons/mstile-144x144.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/mstile-144x144.png rename to assets/favicons/mstile-144x144.png diff --git a/docs/.vuepress/public/assets/favicons/mstile-150x150.png b/assets/favicons/mstile-150x150.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/mstile-150x150.png rename to assets/favicons/mstile-150x150.png diff --git a/docs/.vuepress/public/assets/favicons/mstile-310x150.png b/assets/favicons/mstile-310x150.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/mstile-310x150.png rename to assets/favicons/mstile-310x150.png diff --git a/docs/.vuepress/public/assets/favicons/mstile-310x310.png b/assets/favicons/mstile-310x310.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/mstile-310x310.png rename to assets/favicons/mstile-310x310.png diff --git a/docs/.vuepress/public/assets/favicons/mstile-70x70.png b/assets/favicons/mstile-70x70.png similarity index 100% rename from docs/.vuepress/public/assets/favicons/mstile-70x70.png rename to assets/favicons/mstile-70x70.png diff --git a/docs/.vuepress/public/assets/favicons/safari-pinned-tab.svg b/assets/favicons/safari-pinned-tab.svg similarity index 100% rename from docs/.vuepress/public/assets/favicons/safari-pinned-tab.svg rename to assets/favicons/safari-pinned-tab.svg diff --git a/docs/.vuepress/public/assets/favicons/site.webmanifest b/assets/favicons/site.webmanifest similarity index 100% rename from docs/.vuepress/public/assets/favicons/site.webmanifest rename to assets/favicons/site.webmanifest diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-10.gif b/assets/gifs/shape-animation/LingoAsset-10.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-10.gif rename to assets/gifs/shape-animation/LingoAsset-10.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-11.gif b/assets/gifs/shape-animation/LingoAsset-11.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-11.gif rename to assets/gifs/shape-animation/LingoAsset-11.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-111.gif b/assets/gifs/shape-animation/LingoAsset-111.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-111.gif rename to assets/gifs/shape-animation/LingoAsset-111.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-12.gif b/assets/gifs/shape-animation/LingoAsset-12.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-12.gif rename to assets/gifs/shape-animation/LingoAsset-12.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-16.gif b/assets/gifs/shape-animation/LingoAsset-16.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-16.gif rename to assets/gifs/shape-animation/LingoAsset-16.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-2.gif b/assets/gifs/shape-animation/LingoAsset-2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-2.gif rename to assets/gifs/shape-animation/LingoAsset-2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-20.gif b/assets/gifs/shape-animation/LingoAsset-20.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-20.gif rename to assets/gifs/shape-animation/LingoAsset-20.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-21.gif b/assets/gifs/shape-animation/LingoAsset-21.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-21.gif rename to assets/gifs/shape-animation/LingoAsset-21.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-23.gif b/assets/gifs/shape-animation/LingoAsset-23.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-23.gif rename to assets/gifs/shape-animation/LingoAsset-23.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-24.gif b/assets/gifs/shape-animation/LingoAsset-24.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-24.gif rename to assets/gifs/shape-animation/LingoAsset-24.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-25.gif b/assets/gifs/shape-animation/LingoAsset-25.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-25.gif rename to assets/gifs/shape-animation/LingoAsset-25.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-26.gif b/assets/gifs/shape-animation/LingoAsset-26.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-26.gif rename to assets/gifs/shape-animation/LingoAsset-26.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-28.gif b/assets/gifs/shape-animation/LingoAsset-28.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-28.gif rename to assets/gifs/shape-animation/LingoAsset-28.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-31.gif b/assets/gifs/shape-animation/LingoAsset-31.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-31.gif rename to assets/gifs/shape-animation/LingoAsset-31.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-32.gif b/assets/gifs/shape-animation/LingoAsset-32.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-32.gif rename to assets/gifs/shape-animation/LingoAsset-32.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-36.gif b/assets/gifs/shape-animation/LingoAsset-36.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-36.gif rename to assets/gifs/shape-animation/LingoAsset-36.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-38.gif b/assets/gifs/shape-animation/LingoAsset-38.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-38.gif rename to assets/gifs/shape-animation/LingoAsset-38.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-39.gif b/assets/gifs/shape-animation/LingoAsset-39.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-39.gif rename to assets/gifs/shape-animation/LingoAsset-39.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-6.gif b/assets/gifs/shape-animation/LingoAsset-6.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-6.gif rename to assets/gifs/shape-animation/LingoAsset-6.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-8.gif b/assets/gifs/shape-animation/LingoAsset-8.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-8.gif rename to assets/gifs/shape-animation/LingoAsset-8.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-9.gif b/assets/gifs/shape-animation/LingoAsset-9.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset-9.gif rename to assets/gifs/shape-animation/LingoAsset-9.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset.gif b/assets/gifs/shape-animation/LingoAsset.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/LingoAsset.gif rename to assets/gifs/shape-animation/LingoAsset.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/bens.gif b/assets/gifs/shape-animation/bens.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/bens.gif rename to assets/gifs/shape-animation/bens.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/galshir-candles.gif b/assets/gifs/shape-animation/galshir-candles.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/galshir-candles.gif rename to assets/gifs/shape-animation/galshir-candles.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/galshir-coffee-machine.gif b/assets/gifs/shape-animation/galshir-coffee-machine.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/galshir-coffee-machine.gif rename to assets/gifs/shape-animation/galshir-coffee-machine.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/galshir-sharpener.gif b/assets/gifs/shape-animation/galshir-sharpener.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/galshir-sharpener.gif rename to assets/gifs/shape-animation/galshir-sharpener.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/galshir-toaster.gif b/assets/gifs/shape-animation/galshir-toaster.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/galshir-toaster.gif rename to assets/gifs/shape-animation/galshir-toaster.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/galshir.gif b/assets/gifs/shape-animation/galshir.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/galshir.gif rename to assets/gifs/shape-animation/galshir.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/rain_dribbble.gif b/assets/gifs/shape-animation/rain_dribbble.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/rain_dribbble.gif rename to assets/gifs/shape-animation/rain_dribbble.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/sloth.gif b/assets/gifs/shape-animation/sloth.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/sloth.gif rename to assets/gifs/shape-animation/sloth.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-animation/space-dog.gif b/assets/gifs/shape-animation/space-dog.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-animation/space-dog.gif rename to assets/gifs/shape-animation/space-dog.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 10.gif b/assets/gifs/shape-mograph/LingoAsset 10.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 10.gif rename to assets/gifs/shape-mograph/LingoAsset 10.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 3.gif b/assets/gifs/shape-mograph/LingoAsset 3.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 3.gif rename to assets/gifs/shape-mograph/LingoAsset 3.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 4.gif b/assets/gifs/shape-mograph/LingoAsset 4.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 4.gif rename to assets/gifs/shape-mograph/LingoAsset 4.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 7.gif b/assets/gifs/shape-mograph/LingoAsset 7.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 7.gif rename to assets/gifs/shape-mograph/LingoAsset 7.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 9.gif b/assets/gifs/shape-mograph/LingoAsset 9.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/LingoAsset 9.gif rename to assets/gifs/shape-mograph/LingoAsset 9.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/blend_square.gif b/assets/gifs/shape-mograph/blend_square.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/blend_square.gif rename to assets/gifs/shape-mograph/blend_square.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/boundaries03.gif b/assets/gifs/shape-mograph/boundaries03.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/boundaries03.gif rename to assets/gifs/shape-mograph/boundaries03.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/dribbble 8.gif b/assets/gifs/shape-mograph/dribbble 8.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/dribbble 8.gif rename to assets/gifs/shape-mograph/dribbble 8.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/dribbble.gif b/assets/gifs/shape-mograph/dribbble.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/dribbble.gif rename to assets/gifs/shape-mograph/dribbble.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/dribbble_1 2.gif b/assets/gifs/shape-mograph/dribbble_1 2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/dribbble_1 2.gif rename to assets/gifs/shape-mograph/dribbble_1 2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/exquisite_player3.gif b/assets/gifs/shape-mograph/exquisite_player3.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/exquisite_player3.gif rename to assets/gifs/shape-mograph/exquisite_player3.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/lookinside.gif b/assets/gifs/shape-mograph/lookinside.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/lookinside.gif rename to assets/gifs/shape-mograph/lookinside.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/lukas_pink_loading.gif b/assets/gifs/shape-mograph/lukas_pink_loading.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/lukas_pink_loading.gif rename to assets/gifs/shape-mograph/lukas_pink_loading.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/motion3_2.gif b/assets/gifs/shape-mograph/motion3_2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/motion3_2.gif rename to assets/gifs/shape-mograph/motion3_2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/number_1_jrcanest.gif b/assets/gifs/shape-mograph/number_1_jrcanest.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/number_1_jrcanest.gif rename to assets/gifs/shape-mograph/number_1_jrcanest.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/omam-logo-imprint.gif b/assets/gifs/shape-mograph/omam-logo-imprint.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/omam-logo-imprint.gif rename to assets/gifs/shape-mograph/omam-logo-imprint.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/playsky-drib-02.gif b/assets/gifs/shape-mograph/playsky-drib-02.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/playsky-drib-02.gif rename to assets/gifs/shape-mograph/playsky-drib-02.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/pop.gif b/assets/gifs/shape-mograph/pop.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/pop.gif rename to assets/gifs/shape-mograph/pop.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/preview.gif b/assets/gifs/shape-mograph/preview.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/preview.gif rename to assets/gifs/shape-mograph/preview.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/random.gif b/assets/gifs/shape-mograph/random.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/random.gif rename to assets/gifs/shape-mograph/random.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/reel.gif b/assets/gifs/shape-mograph/reel.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/reel.gif rename to assets/gifs/shape-mograph/reel.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/ridebot2.gif b/assets/gifs/shape-mograph/ridebot2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/ridebot2.gif rename to assets/gifs/shape-mograph/ridebot2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-1.gif b/assets/gifs/shape-mograph/shapes-1.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-1.gif rename to assets/gifs/shape-mograph/shapes-1.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-10.gif b/assets/gifs/shape-mograph/shapes-10.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-10.gif rename to assets/gifs/shape-mograph/shapes-10.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-11.gif b/assets/gifs/shape-mograph/shapes-11.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-11.gif rename to assets/gifs/shape-mograph/shapes-11.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-12.gif b/assets/gifs/shape-mograph/shapes-12.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-12.gif rename to assets/gifs/shape-mograph/shapes-12.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-2.gif b/assets/gifs/shape-mograph/shapes-2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-2.gif rename to assets/gifs/shape-mograph/shapes-2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-3.gif b/assets/gifs/shape-mograph/shapes-3.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-3.gif rename to assets/gifs/shape-mograph/shapes-3.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-4.gif b/assets/gifs/shape-mograph/shapes-4.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-4.gif rename to assets/gifs/shape-mograph/shapes-4.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-5.gif b/assets/gifs/shape-mograph/shapes-5.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-5.gif rename to assets/gifs/shape-mograph/shapes-5.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-6.gif b/assets/gifs/shape-mograph/shapes-6.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-6.gif rename to assets/gifs/shape-mograph/shapes-6.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-7.gif b/assets/gifs/shape-mograph/shapes-7.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-7.gif rename to assets/gifs/shape-mograph/shapes-7.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-8.gif b/assets/gifs/shape-mograph/shapes-8.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-8.gif rename to assets/gifs/shape-mograph/shapes-8.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/shapes-9.gif b/assets/gifs/shape-mograph/shapes-9.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/shapes-9.gif rename to assets/gifs/shape-mograph/shapes-9.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/teva-giff02.gif b/assets/gifs/shape-mograph/teva-giff02.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/teva-giff02.gif rename to assets/gifs/shape-mograph/teva-giff02.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_md14p0TTDw1rf78nfo1_400 2.gif b/assets/gifs/shape-mograph/tumblr_md14p0TTDw1rf78nfo1_400 2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_md14p0TTDw1rf78nfo1_400 2.gif rename to assets/gifs/shape-mograph/tumblr_md14p0TTDw1rf78nfo1_400 2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_mxmbc3y7BD1rf78nfo1_400.gif b/assets/gifs/shape-mograph/tumblr_mxmbc3y7BD1rf78nfo1_400.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_mxmbc3y7BD1rf78nfo1_400.gif rename to assets/gifs/shape-mograph/tumblr_mxmbc3y7BD1rf78nfo1_400.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_mxz9zuhNFK1rf78nfo1_400.gif b/assets/gifs/shape-mograph/tumblr_mxz9zuhNFK1rf78nfo1_400.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_mxz9zuhNFK1rf78nfo1_400.gif rename to assets/gifs/shape-mograph/tumblr_mxz9zuhNFK1rf78nfo1_400.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_n2aofzGUQt1rf78nfo1_400.gif b/assets/gifs/shape-mograph/tumblr_n2aofzGUQt1rf78nfo1_400.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_n2aofzGUQt1rf78nfo1_400.gif rename to assets/gifs/shape-mograph/tumblr_n2aofzGUQt1rf78nfo1_400.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_n54iceIemM1rf78nfo1_400.gif b/assets/gifs/shape-mograph/tumblr_n54iceIemM1rf78nfo1_400.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_n54iceIemM1rf78nfo1_400.gif rename to assets/gifs/shape-mograph/tumblr_n54iceIemM1rf78nfo1_400.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_ngfrfoO1kP1rf78nfo1_500.gif b/assets/gifs/shape-mograph/tumblr_ngfrfoO1kP1rf78nfo1_500.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-mograph/tumblr_ngfrfoO1kP1rf78nfo1_500.gif rename to assets/gifs/shape-mograph/tumblr_ngfrfoO1kP1rf78nfo1_500.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/IMG_1171.gif b/assets/gifs/shape-ui/IMG_1171.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/IMG_1171.gif rename to assets/gifs/shape-ui/IMG_1171.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-1.gif b/assets/gifs/shape-ui/LingoAsset-1.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-1.gif rename to assets/gifs/shape-ui/LingoAsset-1.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-2.gif b/assets/gifs/shape-ui/LingoAsset-2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-2.gif rename to assets/gifs/shape-ui/LingoAsset-2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-3.gif b/assets/gifs/shape-ui/LingoAsset-3.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-3.gif rename to assets/gifs/shape-ui/LingoAsset-3.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-4.gif b/assets/gifs/shape-ui/LingoAsset-4.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-4.gif rename to assets/gifs/shape-ui/LingoAsset-4.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-5.gif b/assets/gifs/shape-ui/LingoAsset-5.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-5.gif rename to assets/gifs/shape-ui/LingoAsset-5.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-6.gif b/assets/gifs/shape-ui/LingoAsset-6.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-6.gif rename to assets/gifs/shape-ui/LingoAsset-6.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-7.gif b/assets/gifs/shape-ui/LingoAsset-7.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-7.gif rename to assets/gifs/shape-ui/LingoAsset-7.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-8.gif b/assets/gifs/shape-ui/LingoAsset-8.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/LingoAsset-8.gif rename to assets/gifs/shape-ui/LingoAsset-8.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/anim.gif b/assets/gifs/shape-ui/anim.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/anim.gif rename to assets/gifs/shape-ui/anim.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/awsm.gif b/assets/gifs/shape-ui/awsm.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/awsm.gif rename to assets/gifs/shape-ui/awsm.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/checkbox.gif b/assets/gifs/shape-ui/checkbox.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/checkbox.gif rename to assets/gifs/shape-ui/checkbox.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/circle-menu-github-open-source-ramotion.gif b/assets/gifs/shape-ui/circle-menu-github-open-source-ramotion.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/circle-menu-github-open-source-ramotion.gif rename to assets/gifs/shape-ui/circle-menu-github-open-source-ramotion.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/close.gif b/assets/gifs/shape-ui/close.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/close.gif rename to assets/gifs/shape-ui/close.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/dailyui-049.gif b/assets/gifs/shape-ui/dailyui-049.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/dailyui-049.gif rename to assets/gifs/shape-ui/dailyui-049.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/download.gif b/assets/gifs/shape-ui/download.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/download.gif rename to assets/gifs/shape-ui/download.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/download2.gif b/assets/gifs/shape-ui/download2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/download2.gif rename to assets/gifs/shape-ui/download2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/dribbble-morph.gif b/assets/gifs/shape-ui/dribbble-morph.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/dribbble-morph.gif rename to assets/gifs/shape-ui/dribbble-morph.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/dribbble_hex-nav.gif b/assets/gifs/shape-ui/dribbble_hex-nav.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/dribbble_hex-nav.gif rename to assets/gifs/shape-ui/dribbble_hex-nav.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/ezgif.com-gif-maker2.gif b/assets/gifs/shape-ui/ezgif.com-gif-maker2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/ezgif.com-gif-maker2.gif rename to assets/gifs/shape-ui/ezgif.com-gif-maker2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/ezgif.com-gif-maker5.gif b/assets/gifs/shape-ui/ezgif.com-gif-maker5.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/ezgif.com-gif-maker5.gif rename to assets/gifs/shape-ui/ezgif.com-gif-maker5.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/fab-animation.gif b/assets/gifs/shape-ui/fab-animation.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/fab-animation.gif rename to assets/gifs/shape-ui/fab-animation.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/finalshot.gif b/assets/gifs/shape-ui/finalshot.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/finalshot.gif rename to assets/gifs/shape-ui/finalshot.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/hp_dribbble_2.gif b/assets/gifs/shape-ui/hp_dribbble_2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/hp_dribbble_2.gif rename to assets/gifs/shape-ui/hp_dribbble_2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/inboxui.gif b/assets/gifs/shape-ui/inboxui.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/inboxui.gif rename to assets/gifs/shape-ui/inboxui.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/pause-push2.gif b/assets/gifs/shape-ui/pause-push2.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/pause-push2.gif rename to assets/gifs/shape-ui/pause-push2.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/right-and-wrong.gif b/assets/gifs/shape-ui/right-and-wrong.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/right-and-wrong.gif rename to assets/gifs/shape-ui/right-and-wrong.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/search_3.gif b/assets/gifs/shape-ui/search_3.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/search_3.gif rename to assets/gifs/shape-ui/search_3.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/share.gif b/assets/gifs/shape-ui/share.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/share.gif rename to assets/gifs/shape-ui/share.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/time-marine-hud.gif b/assets/gifs/shape-ui/time-marine-hud.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/time-marine-hud.gif rename to assets/gifs/shape-ui/time-marine-hud.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/touch-me-mb.gif b/assets/gifs/shape-ui/touch-me-mb.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/touch-me-mb.gif rename to assets/gifs/shape-ui/touch-me-mb.gif diff --git a/docs/.vuepress/public/assets/gifs/shape-ui/upload.gif b/assets/gifs/shape-ui/upload.gif similarity index 100% rename from docs/.vuepress/public/assets/gifs/shape-ui/upload.gif rename to assets/gifs/shape-ui/upload.gif diff --git a/docs/.vuepress/public/assets/img/features/feature-fast.png b/assets/img/features/feature-fast.png similarity index 100% rename from docs/.vuepress/public/assets/img/features/feature-fast.png rename to assets/img/features/feature-fast.png diff --git a/docs/.vuepress/public/assets/img/features/feature-modular.png b/assets/img/features/feature-modular.png similarity index 100% rename from docs/.vuepress/public/assets/img/features/feature-modular.png rename to assets/img/features/feature-modular.png diff --git a/docs/.vuepress/public/assets/img/features/feature-open-sourced.png b/assets/img/features/feature-open-sourced.png similarity index 100% rename from docs/.vuepress/public/assets/img/features/feature-open-sourced.png rename to assets/img/features/feature-open-sourced.png diff --git a/docs/.vuepress/public/assets/img/features/feature-retina.png b/assets/img/features/feature-retina.png similarity index 100% rename from docs/.vuepress/public/assets/img/features/feature-retina.png rename to assets/img/features/feature-retina.png diff --git a/docs/.vuepress/public/assets/img/features/feature-robust.png b/assets/img/features/feature-robust.png similarity index 100% rename from docs/.vuepress/public/assets/img/features/feature-robust.png rename to assets/img/features/feature-robust.png diff --git a/docs/.vuepress/public/assets/img/features/feature-simple.png b/assets/img/features/feature-simple.png similarity index 100% rename from docs/.vuepress/public/assets/img/features/feature-simple.png rename to assets/img/features/feature-simple.png diff --git a/docs/.vuepress/public/assets/img/hero.svg b/assets/img/hero.svg similarity index 100% rename from docs/.vuepress/public/assets/img/hero.svg rename to assets/img/hero.svg diff --git a/docs/.vuepress/public/assets/img/logo.png b/assets/img/logo.png similarity index 100% rename from docs/.vuepress/public/assets/img/logo.png rename to assets/img/logo.png diff --git a/docs/.vuepress/public/assets/img/logo.svg b/assets/img/logo.svg similarity index 100% rename from docs/.vuepress/public/assets/img/logo.svg rename to assets/img/logo.svg diff --git a/docs/.vuepress/public/assets/img/measure-grid.svg b/assets/img/measure-grid.svg similarity index 100% rename from docs/.vuepress/public/assets/img/measure-grid.svg rename to assets/img/measure-grid.svg diff --git a/docs/.vuepress/public/assets/img/mojs-player-icons.svg b/assets/img/mojs-player-icons.svg similarity index 100% rename from docs/.vuepress/public/assets/img/mojs-player-icons.svg rename to assets/img/mojs-player-icons.svg diff --git a/assets/img/search.83621669.svg b/assets/img/search.83621669.svg new file mode 100644 index 00000000..03d83913 --- /dev/null +++ b/assets/img/search.83621669.svg @@ -0,0 +1 @@ + diff --git a/docs/.vuepress/public/assets/img/symbols.svg b/assets/img/symbols.svg similarity index 100% rename from docs/.vuepress/public/assets/img/symbols.svg rename to assets/img/symbols.svg diff --git a/docs/.vuepress/public/assets/img/symbols_vertical.svg b/assets/img/symbols_vertical.svg similarity index 100% rename from docs/.vuepress/public/assets/img/symbols_vertical.svg rename to assets/img/symbols_vertical.svg diff --git a/assets/js/1.802b0dea.js b/assets/js/1.802b0dea.js new file mode 100644 index 00000000..cc50f51b --- /dev/null +++ b/assets/js/1.802b0dea.js @@ -0,0 +1,7 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{286:function(t,e,s){ +/*! + @mojs/core – The motion graphics toolbelt for the web + Oleg Solomka @legomushroom 2023 MIT + 1.7.1 +*/ +var r;self,r=()=>(()=>{var t={50:(t,e,s)=>{"use strict";s.d(e,{Z:()=>n});var r=s(2),i={_sample:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4,s=(0,r.Z)(e),n={};if("number"===s){var a=0,o=Math.pow(10,e),l=1/o;n[0]=t(0);for(var h=0;ha?t[i=a+s]:t[i=a-s])-o;return lo?-1:1)*l};return r.getSamples=function(){return t},r}};i._sample._proximate=i._proximate;const n=i._sample},973:(t,e,s)=>{"use strict";s.d(e,{Z:()=>l});var r=s(2),i=s(671),n=s(144),a=s(52),o=s.n(a);const l=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,i.Z)(this,t),this._o=e,this._index=this._o.index||0,this._arrayPropertyMap={strokeDashoffset:1,strokeDasharray:1,origin:1},this._skipPropsDelta={timeline:1,prevChainModule:1,callbacksContext:1},this._declareDefaults(),this._extendDefaults(),this._vars(),this._render()}return(0,n.Z)(t,[{key:"_declareDefaults",value:function(){this._defaults={}}},{key:"_vars",value:function(){this._progress=0,this._strokeDasharrayBuffer=[]}},{key:"_render",value:function(){}},{key:"_setProp",value:function(t,e){if("object"===(0,r.Z)(t))for(var s in t)this._assignProp(s,t[s]);else this._assignProp(t,e)}},{key:"_assignProp",value:function(t,e){this._props[t]=e}},{key:"_show",value:function(){var t=this._props;this.el&&(t.isSoftHide?this._showByTransform():this.el.style.display="block",this._isShown=!0)}},{key:"_hide",value:function(){this.el&&(this._props.isSoftHide?o().setPrefixedStyle(this.el,"transform","scale(0)"):this.el.style.display="none",this._isShown=!1)}},{key:"_showByTransform",value:function(){}},{key:"_parseOptionString",value:function(t){return"string"==typeof t&&t.match(/stagger/)&&(t=o().parseStagger(t,this._index)),"string"==typeof t&&t.match(/rand/)&&(t=o().parseRand(t)),t}},{key:"_parsePositionOption",value:function(t,e){return o().unitOptionMap[t]&&(e=o().parseUnit(e).string),e}},{key:"_parseStrokeDashOption",value:function(t,e){var s=e;if(this._arrayPropertyMap[t])switch(s=[],(0,r.Z)(e)){case"number":s.push(o().parseUnit(e));break;case"string":for(var i=e.split(" "),n=0;n{"use strict";s.d(e,{Z:()=>p});var r=s(2),i=s(671),n=s(144),a=s(340),o=s(963),l=s(120),h=s(52),u=s.n(h);const p=function(t){(0,a.Z)(s,t);var e=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,o.Z)(this,s)}}(s);function s(){return(0,i.Z)(this,s),e.apply(this,arguments)}return(0,n.Z)(s,[{key:"_declareDefaults",value:function(){this._defaults={ns:"http://www.w3.org/2000/svg",tag:"ellipse",parent:document.body,ratio:1,radius:50,radiusX:null,radiusY:null,stroke:"hotpink","stroke-dasharray":"","stroke-dashoffset":"","stroke-linecap":"","stroke-width":2,"stroke-opacity":1,fill:"transparent","fill-opacity":1,width:0,height:0},this._drawMap=["stroke","stroke-width","stroke-opacity","stroke-dasharray","fill","stroke-dashoffset","stroke-linecap","fill-opacity","transform"]}},{key:"_vars",value:function(){this._state={},this._drawMapLength=this._drawMap.length}},{key:"_render",value:function(){this._isRendered||(this._isRendered=!0,this._createSVGCanvas(),this._setCanvasSize(),this._props.parent.appendChild(this._canvas))}},{key:"_createSVGCanvas",value:function(){var t=this._props;this._canvas=document.createElementNS(t.ns,"svg"),this.el=document.createElementNS(t.ns,t.tag),this._canvas.appendChild(this.el)}},{key:"_setCanvasSize",value:function(){var t=this._canvas.style;t.display="block",t.width="100%",t.height="100%",t.left="0px",t.top="0px"}},{key:"_draw",value:function(){this._props.length=this._getLength();for(var t=this._drawMapLength;t--;){var e=this._drawMap[t];switch(e){case"stroke-dasharray":case"stroke-dashoffset":this.castStrokeDash(e)}this._setAttrIfChanged(e,this._props[e])}this._state.radius=this._props.radius}},{key:"castStrokeDash",value:function(t){var e=this._props;if(u().isArray(e[t])){for(var s="",i=0;i{"use strict";s.d(e,{Z:()=>h});var r=s(671),i=s(144),n=s(752),a=s(340),o=s(963),l=s(120);const h=function(t){(0,a.Z)(s,t);var e=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,o.Z)(this,s)}}(s);function s(){return(0,r.Z)(this,s),e.apply(this,arguments)}return(0,i.Z)(s,[{key:"_declareDefaults",value:function(){(0,n.Z)((0,l.Z)(s.prototype),"_declareDefaults",this).call(this),this._defaults.tag="path"}},{key:"_draw",value:function(){(0,n.Z)((0,l.Z)(s.prototype),"_draw",this).call(this);var t=this._props,e=null!=t.radiusX?t.radiusX:t.radius,r=null!=t.radiusY?t.radiusY:t.radius,i=e===this._prevRadiusX,a=r===this._prevRadiusY,o=t.points===this._prevPoints;if(!(i&&a&&o)){var h=t.width/2,u=t.height/2,p=h+e,c="M".concat(h-e," ").concat(u," Q ").concat(h," ").concat(u-2*r," ").concat(p," ").concat(u);this.el.setAttribute("d",c),this._prevPoints=t.points,this._prevRadiusX=e,this._prevRadiusY=r}}},{key:"_getLength",value:function(){var t=this._props,e=null!=t.radiusX?t.radiusX:t.radius,s=null!=t.radiusY?t.radiusY:t.radius,r=e+s,i=Math.sqrt((3*e+s)*(e+3*s));return.5*Math.PI*(3*r-i)}}]),s}(s(623).Z)},854:(t,e,s)=>{"use strict";s.d(e,{Z:()=>h});var r=s(671),i=s(144),n=s(752),a=s(340),o=s(963),l=s(120);const h=function(t){(0,a.Z)(s,t);var e=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,o.Z)(this,s)}}(s);function s(){return(0,r.Z)(this,s),e.apply(this,arguments)}return(0,i.Z)(s,[{key:"_declareDefaults",value:function(){(0,n.Z)((0,l.Z)(s.prototype),"_declareDefaults",this).call(this),this._defaults.tag="path",this._defaults.parent=null;for(var t=0;t'.concat(this.getShape(),""),this._canvas=t.parent.querySelector("#js-mojs-shape-canvas"),this.el=t.parent.querySelector("#js-mojs-shape-el"),this._setCanvasSize()}}},{key:"_getScale",value:function(){var t=this._props,e=t.radiusX?t.radiusX:t.radius,s=t.radiusY?t.radiusY:t.radius;t.scaleX=2*e/100,t.scaleY=2*s/100,t.maxScale=Math.max(t.scaleX,t.scaleY),t.shiftX=t.width/2-50*t.scaleX,t.shiftY=t.height/2-50*t.scaleY;var r="translate(".concat(t.shiftX,", ").concat(t.shiftY,")");return"".concat(r," scale(").concat(t.scaleX,", ").concat(t.scaleY,")")}},{key:"_getLength",value:function(){return this._length}}]),s}(s(623).Z)},342:(t,e,s)=>{"use strict";s.d(e,{Z:()=>c});var r=s(671),i=s(144),n=s(340),a=s(963),o=s(752),l=s(120),h=s(52),u=s.n(h),p=s(755);const c=function(t){(0,n.Z)(s,t);var e=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,l.Z)(t);if(e){var i=(0,l.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,a.Z)(this,s)}}(s);function s(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Z)(this,s),e.call(this,t)}return(0,i.Z)(s,[{key:"add",value:function(){for(var t=arguments.length,e=new Array(t),s=0;s=0;e--)this._timelines[e].stop(t)}},{key:"_appendTimelineArray",value:function(t){for(var e=t.length,s=this._props.repeatTime-this._props.delay,r=this._timelines.length;e--;)this._appendTimeline(t[e],r,s)}},{key:"_appendTimeline",value:function(t,e,r){t.timeline instanceof s&&(t=t.timeline),t.tween instanceof p.Z&&(t=t.tween);var i=null!=r?r:this._props.duration;i+=t._props.shiftTime||0,t.index=e,this._pushTimeline(t,i)}},{key:"_pushTimelineArray",value:function(t){for(var e=0;ethis._prevTime?-1:1;this._props.isYoyo&&s&&(r*=-1);for(var i=this._props.startTime+t*this._props.duration,n=i+r,a=this._timelines.length,o=0;on?o:a-1-o;this._timelines[l]._update(i,n,this._prevYoyo,this._onEdge)}this._prevYoyo=s}},{key:"_recalcDuration",value:function(t){var e=t._props,s=e.repeatTime/e.speed+(e.shiftTime||0)+t._negativeShift;this._props.duration=Math.max(s,this._props.duration)}},{key:"_recalcTotalDuration",value:function(){var t=this._timelines.length;for(this._props.duration=0;t--;){var e=this._timelines[t];e._recalcTotalDuration&&e._recalcTotalDuration(),this._recalcDuration(e)}this._calcDimentions()}},{key:"_setStartTime",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];(0,o.Z)((0,l.Z)(s.prototype),"_setStartTime",this).call(this,t),this._startTimelines(this._props.startTime,e)}},{key:"_startTimelines",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s="stop"===this._state;null==t&&(t=this._props.startTime);for(var r=0;r{"use strict";s.d(e,{Z:()=>d});var r=s(671),i=s(144),n=s(326),a=s(752),o=s(340),l=s(963),h=s(120),u=s(47),p=s(283),c=s.n(p);const d=function(t){(0,o.Z)(s,t);var e=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,h.Z)(t);if(e){var i=(0,h.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,l.Z)(this,s)}}(s);function s(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Z)(this,s),null==(t=e.call(this,i))._props.name&&t._setSelfName(),(0,l.Z)(t,(0,n.Z)(t))}return(0,i.Z)(s,[{key:"_declareDefaults",value:function(){this._defaults={duration:350,delay:0,repeat:0,speed:1,isYoyo:!1,easing:"Sin.Out",backwardEasing:null,name:null,nameBase:"Tween",onProgress:null,onStart:null,onRefresh:null,onComplete:null,onRepeatStart:null,onRepeatComplete:null,onFirstUpdate:null,onUpdate:null,isChained:!1,onPlaybackStart:null,onPlaybackPause:null,onPlaybackStop:null,onPlaybackComplete:null,callbacksContext:null}}},{key:"play",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return"play"===this._state&&this._isRunning||(this._props.isReversed=!1,this._subPlay(t,"play"),this._setPlaybackState("play")),this}},{key:"playBackward",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return"reverse"===this._state&&this._isRunning||(this._props.isReversed=!0,this._subPlay(t,"reverse"),this._setPlaybackState("reverse")),this}},{key:"pause",value:function(){return"pause"===this._state||"stop"===this._state||(this._removeFromTweener(),this._setPlaybackState("pause")),this}},{key:"stop",value:function(t){if("stop"===this._state)return this;this._wasUknownUpdate=void 0;var e=null!=t?t:"reverse"===this._state?1:0;return this.setProgress(e),this.reset(),this}},{key:"replay",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.reset(),this.play(t),this}},{key:"replayBackward",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.reset(),this.playBackward(t),this}},{key:"resume",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if("pause"!==this._state)return this;switch(this._prevState){case"play":this.play(t);break;case"reverse":this.playBackward(t)}return this}},{key:"setProgress",value:function(t){var e=this._props;return!e.startTime&&this._setStartTime(),this._playTime=null,t<0&&(t=0),t>1&&(t=1),this._update(e.startTime-e.delay+t*e.repeatTime),this}},{key:"setSpeed",value:function(t){return this._props.speed=t,"play"!==this._state&&"reverse"!==this._state||this._setResumeTime(this._state),this}},{key:"reset",value:function(){return this._removeFromTweener(),this._setPlaybackState("stop"),this._progressTime=0,this._isCompleted=!1,this._isStarted=!1,this._isFirstUpdate=!1,this._wasUknownUpdate=void 0,this._prevTime=void 0,this._prevYoyo=void 0,this._props.isReversed=!1,this}},{key:"_subPlay",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0,s=this._props,r=this._state,i=this._prevState,n="pause"===r,a=("play"===r||n&&"play"===i)&&"reverse"===e||("reverse"===r||n&&"reverse"===i)&&"play"===e;return this._progressTime=this._progressTime>=s.repeatTime?0:this._progressTime,a&&(this._progressTime=s.repeatTime-this._progressTime),this._setResumeTime(e,t),u.Z.add(this),this}},{key:"_setResumeTime",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._resumeTime=performance.now();var s=this._resumeTime-Math.abs(e)-this._progressTime;this._setStartTime(s,!1),null!=this._prevTime&&(this._prevTime="play"===t?this._normPrevTimeForward():this._props.endTime-this._progressTime)}},{key:"_normPrevTimeForward",value:function(){var t=this._props;return t.startTime+this._progressTime-t.delay}},{key:"_setSelfName",value:function(){var t="_".concat(this._props.nameBase,"s");u.Z[t]=null==u.Z[t]?1:++u.Z[t],this._props.name="".concat(this._props.nameBase," ").concat(u.Z[t])}},{key:"_setPlaybackState",value:function(t){this._prevState=this._state,this._state=t;var e="pause"===this._prevState,s="stop"===this._prevState,r="play"===this._prevState,i="reverse"===this._prevState,n=r||i;"play"!==t&&"reverse"!==t||!(s||e)||this._playbackStart(),"pause"===t&&n&&this._playbackPause(),"stop"===t&&(n||e)&&this._playbackStop()}},{key:"_vars",value:function(){return this.progress=0,this._prevTime=void 0,this._progressTime=0,this._negativeShift=0,this._state="stop",this._props.delay<0&&(this._negativeShift=this._props.delay,this._props.delay=0),this._calcDimentions()}},{key:"_calcDimentions",value:function(){this._props.time=this._props.duration+this._props.delay,this._props.repeatTime=this._props.time*(this._props.repeat+1)}},{key:"_extendDefaults",value:function(){this._callbackOverrides=this._o.callbackOverrides||{},delete this._o.callbackOverrides,(0,a.Z)((0,h.Z)(s.prototype),"_extendDefaults",this).call(this);var t=this._props;t.easing=c().parseEasing(t.easing),t.easing._parent=this,null!=t.backwardEasing&&(t.backwardEasing=c().parseEasing(t.backwardEasing),t.backwardEasing._parent=this)}},{key:"_setStartTime",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=this._props,r=s.shiftTime||0;e&&(this._isCompleted=!1,this._isRepeatCompleted=!1,this._isStarted=!1);var i=null==t?performance.now():t;return s.startTime=i+s.delay+this._negativeShift+r,s.endTime=s.startTime+s.repeatTime-s.delay,this._playTime=null!=this._resumeTime?this._resumeTime:i+r,this._resumeTime=null,this}},{key:"_update",value:function(t,e,s,r){var i=this._props;null==this._prevTime&&null!=e&&(this._props.speed&&this._playTime&&(this._prevTime=this._playTime+this._props.speed*(e-this._playTime)),this._wasUknownUpdate=!0);var n=i.startTime-i.delay;if(i.speed&&this._playTime&&(t=this._playTime+i.speed*(t-this._playTime)),Math.abs(i.endTime-t)<1e-8&&(t=i.endTime),r&&null!=s){var a=this._getPeriod(t),o=!(!i.isYoyo||!this._props.repeat||a%2!=1);if(this._timelines)for(var l=0;l=i.startTime&&this._prevTime<=i.endTime&&(this._prevTime=t+1,this._repeatStart(t,o),this._start(t,o),this._isCompleted=!0)),this._prevTime=void 0}return t>n&&t=i.endTime&&(this._progressTime=i.repeatTime+1e-11),i.isReversed&&(t=i.endTime-this._progressTime),null==this._prevTime?(this._prevTime=t,this._wasUknownUpdate=!0,!1):(t>=n&&t<=i.endTime&&this._progress((t-n)/i.repeatTime,t),t>=i.startTime&&t<=i.endTime?this._updateInActiveArea(t):this._isInActiveArea?this._updateInInactiveArea(t):this._isRefreshed||t=i.endTime||t<=n)}},{key:"_updateInInactiveArea",value:function(t){if(this._isInActiveArea){var e=this._props;if(t>e.endTime&&!this._isCompleted){this._progress(1,t);var s=this._getPeriod(e.endTime),r=e.isYoyo&&s%2==0;this._setProgress(r?0:1,t,r),this._repeatComplete(t,r),this._complete(t,r)}tthis._prevTime&&(this._isRepeatCompleted=!1),this._repeatComplete(t,u),this._complete(t,u);if(this._isCompleted=!1,this._isRefreshed=!1,r+i>=e.startTime){this._isInActiveArea=!0,this._isRepeatCompleted=!1,this._isRepeatStart=!1,this._isStarted=!1;var d=(t-e.startTime)%s/e.duration,_=a>0&&la;if(this._onEdge=0,_&&(this._onEdge=1),f&&(this._onEdge=-1),this._wasUknownUpdate&&(t>this._prevTime&&(this._start(t,u),this._repeatStart(t,u),this._firstUpdate(t,u)),t=0&&this._repeatStart(t,u)}t>this._prevTime&&(!this._isStarted&&this._prevTime<=e.startTime&&(this._start(t,u),this._repeatStart(t,u),this._isStarted=!1,this._isRepeatStart=!1),this._firstUpdate(t,u)),f&&(0!==this.progress&&1!==this.progress&&l!=n&&this._repeatStart(t,p),l!==n||this._wasUknownUpdate||(this._complete(t,u),this._repeatComplete(t,u),this._firstUpdate(t,u),this._isCompleted=!1),this._repeatComplete(t,u)),"delay"===l&&(a0&&this._repeatStart(t,u)),t>this._prevTime?(0===d&&this._repeatStart(t,u),t!==e.endTime&&this._setProgress(u?1-d:d,t,u)):(t!==e.endTime&&this._setProgress(u?1-d:d,t,u),0===d&&this._repeatStart(t,u)),t===e.startTime&&this._start(t,u)}else if(this._isInActiveArea){var y="delay"===a?o:a,m=t>this._prevTime;m&&y--,c=e.isYoyo&&y%2==1?1:0,tthis._prevTime&&(0===this.progress&&1!==c||this._repeatComplete(t,1===c)),this._isInActiveArea=!1}this._wasUknownUpdate=!1}},{key:"_removeFromTweener",value:function(){return u.Z.remove(this),this}},{key:"_getPeriod",value:function(t){var e=this._props,s=e.delay+e.duration,r=e.delay+t-e.startTime,i=r/s,n=t=e.endTime?Math.round(i):Math.floor(i),t>e.endTime?i=Math.round((e.endTime-e.startTime+e.delay)/s):n>0&&nthis._prevTime;if(this.progress=t,n&&!s||!n&&s)this.easedProgress=r.easing(t);else if(!n&&!s||n&&s){var a=null!=r.backwardEasing?r.backwardEasing:r.easing;this.easedProgress=a(t)}return(r.prevEasedProgress!==this.easedProgress||i)&&null!=r.onUpdate&&"function"==typeof r.onUpdate&&r.onUpdate.call(r.callbacksContext||this,this.easedProgress,this.progress,n,s),r.prevEasedProgress=this.easedProgress,r.wasYoyo=s,this}},{key:"_start",value:function(t,e){if(!this._isStarted){var s=this._props;null!=s.onStart&&"function"==typeof s.onStart&&s.onStart.call(s.callbacksContext||this,t>this._prevTime,e),this._isCompleted=!1,this._isStarted=!0,this._isFirstUpdate=!1}}},{key:"_playbackStart",value:function(){var t=this._props;null!=t.onPlaybackStart&&"function"==typeof t.onPlaybackStart&&t.onPlaybackStart.call(t.callbacksContext||this)}},{key:"_playbackPause",value:function(){var t=this._props;null!=t.onPlaybackPause&&"function"==typeof t.onPlaybackPause&&t.onPlaybackPause.call(t.callbacksContext||this)}},{key:"_playbackStop",value:function(){var t=this._props;null!=t.onPlaybackStop&&"function"==typeof t.onPlaybackStop&&t.onPlaybackStop.call(t.callbacksContext||this)}},{key:"_playbackComplete",value:function(){var t=this._props;null!=t.onPlaybackComplete&&"function"==typeof t.onPlaybackComplete&&t.onPlaybackComplete.call(t.callbacksContext||this)}},{key:"_complete",value:function(t,e){if(!this._isCompleted){var s=this._props;null!=s.onComplete&&"function"==typeof s.onComplete&&s.onComplete.call(s.callbacksContext||this,t>this._prevTime,e),this._isCompleted=!0,this._isStarted=!1,this._isFirstUpdate=!1,this._prevYoyo=void 0}}},{key:"_firstUpdate",value:function(t,e){if(!this._isFirstUpdate){var s=this._props;null!=s.onFirstUpdate&&"function"==typeof s.onFirstUpdate&&(s.onFirstUpdate.tween=this,s.onFirstUpdate.call(s.callbacksContext||this,t>this._prevTime,e)),this._isFirstUpdate=!0}}},{key:"_repeatComplete",value:function(t,e){if(!this._isRepeatCompleted){var s=this._props;null!=s.onRepeatComplete&&"function"==typeof s.onRepeatComplete&&s.onRepeatComplete.call(s.callbacksContext||this,t>this._prevTime,e),this._isRepeatCompleted=!0}}},{key:"_repeatStart",value:function(t,e){if(!this._isRepeatStart){var s=this._props;null!=s.onRepeatStart&&"function"==typeof s.onRepeatStart&&s.onRepeatStart.call(s.callbacksContext||this,t>this._prevTime,e),this._isRepeatStart=!0}}},{key:"_progress",value:function(t,e){var s=this._props;null!=s.onProgress&&"function"==typeof s.onProgress&&s.onProgress.call(s.callbacksContext||this,t,e>this._prevTime)}},{key:"_refresh",value:function(t){var e=this._props;if(null!=e.onRefresh){var s=e.callbacksContext||this,r=t?0:1;e.onRefresh.call(s,t,e.easing(r),r)}}},{key:"_onTweenerRemove",value:function(){}},{key:"_onTweenerFinish",value:function(){this._setPlaybackState("stop"),this._playbackComplete()}},{key:"_setProp",value:function(t,e){(0,a.Z)((0,h.Z)(s.prototype),"_setProp",this).call(this,t,e),this._calcDimentions()}},{key:"_assignProp",value:function(t,e){null==e&&(e=this._defaults[t]),"easing"===t&&((e=c().parseEasing(e))._parent=this);var r=this._callbackOverrides[t],i=!e||!e.isMojsCallbackOverride;r&&i&&(e=this._overrideCallback(e,r)),(0,a.Z)((0,h.Z)(s.prototype),"_assignProp",this).call(this,t,e)}},{key:"_overrideCallback",value:function(t,e){var s=t&&"function"==typeof t,r=function(){s&&t.apply(this,arguments),e.apply(this,arguments)};return r.isMojsCallbackOverride=!0,r}}]),s}(s(973).Z)},47:(t,e,s)=>{"use strict";s.d(e,{Z:()=>n});var r=s(671),i=s(144);const n=new(function(){function t(){return(0,r.Z)(this,t),this._vars(),this._listenVisibilityChange(),this}return(0,i.Z)(t,[{key:"_vars",value:function(){this.tweens=[],this._savedTweens=[],this._loop=this._loop.bind(this),this._onVisibilityChange=this._onVisibilityChange.bind(this)}},{key:"_loop",value:function(){return!!this._isRunning&&(this._update(window.performance.now()),this.tweens.length?(requestAnimationFrame(this._loop),this):this._isRunning=!1)}},{key:"_startLoop",value:function(){this._isRunning||(this._isRunning=!0,requestAnimationFrame(this._loop))}},{key:"_stopLoop",value:function(){this._isRunning=!1}},{key:"_update",value:function(t){for(var e=this.tweens.length;e--;){var s=this.tweens[e];s&&!0===s._update(t)&&(this.remove(s),s._onTweenerFinish(),s._prevTime=void 0)}}},{key:"add",value:function(t){t._isRunning||(t._isRunning=!0,this.tweens.push(t),this._startLoop())}},{key:"removeAll",value:function(){this.tweens.length=0}},{key:"remove",value:function(t){var e="number"==typeof t?t:this.tweens.indexOf(t);-1!==e&&(t=this.tweens[e])&&(t._isRunning=!1,this.tweens.splice(e,1),t._onTweenerRemove())}},{key:"_listenVisibilityChange",value:function(){void 0!==document.hidden?(this._visibilityHidden="hidden",this._visibilityChange="visibilitychange"):void 0!==document.mozHidden?(this._visibilityHidden="mozHidden",this._visibilityChange="mozvisibilitychange"):void 0!==document.msHidden?(this._visibilityHidden="msHidden",this._visibilityChange="msvisibilitychange"):void 0!==document.webkitHidden&&(this._visibilityHidden="webkitHidden",this._visibilityChange="webkitvisibilitychange"),document.addEventListener(this._visibilityChange,this._onVisibilityChange,!1)}},{key:"_onVisibilityChange",value:function(){document[this._visibilityHidden]?this._savePlayingTweens():this._restorePlayingTweens()}},{key:"_savePlayingTweens",value:function(){this._savedTweens=this.tweens.slice(0);for(var t=0;t{var r,i;i=s(52),r=new class{constructor(t){return this.vars(),this.generate}vars(){return this.generate=i.bind(this.generate,this)}generate(t,e,s,r){var i,n,a,o,l,h,u,p,c,d,_,f,v,y,m,g,k,w;if(arguments.length<4)return this.error("Bezier function expects 4 arguments");for(f=v=0;v<4;f=++v)if("number"!=typeof(o=arguments[f])||isNaN(o)||!isFinite(o))return this.error("Bezier function expects 4 arguments");return t<0||t>1||s<0||s>1?this.error("Bezier x values should be > 0 and < 1"):(y=.1,c=!!Float32Array,i=function(t,e){return 1-3*e+3*t},n=function(t,e){return 3*e-6*t},a=function(t){return 3*t},h=function(t,e,s){return((i(e,s)*t+n(e,s))*t+a(e))*t},d=function(t,e,s){return 3*i(e,s)*t*t+2*n(e,s)*t+a(e)},g=function(e,r){var i;for(f=0;f<4;){if(0===(i=d(r,t,s)))return r;r-=(h(r,t,s)-e)/i,++f}return r},u=function(){for(f=0;f<11;)m[f]=h(f*y,t,s),++f},l=function(e,r,i){var n,a;for(a=void 0,n=void 0,f=0;(a=h(n=r+(i-r)/2,t,s)-e)>0?i=n:r=n,Math.abs(a)>1e-7&&++f<10;);return n},_=function(e){var r,i,n,a,o,h;for(h=0,r=1;10!==r&&m[r]<=e;)h+=y,++r;return--r,i=m[r+1]-m[r],n=(e-m[r])/i,(o=d(a=h+n*y,t,s))>=.001?g(e,a):0===o?a:l(e,h,h+y)},k=function(){if(t!==e||s!==r)return u()},m=c?new Float32Array(11):new Array(11),w="bezier("+[t,e,s,r]+")",(p=function(i){return k(),t===e&&s===r?i:0===i?0:1===i?1:h(_(i),e,r)}).toStr=function(){return w},p)}error(t){return i.error(t)}},t.exports=r},283:function(t,e,s){var r,i,n,a,o,l,h,u,p;h=s(52),o=s(977),n=s(162),u=s(440),a=s(50).Z,p=Math.sin,i=Math.PI,r=function(){class t{inverse(t){return 1-t}parseEasing(t){var e;return null==t&&(t="linear.none"),"string"==typeof t?"m"===t.charAt(0).toLowerCase()?this.path(t):(e=this[(t=this._splitEasing(t))[0]])?e[t[1]]:(h.error(`Easing with name "${t[0]}" was not found, fallback to "linear.none" instead`),this.linear.none):h.isArray(t)?this.bezier.apply(this,t):t}_splitEasing(t){var e;return"function"==typeof t?t:"string"==typeof t&&t.length?[(e=t.split("."))[0].toLowerCase()||"linear",e[1].toLowerCase()||"none"]:["linear","none"]}}return t.prototype.bezier=o,t.prototype.PathEasing=n,t.prototype.path=new n("creator").create,t.prototype.approximate=a,t.prototype.linear={none:function(t){return t}},t.prototype.ease={in:o.apply(t,[.42,0,1,1]),out:o.apply(t,[0,0,.58,1]),inout:o.apply(t,[.42,0,.58,1])},t.prototype.sin={in:function(t){return 1-Math.cos(t*i/2)},out:function(t){return p(t*i/2)},inout:function(t){return.5*(1-Math.cos(i*t))}},t.prototype.quad={in:function(t){return t*t},out:function(t){return t*(2-t)},inout:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},t.prototype.cubic={in:function(t){return t*t*t},out:function(t){return--t*t*t+1},inout:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},t.prototype.quart={in:function(t){return t*t*t*t},out:function(t){return 1- --t*t*t*t},inout:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},t.prototype.quint={in:function(t){return t*t*t*t*t},out:function(t){return--t*t*t*t*t+1},inout:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},t.prototype.expo={in:function(t){return 0===t?0:Math.pow(1024,t-1)},out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},inout:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}},t.prototype.circ={in:function(t){return 1-Math.sqrt(1-t*t)},out:function(t){return Math.sqrt(1- --t*t)},inout:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},t.prototype.back={in:function(t){return t*t*((1+1.70158)*t-1.70158)},out:function(t){return--t*t*((1+1.70158)*t+1.70158)+1},inout:function(t){var e;return e=2.5949095,(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)}},t.prototype.elastic={in:function(t){return 0===t?0:1===t?1:-1*Math.pow(2,10*(t-=1))*Math.sin((t-.1)*(2*Math.PI)/.4)},out:function(t){return 0===t?0:1===t?1:1*Math.pow(2,-10*t)*Math.sin((t-.1)*(2*Math.PI)/.4)+1},inout:function(t){return 0===t?0:1===t?1:(t*=2)<1?1*Math.pow(2,10*(t-=1))*Math.sin((t-.1)*(2*Math.PI)/.4)*-.5:1*Math.pow(2,-10*(t-=1))*Math.sin((t-.1)*(2*Math.PI)/.4)*.5+1}},t.prototype.bounce={in:function(t){return 1-l.bounce.out(1-t)},out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},inout:function(t){return t<.5?.5*l.bounce.in(2*t):.5*l.bounce.out(2*t-1)+.5}},t}.call(this),(l=new r).mix=u(l),t.exports=l},440:t=>{var e,s,r,i,n,a;s=null,n=function(t){return"number"==typeof t.value?t.value:s.parseEasing(t.value)},a=function(t,e){var s;return t.value=n(t),e.value=n(e),s=0,t.toe.to&&(s=1),s},r=function(t,e){var s,r,i;for(s=r=0,i=t.length;re)return s},i=function(...t){return t.length>1?t=t.sort(a):t[0].value=n(t[0]),function(e){var s,i;return void 0===(s=r(t,e))?1:-1!==s?(i=t[s].value,s===t.length-1&&e>t[s].to?1:"function"==typeof i?i(e):i):void 0}},e=function(t){return s=t,i},t.exports=e},162:(t,e,s)=>{var r,i;i=s(52),r=class t{_vars(){return this._precompute=i.clamp(this.o.precompute||1450,100,1e4),this._step=1/this._precompute,this._rect=this.o.rect||100,this._approximateMax=this.o.approximateMax||5,this._eps=this.o.eps||.001,this._boundsPrevProgress=-1}constructor(t,e={}){if(this.o=e,"creator"!==t){if(this.path=i.parsePath(t),null==this.path)return i.error("Error while parsing the path");this._vars(),this.path.setAttribute("d",this._normalizePath(this.path.getAttribute("d"))),this.pathLength=this.path.getTotalLength(),this.sample=i.bind(this.sample,this),this._hardSample=i.bind(this._hardSample,this),this._preSample()}}_preSample(){var t,e,s,r,i,n,a;for(this._samples=[],a=[],t=e=0,n=this._precompute;0<=n?e<=n:e>=n;t=0<=n?++e:--e)i=t*this._step,s=this.pathLength*i,r=this.path.getPointAtLength(s),a.push(this._samples[t]={point:r,length:s,progress:i});return a}_findBounds(t,e){var s,r,i,n,a,o,l,h,u,p,c,d,_;if(e===this._boundsPrevProgress)return this._prevBounds;for(null==this._boundsStartIndex&&(this._boundsStartIndex=0),o=t.length,this._boundsPrevProgress>e?(l=0,r="reverse"):(l=o,r="forward"),"forward"===r?(d=t[0],i=t[t.length-1]):(d=t[t.length-1],i=t[0]),n=a=p=this._boundsStartIndex,c=l;p<=c?ac;n=p<=c?++a:--a){if(u=(_=t[n]).point.x/this._rect,h=e,"reverse"===r&&(s=u,u=h,h=s),!(u-1,this.isChrome=t.indexOf("Chrome")>-1,this.isOpera=t.toLowerCase().indexOf("op")>-1,this.isChrome&&this.isSafari&&(this.isSafari=!1),t.match(/PhantomJS/gim)&&(this.isSafari=!1),this.isChrome&&this.isOpera&&(this.isChrome=!1),this.is3d=this.checkIf3d(),this.uniqIDs=-1,this.div=document.createElement("div"),document.body.appendChild(this.div),this.defaultStyles=this.computedStyle(this.div)}cloneObj(t,e){var s,r,i,n;for(n={},s=(i=Object.keys(t)).length;s--;)r=i[s],null!=e&&e[r]||(n[r]=t[r]);return n}extend(t,e){var s;for(s in e)e[s],null==t[s]&&(t[s]=e[s]);return t}getRemBase(){var t,e;return t=document.querySelector("html"),e=getComputedStyle(t),this.remBase=parseFloat(e.fontSize)}clamp(t,e,s){return ts?s:t}setPrefixedStyle(t,e,s){return"transform"===e&&(t.style[`${this.prefix.css}${e}`]=s),t.style[e]=s}style(t,e,s){var r,i,n,a;if("object"==typeof e){for(n=(i=Object.keys(e)).length,a=[];n--;)s=e[r=i[n]],a.push(this.setPrefixedStyle(t,r,s));return a}return this.setPrefixedStyle(t,e,s)}prepareForLog(t){return(t=Array.prototype.slice.apply(t)).unshift("::"),t.unshift(this.logBadgeCss),t.unshift("%cmo·js%c"),t}log(){if(!1!==mojs.isDebug)return console.log.apply(console,this.prepareForLog(arguments))}warn(){if(!1!==mojs.isDebug)return console.warn.apply(console,this.prepareForLog(arguments))}error(){if(!1!==mojs.isDebug)return console.error.apply(console,this.prepareForLog(arguments))}parseUnit(t){var e,s,r,i,n;return"number"==typeof t?{unit:"px",isStrict:!1,value:t,string:0===t?""+t:t+"px"}:"string"==typeof t?(i=/px|%|rem|em|ex|cm|ch|mm|in|pt|pc|vh|vw|vmin|deg/gim,s=!0,(n=null!=(r=t.match(i))?r[0]:void 0)||(n="px",s=!1),{unit:n,isStrict:s,value:e=parseFloat(t),string:0===e?""+e:`${e}${n}`}):t}bind(t,e){var s,r;return r=function(){var r,i;return r=Array.prototype.slice.call(arguments),i=s.concat(r),t.apply(e,i)},s=Array.prototype.slice.call(arguments,2),r}getRadialPoint(t={}){var e,s,r;return e=.017453292519943295*(t.rotate-90),s=null!=t.radiusX?t.radiusX:t.radius,r=null!=t.radiusY?t.radiusY:t.radius,{x:t.center.x+Math.cos(e)*s,y:t.center.y+Math.sin(e)*r}}getPrefix(){var t,e,s;return s=window.getComputedStyle(document.documentElement,""),t=(Array.prototype.slice.call(s).join("").match(/-(moz|webkit|ms)-/)||""===s.OLink&&["","o"])[1],{dom:null!=(e="WebKit|Moz|MS|O".match(new RegExp("("+t+")","i")))?e[1]:void 0,lowercase:t,css:"-"+t+"-",js:(null!=t?t[0].toUpperCase():void 0)+(null!=t?t.substr(1):void 0)}}strToArr(t){var e;return e=[],"number"!=typeof t||isNaN(t)?(t.trim().split(/\s+/gim).forEach(t=>e.push(this.parseUnit(this.parseIfRand(t)))),e):(e.push(this.parseUnit(t)),e)}calcArrDelta(t,e){var s,r,i,n;for(s=[],r=i=0,n=t.length;i(r=e.length))for(l=s-r,p=e.length,n=a=0,h=l;0<=h?ah;n=0<=h?++a:--a)i=n+p,e.push(this.parseUnit("0"+t[i].unit));else if(r>s)for(l=r-s,p=t.length,n=o=0,u=l;0<=u?ou;n=0<=u?++o:--o)i=n+p,t.push(this.parseUnit("0"+e[i].unit));return[t,e]}makeColorObj(t){var e,s,r,i,n,a,o,l;return"#"===t[0]&&(r={},(o=/^#?([a-f\d]{1,2})([a-f\d]{1,2})([a-f\d]{1,2})$/i.exec(t))&&(a=2===o[1].length?o[1]:o[1]+o[1],i=2===o[2].length?o[2]:o[2]+o[2],s=2===o[3].length?o[3]:o[3]+o[3],r={r:parseInt(a,16),g:parseInt(i,16),b:parseInt(s,16),a:1})),"#"!==t[0]&&((n="r"===t[0]&&"g"===t[1]&&"b"===t[2])&&(l=t),n||(l=this.shortColors[t]?this.shortColors[t]:(this.div.style.color=t,this.computedStyle(this.div).color)),o=new RegExp("^rgba?\\((\\d{1,3}),\\s?(\\d{1,3}),\\s?(\\d{1,3}),?\\s?(\\d{1}|0?\\.\\d{1,})?\\)$","gi").exec(l),r={},e=parseFloat(o[4]||1),o&&(r={r:parseInt(o[1],10),g:parseInt(o[2],10),b:parseInt(o[3],10),a:null==e||isNaN(e)?1:e})),r}computedStyle(t){return getComputedStyle(t)}capitalize(t){if("string"!=typeof t)throw Error("String expected - nothing to capitalize");return t.charAt(0).toUpperCase()+t.substring(1)}parseRand(t){var e,s,r;return s=t.split(/rand\(|\,|\)/),r=this.parseUnit(s[2]),e=this.rand(parseFloat(s[1]),parseFloat(s[2])),r.unit&&s[2].match(r.unit)?e+r.unit:e}parseStagger(t,e){var s,r,i,n,a,o;return i=(o=t.split(/stagger\(|\)$/)[1].toLowerCase()).split(/(rand\(.*?\)|[^\(,\s]+)(?=\s*,|\s*$)/gim),o=i.length>3?(s=this.parseUnit(this.parseIfRand(i[1])),i[3]):(s=this.parseUnit(0),i[1]),o=this.parseIfRand(o),r=e*(a=this.parseUnit(o)).value+s.value,(n=s.isStrict?s.unit:a.isStrict?a.unit:"")?`${r}${n}`:r}parseIfStagger(t,e){return"string"==typeof t&&t.match(/stagger/g)?this.parseStagger(t,e):t}parseIfRand(t){return"string"==typeof t&&t.match(/rand\(/)?this.parseRand(t):t}parseDelta(t,e,s){var r,i,n,a,o,l,h,u,p,c,d,_;if(null!=(n=(e=this.cloneObj(e)).easing)&&(n=mojs.easing.parseEasing(n)),delete e.easing,null!=(r=e.curve)&&(r=mojs.easing.parseEasing(r)),delete e.curve,a=e[c=Object.keys(e)[0]],i={start:c},!isNaN(parseFloat(c))||c.match(/rand\(/)||c.match(/stagger\(/))if("strokeDasharray"===t||"strokeDashoffset"===t||"origin"===t){for(d=this.strToArr(c),o=this.strToArr(a),this.normDashArrays(d,o),h=u=0,p=d.length;u0&&this.createFilter(),this.path=this.getPath(),this.path.getAttribute("d")?(this.len=this.path.getTotalLength(),this.slicedLen=this.len*(this.props.pathEnd-this.props.pathStart),this.startLen=this.props.pathStart*this.len,this.fill=this.props.fill,null!=this.fill&&(this.container=this.parseEl(this.props.fill.container),this.fillRule=this.props.fill.fillRule||"all",this.getScaler(),null!=this.container)?(this.removeEvent(this.container,"onresize",this.getScaler),this.addEvent(this.container,"onresize",this.getScaler)):void 0):(a.error("Path has no coordinates to work with, aborting"),!0)):(a.error('Missed "el" option. It could be a selector, DOMNode or another module.'),!0)}addEvent(t,e,s){return t.addEventListener(e,s,!1)}removeEvent(t,e,s){return t.removeEventListener(e,s,!1)}createFilter(){var t,e;return t=document.createElement("div"),this.filterID="filter-"+a.getUniqID(),t.innerHTML=``,e=t.querySelector("#svg-"+this.filterID),this.filter=e.querySelector("#blur"),this.filterOffset=e.querySelector("#blur-offset"),document.body.insertBefore(e,document.body.firstChild),this.el.style.filter=`url(#${this.filterID})`,this.el.style[a.prefix.css+"filter"]=`url(#${this.filterID})`}parseEl(t){return"string"==typeof t?document.querySelector(t):t instanceof HTMLElement?t:null!=t._setProp?(this.isModule=!0,t):void 0}getPath(){return a.parsePath(this.props.path)||(this.props.path.x||this.props.path.y?this.curveToPath({start:{x:0,y:0},shift:{x:this.props.path.x||0,y:this.props.path.y||0},curvature:{x:this.props.curvature.x||this.defaults.curvature.x,y:this.props.curvature.y||this.defaults.curvature.y}}):void 0)}getScaler(){var t,e,s;switch(this.cSize={width:this.container.offsetWidth||0,height:this.container.offsetHeight||0},s=this.path.getPointAtLength(0),t=this.path.getPointAtLength(this.len),e={},this.scaler={},e.width=t.x>=s.x?t.x-s.x:s.x-t.x,e.height=t.y>=s.y?t.y-s.y:s.y-t.y,this.fillRule){case"all":return this.calcWidth(e),this.calcHeight(e);case"width":return this.calcWidth(e),this.scaler.y=this.scaler.x;case"height":return this.calcHeight(e),this.scaler.x=this.scaler.y}}calcWidth(t){return this.scaler.x=this.cSize.width/t.width,!isFinite(this.scaler.x)&&(this.scaler.x=1)}calcHeight(t){return this.scaler.y=this.cSize.height/t.height,!isFinite(this.scaler.y)&&(this.scaler.y=1)}run(t){var e,s;if(t){for(e in this.history[0],t)s=t[e],a.callbacksMap[e]||a.tweenOptionMap[e]?(a.warn(`the property "${e}" property can not be overridden on run yet`),delete t[e]):this.history[0][e]=s;this.tuneOptions(t)}return this.startTween()}createTween(){return this.tween=new n({duration:this.props.duration,delay:this.props.delay,yoyo:this.props.yoyo,repeat:this.props.repeat,easing:this.props.easing,onStart:()=>{var t;return null!=(t=this.props.onStart)?t.apply(this):void 0},onComplete:()=>{var t;return this.props.motionBlur&&this.setBlur({blur:{x:0,y:0},offset:{x:0,y:0}}),null!=(t=this.props.onComplete)?t.apply(this):void 0},onUpdate:t=>this.setProgress(t),onFirstUpdate:(t,e)=>{if(!t)return this.history.length>1&&this.tuneOptions(this.history[0])}}),this.timeline=new i,this.timeline.add(this.tween),!this.props.isRunLess&&this.startTween(),this.props.isPresetPosition&&this.setProgress(0,!0)}startTween(){return setTimeout(()=>{var t;return null!=(t=this.timeline)?t.play():void 0},1)}setProgress(t,e){var s,r,i,n;return s=this.startLen+(this.props.isReverse?(1-t)*this.slicedLen:t*this.slicedLen),i=(r=this.path.getPointAtLength(s)).x+this.props.offsetX,n=r.y+this.props.offsetY,this._getCurrentRotation(r,s,t),this._setTransformOrigin(t),this._setTransform(i,n,t,e),this.props.motionBlur&&this.makeMotionBlur(i,n)}setElPosition(t,e,s){var r;return r=`translate(${t}px,${e}px) ${0!==this.rotate?`rotate(${this.rotate}deg)`:""} ${this.props.isCompositeLayer&&a.is3d?"translateZ(0)":""}`,a.setPrefixedStyle(this.el,"transform",r)}setModulePosition(t,e){return this.el._setProp({shiftX:t+"px",shiftY:e+"px",rotate:this.rotate}),this.el._draw()}_getCurrentRotation(t,e,s){var r,i,n,o,l;return i="function"==typeof this.props.transformOrigin,this.props.isRotation||null!=this.props.rotationOffset||i?(n=this.path.getPointAtLength(e-1),o=t.y-n.y,l=t.x-n.x,r=Math.atan(o/l),!isFinite(r)&&(r=0),this.rotate=r*a.RAD_TO_DEG,"function"!=typeof this.props.rotationOffset?this.rotate+=this.props.rotationOffset||0:this.rotate=this.props.rotationOffset.call(this,this.rotate,s)):this.rotate=0}_setTransform(t,e,s,r){var i;return this.scaler&&(t*=this.scaler.x,e*=this.scaler.y),i=null,r||(i="function"==typeof this.onUpdate?this.onUpdate(s,{x:t,y:e,rotate:this.rotate}):void 0),this.isModule?this.setModulePosition(t,e):"string"!=typeof i?this.setElPosition(t,e,s):a.setPrefixedStyle(this.el,"transform",i)}_setTransformOrigin(t){var e;if(this.props.transformOrigin)return e="function"==typeof this.props.transformOrigin?this.props.transformOrigin(this.rotate,t):this.props.transformOrigin,a.setPrefixedStyle(this.el,"transform-origin",e)}makeMotionBlur(t,e){var s,r,i,n,o,l,h;return h=0,o=1,l=1,null==this.prevCoords.x||null==this.prevCoords.y?(this.speedX=0,this.speedY=0):(i=t-this.prevCoords.x,n=e-this.prevCoords.y,i>0&&(o=-1),o<0&&(l=-1),this.speedX=Math.abs(i),this.speedY=Math.abs(n),h=Math.atan(n/i)*(180/Math.PI)+90),s=h-this.rotate,r=this.rotToCoords(s),this.blurX=a.clamp(this.speedX/16*this.props.motionBlur,0,1),this.blurY=a.clamp(this.speedY/16*this.props.motionBlur,0,1),this.setBlur({blur:{x:3*this.blurX*this.blurAmount*Math.abs(r.x),y:3*this.blurY*this.blurAmount*Math.abs(r.y)},offset:{x:3*o*this.blurX*r.x*this.blurAmount,y:3*l*this.blurY*r.y*this.blurAmount}}),this.prevCoords.x=t,this.prevCoords.y=e}setBlur(t){if(!this.isMotionBlurReset)return this.filter.setAttribute("stdDeviation",`${t.blur.x},${t.blur.y}`),this.filterOffset.setAttribute("dx",t.offset.x),this.filterOffset.setAttribute("dy",t.offset.y)}extendDefaults(t){var e,s,r;for(e in s=[],t)r=t[e],s.push(this[e]=r);return s}extendOptions(t){var e,s,r;for(e in s=[],t)r=t[e],s.push(this.props[e]=r);return s}then(t){var e,s,r,i,o;for(s in r={},i=this.history[this.history.length-1])o=i[s],!a.callbacksMap[s]&&!a.tweenOptionMap[s]||"duration"===s?null==t[s]&&(t[s]=o):null==t[s]&&(t[s]=void 0),a.tweenOptionMap[s]&&(r[s]="duration"!==s||null!=t[s]?t[s]:i[s]);return this.history.push(t),e=this,r.onUpdate=t=>this.setProgress(t),r.onStart=()=>{var t;return null!=(t=this.props.onStart)?t.apply(this):void 0},r.onComplete=()=>{var t;return null!=(t=this.props.onComplete)?t.apply(this):void 0},r.onFirstUpdate=function(){return e.tuneOptions(e.history[this.index])},r.isChained=!t.delay,this.timeline.append(new n(r)),this}tuneOptions(t){return this.extendOptions(t),this.postVars()}rotToCoords(t){var e,s,r;return e=((t%=360)-90)*Math.PI/180,s=Math.cos(e),r=Math.sin(e),{x:1.428571429*(s=s<0?Math.max(s,-.7):Math.min(s,.7)),y:1.428571429*(r=r<0?Math.max(r,-.7):Math.min(r,.7))}}}return t.prototype.defaults={path:null,curvature:{x:"75%",y:"50%"},isCompositeLayer:!0,delay:0,duration:1e3,easing:null,repeat:0,yoyo:!1,onStart:null,onComplete:null,onUpdate:null,offsetX:0,offsetY:0,rotationOffset:null,pathStart:0,pathEnd:1,motionBlur:0,transformOrigin:null,isRotation:!1,isReverse:!1,isRunLess:!1,isPresetPosition:!0},t}.call(this),t.exports=r},785:(t,e,s)=>{var r,i;r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.shape="ellipse"}_draw(){var t,e;return t=null!=this._props.radiusX?this._props.radiusX:this._props.radius,e=null!=this._props.radiusY?this._props.radiusY:this._props.radius,this._setAttrIfChanged("rx",t),this._setAttrIfChanged("ry",e),this._setAttrIfChanged("cx",this._props.width/2),this._setAttrIfChanged("cy",this._props.height/2),super._draw()}_getLength(){var t,e;return t=null!=this._props.radiusX?this._props.radiusX:this._props.radius,e=null!=this._props.radiusY?this._props.radiusY:this._props.radius,2*Math.PI*Math.sqrt((t*t+e*e)/2)}},t.exports=i},158:(t,e,s)=>{var r,i;r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.tag="path"}_draw(){var t,e,s,r,i,n,a;if(super._draw(),this._props,r=null!=this._props.radiusX?this._props.radiusX:this._props.radius,i=null!=this._props.radiusY?this._props.radiusY:this._props.radius,e=r===this._prevRadiusX,s=i===this._prevRadiusY,!e||!s)return t=`M${(n=this._props.width/2)-r},${a=this._props.height/2} L${n+r},${a} M${n},${a-i} L${n},${a+i}`,this.el.setAttribute("d",t),this._prevRadiusX=r,this._prevRadiusY=i}_getLength(){return 2*((null!=this._props.radiusX?this._props.radiusX:this._props.radius)+(null!=this._props.radiusY?this._props.radiusY:this._props.radius))}},t.exports=i},153:(t,e,s)=>{var r,i;r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.tag="path",this._defaults.points=2}_draw(){var t,e,s,r,i,n,a,o,l,h,u,p,c,d,_,f;if(super._draw(),a=this._props,this._props.points&&(o=null!=this._props.radiusX?this._props.radiusX:this._props.radius,l=null!=this._props.radiusY?this._props.radiusY:this._props.radius,r=o===this._prevRadiusX,i=l===this._prevRadiusY,s=a.points===this._prevPoints,!(r&&i&&s))){for(u=this._props.width/2,d=this._props.height/2,p=u-o,c=u+o,t="",f=2*l/(this._props.points-1),_=d-l,e=n=0,h=this._props.points;0<=h?nh;e=0<=h?++n:--n)t+=`M${p}, ${d=""+(e*f+_)} L${c}, ${d} `;return this.el.setAttribute("d",t),this._prevPoints=a.points,this._prevRadiusX=o,this._prevRadiusY=l}}_getLength(){return 2*(null!=this._props.radiusX?this._props.radiusX:this._props.radius)}},t.exports=i},786:(t,e,s)=>{var r,i;r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.tag="line"}_draw(){var t,e,s;return t=null!=this._props.radiusX?this._props.radiusX:this._props.radius,e=this._props.width/2,s=this._props.height/2,this._setAttrIfChanged("x1",e-t),this._setAttrIfChanged("x2",e+t),this._setAttrIfChanged("y1",s),this._setAttrIfChanged("y2",s),super._draw()}},t.exports=i},878:(t,e,s)=>{var r,i,n;n=s(52),r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.tag="path",this._defaults.points=3}_draw(){var t,e,s,r,i,a,o,l,h,u,p,c,d,_,f;if(h=this._props,p=null!=this._props.radiusX?this._props.radiusX:this._props.radius,c=null!=this._props.radiusY?this._props.radiusY:this._props.radius,r=p===this._prevRadiusX,i=c===this._prevRadiusY,s=h.points===this._prevPoints,!(r&&i&&s)){for(f=360/this._props.points,null==this._radialPoints?this._radialPoints=[]:this._radialPoints.length=0,e=a=0,d=this._props.points;0<=d?ad;e=0<=d?++a:--a)this._radialPoints.push(n.getRadialPoint({radius:this._props.radius,radiusX:this._props.radiusX,radiusY:this._props.radiusY,rotate:e*f,center:{x:h.width/2,y:h.height/2}}));for(t="",e=o=0,l=(_=this._radialPoints).length;o{var r,i;r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.tag="rect",this._defaults.rx=0,this._defaults.ry=0}_draw(){var t,e,s;return super._draw(),e=null!=(t=this._props).radiusX?t.radiusX:t.radius,s=null!=t.radiusY?t.radiusY:t.radius,this._setAttrIfChanged("width",2*e),this._setAttrIfChanged("height",2*s),this._setAttrIfChanged("x",t.width/2-e),this._setAttrIfChanged("y",t.height/2-s),this._setAttrIfChanged("rx",t.rx),this._setAttrIfChanged("ry",t.ry)}_getLength(){return 2*(2*(null!=this._props.radiusX?this._props.radiusX:this._props.radius)+2*(null!=this._props.radiusY?this._props.radiusY:this._props.radius))}},t.exports=i},806:function(t,e,s){var r,i,n,a,o,l,h,u,p,c,d,_;_=s(52),r=s(623).Z,l=s(854).Z,n=s(785),u=s(786),d=s(322),c=s(979),p=s(878),a=s(158),o=s(472).Z,h=s(153),i=function(){class t{constructor(){this.addShape=_.bind(this.addShape,this)}getShape(t){return this[t]||_.error(`no "${t}" shape available yet, please choose from this list:`,["circle","line","zigzag","rect","polygon","cross","equal","curve"])}addShape(t,e){return this[t]=e}}return t.prototype.bit=r,t.prototype.custom=l,t.prototype.circle=n,t.prototype.line=u,t.prototype.zigzag=d,t.prototype.rect=c,t.prototype.polygon=p,t.prototype.cross=a,t.prototype.equal=h,t.prototype.curve=o,t}.call(this),t.exports=new i},322:(t,e,s)=>{var r,i;r=s(623).Z,i=class extends r{_declareDefaults(){return super._declareDefaults(),this._defaults.tag="path",this._defaults.points=3}_draw(){var t,e,s,r,i,n,a,o,l,h,u,p,c,d,_,f;if(super._draw(),l=this._props,this._props.points&&(u=null!=this._props.radiusX?this._props.radiusX:this._props.radius,p=null!=this._props.radiusY?this._props.radiusY:this._props.radius,i=u===this._prevRadiusX,n=p===this._prevRadiusY,r=l.points===this._prevPoints,!(i&&n&&r))){for(t=l.width/2-u,e=_=l.height/2,d=2*u/(l.points-1),f=-1,o=-(s=Math.sqrt(d*d+p*p)),h=`M${t}, ${_} `,a=0,c=l.points;0<=c?ac;0<=c?++a:--a)h+=`L${t}, ${e} `,t+=d,o+=s,e=-1===f?_-p:_,f=-f;return this._length=o,this.el.setAttribute("d",h),this._prevPoints=l.points,this._prevRadiusX=u,this._prevRadiusY=p}}_getLength(){return this._length}},t.exports=i},247:(t,e)=>{var s,r;r=class{constructor(t={}){this.o=t,window.isAnyResizeEventInited||(this.vars(),this.redefineProto())}vars(){return window.isAnyResizeEventInited=!0,this.allowedProtos=[HTMLDivElement,HTMLFormElement,HTMLLinkElement,HTMLBodyElement,HTMLParagraphElement,HTMLFieldSetElement,HTMLLegendElement,HTMLLabelElement,HTMLButtonElement,HTMLUListElement,HTMLOListElement,HTMLLIElement,HTMLHeadingElement,HTMLQuoteElement,HTMLPreElement,HTMLBRElement,HTMLFontElement,HTMLHRElement,HTMLModElement,HTMLParamElement,HTMLMapElement,HTMLTableElement,HTMLTableCaptionElement,HTMLImageElement,HTMLTableCellElement,HTMLSelectElement,HTMLInputElement,HTMLTextAreaElement,HTMLAnchorElement,HTMLObjectElement,HTMLTableColElement,HTMLTableSectionElement,HTMLTableRowElement],this.timerElements={img:1,textarea:1,input:1,embed:1,object:1,svg:1,canvas:1,tr:1,tbody:1,thead:1,tfoot:1,a:1,select:1,option:1,optgroup:1,dl:1,dt:1,br:1,basefont:1,font:1,col:1,iframe:1}}redefineProto(){var t,e,s;return e=this,function(){var r,i,n,a;for(n=this.allowedProtos,a=[],t=r=0,i=n.length;rthis.dispatchEvent(s)),s.iframe=r),s.isAnyResizeEventInited=!0}initTimer(t){var e,s;return s=0,e=0,this.interval=setInterval(()=>{var r,i;if(i=t.offsetWidth,r=t.offsetHeight,i!==s||r!==e)return this.dispatchEvent(t),s=i,e=r},this.o.interval||62.5)}dispatchEvent(t){var e;return document.createEvent?((e=document.createEvent("HTMLEvents")).initEvent("onresize",!1,!1),t.dispatchEvent(e)):!!document.createEventObject&&(e=document.createEventObject(),t.fireEvent("onresize",e))}destroy(){var t,e,s,r,i,n;for(clearInterval(this.interval),this.interval=null,window.isAnyResizeEventInited=!1,n=[],t=e=0,s=(i=this.allowedProtos).length;e{"use strict";function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}s.d(e,{Z:()=>r})},671:(t,e,s)=>{"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}s.d(e,{Z:()=>r})},144:(t,e,s)=>{"use strict";s.d(e,{Z:()=>n});var r=s(142);function i(t,e){for(var s=0;s{"use strict";s.d(e,{Z:()=>i});var r=s(120);function i(){return(i="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,s){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=(0,r.Z)(t)););return t}(t,e);if(i){var n=Object.getOwnPropertyDescriptor(i,e);return n.get?n.get.call(arguments.length<3?t:s):n.value}}).apply(this,arguments)}},120:(t,e,s)=>{"use strict";function r(t){return(r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}s.d(e,{Z:()=>r})},340:(t,e,s)=>{"use strict";function r(t,e){return(r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&r(t,e)}s.d(e,{Z:()=>i})},963:(t,e,s)=>{"use strict";s.d(e,{Z:()=>n});var r=s(2),i=s(326);function n(t,e){if(e&&("object"===(0,r.Z)(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return(0,i.Z)(t)}},142:(t,e,s)=>{"use strict";s.d(e,{Z:()=>i});var r=s(2);function i(t){var e=function(t,e){if("object"!==(0,r.Z)(t)||null===t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var i=s.call(t,e);if("object"!==(0,r.Z)(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===(0,r.Z)(e)?e:String(e)}},2:(t,e,s)=>{"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}s.d(e,{Z:()=>r})}},e={};function s(r){var i=e[r];if(void 0!==i)return i.exports;var n=e[r]={exports:{}};return t[r].call(n.exports,n,n.exports,s),n.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r={};return(()=>{"use strict";s.d(r,{default:()=>G});var t=s(52),e=s.n(t),i=s(806),n=s.n(i),a=s(671),o=s(144),l=s(340),h=s(963),u=s(120),p=s(342),c=s(142);function d(t,e,s){return(e=(0,c.Z)(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}var _=s(752),f=s(755),v=s(973);const y=function(t){(0,l.Z)(s,t);var e=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,u.Z)(t);if(e){var i=(0,u.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,h.Z)(this,s)}}(s);function s(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.Z)(this,s),(t=e.call(this,r))._transformTweenOptions(),!t._o.isTweenLess&&t._makeTween(),!t._o.isTimelineLess&&t._makeTimeline(),t}return(0,o.Z)(s,[{key:"play",value:function(){return this.timeline.play.apply(this.timeline,arguments),this}},{key:"playBackward",value:function(){return this.timeline.playBackward.apply(this.timeline,arguments),this}},{key:"pause",value:function(){return this.timeline.pause.apply(this.timeline,arguments),this}},{key:"stop",value:function(){return this.timeline.stop.apply(this.timeline,arguments),this}},{key:"reset",value:function(){return this.timeline.reset.apply(this.timeline,arguments),this}},{key:"replay",value:function(){return this.timeline.replay.apply(this.timeline,arguments),this}},{key:"replayBackward",value:function(){return this.timeline.replayBackward.apply(this.timeline,arguments),this}},{key:"resume",value:function(){return this.timeline.resume.apply(this.timeline,arguments),this}},{key:"setProgress",value:function(){return this.timeline.setProgress.apply(this.timeline,arguments),this}},{key:"setSpeed",value:function(){return this.timeline.setSpeed.apply(this.timeline,arguments),this}},{key:"_transformTweenOptions",value:function(){}},{key:"_makeTween",value:function(){this._o.callbacksContext=this._o.callbacksContext||this,this.tween=new f.Z(this._o),this._o.isTimelineLess&&(this.timeline=this.tween)}},{key:"_makeTimeline",value:function(){this._o.timeline=this._o.timeline||{},this._o.timeline.callbacksContext=this._o.callbacksContext||this,this.timeline=new p.Z(this._o.timeline),this._isTimeline=!0,this.tween&&this.timeline.add(this.tween)}}]),s}(v.Z);const m=function(t){(0,l.Z)(r,t);var s=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,u.Z)(t);if(e){var i=(0,u.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,h.Z)(this,s)}}(r);function r(){return(0,a.Z)(this,r),s.apply(this,arguments)}return(0,o.Z)(r,[{key:"then",value:function(t){if(null==t||!Object.keys(t).length)return 1;var e=this._history[this._history.length-1],s=this._mergeThenOptions(e,t);this._resetMergedFlags(s);var r=new this.constructor(s);return r._masterModule=this,this._modules.push(r),this.timeline.append(r),this}},{key:"_resetMergedFlags",value:function(t){return t.isTimelineLess=!0,t.isShowStart=!1,t.isRefreshState=!1,t.callbacksContext=this._props.callbacksContext||this,t.prevChainModule=e().getLastItem(this._modules),t.masterModule=this,t}},{key:"_vars",value:function(){(0,_.Z)((0,u.Z)(r.prototype),"_vars",this).call(this),this._masterModule=this._o.masterModule,this._isChained=!!this._masterModule;var t=e().cloneObj(this._props);for(var s in this._arrayPropertyMap)if(this._o[s]){var i=this._parsePreArrayProperty(s,this._o[s]);t[s]=i}this._history=[t],this._modules=[this],this._nonMergeProps={shape:1}}},{key:"_mergeThenOptions",value:function(t,e){var s={};return this._mergeStartLoop(s,t),this._mergeEndLoop(s,t,e),this._history.push(s),s}},{key:"_checkStartValue",value:function(t,e){return e}},{key:"_mergeStartLoop",value:function(t,s){for(var r in s){var i=s[r];null!=s[r]&&(e().isTweenProp(r)&&"duration"!==r||(this._isDelta(i)?t[r]=e().getDeltaEnd(i):t[r]=i))}}},{key:"_mergeEndLoop",value:function(t,e,s){for(var r in s)if("parent"!=r){var i=s[r],n=null!=e[r]?e[r]:this._defaults[r];if(n=this._checkStartValue(r,n),null!=i){var a="radiusX"===r||"radiusY"===r;a&&null==n&&(n=e.radius),(a="scaleX"===r||"scaleY"===r)&&null==n&&(n=e.scale),t[r]=this._mergeThenProperty(r,n,i)}}else t[r]=s[r]}},{key:"_mergeThenProperty",value:function(t,s,r){var i,n,a="boolean"==typeof r;if(e().isTweenProp(t)||this._nonMergeProps[t]||a)return r;if(e().isObject(r)&&null!=r.to&&(i=r.curve,n=r.easing,r=r.to),this._isDelta(r))return this._parseDeltaValues(t,r);var o,l,h=this._parsePreArrayProperty(t,r);return this._isDelta(s)?(d(o={},e().getDeltaEnd(s),h),d(o,"easing",n),d(o,"curve",i),o):(d(l={},s,h),d(l,"easing",n),d(l,"curve",i),l)}},{key:"_getArrayLength",value:function(t){return e().isArray(t)?t.length:-1}},{key:"_isDelta",value:function(t){var s=e().isObject(t);return!(!(s=s&&!t.unit)||e().isArray(t)||e().isDOM(t))}},{key:"_isFirstInChain",value:function(){return!this._masterModule}},{key:"_isLastInChain",value:function(){var t=this._masterModule;return t?this===e().getLastItem(t._modules):1===this._modules.length}}]),r}(y);const g=function(t){(0,l.Z)(r,t);var s=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,u.Z)(t);if(e){var i=(0,u.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,h.Z)(this,s)}}(r);function r(){return(0,a.Z)(this,r),s.apply(this,arguments)}return(0,o.Z)(r,[{key:"tune",value:function(t){if(t&&Object.keys(t).length){for(var s in this._transformHistory(t),this._tuneNewOptions(t),this._history[0]=e().cloneObj(this._props),this._arrayPropertyMap)null!=t[s]&&(this._history[0][s]=this._preparsePropValue(s,t[s]));this._tuneSubModules(),this._resetTweens()}return this}},{key:"generate",value:function(){return this.tune(this._o)}},{key:"_transformHistory",value:function(t){for(var e in t){var s=t[e];this._transformHistoryFor(e,this._preparsePropValue(e,s))}}},{key:"_transformHistoryFor",value:function(t,e){for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:0;e.shiftTime=s,t._setProp(e)}}]),r}(m);var k=function(t){(0,l.Z)(r,t);var s=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,u.Z)(t);if(e){var i=(0,u.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,h.Z)(this,s)}}(r);function r(t,e){var i;return(0,a.Z)(this,r),i=s.call(this),(0,h.Z)(i,i._init(t,e))}return(0,o.Z)(r,[{key:"then",value:function(t){if(null==t)return this;for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:{};this.timeline=new p.Z(t.timeline)}},{key:"_makeTween",value:function(){}},{key:"_makeTimeline",value:function(){}}]),r}(g),w=s(47),b=s(283),S=s.n(b);const P=function(t){(0,l.Z)(r,t);var s=function(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,u.Z)(t);if(e){var i=(0,u.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,h.Z)(this,s)}}(r);function r(){return(0,a.Z)(this,r),s.apply(this,arguments)}return(0,o.Z)(r,[{key:"_declareDefaults",value:function(){this._defaults={parent:document.body,className:"",shape:"circle",stroke:"transparent",strokeOpacity:1,strokeLinecap:"",strokeWidth:2,strokeDasharray:0,strokeDashoffset:0,fill:"deeppink",fillOpacity:1,isSoftHide:!0,isForce3d:!1,left:"50%",top:"50%",x:0,y:0,rotate:0,scale:1,scaleX:null,scaleY:null,origin:"50% 50%",opacity:1,rx:0,ry:0,points:3,radius:50,radiusX:null,radiusY:null,isShowStart:!1,isShowEnd:!0,isRefreshState:!0,duration:400,width:null,height:null,isWithShape:!0,callbacksContext:this}}},{key:"tune",value:function(t){return(0,_.Z)((0,u.Z)(r.prototype),"tune",this).call(this,t),this._getMaxSizeInChain(),this}},{key:"then",value:function(t){return(0,_.Z)((0,u.Z)(r.prototype),"then",this).call(this,t),this._getMaxSizeInChain(),this}},{key:"_vars",value:function(){return(0,_.Z)((0,u.Z)(r.prototype),"_vars",this).call(this),this._lastSet={},this._prevChainModule=this._o.prevChainModule,this.isForeign=!!this._o.ctx,this.isForeignBit=!!this._o.shape}},{key:"_render",value:function(){return this._isRendered||this._isChained?this._isChained&&(this.el=this._masterModule.el,this.shapeModule=this._masterModule.shapeModule):(this.el=document.createElement("div"),this.el.setAttribute("data-name","mojs-shape"),this.el.setAttribute("class",this._props.className),this._createShape(),this._props.parent.appendChild(this.el),this._setElStyles(),this._setProgress(0,0),this._props.isShowStart?this._show():this._hide(),this._isRendered=!0),this}},{key:"_setElStyles",value:function(){if(this.el){var t=this._props,s=this.el.style,r=t.shapeWidth,i=t.shapeHeight;if(s.position="absolute",this._setElSizeStyles(r,i),t.isForce3d){var n="backface-visibility";s["".concat(n)]="hidden",s["".concat(e().prefix.css).concat(n)]="hidden"}}}},{key:"_setElSizeStyles",value:function(t,e){var s=this.el.style;s.width="".concat(t,"px"),s.height="".concat(e,"px"),s["margin-left"]="".concat(-t/2,"px"),s["margin-top"]="".concat(-e/2,"px")}},{key:"_draw",value:function(){if(this.shapeModule){var t=this._props,e=this.shapeModule._props;e.rx=t.rx,e.ry=t.ry,e.stroke=t.stroke,e["stroke-width"]=t.strokeWidth,e["stroke-opacity"]=t.strokeOpacity,e["stroke-dasharray"]=t.strokeDasharray,e["stroke-dashoffset"]=t.strokeDashoffset,e["stroke-linecap"]=t.strokeLinecap,e.fill=t.fill,e["fill-opacity"]=t.fillOpacity,e.radius=t.radius,e.radiusX=t.radiusX,e.radiusY=t.radiusY,e.points=t.points,this.shapeModule._draw(),this._drawEl()}}},{key:"_drawEl",value:function(){if(null==this.el)return!0;var t=this._props,s=this.el.style;if(this._isPropChanged("opacity")&&(s.opacity=t.opacity),!this.isForeign){this._isPropChanged("left")&&(s.left=t.left),this._isPropChanged("top")&&(s.top=t.top);var r=this._isPropChanged("x"),i=this._isPropChanged("y"),n=r||i,a=this._isPropChanged("scaleX"),o=this._isPropChanged("scaleY"),l=this._isPropChanged("scale"),h=this._isPropChanged("rotate");if(l=l||a||o,n||l||h){var u=this._fillTransform();s["".concat(e().prefix.css,"transform")]=u,s.transform=u}if(this._isPropChanged("origin")||this._deltas.origin){var p=this._fillOrigin();s["".concat(e().prefix.css,"transform-origin")]=p,s["transform-origin"]=p}}}},{key:"_isPropChanged",value:function(t){return null==this._lastSet[t]&&(this._lastSet[t]={}),this._lastSet[t].value!==this._props[t]&&(this._lastSet[t].value=this._props[t],!0)}},{key:"_tuneNewOptions",value:function(t){if((0,_.Z)((0,u.Z)(r.prototype),"_tuneNewOptions",this).call(this,t),null==t||!Object.keys(t).length)return 1;this._setElStyles()}},{key:"_getMaxRadius",value:function(t){var e;return e=this._getRadiusSize("radius"),this._getRadiusSize(t,e)}},{key:"_increaseSizeWithEasing",value:function(){var t=this._props,e=this._o.easing;switch(e&&"string"==typeof e&&e.toLowerCase()){case"elastic.out":case"elastic.inout":t.size*=1.25;break;case"back.out":case"back.inout":t.size*=1.1}}},{key:"_getRadiusSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=this._deltas[t];return null!=s?Math.max(Math.abs(s.end),Math.abs(s.start)):null!=this._props[t]?parseFloat(this._props[t]):e}},{key:"_getShapeSize",value:function(){var t=this._props,e=this._getMaxStroke();t.shapeWidth=null!=t.width?t.width:2*this._getMaxRadius("radiusX")+e,t.shapeHeight=null!=t.height?t.height:2*this._getMaxRadius("radiusY")+e}},{key:"_createShape",value:function(){if(this._getShapeSize(),this._props.isWithShape){var t=this._props,e=n().getShape(this._props.shape);this.shapeModule=new e({width:t.shapeWidth,height:t.shapeHeight,parent:this.el})}}},{key:"_getMaxSizeInChain",value:function(){for(var t=0,e=0,s=0;s0&&n0&&a-1e-6&&(n=-1e-6),a<0&&a>-1e-6&&(a=-1e-6),s.x=this._o.ctx?n:"".concat(n).concat(this._posData.x.units),s.y=this._o.ctx?a:"".concat(a).concat(this._posData.y.units)}},{key:"_getSwirl",value:function(t){var e=this._props;return e.direction*e.swirlSize*Math.sin(e.swirlFrequency*t)}},{key:"_draw",value:function(){var t=this._props.isWithShape?"_draw":"_drawEl";P.prototype[t].call(this)}}]),r}(P);function x(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var s,r=(0,u.Z)(t);if(e){var i=(0,u.Z)(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return(0,h.Z)(this,s)}}var C=function(t){(0,l.Z)(r,t);var s=x(r);function r(){return(0,a.Z)(this,r),s.apply(this,arguments)}return(0,o.Z)(r,[{key:"_declareDefaults",value:function(){this._defaults={count:5,degree:360,radius:{0:50},radiusX:null,radiusY:null,width:0,height:0}}},{key:"then",value:function(t){this._removeTweenProperties(t);var e=this._masterThen(t),s=this._childThen(t);return this._setSwirlDuration(e,this._calcPackTime(s)),this.timeline._recalcTotalDuration(),this}},{key:"tune",value:function(t){return null==t||(this._saveTimelineOptions(t),this.timeline._setProp(this._timelineOptions),this._removeTweenProperties(t),this._tuneNewOptions(t),this.masterSwirl.tune(t),this._tuneSwirls(t),this._recalcModulesTime()),this}},{key:"_extendDefaults",value:function(){this._removeTweenProperties(this._o),(0,_.Z)((0,u.Z)(r.prototype),"_extendDefaults",this).call(this)}},{key:"_removeTweenProperties",value:function(t){for(var s in e().tweenOptionMap)null==this._defaults[s]&&delete t[s]}},{key:"_recalcModulesTime",value:function(){for(var t=this.masterSwirl._modules,e=this._swirls,s=0,r=0;r2&&void 0!==arguments[2]?arguments[2]:{})[t];return e().isArray(r)?r[s%r.length]:r}},{key:"_addOptionalProps",value:function(t,e){return t.index=e,t.parent=this.masterSwirl.el,this._addBurstProperties(t,e),t}},{key:"_addBurstProperties",value:function(t,e,s){var r=this._index;this._index=e;var i=this._parseProperty("degreeShift",t.degreeShift||0);this._index=r;var n=this._props,a=n.degree%360==0?n.count:n.count-1||1,o=n.degree/a,l=this._getSidePoint("start",e*o+i,s),h=this._getSidePoint("end",e*o+i,s);t.x=this._getDeltaFromPoints("x",l,h),t.y=this._getDeltaFromPoints("y",l,h),t.rotate=this._getBitRotation(t.rotate||0,i,e)}},{key:"_getBitRotation",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2?arguments[2]:void 0,i=this._props,n=i.degree%360==0?i.count:i.count-1||1,a=r*(i.degree/n)+90;if(a+=s,this._isDelta(t)){var o={},l=Object.keys(t)[0],h=t[l];l=e().parseStringOption(l,r),h=e().parseStringOption(h,r),o[parseFloat(l)+a]=parseFloat(h)+a,t=o}else t+=a;return t}},{key:"_getSidePoint",value:function(t,s,r){var i=this._getSideRadius(t,r);return e().getRadialPoint({radius:i.radius,radiusX:i.radiusX,radiusY:i.radiusY,rotate:s,center:{x:0,y:0}})}},{key:"_getSideRadius",value:function(t,e){return{radius:this._getRadiusByKey("radius",t,e),radiusX:this._getRadiusByKey("radiusX",t,e),radiusY:this._getRadiusByKey("radiusY",t,e)}}},{key:"_getRadiusByKey",value:function(t,e){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this._masterSwirls[s],i=r._deltas,n=r._props;return null!=i[t]?i[t][e]:null!=n[t]?n[t]:void 0}},{key:"_getDeltaFromPoints",value:function(t,e,s){var r={};return e[t]===s[t]?r=e[t]:r[e[t]]=s[t],r}},{key:"_makeTimeline",value:function(){this._o.timeline=this._timelineOptions,(0,_.Z)((0,u.Z)(r.prototype),"_makeTimeline",this).call(this),this.timeline.add(this.masterSwirl,this._swirls[0])}},{key:"_makeTween",value:function(){}},{key:"_hide",value:function(){}},{key:"_show",value:function(){}}]),r}(g),O=function(t){(0,l.Z)(s,t);var e=x(s);function s(){return(0,a.Z)(this,s),e.apply(this,arguments)}return(0,o.Z)(s,[{key:"_declareDefaults",value:function(){(0,_.Z)((0,u.Z)(s.prototype),"_declareDefaults",this).call(this),this._defaults.isSwirl=!1,this._o.duration=null!=this._o.duration?this._o.duration:700}},{key:"_calcSwirlXY",value:function(t){var e=this._props.degreeShift;this._props.degreeShift=0,(0,_.Z)((0,u.Z)(s.prototype),"_calcSwirlXY",this).call(this,t),this._props.degreeShift=e}}]),s}(T),M=function(t){(0,l.Z)(s,t);var e=x(s);function s(){return(0,a.Z)(this,s),e.apply(this,arguments)}return(0,o.Z)(s,[{key:"_declareDefaults",value:function(){(0,_.Z)((0,u.Z)(s.prototype),"_declareDefaults",this).call(this),this._defaults.scale=1,this._defaults.width=0,this._defaults.height=0,this._defaults.radius={25:75}}}]),s}(O);C.ChildSwirl=O,C.MainSwirl=M;const Z=C;const D=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.Z)(this,t),this._o=e,this._createTween(e.tweenOptions),!this._o.isChained&&this.refresh(!0)}return(0,o.Z)(t,[{key:"refresh",value:function(t){this._previousValues=[];for(var e=this._o.deltas,s=0;s0&&void 0!==arguments[0]?arguments[0]:{},e=this;t.callbackOverrides={onUpdate:function(t,s){e._calcCurrentProps(t,s)}},this._o.isChained||(t.callbackOverrides.onRefresh=function(t,s,r){e._calcCurrentProps(s,r)}),t.callbacksContext=this._o.callbacksContext,this.tween=new f.Z(t)}},{key:"_calcCurrentProps",value:function(t,e){for(var s=this._o.deltas,r=0;r0&&void 0!==arguments[0]?arguments[0]:{};(0,a.Z)(this,t),this._o=e,this._shortColors={transparent:"rgba(0,0,0,0)",none:"rgba(0,0,0,0)",aqua:"rgb(0,255,255)",black:"rgb(0,0,0)",blue:"rgb(0,0,255)",fuchsia:"rgb(255,0,255)",gray:"rgb(128,128,128)",green:"rgb(0,128,0)",lime:"rgb(0,255,0)",maroon:"rgb(128,0,0)",navy:"rgb(0,0,128)",olive:"rgb(128,128,0)",purple:"rgb(128,0,128)",red:"rgb(255,0,0)",silver:"rgb(192,192,192)",teal:"rgb(0,128,128)",white:"rgb(255,255,255)",yellow:"rgb(255,255,0)",orange:"rgb(255,128,0)"},this._ignoreDeltasMap={prevChainModule:1,masterModule:1},this._parseDeltas(e.options),this._createDeltas(),this._createTimeline(this._mainTweenOptions)}return(0,o.Z)(t,[{key:"refresh",value:function(t){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:{};this._customProps=t.customProperties||{},this._customProps=X({},this._customProps),this._customDraw=this._customProps.draw,delete this._customProps.draw,delete t.customProperties,this._copyDefaultCustomProps()}},{key:"_copyDefaultCustomProps",value:function(){for(var t in this._customProps)null==this._o[t]&&(this._o[t]=this._customProps[t])}},{key:"_resetMergedFlags",value:function(t){return(0,_.Z)((0,u.Z)(r.prototype),"_resetMergedFlags",this).call(this,t),t.props=this._props,t.customProperties=this._customProps,t}},{key:"_parseOption",value:function(t,s){(0,_.Z)((0,u.Z)(r.prototype),"_parseOption",this).call(this,t,s);var i=this._props[t];e().isArray(i)&&(this._props[t]=this._arrToString(i))}},{key:"_arrToString",value:function(t){for(var e="",s=0;s0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.Z)(this,t),this.o=s,this.o.el?(this._vars(),this._declareDefaults(),this._extendDefaults(),this._parseFrames(),this._frames.length<=2&&e().warn("Spriter: only ".concat(this._frames.length," frames found")),this._frames.length<1&&e().error("Spriter: there is no frames to animate, aborting"),this._createTween(),this):e().error('No "el" option specified, aborting')}return(0,o.Z)(t,[{key:"_declareDefaults",value:function(){this._defaults={duration:500,delay:0,easing:"linear.none",repeat:0,yoyo:!1,isRunLess:!1,isShowEnd:!1,onStart:null,onUpdate:null,onComplete:null}}},{key:"_vars",value:function(){this._props=e().cloneObj(this.o),this.el=this.o.el,this._frames=[]}},{key:"run",value:function(){return this.timeline.play()}},{key:"_extendDefaults",value:function(){return e().extend(this._props,this._defaults)}},{key:"_parseFrames",value:function(){this._frames=Array.prototype.slice.call(this.el.children,0),this._frames.forEach((function(t){return t.style.opacity=0})),this._frameStep=1/this._frames.length}},{key:"_createTween",value:function(){var t=this;this._tween=new f.Z({duration:this._props.duration,delay:this._props.delay,yoyo:this._props.yoyo,repeat:this._props.repeat,easing:this._props.easing,onStart:function(){return t._props.onStart&&t._props.onStart()},onComplete:function(){return t._props.onComplete&&t._props.onComplete()},onUpdate:function(e){return t._setProgress(e)}}),this.timeline=new p.Z,this.timeline.add(this._tween),this._props.isRunLess||this._startTween()}},{key:"_startTween",value:function(){var t=this;setTimeout((function(){return t.timeline.play()}),1)}},{key:"_setProgress",value:function(t){var e=Math.floor(t/this._frameStep);if(this._prevFrame!=this._frames[e]){this._prevFrame&&(this._prevFrame.style.opacity=0);var s=1===t&&this._props.isShowEnd?e-1:e;this._frames[s]&&(this._frames[s].style.opacity=1),this._prevFrame=this._frames[e]}this._props.onUpdate&&this._props.onUpdate(t)}}]),t}();var q=s(291),V=s.n(q),W={revision:"1.7.1",isDebug:!1,helpers:e(),Shape:P,ShapeSwirl:T,Burst:Z,Html:$,stagger:function(t){return function(e){return new k(e,t)}},Spriter:N,MotionPath:V(),Tween:f.Z,Timeline:p.Z,Tweenable:y,Thenable:m,Tunable:g,Module:v.Z,tweener:w.Z,easing:S(),shapesMap:n(),_pool:{Delta:D,Deltas:Y},h:e(),delta:e().delta,addShape:n().addShape,CustomShape:n().custom,Transit:P,Swirl:T};"undefined"!=typeof window&&(window.mojs=W);const G=W})(),r.default})(),t.exports=r()}}]); \ No newline at end of file diff --git a/assets/js/12.6085c0ff.js b/assets/js/12.6085c0ff.js new file mode 100644 index 00000000..82b7e933 --- /dev/null +++ b/assets/js/12.6085c0ff.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{242:function(t,e,a){},244:function(t,e){t.exports=function(t){return null==t}},247:function(t,e,a){},248:function(t,e,a){},249:function(t,e,a){},250:function(t,e,a){"use strict";a.r(e);var s=a(261),i=a(255),n=a(239);function r(t,e){if("group"===e.type){const a=e.path&&Object(n.e)(t,e.path),s=e.children.some(e=>"group"===e.type?r(t,e):"page"===e.type&&Object(n.e)(t,e.path));return a||s}return!1}var o={name:"SidebarLinks",components:{SidebarGroup:s.default,SidebarLink:i.default},props:["items","depth","sidebarDepth","initialOpenGroupIndex"],data(){return{openGroupIndex:this.initialOpenGroupIndex||0}},watch:{$route(){this.refreshIndex()}},created(){this.refreshIndex()},methods:{refreshIndex(){const t=function(t,e){for(let a=0;a-1&&(this.openGroupIndex=t)},toggleGroup(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive(t){return Object(n.e)(this.$route,t.regularPath)}}},l=a(14),u=Object(l.a)(o,(function(){var t=this,e=t._self._c;return t.items.length?e("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(a,s){return e("li",{key:s},["group"===a.type?e("SidebarGroup",{attrs:{item:a,open:s===t.openGroupIndex,collapsable:a.collapsable||a.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(s)}}}):e("SidebarLink",{attrs:{"sidebar-depth":t.sidebarDepth,item:a}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=u.exports},251:function(t,e,a){"use strict";a(242)},253:function(t,e,a){},254:function(t,e,a){},255:function(t,e,a){"use strict";a.r(e);var s=a(239);function i(t,e,a,s,i){const n={props:{to:e,activeClass:"",exactActiveClass:""},class:{active:s,"sidebar-link":!0}};return i>2&&(n.style={"padding-left":i+"rem"}),t("RouterLink",n,a)}function n(t,e,a,r,o,l=1){return!e||l>o?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const u=Object(s.e)(r,a+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[i(t,a+"#"+e.slug,e.title,u,e.level-1),n(t,e.children,a,r,o,l+1)])}))}var r={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:a,$route:r,$themeConfig:o,$themeLocaleConfig:l},props:{item:u,sidebarDepth:c}}){const p=Object(s.e)(r,u.path),d="auto"===u.type?p||u.children.some(t=>Object(s.e)(r,u.basePath+"#"+t.slug)):p,h="external"===u.type?function(t,e,a){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[a,t("OutboundLink")])}(t,u.path,u.title||u.path):i(t,u.path,u.title||u.path,d),f=[e.frontmatter.sidebarDepth,c,l.sidebarDepth,o.sidebarDepth,1].find(t=>void 0!==t),g=l.displayAllHeaders||o.displayAllHeaders;if("auto"===u.type)return[h,n(t,u.children,u.basePath,r,f)];if((d||g)&&u.headers&&!s.d.test(u.path)){return[h,n(t,Object(s.c)(u.headers),u.path,r,f)]}return h}},o=(a(251),a(14)),l=Object(o.a)(r,void 0,void 0,!1,null,null,null);e.default=l.exports},257:function(t,e,a){"use strict";a(247)},258:function(t,e,a){var s=a(11),i=a(4),n=a(10);t.exports=function(t){return"string"==typeof t||!i(t)&&n(t)&&"[object String]"==s(t)}},259:function(t,e,a){"use strict";a(248)},260:function(t,e,a){"use strict";a(249)},261:function(t,e,a){"use strict";a.r(e);var s=a(239),i={name:"SidebarGroup",components:{DropdownTransition:a(243).default},props:["item","open","collapsable","depth"],beforeCreate(){this.$options.components.SidebarLinks=a(250).default},methods:{isActive:s.e}},n=(a(260),a(14)),r=Object(n.a)(i,(function(){var t=this,e=t._self._c;return e("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?e("RouterLink",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):e("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),e("DropdownTransition",[t.open||!t.collapsable?e("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,"initial-open-group-index":t.item.initialOpenGroupIndex,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null);e.default=r.exports},264:function(t,e,a){"use strict";a.r(e);var s=a(244),i=a.n(s),n=a(239),r={name:"PageEdit",computed:{lastUpdated(){return this.$page.lastUpdated},lastUpdatedText(){return"string"==typeof this.$themeLocaleConfig.lastUpdated?this.$themeLocaleConfig.lastUpdated:"string"==typeof this.$site.themeConfig.lastUpdated?this.$site.themeConfig.lastUpdated:"Last Updated"},editLink(){const t=i()(this.$page.frontmatter.editLink)?this.$site.themeConfig.editLinks:this.$page.frontmatter.editLink,{repo:e,docsDir:a="",docsBranch:s="master",docsRepo:n=e}=this.$site.themeConfig;return t&&n&&this.$page.relativePath?this.createEditLink(e,n,a,s,this.$page.relativePath):null},editLinkText(){return this.$themeLocaleConfig.editLinkText||this.$site.themeConfig.editLinkText||"Edit this page"}},methods:{createEditLink(t,e,a,s,i){if(/bitbucket.org/.test(e)){return e.replace(n.a,"")+"/src"+`/${s}/`+(a?a.replace(n.a,"")+"/":"")+i+`?mode=edit&spa=0&at=${s}&fileviewer=file-view-default`}if(/gitlab.com/.test(e)){return e.replace(n.a,"")+"/-/edit"+`/${s}/`+(a?a.replace(n.a,"")+"/":"")+i}return(n.i.test(e)?e:"https://github.com/"+e).replace(n.a,"")+"/edit"+`/${s}/`+(a?a.replace(n.a,"")+"/":"")+i}}},o=(a(257),a(14)),l=Object(o.a)(r,(function(){var t=this,e=t._self._c;return e("footer",{staticClass:"page-edit"},[t.editLink?e("div",{staticClass:"edit-link"},[e("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))]),t._v(" "),e("OutboundLink")],1):t._e(),t._v(" "),t.lastUpdated?e("div",{staticClass:"last-updated"},[e("span",{staticClass:"prefix"},[t._v(t._s(t.lastUpdatedText)+":")]),t._v(" "),e("span",{staticClass:"time"},[t._v(t._s(t.lastUpdated))])]):t._e()])}),[],!1,null,null,null);e.default=l.exports},265:function(t,e,a){"use strict";a.r(e);a(90);var s=a(239),i=a(258),n=a.n(i),r=a(244),o=a.n(r),l={name:"PageNav",props:["sidebarItems"],computed:{prev(){return c(u.PREV,this)},next(){return c(u.NEXT,this)}}};const u={NEXT:{resolveLink:function(t,e){return p(t,e,1)},getThemeLinkConfig:({nextLinks:t})=>t,getPageLinkConfig:({frontmatter:t})=>t.next},PREV:{resolveLink:function(t,e){return p(t,e,-1)},getThemeLinkConfig:({prevLinks:t})=>t,getPageLinkConfig:({frontmatter:t})=>t.prev}};function c(t,{$themeConfig:e,$page:a,$route:i,$site:r,sidebarItems:l}){const{resolveLink:u,getThemeLinkConfig:c,getPageLinkConfig:p}=t,d=c(e),h=p(a),f=o()(h)?d:h;return!1===f?void 0:n()(f)?Object(s.k)(r.pages,f,i.path):u(a,l)}function p(t,e,a){const s=[];!function t(e,a){for(let s=0,i=e.length;s({isSidebarOpen:!1}),computed:{shouldShowNavbar(){const{themeConfig:t}=this.$site,{frontmatter:e}=this.$page;return!1!==e.navbar&&!1!==t.navbar&&(this.$title||t.logo||t.repo||t.nav||this.$themeLocaleConfig.nav)},shouldShowSidebar(){const{frontmatter:t}=this.$page;return!t.home&&!1!==t.sidebar&&this.sidebarItems.length},sidebarItems(){return Object(o.l)(this.$page,this.$page.regularPath,this.$site,this.$localePath)},pageClasses(){const t=this.$page.frontmatter.pageClass;return[{"no-navbar":!this.shouldShowNavbar,"sidebar-open":this.isSidebarOpen,"no-sidebar":!this.shouldShowSidebar},t]}},mounted(){this.$router.afterEach(()=>{this.isSidebarOpen=!1})},methods:{toggleSidebar(t){this.isSidebarOpen="boolean"==typeof t?t:!this.isSidebarOpen},onTouchStart(t){this.touchStart={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}},onTouchEnd(t){const e=t.changedTouches[0].clientX-this.touchStart.x,a=t.changedTouches[0].clientY-this.touchStart.y;Math.abs(e)>Math.abs(a)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}},u=(a(310),a(14)),c=Object(u.a)(l,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?e("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),e("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),e("Sidebar",{attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar}},[t._t("sidebar-top",null,{slot:"top"}),t._v(" "),t._t("sidebar-bottom",null,{slot:"bottom"})],2),t._v(" "),t.$page.frontmatter.home?e("Home"):e("Page",{attrs:{"sidebar-items":t.sidebarItems}},[t._t("page-top",null,{slot:"top"}),t._v(" "),t._t("page-bottom",null,{slot:"bottom"})],2)],1)}),[],!1,null,null,null);e.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/13.58d1b12e.js b/assets/js/13.58d1b12e.js new file mode 100644 index 00000000..242e47af --- /dev/null +++ b/assets/js/13.58d1b12e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13,5,15,18,27,29,33],{239:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return r})),n.d(e,"i",(function(){return a})),n.d(e,"f",(function(){return l})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return p})),n.d(e,"e",(function(){return h})),n.d(e,"k",(function(){return d})),n.d(e,"l",(function(){return f})),n.d(e,"c",(function(){return m})),n.d(e,"j",(function(){return g}));n(90);const i=/#.*$/,s=/\.(md|html)$/,r=/\/$/,a=/^[a-z]+:/i;function o(t){return decodeURI(t).replace(i,"").replace(s,"")}function l(t){return a.test(t)}function u(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function p(t){if(l(t))return t;const e=t.match(i),n=e?e[0]:"",s=o(t);return r.test(s)?t:s+".html"+n}function h(t,e){const n=decodeURIComponent(t.hash),s=function(t){const e=t.match(i);if(e)return e[0]}(e);if(s&&n!==s)return!1;return o(t.path)===o(e)}function d(t,e,n){if(l(e))return{type:"external",path:e};n&&(e=function(t,e,n){const i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;const s=e.split("/");n&&s[s.length-1]||s.pop();const r=t.replace(/^\//,"").split("/");for(let t=0;tfunction t(e,n,i,s=1){if("string"==typeof e)return d(n,e,i);if(Array.isArray(e))return Object.assign(d(n,e[0],i),{title:e[1]});{const r=e.children||[];return 0===r.length&&e.path?Object.assign(d(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,initialOpenGroupIndex:e.initialOpenGroupIndex,children:r.map(e=>t(e,n,i,s+1)),collapsable:!1!==e.collapsable}}}(t,s,n)):[]}return[]}function b(t){const e=m(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}function m(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},240:function(t,e,n){},241:function(t,e,n){"use strict";n.r(e);var i=n(239),s={name:"NavLink",props:{item:{required:!0}},computed:{link(){return Object(i.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link},isNonHttpURI(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget(){return"_blank"===this.target},isInternal(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel(){return this.isNonHttpURI||!1===this.item.rel?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":null}},methods:{focusoutAction(){this.$emit("focusout")}}},r=n(14),a=Object(r.a)(s,(function(){var t=this,e=t._self._c;return t.isInternal?e("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction.apply(null,arguments)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?e("OutboundLink"):t._e()],1)}),[],!1,null,null,null);e.default=a.exports},242:function(t,e,n){},243:function(t,e,n){"use strict";n.r(e);var i={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},s=(n(245),n(14)),r=Object(s.a)(i,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.default=r.exports},245:function(t,e,n){"use strict";n(240)},246:function(t,e,n){},249:function(t,e,n){},250:function(t,e,n){"use strict";n.r(e);var i=n(261),s=n(255),r=n(239);function a(t,e){if("group"===e.type){const n=e.path&&Object(r.e)(t,e.path),i=e.children.some(e=>"group"===e.type?a(t,e):"page"===e.type&&Object(r.e)(t,e.path));return n||i}return!1}var o={name:"SidebarLinks",components:{SidebarGroup:i.default,SidebarLink:s.default},props:["items","depth","sidebarDepth","initialOpenGroupIndex"],data(){return{openGroupIndex:this.initialOpenGroupIndex||0}},watch:{$route(){this.refreshIndex()}},created(){this.refreshIndex()},methods:{refreshIndex(){const t=function(t,e){for(let n=0;n-1&&(this.openGroupIndex=t)},toggleGroup(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive(t){return Object(r.e)(this.$route,t.regularPath)}}},l=n(14),u=Object(l.a)(o,(function(){var t=this,e=t._self._c;return t.items.length?e("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(n,i){return e("li",{key:i},["group"===n.type?e("SidebarGroup",{attrs:{item:n,open:i===t.openGroupIndex,collapsable:n.collapsable||n.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(i)}}}):e("SidebarLink",{attrs:{"sidebar-depth":t.sidebarDepth,item:n}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=u.exports},251:function(t,e,n){"use strict";n(242)},252:function(t,e,n){},254:function(t,e,n){},255:function(t,e,n){"use strict";n.r(e);var i=n(239);function s(t,e,n,i,s){const r={props:{to:e,activeClass:"",exactActiveClass:""},class:{active:i,"sidebar-link":!0}};return s>2&&(r.style={"padding-left":s+"rem"}),t("RouterLink",r,n)}function r(t,e,n,a,o,l=1){return!e||l>o?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const u=Object(i.e)(a,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[s(t,n+"#"+e.slug,e.title,u,e.level-1),r(t,e.children,n,a,o,l+1)])}))}var a={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:n,$route:a,$themeConfig:o,$themeLocaleConfig:l},props:{item:u,sidebarDepth:c}}){const p=Object(i.e)(a,u.path),h="auto"===u.type?p||u.children.some(t=>Object(i.e)(a,u.basePath+"#"+t.slug)):p,d="external"===u.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,u.path,u.title||u.path):s(t,u.path,u.title||u.path,h),f=[e.frontmatter.sidebarDepth,c,l.sidebarDepth,o.sidebarDepth,1].find(t=>void 0!==t),b=l.displayAllHeaders||o.displayAllHeaders;if("auto"===u.type)return[d,r(t,u.children,u.basePath,a,f)];if((h||b)&&u.headers&&!i.d.test(u.path)){return[d,r(t,Object(i.c)(u.headers),u.path,a,f)]}return d}},o=(n(251),n(14)),l=Object(o.a)(a,void 0,void 0,!1,null,null,null);e.default=l.exports},256:function(t,e,n){"use strict";n(246)},260:function(t,e,n){"use strict";n(249)},261:function(t,e,n){"use strict";n.r(e);var i=n(239),s={name:"SidebarGroup",components:{DropdownTransition:n(243).default},props:["item","open","collapsable","depth"],beforeCreate(){this.$options.components.SidebarLinks=n(250).default},methods:{isActive:i.e}},r=(n(260),n(14)),a=Object(r.a)(s,(function(){var t=this,e=t._self._c;return e("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?e("RouterLink",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):e("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),e("DropdownTransition",[t.open||!t.collapsable?e("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,"initial-open-group-index":t.item.initialOpenGroupIndex,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null);e.default=a.exports},262:function(t,e,n){"use strict";n.r(e);var i=n(241),s=n(243),r=n(91),a=n.n(r),o={name:"DropdownLink",components:{NavLink:i.default,DropdownTransition:s.default},props:{item:{required:!0}},data:()=>({open:!1}),computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text}},watch:{$route(){this.open=!1}},methods:{setOpen(t){this.open=t},isLastItemOfArray:(t,e)=>a()(e)===t,handleDropdown(){0===event.detail&&this.setOpen(!this.open)}}},l=(n(256),n(14)),u=Object(l.a)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[e("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.handleDropdown}},[e("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow down"})]),t._v(" "),e("button",{staticClass:"mobile-dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[e("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),e("DropdownTransition",[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(n,i){return e("li",{key:n.link||i,staticClass:"dropdown-item"},["links"===n.type?e("h4",[t._v("\n "+t._s(n.text)+"\n ")]):t._e(),t._v(" "),"links"===n.type?e("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(n.items,(function(i){return e("li",{key:i.link,staticClass:"dropdown-subitem"},[e("NavLink",{attrs:{item:i},on:{focusout:function(e){t.isLastItemOfArray(i,n.items)&&t.isLastItemOfArray(n,t.item.items)&&t.setOpen(!1)}}})],1)})),0):e("NavLink",{attrs:{item:n},on:{focusout:function(e){t.isLastItemOfArray(n,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null);e.default=u.exports},263:function(t,e,n){"use strict";n.r(e);var i=n(262),s=n(239),r={name:"NavLinks",components:{NavLink:n(241).default,DropdownLink:i.default},computed:{userNav(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav(){const{locales:t}=this.$site;if(t&&Object.keys(t).length>1){const e=this.$page.path,n=this.$router.options.routes,i=this.$site.themeConfig.locales||{},s={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(t).map(s=>{const r=t[s],a=i[s]&&i[s].label||r.lang;let o;return r.lang===this.$lang?o=e:(o=e.replace(this.$localeConfig.path,s),n.some(t=>t.path===o)||(o=s)),{text:a,link:o}})};return[...this.userNav,s]}return this.userNav},userLinks(){return(this.nav||[]).map(t=>Object.assign(Object(s.j)(t),{items:(t.items||[]).map(s.j)}))},repoLink(){const{repo:t}=this.$site.themeConfig;return t?/^https?:/.test(t)?t:"https://github.com/"+t:null},repoLabel(){if(!this.repoLink)return;if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;const t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"];for(let n=0;nfunction t(e,n,r,i=1){if("string"==typeof e)return d(n,e,r);if(Array.isArray(e))return Object.assign(d(n,e[0],r),{title:e[1]});{const a=e.children||[];return 0===a.length&&e.path?Object.assign(d(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,initialOpenGroupIndex:e.initialOpenGroupIndex,children:a.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}}(t,i,n)):[]}return[]}function g(t){const e=v(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}function v(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function m(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},244:function(t,e){t.exports=function(t){return null==t}},247:function(t,e,n){},248:function(t,e,n){},253:function(t,e,n){},257:function(t,e,n){"use strict";n(247)},258:function(t,e,n){var r=n(11),i=n(4),a=n(10);t.exports=function(t){return"string"==typeof t||!i(t)&&a(t)&&"[object String]"==r(t)}},259:function(t,e,n){"use strict";n(248)},264:function(t,e,n){"use strict";n.r(e);var r=n(244),i=n.n(r),a=n(239),s={name:"PageEdit",computed:{lastUpdated(){return this.$page.lastUpdated},lastUpdatedText(){return"string"==typeof this.$themeLocaleConfig.lastUpdated?this.$themeLocaleConfig.lastUpdated:"string"==typeof this.$site.themeConfig.lastUpdated?this.$site.themeConfig.lastUpdated:"Last Updated"},editLink(){const t=i()(this.$page.frontmatter.editLink)?this.$site.themeConfig.editLinks:this.$page.frontmatter.editLink,{repo:e,docsDir:n="",docsBranch:r="master",docsRepo:a=e}=this.$site.themeConfig;return t&&a&&this.$page.relativePath?this.createEditLink(e,a,n,r,this.$page.relativePath):null},editLinkText(){return this.$themeLocaleConfig.editLinkText||this.$site.themeConfig.editLinkText||"Edit this page"}},methods:{createEditLink(t,e,n,r,i){if(/bitbucket.org/.test(e)){return e.replace(a.a,"")+"/src"+`/${r}/`+(n?n.replace(a.a,"")+"/":"")+i+`?mode=edit&spa=0&at=${r}&fileviewer=file-view-default`}if(/gitlab.com/.test(e)){return e.replace(a.a,"")+"/-/edit"+`/${r}/`+(n?n.replace(a.a,"")+"/":"")+i}return(a.i.test(e)?e:"https://github.com/"+e).replace(a.a,"")+"/edit"+`/${r}/`+(n?n.replace(a.a,"")+"/":"")+i}}},o=(n(257),n(14)),u=Object(o.a)(s,(function(){var t=this,e=t._self._c;return e("footer",{staticClass:"page-edit"},[t.editLink?e("div",{staticClass:"edit-link"},[e("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))]),t._v(" "),e("OutboundLink")],1):t._e(),t._v(" "),t.lastUpdated?e("div",{staticClass:"last-updated"},[e("span",{staticClass:"prefix"},[t._v(t._s(t.lastUpdatedText)+":")]),t._v(" "),e("span",{staticClass:"time"},[t._v(t._s(t.lastUpdated))])]):t._e()])}),[],!1,null,null,null);e.default=u.exports},265:function(t,e,n){"use strict";n.r(e);n(90);var r=n(239),i=n(258),a=n.n(i),s=n(244),o=n.n(s),u={name:"PageNav",props:["sidebarItems"],computed:{prev(){return l(c.PREV,this)},next(){return l(c.NEXT,this)}}};const c={NEXT:{resolveLink:function(t,e){return p(t,e,1)},getThemeLinkConfig:({nextLinks:t})=>t,getPageLinkConfig:({frontmatter:t})=>t.next},PREV:{resolveLink:function(t,e){return p(t,e,-1)},getThemeLinkConfig:({prevLinks:t})=>t,getPageLinkConfig:({frontmatter:t})=>t.prev}};function l(t,{$themeConfig:e,$page:n,$route:i,$site:s,sidebarItems:u}){const{resolveLink:c,getThemeLinkConfig:l,getPageLinkConfig:p}=t,f=l(e),d=p(n),h=o()(d)?f:d;return!1===h?void 0:a()(h)?Object(r.k)(s.pages,h,i.path):c(n,u)}function p(t,e,n){const r=[];!function t(e,n){for(let r=0,i=e.length;rfunction t(e,n,i,r=1){if("string"==typeof e)return f(n,e,i);if(Array.isArray(e))return Object.assign(f(n,e[0],i),{title:e[1]});{const s=e.children||[];return 0===s.length&&e.path?Object.assign(f(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,initialOpenGroupIndex:e.initialOpenGroupIndex,children:s.map(e=>t(e,n,i,r+1)),collapsable:!1!==e.collapsable}}}(t,r,n)):[]}return[]}function m(t){const e=b(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}function b(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},240:function(t,e,n){},241:function(t,e,n){"use strict";n.r(e);var i=n(239),r={name:"NavLink",props:{item:{required:!0}},computed:{link(){return Object(i.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link},isNonHttpURI(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget(){return"_blank"===this.target},isInternal(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel(){return this.isNonHttpURI||!1===this.item.rel?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":null}},methods:{focusoutAction(){this.$emit("focusout")}}},s=n(14),a=Object(s.a)(r,(function(){var t=this,e=t._self._c;return t.isInternal?e("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction.apply(null,arguments)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?e("OutboundLink"):t._e()],1)}),[],!1,null,null,null);e.default=a.exports},243:function(t,e,n){"use strict";n.r(e);var i={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},r=(n(245),n(14)),s=Object(r.a)(i,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.default=s.exports},245:function(t,e,n){"use strict";n(240)},246:function(t,e,n){},252:function(t,e,n){},256:function(t,e,n){"use strict";n(246)},262:function(t,e,n){"use strict";n.r(e);var i=n(241),r=n(243),s=n(91),a=n.n(s),o={name:"DropdownLink",components:{NavLink:i.default,DropdownTransition:r.default},props:{item:{required:!0}},data:()=>({open:!1}),computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text}},watch:{$route(){this.open=!1}},methods:{setOpen(t){this.open=t},isLastItemOfArray:(t,e)=>a()(e)===t,handleDropdown(){0===event.detail&&this.setOpen(!this.open)}}},l=(n(256),n(14)),u=Object(l.a)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[e("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.handleDropdown}},[e("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow down"})]),t._v(" "),e("button",{staticClass:"mobile-dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[e("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),e("DropdownTransition",[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(n,i){return e("li",{key:n.link||i,staticClass:"dropdown-item"},["links"===n.type?e("h4",[t._v("\n "+t._s(n.text)+"\n ")]):t._e(),t._v(" "),"links"===n.type?e("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(n.items,(function(i){return e("li",{key:i.link,staticClass:"dropdown-subitem"},[e("NavLink",{attrs:{item:i},on:{focusout:function(e){t.isLastItemOfArray(i,n.items)&&t.isLastItemOfArray(n,t.item.items)&&t.setOpen(!1)}}})],1)})),0):e("NavLink",{attrs:{item:n},on:{focusout:function(e){t.isLastItemOfArray(n,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null);e.default=u.exports},263:function(t,e,n){"use strict";n.r(e);var i=n(262),r=n(239),s={name:"NavLinks",components:{NavLink:n(241).default,DropdownLink:i.default},computed:{userNav(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav(){const{locales:t}=this.$site;if(t&&Object.keys(t).length>1){const e=this.$page.path,n=this.$router.options.routes,i=this.$site.themeConfig.locales||{},r={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(t).map(r=>{const s=t[r],a=i[r]&&i[r].label||s.lang;let o;return s.lang===this.$lang?o=e:(o=e.replace(this.$localeConfig.path,r),n.some(t=>t.path===o)||(o=r)),{text:a,link:o}})};return[...this.userNav,r]}return this.userNav},userLinks(){return(this.nav||[]).map(t=>Object.assign(Object(r.j)(t),{items:(t.items||[]).map(r.j)}))},repoLink(){const{repo:t}=this.$site.themeConfig;return t?/^https?:/.test(t)?t:"https://github.com/"+t:null},repoLabel(){if(!this.repoLink)return;if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;const t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"];for(let n=0;n',this.initialize(e,t)}}},n=(a(299),a(14)),r=Object(n.a)(i,(function(){var e=this._self._c;return e("form",{staticClass:"algolia-search-wrapper search-box",attrs:{id:"search-form",role:"search"}},[e("input",{staticClass:"search-query",attrs:{id:"algolia-search-input",placeholder:this.placeholder}})])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/18.0efa973c.js b/assets/js/18.0efa973c.js new file mode 100644 index 00000000..db029d78 --- /dev/null +++ b/assets/js/18.0efa973c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18,29,33],{239:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return s})),n.d(e,"i",(function(){return o})),n.d(e,"f",(function(){return l})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return p})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return b})),n.d(e,"j",(function(){return g}));n(90);const i=/#.*$/,r=/\.(md|html)$/,s=/\/$/,o=/^[a-z]+:/i;function a(t){return decodeURI(t).replace(i,"").replace(r,"")}function l(t){return o.test(t)}function u(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function p(t){if(l(t))return t;const e=t.match(i),n=e?e[0]:"",r=a(t);return s.test(r)?t:r+".html"+n}function f(t,e){const n=decodeURIComponent(t.hash),r=function(t){const e=t.match(i);if(e)return e[0]}(e);if(r&&n!==r)return!1;return a(t.path)===a(e)}function h(t,e,n){if(l(e))return{type:"external",path:e};n&&(e=function(t,e,n){const i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;const r=e.split("/");n&&r[r.length-1]||r.pop();const s=t.replace(/^\//,"").split("/");for(let t=0;tfunction t(e,n,i,r=1){if("string"==typeof e)return h(n,e,i);if(Array.isArray(e))return Object.assign(h(n,e[0],i),{title:e[1]});{const s=e.children||[];return 0===s.length&&e.path?Object.assign(h(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,initialOpenGroupIndex:e.initialOpenGroupIndex,children:s.map(e=>t(e,n,i,r+1)),collapsable:!1!==e.collapsable}}}(t,r,n)):[]}return[]}function m(t){const e=b(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map(e=>({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}function b(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},240:function(t,e,n){},241:function(t,e,n){"use strict";n.r(e);var i=n(239),r={name:"NavLink",props:{item:{required:!0}},computed:{link(){return Object(i.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link},isNonHttpURI(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget(){return"_blank"===this.target},isInternal(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel(){return this.isNonHttpURI||!1===this.item.rel?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":null}},methods:{focusoutAction(){this.$emit("focusout")}}},s=n(14),o=Object(s.a)(r,(function(){var t=this,e=t._self._c;return t.isInternal?e("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction.apply(null,arguments)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?e("OutboundLink"):t._e()],1)}),[],!1,null,null,null);e.default=o.exports},243:function(t,e,n){"use strict";n.r(e);var i={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},r=(n(245),n(14)),s=Object(r.a)(i,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.default=s.exports},245:function(t,e,n){"use strict";n(240)},246:function(t,e,n){},256:function(t,e,n){"use strict";n(246)},262:function(t,e,n){"use strict";n.r(e);var i=n(241),r=n(243),s=n(91),o=n.n(s),a={name:"DropdownLink",components:{NavLink:i.default,DropdownTransition:r.default},props:{item:{required:!0}},data:()=>({open:!1}),computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text}},watch:{$route(){this.open=!1}},methods:{setOpen(t){this.open=t},isLastItemOfArray:(t,e)=>o()(e)===t,handleDropdown(){0===event.detail&&this.setOpen(!this.open)}}},l=(n(256),n(14)),u=Object(l.a)(a,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[e("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.handleDropdown}},[e("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow down"})]),t._v(" "),e("button",{staticClass:"mobile-dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[e("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),e("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),e("DropdownTransition",[e("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(n,i){return e("li",{key:n.link||i,staticClass:"dropdown-item"},["links"===n.type?e("h4",[t._v("\n "+t._s(n.text)+"\n ")]):t._e(),t._v(" "),"links"===n.type?e("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(n.items,(function(i){return e("li",{key:i.link,staticClass:"dropdown-subitem"},[e("NavLink",{attrs:{item:i},on:{focusout:function(e){t.isLastItemOfArray(i,n.items)&&t.isLastItemOfArray(n,t.item.items)&&t.setOpen(!1)}}})],1)})),0):e("NavLink",{attrs:{item:n},on:{focusout:function(e){t.isLastItemOfArray(n,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null);e.default=u.exports}}]); \ No newline at end of file diff --git a/assets/js/19.023238fa.js b/assets/js/19.023238fa.js new file mode 100644 index 00000000..624c8d26 --- /dev/null +++ b/assets/js/19.023238fa.js @@ -0,0 +1,22 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{315:function(e,t,n){"use strict";var r=n(25),i=n(23),a=n(2),o=n(45),s=n(0),u=n(46),c=n(316),l=n(92),f=n(94),p=n(317),d=n(319),g=n(24),h=n(48),v=g("replace"),m=TypeError,y=a("".indexOf),b=a("".replace),x=a("".slice),w=Math.max,k=function(e,t,n){return n>e.length?-1:""===t?n:y(e,t,n)};r({target:"String",proto:!0},{replaceAll:function(e,t){var n,r,a,g,S,_,F,A,$,E=o(this),C=0,j=0,O="";if(!u(e)){if((n=c(e))&&(r=l(o(p(e))),!~y(r,"g")))throw new m("`.replaceAll` does not allow non-global regexes");if(a=f(e,v))return i(a,e,E,t);if(h&&n)return b(l(E),e,t)}for(g=l(E),S=l(e),(_=s(t))||(t=l(t)),F=S.length,A=w(1,F),C=k(g,S,0);-1!==C;)$=_?l(t(S,C,g)):d(S,g,C,[],void 0,t),O+=x(g,j,C)+$,j=C+F,C=k(g,S,C+A);return j]*>)/g,l=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,r,f,p){var d=n+e.length,g=r.length,h=l;return void 0!==f&&(f=i(f),h=c),s(p,h,(function(i,s){var c;switch(o(s,0)){case"$":return"$";case"&":return e;case"`":return u(t,0,n);case"'":return u(t,d);case"<":c=f[u(s,1,-1)];break;default:var l=+s;if(0===l)return i;if(l>g){var p=a(l/10);return 0===p?i:p<=g?void 0===r[p-1]?o(s,1):r[p-1]+o(s,1):i}c=r[l-1]}return void 0===c?"":c}))}},320:function(e,t,n){var r=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},i={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=f.reach);S+=k.value.length,k=k.next){var _=k.value;if(n.length>t.length)return;if(!(_ instanceof a)){var F,A=1;if(y){if(!(F=o(w,S,t,m))||F.index>=t.length)break;var $=F.index,E=F.index+F[0].length,C=S;for(C+=k.value.length;$>=C;)k=k.next,C+=k.value.length;if(C-=k.value.length,S=C,k.value instanceof a)continue;for(var j=k;j!==n.tail&&(Cf.reach&&(f.reach=M);var L=k.prev;T&&(L=u(n,L,T),S+=T.length),c(n,L,A);var N=new a(p,v?i.tokenize(O,v):O,b,O);if(k=u(n,L,N),P&&u(n,k,P),A>1){var D={cause:p+","+g,reach:M};e(t,n,r,k.prev,S,D),f&&D.reach>f.reach&&(f.reach=D.reach)}}}}}}(e,l,t,l.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(l)},hooks:{all:{},add:function(e,t){var n=i.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=i.hooks.all[e];if(n&&n.length)for(var r,a=0;r=n[a++];)r(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function u(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function c(e,t,n){for(var r=t.next,i=0;i"+a.content+""},!e.document)return e.addEventListener?(i.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),r=n.language,a=n.code,o=n.immediateClose;e.postMessage(i.highlight(a,i.languages[r],r)),o&&e.close()}),!1),i):i;var l=i.util.currentScript();function f(){i.manual||i.highlightAll()}if(l&&(i.filename=l.src,l.hasAttribute("data-manual")&&(i.manual=!0)),!i.manual){var p=document.readyState;"loading"===p||"interactive"===p&&l&&l.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return i}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{}); +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT + * @author Lea Verou + * @namespace + * @public + */e.exports&&(e.exports=r),"undefined"!=typeof global&&(global.Prism=r),r.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[t]},n.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:n}};i["language-"+t]={pattern:/[\s\S]+/,inside:r.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:i},r.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(e,t){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:r.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if(void 0!==r&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t='pre[data-src]:not([data-src-status="loaded"]):not([data-src-status="loading"])';r.hooks.add("before-highlightall",(function(e){e.selector+=", "+t})),r.hooks.add("before-sanity-check",(function(n){var i=n.element;if(i.matches(t)){n.code="",i.setAttribute("data-src-status","loading");var a=i.appendChild(document.createElement("CODE"));a.textContent="Loading…";var o=i.getAttribute("data-src"),s=n.language;if("none"===s){var u=(/\.(\w+)$/.exec(o)||[,"none"])[1];s=e[u]||u}r.util.setLanguage(a,s),r.util.setLanguage(i,s);var c=r.plugins.autoloader;c&&c.loadLanguages(s),function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onreadystatechange=function(){var e,i;4==r.readyState&&(r.status<400&&r.responseText?t(r.responseText):r.status>=400?n((e=r.status,i=r.statusText,"✖ Error "+e+" while fetching file: "+i)):n("✖ Error: File does not exist or is empty"))},r.send(null)}(o,(function(e){i.setAttribute("data-src-status","loaded");var t=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),r=t[2],i=t[3];return r?i?[n,Number(i)]:[n,void 0]:[n,n]}}(i.getAttribute("data-range"));if(t){var n=e.split(/\r\n?|\n/g),o=t[0],s=null==t[1]?n.length:t[1];o<0&&(o+=n.length),o=Math.max(0,Math.min(o-1,n.length)),s<0&&(s+=n.length),s=Math.max(0,Math.min(s,n.length)),e=n.slice(o,s).join("\n"),i.hasAttribute("data-start")||i.setAttribute("data-start",String(o+1))}a.textContent=e,r.highlightElement(a)}),(function(e){i.setAttribute("data-src-status","failed"),a.textContent=e}))}})),r.plugins.fileHighlight={highlight:function(e){for(var n,i=(e||document).querySelectorAll(t),a=0;n=i[a++];)r.highlightElement(n)}};var n=!1;r.fileHighlight=function(){n||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),n=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}}()},321:function(e,t){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s="fb15")}({"0029":function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"0a0d":function(e,t,n){e.exports=n("82e3")},"0bfb":function(e,t,n){"use strict";var r=n("cb7c");e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"0f89":function(e,t,n){var r=n("6f8a");e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},"12fd":function(e,t,n){var r=n("6f8a"),i=n("da3c").document,a=r(i)&&r(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},"1b8f":function(e,t,n){var r=n("a812"),i=Math.max,a=Math.min;e.exports=function(e,t){return(e=r(e))<0?i(e+t,0):a(e,t)}},"214f":function(e,t,n){"use strict";var r=n("32e9"),i=n("2aba"),a=n("79e5"),o=n("be13"),s=n("2b4c");e.exports=function(e,t,n){var u=s(e),c=n(o,u,""[e]),l=c[0],f=c[1];a((function(){var t={};return t[u]=function(){return 7},7!=""[e](t)}))&&(i(String.prototype,e,l),r(RegExp.prototype,u,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)}))}},"230e":function(e,t,n){var r=n("d3f4"),i=n("7726").document,a=r(i)&&r(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},2418:function(e,t,n){var r=n("6a9b"),i=n("a5ab"),a=n("1b8f");e.exports=function(e){return function(t,n,o){var s,u=r(t),c=i(u.length),l=a(o,c);if(e&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}}},2695:function(e,t,n){var r=n("43c8"),i=n("6a9b"),a=n("2418")(!1),o=n("5d8f")("IE_PROTO");e.exports=function(e,t){var n,s=i(e),u=0,c=[];for(n in s)n!=o&&r(s,n)&&c.push(n);for(;t.length>u;)r(s,n=t[u++])&&(~a(c,n)||c.push(n));return c}},"28a5":function(e,t,n){n("214f")("split",2,(function(e,t,r){"use strict";var i=n("aae3"),a=r,o=[].push,s="length";if("c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1)[s]||2!="ab".split(/(?:ab)*/)[s]||4!=".".split(/(.?)(.?)/)[s]||".".split(/()()/)[s]>1||"".split(/.?/)[s]){var u=void 0===/()??/.exec("")[1];r=function(e,t){var n=String(this);if(void 0===e&&0===t)return[];if(!i(e))return a.call(n,e,t);var r,c,l,f,p,d=[],g=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,v=void 0===t?4294967295:t>>>0,m=new RegExp(e.source,g+"g");for(u||(r=new RegExp("^"+m.source+"$(?!\\s)",g));(c=m.exec(n))&&!((l=c.index+c[0][s])>h&&(d.push(n.slice(h,c.index)),!u&&c[s]>1&&c[0].replace(r,(function(){for(p=1;p1&&c.index=v));)m.lastIndex===c.index&&m.lastIndex++;return h===n[s]?!f&&m.test("")||d.push(""):d.push(n.slice(h)),d[s]>v?d.slice(0,v):d}}else"0".split(void 0,0)[s]&&(r=function(e,t){return void 0===e&&0===t?[]:a.call(this,e,t)});return[function(n,i){var a=e(this),o=null==n?void 0:n[t];return void 0!==o?o.call(n,a,i):r.call(String(a),n,i)},r]}))},"2aba":function(e,t,n){var r=n("7726"),i=n("32e9"),a=n("69a8"),o=n("ca5a")("src"),s=Function.toString,u=(""+s).split("toString");n("8378").inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var c="function"==typeof n;c&&(a(n,"name")||i(n,"name",t)),e[t]!==n&&(c&&(a(n,o)||i(n,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:i(e,t,n):(delete e[t],i(e,t,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[o]||s.call(this)}))},"2b4c":function(e,t,n){var r=n("5537")("wks"),i=n("ca5a"),a=n("7726").Symbol,o="function"==typeof a;(e.exports=function(e){return r[e]||(r[e]=o&&a[e]||(o?a:i)("Symbol."+e))}).store=r},"2d00":function(e,t){e.exports=!1},"2d95":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"2ea1":function(e,t,n){var r=n("6f8a");e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},"2fdb":function(e,t,n){"use strict";var r=n("5ca1"),i=n("d2c8");r(r.P+r.F*n("5147")("includes"),"String",{includes:function(e){return!!~i(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}})},"32e9":function(e,t,n){var r=n("86cc"),i=n("4630");e.exports=n("9e1e")?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},3846:function(e,t,n){n("9e1e")&&"g"!=/./g.flags&&n("86cc").f(RegExp.prototype,"flags",{configurable:!0,get:n("0bfb")})},"3adc":function(e,t,n){var r=n("0f89"),i=n("a47f"),a=n("2ea1"),o=Object.defineProperty;t.f=n("7d95")?Object.defineProperty:function(e,t,n){if(r(e),t=a(t,!0),r(n),i)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},"3dcc":function(e,t,n){var r=n("d13f");r(r.S,"Date",{now:function(){return(new Date).getTime()}})},"412e":function(e,t,n){},"43c8":function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},4588:function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},4630:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},4917:function(e,t,n){n("214f")("match",1,(function(e,t,n){return[function(n){"use strict";var r=e(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,r):new RegExp(n)[t](String(r))},n]}))},5147:function(e,t,n){var r=n("2b4c")("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}},5537:function(e,t,n){var r=n("8378"),i=n("7726"),a=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n("2d00")?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},"5ca1":function(e,t,n){var r=n("7726"),i=n("8378"),a=n("32e9"),o=n("2aba"),s=n("9b43"),u=function(e,t,n){var c,l,f,p,d=e&u.F,g=e&u.G,h=e&u.S,v=e&u.P,m=e&u.B,y=g?r:h?r[t]||(r[t]={}):(r[t]||{}).prototype,b=g?i:i[t]||(i[t]={}),x=b.prototype||(b.prototype={});for(c in g&&(n=t),n)f=((l=!d&&y&&void 0!==y[c])?y:n)[c],p=m&&l?s(f,r):v&&"function"==typeof f?s(Function.call,f):f,y&&o(y,c,f,e&u.U),b[c]!=f&&a(b,c,p),v&&x[c]!=f&&(x[c]=f)};r.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},"5d8f":function(e,t,n){var r=n("7772")("keys"),i=n("7b00");e.exports=function(e){return r[e]||(r[e]=i(e))}},"626a":function(e,t,n){var r=n("2d95");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},6762:function(e,t,n){"use strict";var r=n("5ca1"),i=n("c366")(!0);r(r.P,"Array",{includes:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")("includes")},6821:function(e,t,n){var r=n("626a"),i=n("be13");e.exports=function(e){return r(i(e))}},"69a8":function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},"6a99":function(e,t,n){var r=n("d3f4");e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},"6a9b":function(e,t,n){var r=n("8bab"),i=n("e5fa");e.exports=function(e){return r(i(e))}},"6b54":function(e,t,n){"use strict";n("3846");var r=n("cb7c"),i=n("0bfb"),a=n("9e1e"),o=/./.toString,s=function(e){n("2aba")(RegExp.prototype,"toString",e,!0)};n("79e5")((function(){return"/a/b"!=o.call({source:"a",flags:"b"})}))?s((function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!a&&e instanceof RegExp?i.call(e):void 0)})):"toString"!=o.name&&s((function(){return o.call(this)}))},"6e1f":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"6f8a":function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},"72d6":function(e,t,n){var r=n("8a8d"),i=n("ad9a");function a(e,t){if(!(this instanceof a))return new a(e,t);if(this.node=this.start=this.peeked=e,this.root=t,this.closingTag=!1,this._revisit=!0,this._selects=[],this._rejects=[],e&&this.higher(e))throw new Error("root must be a parent or ancestor to node")}function o(e,t){var n="nextSibling"==e;return function(i,a,o){i=this.compile(i),a=a&&a>0?a:1;for(var s=this.node,u=this.closingTag,c=this._revisit;s;){if(r(n,u)&&s[t])s=s[t],u=!n;else if(1==s.nodeType&&!s[t]&&r(n,u)){if(u=n,!c)continue}else if(s[e])s=s[e],u=!n;else if(s=s.parentNode,u=n,!c)continue;if(!s||this.higher(s,this.root))break;if(i(s)&&this.selects(s,o)&&this.rejects(s,o)){if(--a)continue;return o||(this.node=s),this.closingTag=u,s}}return null}}e.exports=a,a.prototype.reset=function(e){return this.node=e||this.start,this},a.prototype.revisit=function(e){return this._revisit=null==e||e,this},a.prototype.opening=function(){return 1==this.node.nodeType&&(this.closingTag=!1),this},a.prototype.atOpening=function(){return!this.closingTag},a.prototype.closing=function(){return 1==this.node.nodeType&&(this.closingTag=!0),this},a.prototype.atClosing=function(){return this.closingTag},a.prototype.next=o("nextSibling","firstChild"),a.prototype.previous=a.prototype.prev=o("previousSibling","lastChild"),a.prototype.select=function(e){return e=this.compile(e),this._selects.push(e),this},a.prototype.selects=function(e,t){var n=this._selects,r=n.length;if(!r)return!0;for(var i=0;i0?this.next(e,t,!0):this.prev(e,Math.abs(t),!0):this.node},a.prototype.use=function(e){return e(this),this}},"74a0":function(e,t,n){"use strict"; +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var r=/["'&<>]/;e.exports=function(e){var t,n=""+e,i=r.exec(n);if(!i)return n;var a="",o=0,s=0;for(o=i.index;o",">":">","<":"<","<":"<"},extras:{"¢":"¢","¢":"¢","©":"©","©":"©","€":"€","€":"€","£":"£","£":"£","®":"®","®":"®","¥":"¥","¥":"¥"}};function s(e,t){if(!function(e){return e&&"string"==typeof e}(e))return"";var n=o[t||"default"],r=function(e,t){if(a[e])return a[e];var n=Object.keys(t).join("|"),r=new RegExp("(?=("+n+"))\\1","g");return a[e]=r,r}(t,n);return e.replace(r,(function(e){return n[e]}))}Object.defineProperty(o,"all",{get:function(){return r||(r=i({},o.default,o.extras))}}),s.chars=o.default,s.extras=o.extras,Object.defineProperty(s,"all",{get:function(){return o.all}}),e.exports=s},"9b43":function(e,t,n){var r=n("d8e8");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},"9c6c":function(e,t,n){var r=n("2b4c")("unscopables"),i=Array.prototype;null==i[r]&&n("32e9")(i,r,{}),e.exports=function(e){i[r][e]=!0}},"9def":function(e,t,n){var r=n("4588"),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},"9e1e":function(e,t,n){e.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a47f:function(e,t,n){e.exports=!n("7d95")&&!n("d782")((function(){return 7!=Object.defineProperty(n("12fd")("div"),"a",{get:function(){return 7}}).a}))},a481:function(e,t,n){n("214f")("replace",2,(function(e,t,n){return[function(r,i){"use strict";var a=e(this),o=null==r?void 0:r[t];return void 0!==o?o.call(r,a,i):n.call(String(a),r,i)},n]}))},a5ab:function(e,t,n){var r=n("a812"),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},a7d3:function(e,t){var n=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},a812:function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},aae3:function(e,t,n){var r=n("d3f4"),i=n("2d95"),a=n("2b4c")("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[a])?!!t:"RegExp"==i(e))}},ad9a:function(e,t){var n=/\b(Array|Date|Object|Math|JSON)\b/g;e.exports=function(e,t){var r=function(e){for(var t=[],n=0;n1?arguments[1]:void 0,r=i(t.length),s=void 0===n?r:Math.min(i(n),r),u=String(e);return o?o.call(t,u,s):t.slice(s-u.length,s)===u}})},b16a:function(e,t,n){"use strict";var r=n("412e");n.n(r).a},b457:function(e,t){e.exports=!0},bc25:function(e,t,n){var r=n("f2fe");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},be13:function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},c366:function(e,t,n){var r=n("6821"),i=n("9def"),a=n("77f1");e.exports=function(e){return function(t,n,o){var s,u=r(t),c=i(u.length),l=a(o,c);if(e&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}}},c69a:function(e,t,n){e.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c764:function(e,t,n){n("dc9b"),e.exports=n("a7d3").Object.values},ca5a:function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},cb7c:function(e,t,n){var r=n("d3f4");e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},cf4f:function(e,t,n){"use strict";var r=n("d913");function i(e,t){for(var n in t)a(t,n)&&(e[n]=t[n])}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e){r(e)||(e={});for(var t=arguments.length,n=1;nc;)a.call(o,n=s[c++])&&l.push(e?[n,o[n]]:o[n]);return l}}},d13f:function(e,t,n){var r=n("da3c"),i=n("a7d3"),a=n("bc25"),o=n("8ce0"),s=n("43c8"),u=function(e,t,n){var c,l,f,p=e&u.F,d=e&u.G,g=e&u.S,h=e&u.P,v=e&u.B,m=e&u.W,y=d?i:i[t]||(i[t]={}),b=y.prototype,x=d?r:g?r[t]:(r[t]||{}).prototype;for(c in d&&(n=t),n)(l=!p&&x&&void 0!==x[c])&&s(y,c)||(f=l?x[c]:n[c],y[c]=d&&"function"!=typeof x[c]?n[c]:v&&l?a(f,r):m&&x[c]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):h&&"function"==typeof f?a(Function.call,f):f,h&&((y.virtual||(y.virtual={}))[c]=f,e&u.R&&b&&!b[c]&&o(b,c,f)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},d2c8:function(e,t,n){var r=n("aae3"),i=n("be13");e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(i(e))}},d3f4:function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},d74e:function(e,t){t.f={}.propertyIsEnumerable},d782:function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},d8e8:function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},d913:function(e,t,n){"use strict"; +/*! + * is-extendable + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */e.exports=function(e){return null!=e&&("object"==typeof e||"function"==typeof e)}},da3c:function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},db0c:function(e,t,n){e.exports=n("c764")},dc9b:function(e,t,n){var r=n("d13f"),i=n("cff3")(!1);r(r.S,"Object",{values:function(e){return i(e)}})},e5fa:function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},f2fe:function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},f6fd:function(e,t){!function(e){var t=e.getElementsByTagName("script");"currentScript"in e||Object.defineProperty(e,"currentScript",{get:function(){try{throw new Error}catch(r){var e,n=(/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(r.stack)||[!1])[1];for(e in t)if(t[e].src==n||"interactive"==t[e].readyState)return t[e];return null}}})}(document)},f845:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},fb15:function(e,t,n){"use strict";var r;(n.r(t),"undefined"!=typeof window)&&(n("f6fd"),(r=window.document.currentScript)&&(r=r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))&&(n.p=r[1]));var i=n("db0c"),a=n.n(i),o=(n("6762"),n("2fdb"),n("0a0d")),s=n.n(o),u=(n("aef6"),n("28a5"),n("74a0")),c=n.n(u);function l(e,t,n){return"text"===t&&(e=c()(e)),'').concat(e,"")}n("a481");var f=function(e){return e.replace("\n","
")},p=n("954e"),d=n.n(p),g=function(e){return d()(e.replace(/
/gm,"\n").replace(/<\/?[^>]*>/gm,""))},h=(n("6b54"),n("72d6")),v=n.n(h);function m(e,t){var n=window.getSelection();e.focus(),n.removeAllRanges(),n.addRange(t)}var y=function(e,t){if(document.activeElement===e){var n=window.getSelection();if(1==arguments.length){if(!n.rangeCount)return;var r={},i=(c=n.getRangeAt(0)).cloneRange();return i.selectNodeContents(e),i.setEnd(c.endContainer,c.endOffset),r.end=i.toString().length,i.setStart(c.startContainer,c.startOffset),r.start=r.end-i.toString().length,r.atStart=0===i.startOffset,r.commonAncestorContainer=i.commonAncestorContainer,r.endContainer=i.endContainer,r.startContainer=i.startContainer,r}for(var a,o,s=t.end&&t.end!==t.start,u=0,c=document.createRange(),l=v()(e).select(Node.TEXT_NODE).revisit(!1),f=t.start>e.textContent.length?e.textContent.length:t.start,p=t.end>e.textContent.length?e.textContent.length:t.end,d=t.atStart;a=l.next();){var g=u;u+=a.textContent.length;var h=d?u>f:u>=f;if(!o&&h&&(o=!0,c.setStart(a,f-g),!s)){c.collapse(!0),m(e,c);break}if(s&&u>=p){c.setEnd(a,p-g),m(e,c);break}}}},b=(n("4917"),function(e,t){var n=e.slice(0,t),r=n.lastIndexOf("\n")+1;return n.slice(r)}),x=/^\s+/,w=/^(\t| {2})* {2}$/,k={shift:16,ctrl:17,alt:18,pauseBreak:19,capsLock:20,esc:27,pageUp:33,pageDown:34,end:35,home:36,arrowLeft:37,arrowUp:38,arrowRight:39,arrowDown:40,printScreen:44,meta:91,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,numLock:144,scrollLock:145},S={model:{prop:"code",event:"change"},props:{emitEvents:{type:Boolean,default:!1},language:{type:String,default:"js"},lineNumbers:{type:Boolean,default:!1},autoStyleLineNumbers:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},code:{type:String,default:""}},data:function(){return{undoStack:[],selection:void 0,lineNumbersHeight:"20px",undoOffset:0,undoTimestamp:0,lastPos:0,codeData:"",composing:!1}},watch:{code:{immediate:!0,handler:function(e){this.codeData=e||""}},content:{immediate:!0,handler:function(){var e=this;this.lineNumbers&&this.$nextTick((function(){e.setLineNumbersHeight()}))}},lineNumbers:function(){var e=this;this.$nextTick((function(){e.styleLineNumbers(),e.setLineNumbersHeight()}))}},computed:{content:function(){return function(e,t){if(!t)return l(e,"text","text");var n=t=t.toLowerCase();return"vue"!==t&&"html"!==t||(t="markup"),"md"===t&&(t="markdown"),"ts"===t&&(t="typescript"),Prism.languages[t]?l(Prism.highlight(e,Prism.languages[t],t),n,t):l(e,"text","text")}(this.codeData||"",this.language)},lineNumbersCount:function(){var e=this.codeData.split(/\r\n|\n/).length;return this.codeData.endsWith("\n")&&e--,e}},updated:function(){this.selection&&y(this.$refs.pre,this.selection)},mounted:function(){var e=this;this.recordChange(this.getPlain()),this.undoTimestamp=0,this.styleLineNumbers();var t=function(t){t.preventDefault();var n=y(e.$refs.pre),r=(t.originalEvent||t).clipboardData.getData("Text");document.execCommand("insertHTML",!1,c()(r));var i=n.end+r.length;e.selection={start:i,end:i};var a=e.getPlain();e.recordChange(a,e.selection),e.updateContent(a),e.setLineNumbersHeight()},n=this.$refs.pre;n.addEventListener("paste",t),this.$once("hook:beforeDestroy",(function(){n.removeEventListener("paste",t)})),n.addEventListener("compositionstart",(function(){e.composing=!0})),n.addEventListener("compositionend",(function(){e.composing=!1}))},methods:{setLineNumbersHeight:function(){this.lineNumbersHeight=getComputedStyle(this.$refs.pre).height},styleLineNumbers:function(){if(this.lineNumbers&&this.autoStyleLineNumbers){var e=this.$refs.pre,t=this.$el.querySelector(".prism-editor__line-numbers"),n=window.getComputedStyle(e);this.$nextTick((function(){var r="border-top-left-radius",i="border-bottom-left-radius";t.style[r]=n[r],t.style[i]=n[i],e.style[r]=0,e.style[i]=0;["background-color","margin-top","padding-top","font-family","font-size","line-height"].forEach((function(e){t.style[e]=n[e]})),t.style["margin-bottom"]="-"+n["padding-top"]}))}},handleClick:function(e){this.emitEvents&&this.$emit("editorClick",e),this.undoTimestamp=0,this.selection=y(this.$refs.pre)},getPlain:function(){if(this._innerHTML===this.$refs.pre.innerHTML)return this._plain;var e=g(f(this.$refs.pre.innerHTML));return this._innerHTML=this.$refs.pre.innerHTML,this._plain=e,this._plain},recordChange:function(e,t){if(e!==this.undoStack[this.undoStack.length-1]){this.undoOffset>0&&(this.undoStack=this.undoStack.slice(0,-this.undoOffset),this.undoOffset=0);var n=s()(),r={plain:e,selection:t};n-this.undoTimestamp<3e3?this.undoStack[this.undoStack.length-1]=r:(this.undoStack.push(r),this.undoStack.length>50&&this.undoStack.shift()),this.undoTimestamp=n}},updateContent:function(e){this.$emit("change",e),this.$emit("update:code",e)},restoreStackState:function(e){var t=this.undoStack[this.undoStack.length-1-e],n=t.plain,r=t.selection;this.selection=r,this.undoOffset=e,this.updateContent(n)},undo:function(){var e=this.undoOffset+1;e>=this.undoStack.length||this.restoreStackState(e)},redo:function(){var e=this.undoOffset-1;e<0||this.restoreStackState(e)},handleKeyDown:function(e){if(this.emitEvents&&this.$emit("keydown",e),9!==e.keyCode||this.ignoreTabKey)if(8===e.keyCode){var t=y(this.$refs.pre),n=t.start;if(n!==t.end)return;var r=function(e,t){var n=b(e,t);return w.test(n)?2:0}(this.$refs.pre.innerText,n);if(r<=0)return;for(var i=0;i=e&&(this._reset(1===e),this._props.isRepeat?requestAnimationFrame(this._play):this._props.isPlaying=!1)},e.prototype._play=function(){var t=this._props,e=t.isBounds?t.leftBound:t.progress,n=t.progress>=this._getBound("right")?e:t.progress;1===n&&(n=t.isBounds?t.leftBound:0),0!==n&&this._sysTween.setProgress(n),this._sysTween.play()},e.prototype._reset=function(t){this._sysTween.reset(),this.timeline.reset()},e.prototype._setPlayState=function(t){var e=this;clearTimeout(this._playTimeout),this._playTimeout=setTimeout((function(){e.playButton&&e.playButton[t](!1)}),20)},e.prototype._onSysTweenComplete=function(t){},e.prototype._onPlayStateChange=function(t){this._props.isPlaying=t,t?this._play():this._sysTween.pause();var e=this._props.onPlayStateChange;this._isFunction(e)&&e(t)},e.prototype._onHideStateChange=function(t){this._props.isHidden=t;var e=this._props.onToggleHide;this._isFunction(e)&&e(t);var n=t?"add":"remove";this.el.classList[n](w["is-hidden"]),1==this._hideCount++&&this.el.classList.add(w["is-transition"])},e.prototype._onStop=function(){var t=this._props;t.isPlaying=!1;var e=t.isBounds?t.leftBound:0;this._sysTween.setProgress(e+.01),this._sysTween.setProgress(e),this._reset()},e.prototype._onRepeatStateChange=function(t){this._props.isRepeat=t},e.prototype._boundsStateChange=function(t){this.playerSlider._props.isBounds=t,this.playerSlider[(t?"enable":"disable")+"Bounds"](),this._props.isBounds=t},e.prototype._onSpeedChange=function(t,e){this._props["raw-speed"]=e,this._props.speed=t,this._sysTween.setSpeed(t)},e.prototype._onIsSpeed=function(t){this._props.isSpeed=t},e.prototype._onLeftProgress=function(t){this._props.leftBound=t},e.prototype._onProgress=function(t){this._props.progress=t,this.timeline.setProgress(t)},e.prototype._onRightProgress=function(t){this._props.rightBound=t},e.prototype._onUnload=function(t){if(!this._props.isSaveState)return localStorage.removeItem(this._localStorage);var e=(0,u.default)({},this._props);delete e.parent,delete e.className,delete e.isSaveState,delete e.precision,localStorage.setItem(this._localStorage,(0,a.default)(e))},e.prototype._fallbackTo=function(t,e){return null!=t?t:e},e.prototype._getBound=function(t){var e=this._props,n="left"===t?0:1;return e.isBounds?e[t+"Bound"]:n},e.prototype._defer=function(t){setTimeout(t.bind(this),1)},e.prototype._hashCode=function(t){var e,n,i=0;if(0===t.length)return i;for(e=0,n=t.length;e=e.length?{value:void 0,done:!0}:(t=i(e,n),this._i+=t.length,{value:t,done:!1})}))},function(t,e,n){var i=n(8),s=n(9);t.exports=function(t){return function(e,n){var o,r,a=String(s(e)),u=i(n),l=a.length;return u<0||u>=l?t?"":void 0:(o=a.charCodeAt(u))<55296||o>56319||u+1===l||(r=a.charCodeAt(u+1))<56320||r>57343?t?a.charAt(u):o:t?a.slice(u,u+2):r-56320+(o-55296<<10)+65536}}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var i=n(11),s=n(12),o=n(28),r=n(17),a=n(29),u=n(30),l=n(46),p=n(48),c=n(47)("iterator"),h=!([].keys&&"next"in[].keys()),d="keys",f="values",_=function(){return this};t.exports=function(t,e,n,v,y,g,m){u(n,e,v);var b,x,S,w=function(t){if(!h&&t in C)return C[t];switch(t){case d:case f:return function(){return new n(this,t)}}return function(){return new n(this,t)}},P=e+" Iterator",T=y==f,k=!1,C=t.prototype,E=C[c]||C["@@iterator"]||y&&C[y],M=E||w(y),j=y?T?w("entries"):M:void 0,L="Array"==e&&C.entries||E;if(L&&(S=p(L.call(new t)))!==Object.prototype&&S.next&&(l(S,P,!0),i||"function"==typeof S[c]||r(S,c,_)),T&&E&&E.name!==f&&(k=!0,M=function(){return E.call(this)}),i&&!m||!h&&!k&&C[c]||r(C,c,M),a[e]=M,a[P]=_,y)if(b={values:T?M:w(f),keys:g?M:w(d),entries:j},m)for(x in b)x in C||o(C,x,b[x]);else s(s.P+s.F*(h||k),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){var i=n(13),s=n(14),o=n(15),r=n(17),a=n(27),u="prototype",l=function(t,e,n){var p,c,h,d=t&l.F,f=t&l.G,_=t&l.S,v=t&l.P,y=t&l.B,g=t&l.W,m=f?s:s[e]||(s[e]={}),b=m[u],x=f?i:_?i[e]:(i[e]||{})[u];for(p in f&&(n=e),n)(c=!d&&x&&void 0!==x[p])&&a(m,p)||(h=c?x[p]:n[p],m[p]=f&&"function"!=typeof x[p]?n[p]:y&&c?o(h,i):g&&x[p]==h?function(t){var e=function(e,n,i){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,i)}return t.apply(this,arguments)};return e[u]=t[u],e}(h):v&&"function"==typeof h?o(Function.call,h):h,v&&((m.virtual||(m.virtual={}))[p]=h,t&l.R&&b&&!b[p]&&r(b,p,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e,n){var i=n(16);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,s){return t.call(e,n,i,s)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var i=n(18),s=n(26);t.exports=n(22)?function(t,e,n){return i.f(t,e,s(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var i=n(19),s=n(21),o=n(25),r=Object.defineProperty;e.f=n(22)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),s)try{return r(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var i=n(20);t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(22)&&!n(23)((function(){return 7!=Object.defineProperty(n(24)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){t.exports=!n(23)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(20),s=n(13).document,o=i(s)&&i(s.createElement);t.exports=function(t){return o?s.createElement(t):{}}},function(t,e,n){var i=n(20);t.exports=function(t,e){if(!i(t))return t;var n,s;if(e&&"function"==typeof(n=t.toString)&&!i(s=n.call(t)))return s;if("function"==typeof(n=t.valueOf)&&!i(s=n.call(t)))return s;if(!e&&"function"==typeof(n=t.toString)&&!i(s=n.call(t)))return s;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){t.exports=n(17)},function(t,e){t.exports={}},function(t,e,n){"use strict";var i=n(31),s=n(26),o=n(46),r={};n(17)(r,n(47)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=i(r,{next:s(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var i=n(19),s=n(32),o=n(44),r=n(41)("IE_PROTO"),a=function(){},u="prototype",l=function(){var t,e=n(24)("iframe"),i=o.length;for(e.style.display="none",n(45).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" - - - - diff --git a/docs/.vuepress/components/DemoElegantTriangles.vue b/docs/.vuepress/components/DemoElegantTriangles.vue deleted file mode 100644 index 560fd587..00000000 --- a/docs/.vuepress/components/DemoElegantTriangles.vue +++ /dev/null @@ -1,135 +0,0 @@ - - - diff --git a/docs/.vuepress/components/DemoExpandingCircles.vue b/docs/.vuepress/components/DemoExpandingCircles.vue deleted file mode 100644 index 8aa6bef9..00000000 --- a/docs/.vuepress/components/DemoExpandingCircles.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - - diff --git a/docs/.vuepress/components/DemoFunkySquare.vue b/docs/.vuepress/components/DemoFunkySquare.vue deleted file mode 100644 index 75e15668..00000000 --- a/docs/.vuepress/components/DemoFunkySquare.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - diff --git a/docs/.vuepress/components/DemoLove.vue b/docs/.vuepress/components/DemoLove.vue deleted file mode 100644 index cc23f39b..00000000 --- a/docs/.vuepress/components/DemoLove.vue +++ /dev/null @@ -1,740 +0,0 @@ - - - - - diff --git a/docs/.vuepress/components/DemoMojsLogoReveal.vue b/docs/.vuepress/components/DemoMojsLogoReveal.vue deleted file mode 100644 index d0ff0b37..00000000 --- a/docs/.vuepress/components/DemoMojsLogoReveal.vue +++ /dev/null @@ -1,355 +0,0 @@ -/** -Usage: - - -*/ - - - - - diff --git a/docs/.vuepress/components/DemoSpeechBubble.vue b/docs/.vuepress/components/DemoSpeechBubble.vue deleted file mode 100644 index 6cfc9ed9..00000000 --- a/docs/.vuepress/components/DemoSpeechBubble.vue +++ /dev/null @@ -1,241 +0,0 @@ - - - diff --git a/docs/.vuepress/components/DemoTriangles.vue b/docs/.vuepress/components/DemoTriangles.vue deleted file mode 100644 index 52340e01..00000000 --- a/docs/.vuepress/components/DemoTriangles.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - diff --git a/docs/.vuepress/components/ExampleCircle.vue b/docs/.vuepress/components/ExampleCircle.vue deleted file mode 100644 index 5346da72..00000000 --- a/docs/.vuepress/components/ExampleCircle.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/docs/.vuepress/components/ExampleSpinner.vue b/docs/.vuepress/components/ExampleSpinner.vue deleted file mode 100644 index bda37d5e..00000000 --- a/docs/.vuepress/components/ExampleSpinner.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/docs/.vuepress/components/Home.vue b/docs/.vuepress/components/Home.vue deleted file mode 100644 index 11ab7511..00000000 --- a/docs/.vuepress/components/Home.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - - - diff --git a/docs/.vuepress/components/LayoutHome.vue b/docs/.vuepress/components/LayoutHome.vue deleted file mode 100644 index d7e26ea8..00000000 --- a/docs/.vuepress/components/LayoutHome.vue +++ /dev/null @@ -1,149 +0,0 @@ - - - - - diff --git a/docs/.vuepress/components/MojsCode.vue b/docs/.vuepress/components/MojsCode.vue deleted file mode 100644 index df3f92dd..00000000 --- a/docs/.vuepress/components/MojsCode.vue +++ /dev/null @@ -1,80 +0,0 @@ -/* -A simplified version of MojsInteractive that can't be edited, -but has more flexibility regarding the code. - -Usage: - -```js -new mojs.Shape({ - shape: 'circle', - isShowStart: true, -}); -``` - -*/ - - - diff --git a/docs/.vuepress/components/MojsCurveEditorExample.vue b/docs/.vuepress/components/MojsCurveEditorExample.vue deleted file mode 100644 index e65de2f9..00000000 --- a/docs/.vuepress/components/MojsCurveEditorExample.vue +++ /dev/null @@ -1,101 +0,0 @@ -/** -Usage: - - -*/ - - - - - diff --git a/docs/.vuepress/components/MojsInteractive.vue b/docs/.vuepress/components/MojsInteractive.vue deleted file mode 100644 index 90bb3674..00000000 --- a/docs/.vuepress/components/MojsInteractive.vue +++ /dev/null @@ -1,251 +0,0 @@ -/** -Usage: - - -With autoplay on the timeline: - - -or if you wanna declare a height: - - - -or with no controlls (will have no animation, unless you provide a .play() function yourself): - - - -If you want to show (and use) the declaration of the animation like this: - -const bouncyCircle = new mojs.Shape({ - ... -}); - -bouncyCircle.play() - -Then you may wanna use the global mode. -The string passed in the global prop should equal the variable you declared. -Note that it will be global, so make sure it's unique, and use it carefully: - - - - -*/ - - - - - - diff --git a/docs/.vuepress/components/More.vue b/docs/.vuepress/components/More.vue deleted file mode 100644 index 178d0c94..00000000 --- a/docs/.vuepress/components/More.vue +++ /dev/null @@ -1,61 +0,0 @@ -/** -Usage: - - Content - - -TODO: Add aria roles, or try make vue-badger-accordion work within vuepress -*/ - - - - - diff --git a/docs/.vuepress/components/ShapeSwirlCustomShapeOne.vue b/docs/.vuepress/components/ShapeSwirlCustomShapeOne.vue deleted file mode 100644 index 1398a715..00000000 --- a/docs/.vuepress/components/ShapeSwirlCustomShapeOne.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - diff --git a/docs/.vuepress/components/ShapeSwirlCustomShapeThree.vue b/docs/.vuepress/components/ShapeSwirlCustomShapeThree.vue deleted file mode 100644 index 2a93a0cb..00000000 --- a/docs/.vuepress/components/ShapeSwirlCustomShapeThree.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/docs/.vuepress/components/ShapeSwirlCustomShapeTwo.vue b/docs/.vuepress/components/ShapeSwirlCustomShapeTwo.vue deleted file mode 100644 index 952ccccf..00000000 --- a/docs/.vuepress/components/ShapeSwirlCustomShapeTwo.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index e1de8afd..00000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,114 +0,0 @@ -module.exports = { - // plugins: [ - // require('./style') - // ], - title: 'mo.js', - description: 'The official website for mojs', - head: [ - ['link', { rel: "apple-touch-icon", sizes: "180x180", href: "/assets/favicons/apple-touch-icon.png"}], - ['link', { rel: "icon", type: "image/png", sizes: "32x32", href: "/assets/favicons/favicon-32x32.png"}], - ['link', { rel: "icon", type: "image/png", sizes: "16x16", href: "/assets/favicons/favicon-16x16.png"}], - ['link', { rel: "manifest", href: "/assets/favicons/site.webmanifest"}], - ['link', { rel: "mask-icon", href: "/assets/favicons/safari-pinned-tab.svg", color: "#3a0839"}], - ['link', { rel: "shortcut icon", href: "/assets/favicons/favicon.ico"}], - ['meta', { name: "msapplication-TileColor", content: "#3a0839"}], - ['meta', { name: "msapplication-config", content: "/assets/favicons/browserconfig.xml"}], - ['meta', { name: "theme-color", content: "#ffffff"}], - ], - - themeConfig: { - logo: '/assets/img/logo.svg', - nav: [ - { text: 'Home', link: '/' }, - { text: 'Tutorials', link: '/tutorials/' }, - { text: 'Api', link: '/api/' }, - { text: 'Tools', link: '/tools/' }, - // { - // text: 'Example dropdown list', - // items: [ - // { text: 'Tutorials', link: '/tutorials/' }, - // { text: 'Api', link: '/api/' }, - // ] - // }, - { text: 'Github', link: 'https://github.com/mojs' }, - ], - sidebar: [ - { - title: 'Tutorials', - children: [ - '/tutorials/', - '/tutorials/getting-started.md', - '/tutorials/shape-swirl/', - '/tutorials/burst/', - '/tutorials/usage-with-react.md', - ] - }, - { - title: 'Tools', - children: [ - '/tools/', - '/tools/player/', - '/tools/curve-editor/', - '/tools/timeline-editor/', - ] - }, - { - title: 'API', - sidebarDepth: 2, - collapsable: true, - children: [ - '/api/', - { - title: 'Modules', - collapsable: false, - children: [ - '/api/modules/html/', - '/api/modules/shape/', - '/api/modules/shape-swirl/', - '/api/modules/burst/', - ] - }, - { - title: 'Tweens', - collapsable: false, - children: [ - '/api/tweens/tween.md', - '/api/tweens/timeline.md', - ] - }, - { - title: 'Utils', - collapsable: false, - children: [ - '/api/utils/stagger.md', - ] - }, - { - title: 'Easing', - collapsable: false, - children: [ - '/api/easing/base-functions.md', - '/api/easing/bezier-curves.md', - '/api/easing/path-easing.md', - '/api/easing/approximate.md', - ] - }, - { - title: 'Syntax', - collapsable: false, - children: [ - '/api/syntax/stagger.md', - '/api/syntax/rand.md', - '/api/syntax/property-maps.md', - '/api/syntax/units.md', - ] - }, - ] - }, - ] - // displayAllHeaders: true, // Default: false - // sidebar: 'auto', - - } - -} diff --git a/docs/.vuepress/public/README.md b/docs/.vuepress/public/README.md deleted file mode 100644 index d0d030bc..00000000 --- a/docs/.vuepress/public/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# mojs.github.io -This is the deployed branch for mo · js. To edit the source files. Checkout to the source branch. - -![mo · js](logo.png "mo · js") diff --git a/docs/.vuepress/styles/index.styl b/docs/.vuepress/styles/index.styl deleted file mode 100644 index d095ad93..00000000 --- a/docs/.vuepress/styles/index.styl +++ /dev/null @@ -1,254 +0,0 @@ -@require './palette.styl' - -html, body { - color: $textColor; - background: $bgColor; - font-family 'Century Gothic', AppleGothic, 'CenturyGothic', apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif -} - -// Overrides of vuepress -:root { - h1, h2, h3, h4, h5, h5 { - font-weight: 400; - } - h1, h2 { - color: $accentColor; - } - h2 { - border: none - } - h4 { - font-weight: bold; - } - p, ul, ol { - line-height 2 // prevent inline code block from colliding with each other - } - .navbar { - background-color: $navbarBg; - border: none; - position: sticky; - top: 0; - z-index: 200; - .links { - background-color: transparent; - } - } - - .sidebar { - background-color: $sidebarBg; - z-index: 100; - - &-mask { - background-color: $sidebarBg; - opacity: 0.85; - } - } - - .content__default { - max-width: 60em; - margin: 0 auto; - padding: 0 4%; - } - - a { - font-weight: bold; - } - - a .icon { - margin-left: $s-small; - } - - // Custom blocks - .custom-block { - background-color $c-purple-light - color: $textColor - &.tip, &.warning, &.danger { - background-color $c-purple-light - } - &.tip { - border-color $c-green - } - &.warning { - border-color $c-yellow - .custom-block-title { - color $c-yellow - } - } - &.danger { - border-color $c-red - .custom-block-title { - color $c-red - } - } - } - - // Code formating - .content__default { - code { - color $c-orange - padding 0.25rem 0.5rem - margin 0 - font-size 0.85em - background-color transparent - border 1px solid $c-orange - border-radius 3px - user-select all // autoselect smaller inline styles but not larger code blocks that has a language specified - } - pre { - code { - border none - } - } - .language-javascript, .language-js, .language-jsx { - code { - user-select auto - } - } - } - -} - -// Own components -hr - border 0 - border-top 1px solid $borderColor - position relative - margin-top 4rem - margin-bottom 2rem - overflow visible - &:after - content '' - display block - position absolute - top -0.5rem - left 0 - width 4rem - height .875rem - padding-right 1rem - background: $c-purple url('/assets/img/symbols.svg') no-repeat; - - -.example-anim { - background: #f1e2d7; - width: 100%; - height: 300px; - position: relative; - svg { - overflow: visible // for overshoots animations - } -} - -// Temp button. Use the "material design" button from the original site instead -.button { - background: $accentColor; - color: $textColor; - border: none; - padding: 1em 2em; - font-size: 0.7rem; - font-family: inherit; - font-weight: bold; - border-radius: 4px; - cursor: pointer; - text-transform: uppercase; - &--secondary { - background: $c-purple; - border: 1px solid $accentColor; - color: $accentColor; - } - &--icon { - background: transparent; - font-size: 2rem; - padding: 0.4em; - line-height: 1; - color: $accentColor; - } -} - -.button + .button { - margin-left: 0.5rem -} - -blockquote { - display: flex; - align-items: center; - border: none; - color: inherit; - padding-left: 0; - &:before { - content: ""; - display: block; - height: 4rem; - width: 0.875rem; // 0,21875; - background: url('/assets/img/symbols_vertical.svg') no-repeat; - border-right: 2px solid $accentColor; - margin-right: 1rem; - padding-right: 1rem; - } -} - -// MojsCode / MojsInteractive components -.mojs-interactive__code { - position: relative; - padding-bottom: 1.2em; -} -.mojs-interactive__code .buttons { - position: absolute; - bottom: 1rem; - right: 1rem; -} - -.mojs-interactive__result { - position: relative; -} -.mojs-interactive__result { - background: #f1e2d7; - width: 100%; - height: 400px; - position: relative; - overflow: hidden; -} -.mojs-interactive__result--dark { - background: $c-purple-dark; -} -.mojs-interactive__result--transparent { - background: none -} -.mojs-interactive__result svg { - overflow: visible -} - -.mojs-interactive__controller { - position: absolute; - bottom: 0; - left: 0; - right: 0; - z-index: 0; -} -.mojs-interactive__controller .controller { - position: absolute -} -.mojs-interactive__clicknotice { - font-size: 0.85em - color: $c-white - background: $c-purple-light - padding: $s-small $s-large - margin: 0 -} - -// MoJs curve editor -._curve-editor_10g8s_3 { - z-index: 200 !important; -} - -// Some helpclasses -:root { - .no-pointer { - pointer-events: none; - } - - .measure-grid { - background: $c-creamy url('/assets/img/measure-grid.svg') repeat-x; - background-size: 2000px 1000px; - background-position: center left; - } -} diff --git a/docs/.vuepress/styles/palette.styl b/docs/.vuepress/styles/palette.styl deleted file mode 100644 index 3ea260df..00000000 --- a/docs/.vuepress/styles/palette.styl +++ /dev/null @@ -1,52 +0,0 @@ -// colors - -// From old site -$c-orange = #F64040 -$c-pink = #FC46AD - -$c-green = #00F87F -$c-yellow = #FFE952 -$c-red = $c-orange -$c-cyan = #31FFD1 -$c-blue = #00AADA -$c-purple = #3A0839 -$c-purple-light = #4E214D -$c-purple-dark = #2b062a -$c-white = #FDF7F7 - -$c-creamy = rgb(241, 226, 215) // #f1e2d7 - -$c-orange-semi = rgba($c-orange, 0.5) -// c-white-transparent = rgba(white, .2) -// c-white-semi = rgba(white, .97) -// c-creamy-semi = rgba(c-creamy, .2) - -// Colors used in theme -$accentColor = $c-orange -$textColor = $c-creamy -$bgColor = $c-purple -$borderColor = $c-orange-semi -$codeBgColor = $c-purple-dark -$arrowBgColor = #ccc - - -// layout -$navbarHeight = 3.6rem -$navbarBg = $c-purple-light -$sidebarWidth = 20rem -$sidebarBg = $c-purple -$contentWidth = 740px - -// spacing -$s-small = 0.4rem -$s-medium = 0.85rem -$s-large = 1.5rem - -// responsive breakpoints -$MQNarrow = 959px -$MQMobile = 719px -$MQMobileNarrow = 419px - -// code -$lineNumbersWrapperWidth = 3.5rem -$codeLang = js ts html md vue css sass scss less stylus go java c sh yaml py diff --git a/docs/.vuepress/util/index.js b/docs/.vuepress/util/index.js deleted file mode 100644 index 9913ff7e..00000000 --- a/docs/.vuepress/util/index.js +++ /dev/null @@ -1,239 +0,0 @@ -export const hashRE = /#.*$/ -export const extRE = /\.(md|html)$/ -export const endingSlashRE = /\/$/ -export const outboundRE = /^(https?:|mailto:|tel:)/ - -export function normalize (path) { - return decodeURI(path) - .replace(hashRE, '') - .replace(extRE, '') -} - -export function getHash (path) { - const match = path.match(hashRE) - if (match) { - return match[0] - } -} - -export function isExternal (path) { - return outboundRE.test(path) -} - -export function isMailto (path) { - return /^mailto:/.test(path) -} - -export function isTel (path) { - return /^tel:/.test(path) -} - -export function ensureExt (path) { - if (isExternal(path)) { - return path - } - const hashMatch = path.match(hashRE) - const hash = hashMatch ? hashMatch[0] : '' - const normalized = normalize(path) - - if (endingSlashRE.test(normalized)) { - return path - } - return normalized + '.html' + hash -} - -export function isActive (route, path) { - const routeHash = route.hash - const linkHash = getHash(path) - if (linkHash && routeHash !== linkHash) { - return false - } - const routePath = normalize(route.path) - const pagePath = normalize(path) - return routePath === pagePath -} - -export function resolvePage (pages, rawPath, base) { - if (base) { - rawPath = resolvePath(rawPath, base) - } - const path = normalize(rawPath) - for (let i = 0; i < pages.length; i++) { - if (normalize(pages[i].regularPath) === path) { - return Object.assign({}, pages[i], { - type: 'page', - path: ensureExt(pages[i].path) - }) - } - } - console.error(`[vuepress] No matching page found for sidebar item "${rawPath}"`) - return {} -} - -function resolvePath (relative, base, append) { - const firstChar = relative.charAt(0) - if (firstChar === '/') { - return relative - } - - if (firstChar === '?' || firstChar === '#') { - return base + relative - } - - const stack = base.split('/') - - // remove trailing segment if: - // - not appending - // - appending to trailing slash (last segment is empty) - if (!append || !stack[stack.length - 1]) { - stack.pop() - } - - // resolve relative path - const segments = relative.replace(/^\//, '').split('/') - for (let i = 0; i < segments.length; i++) { - const segment = segments[i] - if (segment === '..') { - stack.pop() - } else if (segment !== '.') { - stack.push(segment) - } - } - - // ensure leading slash - if (stack[0] !== '') { - stack.unshift('') - } - - return stack.join('/') -} - -/** - * @param { Page } page - * @param { string } regularPath - * @param { SiteData } site - * @param { string } localePath - * @returns { SidebarGroup } - */ -export function resolveSidebarItems (page, regularPath, site, localePath) { - const { pages, themeConfig } = site - - const localeConfig = localePath && themeConfig.locales - ? themeConfig.locales[localePath] || themeConfig - : themeConfig - - const pageSidebarConfig = page.frontmatter.sidebar || localeConfig.sidebar || themeConfig.sidebar - if (pageSidebarConfig === 'auto') { - return resolveHeaders(page) - } - - const sidebarConfig = localeConfig.sidebar || themeConfig.sidebar - if (!sidebarConfig) { - return [] - } else { - const { base, config } = resolveMatchingConfig(regularPath, sidebarConfig) - return config - ? config.map(item => resolveItem(item, pages, base)) - : [] - } -} - -/** - * @param { Page } page - * @returns { SidebarGroup } - */ -function resolveHeaders (page) { - const headers = groupHeaders(page.headers || []) - return [{ - type: 'group', - collapsable: false, - title: page.title, - path: null, - children: headers.map(h => ({ - type: 'auto', - title: h.title, - basePath: page.path, - path: page.path + '#' + h.slug, - children: h.children || [] - })) - }] -} - -export function groupHeaders (headers) { - // group h3s under h2 - headers = headers.map(h => Object.assign({}, h)) - let lastH2 - headers.forEach(h => { - if (h.level === 2) { - lastH2 = h - } else if (lastH2) { - (lastH2.children || (lastH2.children = [])).push(h) - } - }) - return headers.filter(h => h.level === 2) -} - -export function resolveNavLinkItem (linkItem) { - return Object.assign(linkItem, { - type: linkItem.items && linkItem.items.length ? 'links' : 'link' - }) -} - -/** - * @param { Route } route - * @param { Array | Array | [link: string]: SidebarConfig } config - * @returns { base: string, config: SidebarConfig } - */ -export function resolveMatchingConfig (regularPath, config) { - if (Array.isArray(config)) { - return { - base: '/', - config: config - } - } - for (const base in config) { - if (ensureEndingSlash(regularPath).indexOf(encodeURI(base)) === 0) { - return { - base, - config: config[base] - } - } - } - return {} -} - -function ensureEndingSlash (path) { - return /(\.html|\/)$/.test(path) - ? path - : path + '/' -} - -function resolveItem (item, pages, base, groupDepth = 1) { - if (typeof item === 'string') { - return resolvePage(pages, item, base) - } else if (Array.isArray(item)) { - return Object.assign(resolvePage(pages, item[0], base), { - title: item[1] - }) - } else { - if (groupDepth > 3) { - console.error( - '[vuepress] detected a too deep nested sidebar group.' - ) - } - const children = item.children || [] - if (children.length === 0 && item.path) { - return Object.assign(resolvePage(pages, item.path, base), { - title: item.title - }) - } - return { - type: 'group', - path: item.path, - title: item.title, - sidebarDepth: item.sidebarDepth, - children: children.map(child => resolveItem(child, pages, base, groupDepth + 1)), - collapsable: item.collapsable !== false - } - } -} diff --git a/docs/README.md b/docs/README.md deleted file mode 100755 index c7149b78..00000000 --- a/docs/README.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: LayoutHome -home: true -heroImage: /assets/img/hero.svg -actionText: Get Started → -actionLink: /tutorials/getting-started.md -features: -- title: Fast - details: Silky smooth animations and effects for staggering user's experience. - image: '/assets/img/features/feature-fast.png' - imageClass: 'feature__image--fast' - -- title: Retina Ready - details: Screen density independent effects look good on any device. - image: '/assets/img/features/feature-retina.png' - imageClass: 'feature__image--retina' - -- title: Simple - details: Simple declarative APIs to master your motion project with ease. - image: '/assets/img/features/feature-simple.png' - imageClass: 'feature__image--simple' - -- title: Modular - details: Custom build for the current project's needs. Bye bye large file size overheads. - image: '/assets/img/features/feature-modular.png' - imageClass: 'feature__image--modular' - -- title: Robust - details: 1580+ unit tests and ci techniques help us to carve & backstrap the reliable tool. - image: '/assets/img/features/feature-robust.png' - imageClass: 'feature__image--robust' - -- title: Open Sourced - details: Great growing community refines mo· js fast and ships frequently. - image: '/assets/img/features/feature-open-sourced.png' - imageClass: 'feature__image--open-sourced' - -footer: MIT Licensed | Copyright © 2016-present @legomushroom ---- diff --git a/docs/api/README.md b/docs/api/README.md deleted file mode 100755 index e9ca41d7..00000000 --- a/docs/api/README.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: API overview -sidebarDepth: 0 ---- - -# APIs - ---- - -## Modules -- [Html](modules/html/README.md) -- [Shape](modules/shape/README.md) -- [ShapeSwirl](modules/shape-swirl/README.md) -- [Burst](modules/burst/README.md) -- MotionPath *(soon)* -- Spriter *(soon)* -- Radial Spring *(soon)* -- Spring Wave *(soon)* -- Goo Transfroms *(soon)* -- Broom *(soon)* - -## Tweens -- [Tween](tweens/tween.md) -- [Timeline](tweens/timeline.md) - -## Utils -- [Stagger](utils/stagger.md) - -## Easing -- [Base Functions](easing/base-functions.md) -- [Bezier Curves](easing/bezier-curves.md) -- [Path Easing](easing/path-easing.md) -- Springs *(soon)* -- [Approximate](easing/approximate.md) -- Transforms *(soon)* -- Mixes *(soon)* - -## Syntax -- [Stagger Strings](syntax/stagger.md) -- [Rand Strings](syntax/rand.md) -- [Property Maps](syntax/property-maps.md) -- [Available Units](syntax/units.md) diff --git a/docs/api/easing/approximate.md b/docs/api/easing/approximate.md deleted file mode 100755 index 86c9d184..00000000 --- a/docs/api/easing/approximate.md +++ /dev/null @@ -1,29 +0,0 @@ -# Approximate - -- [CodePen Example](https://codepen.io/sandstedt/pen/yLJjMWP) - -The `approximate` function samples any given function with slow running time and returns new easing function with very fast one. The result still slower than `base easing functions` and may contain a tiny approximation error (by default less than `0.0001`). - -The syntax: - -```javascript - var fastEasing = mojs.easing.approximate( slowEasing, n = 4 ); - // where `n` is optional quantity of samples as `10^n` (larger `n` - smaller error). -``` - -Another strategy for the `approximate` function is to feed it with precomputed `JSON` data to same `CPU` pressure from presampling the slow function: - -```javascript - var samples = require('./samples.json'); - var fastEasing = mojs.easing.approximate( slowEasing, samples ); - // where `samples` is `JSON` object that contains presampled data. -``` - -You can have the presampled data by calling `getSamples` function: - -```javascript - var fastEasing = mojs.easing.approximate( slowEasing ); - var samples = fastEasing.getSamples(); -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/yLJjMWP) diff --git a/docs/api/easing/base-functions.md b/docs/api/easing/base-functions.md deleted file mode 100755 index 9a800931..00000000 --- a/docs/api/easing/base-functions.md +++ /dev/null @@ -1,67 +0,0 @@ -# Base Easing Functions - -- [CodePen Example](https://codepen.io/sandstedt/pen/BazxWag) - -The base easing functions could be expressed with strings that contain `easing name` and `direction` delimited by `.` or could be accessed directly on `mojs.easing` object: - -```javascript - // ... - easing: 'cubic.in', - // or - easing: mojs.easing.cubic.in - // ... -``` - -The full list of base functions: - -```javascript - - 'linear.none' - - 'ease.in' - 'ease.out' - 'ease.inout' - - 'sin.in' - 'sin.out' - 'sin.inout' - - 'quad.in' - 'quad.out' - 'quad.inout' - - 'cubic.in' - 'cubic.out' - 'cubic.inout' - - 'quart.in' - 'quart.out' - 'quart.inout' - - 'quint.in' - 'quint.out' - 'quint.inout' - - 'expo.in' - 'expo.out' - 'expo.inout' - - 'circ.in' - 'circ.out' - 'circ.inout' - - 'back.in' - 'back.out' - 'back.inout' - - 'elastic.in' - 'elastic.out' - 'elastic.inout' - - 'bounce.in' - 'bounce.out' - 'bounce.inout' - -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/BazxWag) diff --git a/docs/api/easing/bezier-curves.md b/docs/api/easing/bezier-curves.md deleted file mode 100755 index 84e6afb6..00000000 --- a/docs/api/easing/bezier-curves.md +++ /dev/null @@ -1,15 +0,0 @@ -# Bezier Curves - -- [CodePen Example](https://codepen.io/sandstedt/pen/QWErpLw) - -The bezier curves functions can be expressed with string containing `bezier()` function or with `mojs.easing.bezier` constructor that returns a function: - -```javascript - // ... - easing: 'bezier()', - // or - easing: mojs.easing.path('M0,100 C50,100 50,67.578125 50,50 C50,32.421875 50,0 100,0') - // ... -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/QWErpLw) diff --git a/docs/api/easing/path-easing.md b/docs/api/easing/path-easing.md deleted file mode 100755 index 7e620559..00000000 --- a/docs/api/easing/path-easing.md +++ /dev/null @@ -1,15 +0,0 @@ -# Path Easing - -- [CodePen Example](https://codepen.io/sandstedt/pen/oNLdBrq) - -The path easing functions can be expressed with string containing `svg` path cordinates or with `easing.path` constructor that returns a function: - -```javascript - // ... - easing: 'M0,100 C50,100 50,67.578125 50,50 C50,32.421875 50,0 100,0', - // or - easing: mojs.easing.path('M0,100 C50,100 50,67.578125 50,50 C50,32.421875 50,0 100,0') - // ... -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/oNLdBrq) diff --git a/docs/api/modules/burst/README.md b/docs/api/modules/burst/README.md deleted file mode 100644 index 7b411603..00000000 --- a/docs/api/modules/burst/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# Burst - -- [CodePen Example](https://codepen.io/sol0mka/pen/JKWKVR?editors=0010) -- [ShapeSwirl API](/api/modules/shape-swirl/) -- [Stagger Strings API](/api/utils/stagger.md) -- [Property Maps API](/api/syntax/property-maps.md) -- [Tween API](/api/tweens/tween.md) -- [Timeline API](/api/tweens/timeline.md) - -Full API reference: - -```javascript -const burst = new mojs.Burst({ - - /* BURST PROPERTIES */ - - // Parent of the module. {String, Object} [selector, HTMLElement] - parent: document.body, - - // Class name. {String} - className: '', - - // ∆ , Units :: Left position of the module. {Number, String} - left: '50%', - - // ∆ , Units :: Top position of the module. {Number, String} - top: '50%', - - // ∆ , Units :: X shift. {Number, String} - x: 0, - - // ∆ , Units :: Y shift. {Number, String} - y: 0, - - // ∆ :: Angle. {Number, String} - rotate: 0, - - // ∆ :: Scale of the module. {Number} - scale: 1, - - // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number} - scaleX: null, - - // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number} - scaleY: null, - - // ∆ , Unit :: Origin for `x`, `y`, `scale`, `rotate` properties. {String} - origin: '50% 50%', - - // ∆ :: Opacity. {Number} [ 0..1 ] - opacity: 1, - - /* - Radius of the radial shape that child particles form. Note that it has different meaning compared to shape-swirl. Burst `radius` defines radius of the children module - */ - radius: null, - - // Quantity of Burst particles. {Number} [ > 0 ] - count: 5, - - // Degree of circlular shape that the particles form. {Number} [ > 0 ] - degree: 360, - - // ∆ :: Radius of the Burst. {Number} - radius: { 0: 50 }, - - // ∆ :: Radius X of the Burst (fallbacks to `radius`). {Number} - radiusX: null, - - // ∆ :: Radius Y of the Burst (fallbacks to `radius`). {Number} - radiusY: null, - - // If should hide module with `transforms` instead of `display`. {Boolean} - isSoftHide: true, - - // If should trigger composite layer for the module. {Boolean} - isForce3d: false, - - // If should be shown before animation starts. {Boolean} - isShowStart: false, - - // If should stay shown after animation ends. {Boolean} - isShowEnd: true, - - // If refresh state on subsequent plays. {Boolean} - isRefreshState: true, - - /* - Options for each children ShapeSwirl element. {Object} - Supports `Stagger` strings for numeric values and `Property Maps` overall. - see `Stagger Strings` and `Property Maps` section for more info. - */ - children: { - /* (+) SHAPE SWIRL PROPERTIES AND CALLBACKS (excluding `x` and `y`) - see ShapeSwirl API */ - } - - // Options for timeline that controls all child and main Shape Swirls. {Object} - timeline: { - /* (+) TIMELINE PROPERTIES AND CALLBACKS - see Tween API */ - } - -}) - - /* - Creates next state transition chain. - @param options {Object} Next shape state. - */ - .then({ /* next state options */ }) - - /* - Tunes start state with new options. - @param options {Object} New start properties. - */ - .tune({ /* new start properties */ }) - - /* - Regenerates all randoms in initial properties. - */ - .generate() - - /* - Starts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .play( shift = 0 ) - /* - Starts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .playBackward( shift = 0 ) - /* - Pauses playback. - */ - .pause() - /* - Restarts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .replay( shift = 0 ) - /* - Restarts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .replayBackward( shift = 0 ) - /* - Resumes playback in direction it was prior to `pause`. - @param shift {Number} Start progress shift in milliseconds. - */ - .resume( shift = 0 ) - /* - Sets progress of the tween. - @param progress {Number} Progress to set [ 0..1 ]. - */ - .setProgress( progress ) - /* - Sets speed of the tween. - @param speed {Number} Progress to set [ 0..∞ ]. - */ - setSpeed ( speed ) - - /* Stops and resets the tween. */ - reset ( speed ) - -``` - -- [CodePen Example](https://codepen.io/sol0mka/pen/JKWKVR?editors=0010) -- [ShapeSwirl API](/api/modules/shape-swirl/) -- [Stagger Strings API](/api/utils/stagger.md) -- [Property Maps API](/api/syntax/property-maps.md) -- [Tween API](/api/tweens/tween.md) -- [Timeline API](/api/tweens/timeline.md) diff --git a/docs/api/modules/html/README.md b/docs/api/modules/html/README.md deleted file mode 100644 index 64623324..00000000 --- a/docs/api/modules/html/README.md +++ /dev/null @@ -1,260 +0,0 @@ -# Html - ---- - -## References: - -- [CodePen Example](https://codepen.io/sol0mka/pen/b8831849500f0d5cd0ab5691ebe17873?editors=0010) -- [Tween API](/api/tweens/tween.md) - -## Contents: - -- [Full API Reference](#full-api-reference) -- [Other CSS properties](#other-css-properties) -- [Teach mojs with customProperties](#teach-mojs-with-customproperties) -- [Independent deltas](#independent-deltas) - -## Full API Reference: - -The module has `transforms/opacity` (`x`, `y`, `opacity` etc.) predefined properties listed below. Browsers can handle animation of that properties easily, so ideally you should not use properties besides predefined set. - -```javascript -const html = new mojs.Html({ - // HTMLElement to animate. {String, Object} [selector, HTMLElement] - el: null, - // ∆ :: translateX property. {String, Number, Object} [value, delta] - x: 0, - // ∆ :: translateY property. {String, Number, Object} [value, delta] - y: 0, - // ∆ :: translateZ property. {String, Number, Object} [value, delta] - z: 0, - // ∆ :: skewX property. {String, Number, Object} [value, delta] - skewX: 0, - // ∆ :: skewY property. {String, Number, Object} [value, delta] - skewY: 0, - // ∆ :: rotateX property. {String, Number, Object} [value, delta] - rotateX: 0, - // ∆ :: rotateY property. {String, Number, Object} [value, delta] - rotateY: 0, - // ∆ :: rotateZ property. {String, Number, Object} [value, delta] - rotateZ: 0, - // ∆ :: scale property. {String, Number, Object} [value, delta] - scale: 1, - // ∆ :: scaleX property. {String, Number, Object} [value, delta] - scaleX: 1, - // ∆ :: scaleY property. {String, Number, Object} [value, delta] - scaleY: 1, - // ∆ :: opacity property. {String, Number, Object} [value, delta] - opacity: 1, - - /* - For other CSS properties please see `Other CSS properties` section. - */ - - // Custom properties to alter mojs behaviour (see `Teach mojs with customProperties` section). {Object} - customProperties: null, - // If should be shown before animation starts. {Boolean} - isShowStart: true, - // If should stay shown after animation ends. {Boolean} - isShowEnd: true, - // If should trigger composite layer for the module. {Boolean} - isForce3d: false, - // If should hide module with `transforms` instead of `display`. {Boolean} - isSoftHide: true, - // If refresh state on subsequent plays. {Boolean} - isRefreshState: true, - // Context callbacks will be called with. {Object} - callbacksContext: this - - /* TWEEN PROPERTIES */ - // Duration {Number} - duration: 350, - // Delay {Number} - delay: 0, - // If should repeat after animation finished {Number} *(1) - repeat: 0, - // Speed of the tween {Number}[0..∞] - speed: 1, - // If the progress should be flipped on repeat animation end {Boolean} - isYoyo: false, - // Easing function {String, Function}[ easing name, path coordinates, bezier string, easing function ] - easing: 'sin.out', - // Easing function for backward direction of the tween animation (fallbacks to `easing`) {String, Function}[ easing name, path coordinates, bezier string, easing function ] - backwardEasing: null, - // properties fro entire timeline - timeline: { - /* (+) TIMELINE PROPERTIES AND CALLBACKS - see Tween API */ - }, - - /* TWEEN CALLBACKS */ - /* - Fires on every update of the tween in any period (including delay periods). You probably want to use `onUpdate` method instead. - @param p {Number} Normal (not eased) progress. - @param isForward {Boolean} Direction of the progress. - @param isYoyo {Boolean} If in `yoyo` period. - */ - onProgress (p, isForward, isYoyo) {}, - /* - Fires when tween's the entire progress reaches `0` point(doesn't fire in repeat periods). - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onStart (isForward, isYoyo) {}, - /* - Fires when tween's the progress reaches `0` point in normal or repeat period. - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onFirstUpdate (isForward, isYoyo) {}, - /* - Fires on first update of the tween in sufficiently active period (excluding delay periods). - @param ep {Number} Eased progress. - @param p {Number} Normal (not eased) progress. - @param isForward {Boolean} Direction of the progress. - @param isYoyo {Boolean} If in `yoyo` period. - */ - onUpdate (ep, p, isForward, isYoyo) {}, - /* - Fires when tween's the progress reaches `1` point in normal or repeat period. - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onRepeatComplete (isForward, isYoyo) {}, - /* - Fires when tween's the entire progress reaches `1` point(doesn't fire in repeat periods). - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onComplete (isForward, isYoyo) {}, - /* Fires when the `.play` method called and tween isn't in play state yet. */ - onPlaybackStart () {}, - /* Fires when the `.pause` method called and tween isn't in pause state yet. */ - onPlaybackPause () {}, - /* Fires when the `.stop` method called and tween isn't in stop state yet. */ - onPlaybackStop () {}, - /* Fires when the tween end's animation (regardless progress) */ - onPlaybackComplete () {}, - -}) - /* - Creates next state transition chain. - @param options {Object} Next shape state. - */ - .then({ /* next state options */ }) - - /* - Starts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .play( shift = 0 ) - /* - Starts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .playBackward( shift = 0 ) - /* - Resumes playback in direction it was prior to `pause`. - @param shift {Number} Start progress shift in milliseconds. - */ - .resume( shift = 0 ) - /* - Pauses playback. - */ - .pause() - /* - Stops playback. - @param {Number} Progress to set after the stop [0...1]. - */ - .stop( progress = 0 ) - /* - Restarts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .replay( shift = 0 ) - /* - Restarts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .replayBackward( shift = 0 ) - /* - Sets progress of the tween. - @param progress {Number} Progress to set [ 0..1 ]. - */ - .setProgress( progress ) - /* - Sets speed of the tween. - @param speed {Number} Progress to set [ 0..∞ ]. - */ - .setSpeed ( speed ) - - /* Stops and resets the tween. */ - .reset ( speed ) - -``` - -### Other CSS properties - -Other `CSS` properties would be inferred automatically, please set them in `camelCase`: - -```javascript -const html = new mojs.Html({ - el: "#js-el", - borderColor: { cyan: "#FA3204" }, - borderWidth: { 2: 12 }, -}); -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/vYyazRm) - -### Teach mojs with customProperties - -If property doesn't work as expected you can teach `mojs` with a `customProperties` definition: - -```javascript -const html = new mojs.Html({ - el: "#js-el", - customProperties: { - originY: 50, - anotherCustomProp: 0, - draw(el, props) { - el.style["transformOrigin"] = `50% ${props.originY}%`; - }, - }, -}); -``` - -`customProperties` object should have - -- list of custom properties names with their `default` value (`originY: 50, anotherCustomProp: 0`). -- `draw` function that will be responsible for rendering that custom properties. It will be called on each animation frame and will be provided with `el` and `props` object that contain current states for all custom properties (`props.originY, props.anotherCustomProp`). Feel free to apply that state to the `el` any way that works for you. - -All custom properties are expected to be plain `numbers`, you can define `units` in the `draw` function. - -- [CodePen Example](https://codepen.io/sandstedt/pen/LYbMqqN?editors=0010) - -### Independent deltas - -All `delta` values of the `Html` module could have entire set of `Tween` properties and can be animated individually: - -```javascript -const html = new mojs.Html({ - el: "#js-el", - x: { 200: 0, delay: 200, duration: 2000, easing: "cubic.in" }, - y: { - 0: 200, - duration: 2000, - easing: "cubic.out", - onComplete() { - /* ... */ - }, - }, -}); -``` - -This makes `mojs` animations ultimately flexible. - -- [CodePen Example](https://codepen.io/sol0mka/pen/087649b78e2d8aa407fb73051d7770ec?editors=0010) - -References: - -- [Tween API](/api/tweens/tween.md) diff --git a/docs/api/modules/shape-swirl/README.md b/docs/api/modules/shape-swirl/README.md deleted file mode 100644 index eca0eacb..00000000 --- a/docs/api/modules/shape-swirl/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# ShapeSwirl - -- [CodePen Example](https://codepen.io/sol0mka/pen/pbebwQ?editors=0010) -- [Shape API](/api/modules/shape/README.md) -- [Tween API](/api/tweens/tween.md) - -Full API reference: - -```javascript -const shapeSwirl = new mojs.ShapeSwirl({ - - // ∆ :: Diviation size of sine. {Number} - swirlSize: 10, - - // ∆ :: Frequency of sine. {Number} - swirlFrequency: 3, - - // ∆ :: Sine length scale. {Number} [ 0..1 ] - pathScale: 1, - - // ∆ :: Degree shift for sine path. {Number} - degreeShift: 0, - - // [number: -1, 1] :: Directon of sine. {Number} [ -1, 1 ] - direction: 1 - - // If shape should follow sinusoidal path. {Boolean} - isSwirl: true - - /* (+) SHAPE PROPERTIES AND CALLBACKS - see Shape API */ - -}) - - /* - Creates next state transition chain. - @param options {Object} Next shape state. - */ - .then({ /* next state options */ }) - - /* - Tunes start state with new options. - @param options {Object} New start properties. - */ - .tune({ /* new start properties */ }) - - /* - Regenerates all randoms in initial properties. - */ - .generate() - - /* - Starts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .play( shift = 0 ) - /* - Starts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .playBackward( shift = 0 ) - /* - Pauses playback. - */ - .pause() - /* - Restarts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .replay( shift = 0 ) - /* - Restarts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .replayBackward( shift = 0 ) - /* - Resumes playback in direction it was prior to `pause`. - @param shift {Number} Start progress shift in milliseconds. - */ - .resume( shift = 0 ) - /* - Sets progress of the tween. - @param progress {Number} Progress to set [ 0..1 ]. - */ - .setProgress( progress ) - /* - Sets speed of the tween. - @param speed {Number} Progress to set [ 0..∞ ]. - */ - setSpeed ( speed ) - - /* Stops and resets the tween. */ - reset ( speed ) - -``` - -- [CodePen Example](https://codepen.io/sol0mka/pen/pbebwQ?editors=0010) -- [Shape API](/api/modules/shape/README.md) -- [Tween API](/api/tweens/tween.md) diff --git a/docs/api/modules/shape/README.md b/docs/api/modules/shape/README.md deleted file mode 100644 index a84b07aa..00000000 --- a/docs/api/modules/shape/README.md +++ /dev/null @@ -1,238 +0,0 @@ -# Shape - -- [CodePen Example](https://codepen.io/sol0mka/pen/bbd4fe6c1ac8519c76bc18828844e2c3) -- [Tween API](/api/tweens/tween.md) - -Full API reference: - -```javascript -const shape = new mojs.Shape({ - - /* SHAPE PROPERTIES */ - - // Parent of the module. {String, Object} [selector, HTMLElement] - parent: document.body, - - // Class name. {String} - className: '', - - // Shape name. {String} [ 'circle' | 'rect' | 'polygon' | 'line' | 'cross' | 'equal' | 'curve' | 'zigzag' | '*custom defined name*' ] - shape: 'circle', - - // ∆ :: Stroke color. {String} [color name, rgb, rgba, hex] - stroke: 'transparent', - - // ∆ :: Stroke Opacity. {Number} [ 0..1 ] - strokeOpacity: 1, - - // Stroke Line Cap. {String} ['butt' | 'round' | 'square'] - strokeLinecap: '', - - // ∆ :: Stroke Width. {Number} [ number ] - strokeWidth: 2, - - // ∆ , Units :: Stroke Dash Array. {String, Number} - strokeDasharray: 0, - - // ∆ , Units :: Stroke Dash Offset. {String, Number} - strokeDashoffset: 0, - - // ∆ :: Fill Color. {String} [color name, rgb, rgba, hex] - fill: 'deeppink', - - // ∆ :: Fill Opacity. {Number} [ 0..1 ] - fillOpacity: 1, - - // ∆ , Units :: Left position of the module. {Number, String} - left: '50%', - - // ∆ , Units :: Top position of the module. {Number, String} - top: '50%', - - // ∆ , Units :: X shift. {Number, String} - x: 0, - - // ∆ , Units :: Y shift. {Number, String} - y: 0, - - // ∆ :: Angle. {Number, String} - rotate: 0, - - // ∆ :: Scale of the module. {Number} - scale: 1, - - // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number} - scaleX: null, - - // ∆ :: Explicit scaleX value (fallbacks to `scale`). {Number} - scaleY: null, - - // ∆ , Unit :: Origin for `x`, `y`, `scale`, `rotate` properties. {String} - origin: '50% 50%', - - // ∆ :: Opacity. {Number} [ 0..1 ] - opacity: 1, - - // ∆ :: X border radius. {Number, String} - rx: 0, - - // ∆ :: Y border radius. {Number, String} - ry: 0, - - // ∆ :: Points count ( for polygon, zigzag, equal ). {Number, String} - points: 3, - - // ∆ :: Radius of the shape. {Number, String} - radius: 50, - - // ∆ :: Radius X of the shape (fallbacks to `radius`). {Number, String} - radiusX: null, - - // ∆ :: Radius Y of the shape (fallbacks to `radius`). {Number, String} - radiusY: null, - - // If should hide module with `transforms` instead of `display`. {Boolean} - isSoftHide: true, - - // If should trigger composite layer for the module. {Boolean} - isForce3d: false, - - // If should be shown before animation starts. {Boolean} - isShowStart: false, - - // If should stay shown after animation ends. {Boolean} - isShowEnd: true, - - // If refresh state on subsequent plays. {Boolean} - isRefreshState: true, - - // Context callbacks will be called with. {Object} - callbacksContext: this, - - /* TWEEN PROPERTIES */ - // Duration {Number} - duration: 350, - // Delay {Number} - delay: 0, - // If should repeat after animation finished {Number} *(1) - repeat: 0, - // Speed of the tween {Number}[0..∞] - speed: 1, - // If the progress should be flipped on repeat animation end {Boolean} - isYoyo: false, - // Easing function {String, Function}[ easing name, path coordinates, bezier string, easing function ] - easing: 'sin.out', - // Easing function for backward direction of the tween animation (fallbacks to `easing`) {String, Function}[ easing name, path coordinates, bezier string, easing function ] - backwardEasing: null, - - /* TWEEN CALLBACKS */ - /* - Fires on every update of the tween in any period (including delay periods). You probably want to use `onUpdate` method instead. - @param p {Number} Normal (not eased) progress. - @param isForward {Boolean} Direction of the progress. - @param isYoyo {Boolean} If in `yoyo` period. - */ - onProgress (p, isForward, isYoyo) {}, - /* - Fires when tween's the entire progress reaches `0` point(doesn't fire in repeat periods). - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onStart (isForward, isYoyo) {}, - /* - Fires when tween's the progress reaches `0` point in normal or repeat period. - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onFirstUpdate (isForward, isYoyo) {}, - /* - Fires on first update of the tween in sufficiently active period (excluding delay periods). - @param ep {Number} Eased progress. - @param p {Number} Normal (not eased) progress. - @param isForward {Boolean} Direction of the progress. - @param isYoyo {Boolean} If in `yoyo` period. - */ - onUpdate (ep, p, isForward, isYoyo) {}, - /* - Fires when tween's the progress reaches `1` point in normal or repeat period. - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onRepeatComplete (isForward, isYoyo) {}, - /* - Fires when tween's the entire progress reaches `1` point(doesn't fire in repeat periods). - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onComplete (isForward, isYoyo) {}, - /* Fires when the `.play` method called and tween isn't in play state yet. */ - onPlaybackStart () {}, - /* Fires when the `.pause` method called and tween isn't in pause state yet. */ - onPlaybackPause () {}, - /* Fires when the `.stop` method called and tween isn't in stop state yet. */ - onPlaybackStop () {}, - /* Fires when the tween end's animation (regardless progress) */ - onPlaybackComplete () {}, - -}) - /* - Creates next state transition chain. - @param options {Object} Next shape state. - */ - .then({ /* next state options */ }) - /* - Tunes start state with new options. - @param options {Object} New start properties. - */ - .tune({ /* new start properties */ }) - - /* - Regenerates all randoms in initial properties. - */ - .generate() - /* - Starts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .play( shift = 0 ) - /* - Starts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .playBackward( shift = 0 ) - /* - Pauses playback. - */ - .pause() - /* - Restarts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .replay( shift = 0 ) - /* - Restarts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .replayBackward( shift = 0 ) - /* - Resumes playback in direction it was prior to `pause`. - @param shift {Number} Start progress shift in milliseconds. - */ - .resume( shift = 0 ) - /* - Sets progress of the tween. - @param progress {Number} Progress to set [ 0..1 ]. - */ - .setProgress( progress ) - /* - Sets speed of the tween. - @param speed {Number} Progress to set [ 0..∞ ]. - */ - setSpeed ( speed ) - /* Stops and resets the tween. */ - reset ( speed ) - -``` - -- [CodePen Example](https://codepen.io/sol0mka/pen/bbd4fe6c1ac8519c76bc18828844e2c3) -- [Tween API](/api/tweens/tween.md) diff --git a/docs/api/syntax/property-maps.md b/docs/api/syntax/property-maps.md deleted file mode 100755 index 32c04256..00000000 --- a/docs/api/syntax/property-maps.md +++ /dev/null @@ -1,18 +0,0 @@ -# Property Map Syntax - -- [CodePen Example](https://codepen.io/sol0mka/pen/WxpGNm?editors=0010) - -`Property Map` array was designed to express sequential values. Often used with `Burst` and `Stagger` modules to generate values that repeat over children length. Basically it is just an array that maps its values to children based on child index with `mod` function. So if you have `property map` with `3 values` and `5 children`, then `4`th and `5`th items will recieve `0`th and `1`st values from the map respecively. Works with any values inside the array. - -You can provide a `null` value if you wanna use the default value. - -Full API reference: - -```javascript - // ... - property : [ 20, { 20 : 0 }, 'rand(0, 20)', null ] - // ... - -``` - -- [CodePen Example](https://codepen.io/sol0mka/pen/WxpGNm?editors=0010) diff --git a/docs/api/syntax/rand.md b/docs/api/syntax/rand.md deleted file mode 100755 index 85925ebc..00000000 --- a/docs/api/syntax/rand.md +++ /dev/null @@ -1,54 +0,0 @@ -# Rand Strings Syntax - -- [CodePen Example](https://codepen.io/sandstedt/pen/dyXevEE?editors=0010) - -`Rand` string was designed to express random numeric values. Can be unit based (percents, pixels, rems etc.). - - -Full API reference: - -```javascript - // ... - property : 'rand(min, max)', - // ... - -``` - -::: tip -If you wanna update the random value after it's been declared, you can use the `generate()` function. -::: - -## Example usage - - - - -- [CodePen Example](https://codepen.io/sandstedt/pen/dyXevEE?editors=0010) diff --git a/docs/api/syntax/stagger.md b/docs/api/syntax/stagger.md deleted file mode 100755 index d1f496ae..00000000 --- a/docs/api/syntax/stagger.md +++ /dev/null @@ -1,21 +0,0 @@ -# Stagger Strings Syntax - -- [CodePen Example](https://codepen.io/sandstedt/pen/pobVeBW) - -Stagger string was designed to express continious numeric values. Often used with `Burst` and `Stagger` modules to generate a value on children with some `step`. - -Takes 2 parameters: - -1. `start` - start value for all children. -2. `step` - step of addition. It gets multiplied by child index and added to the `start`. - -Full API reference: - -```javascript - // ... - property : 'stagger( start, step )' - // ... - -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/pobVeBW) diff --git a/docs/api/syntax/units.md b/docs/api/syntax/units.md deleted file mode 100755 index 5f45bce2..00000000 --- a/docs/api/syntax/units.md +++ /dev/null @@ -1,15 +0,0 @@ -# Available Units - -The list of available units: `px|%|rem|em|ex|cm|ch|mm|in|pt|pc|vh|vw|vmin`. - -If `start` and `end` units of `delta` are different - `mojs` will fallback to `end` units. - -Usage with properties: - -```javascript - // ... - property : '20rem', - property2 : { '10%' : '100%' }, - // ... - -``` diff --git a/docs/api/tweens/timeline.md b/docs/api/tweens/timeline.md deleted file mode 100755 index 4ee1a868..00000000 --- a/docs/api/tweens/timeline.md +++ /dev/null @@ -1,42 +0,0 @@ -# Timeline - -- [CodePen Example](https://codepen.io/sandstedt/pen/bGeMqzw?editors=0011) -- [Tween API](/api/tweens/tween.md) - -`Timeline` inherits all properties, callbacks and public methods from `Tween`, the only difference between `Tween` and `Timeline` is that the later doesn't have the `duration` property - it gets calculated from durations/delays of children. Also `Timeline` add two public methods that can recieve children. Please check the Tween API for reference. - -Full API reference: - -```javascript -const timeline = new mojs.Timeline({ - - /* PROPERTIES */ - - /* (+) TWEEN PROPERTIES AND CALLBACKS - see Tween API */ - - /* - Note: The timeline inherits all tween properties, callbacks and public methods excluding `duration` property. The `duration` property is computed automatically regarding children tweens and timelines. - */ - duration: null - -}) - - /* PUBLIC METHODS */ - - /* - Adds children tweens/timelines to the timeline. - @param children {Object, Array} Tweens/Timelines or array of such. - */ - .add( tween ) {} - /* - Appends children tweens/timelines to the timeline after the current children. - @param children {Object, Array} Tweens/Timelines or array of such. - */ - .append( tween ) {} - - /* (+) TWEEN PUBLIC METHODS - see Tween API */ - -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/bGeMqzw?editors=0011) -- [Tween API](/api/tweens/tween.md) diff --git a/docs/api/tweens/tween.md b/docs/api/tweens/tween.md deleted file mode 100755 index 2d0df22b..00000000 --- a/docs/api/tweens/tween.md +++ /dev/null @@ -1,139 +0,0 @@ -# Tween - -- [CodePen Example](https://codepen.io/sandstedt/pen/ZEOoePr?editors=0011) -- [Timeline](/api/tweens/timeline.md) - -Full API reference: - -```javascript -const tween = new mojs.Tween({ - - /* PROPERTIES */ - - // Duration {Number} - duration: 350, - // Delay {Number} - delay: 0, - // If should repeat after animation finished {Number} *(1) - repeat: 0, - // Speed of the tween {Number}[0..∞] - speed: 1, - // If the progress should be flipped on repeat animation end {Boolean} - isYoyo: false, - // Easing function {String, Function}[ easing name, path coordinates, bezier string, easing function ] - easing: 'sin.out', - // Easing function for backward direction of the tween animation (fallbacks to `easing`) {String, Function}[ easing name, path coordinates, bezier string, easing function ] - backwardEasing: null, - - /* CALLBACKS (in order of firing) */ - - /* - Fires on every when progress needs an update. For instance when tween was finished an remains in `1` progress state, and you will play it again - it will stay in the `1` state until first sufficient update after delay. So the `onRefresh` callback serves you to `refresh` the `1` state with `0` update. - - @param isBefore {Boolean} If `true` - the refresh is before start time. - */ - onRefresh (p, isForward, isYoyo) {}, - - /* - Fires on every update of the tween in any period (including delay periods). You probably want to use `onUpdate` method instead. - @param p {Number} Normal (not eased) progress. - @param isForward {Boolean} Direction of the progress. - @param isYoyo {Boolean} If in `yoyo` period. - */ - onProgress (p, isForward, isYoyo) {}, - /* - Fires when tween's the entire progress reaches `0` point(doesn't fire in repeat periods). - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onStart (isForward, isYoyo) {}, - /* - Fires when tween's the progress reaches `0` point in normal or repeat period. - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onFirstUpdate (isForward, isYoyo) {}, - /* - Fires on first update of the tween in sufficiently active period (excluding delay periods). - @param ep {Number} Eased progress. - @param p {Number} Normal (not eased) progress. - @param isForward {Boolean} Direction of the progress. - @param isYoyo {Boolean} If in `yoyo` period. - */ - onUpdate (ep, p, isForward, isYoyo) {}, - /* - Fires when tween's the progress reaches `1` point in normal or repeat period. - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onRepeatComplete (isForward, isYoyo) {}, - /* - Fires when tween's the entire progress reaches `1` point(doesn't fire in repeat periods). - @param isForward {Boolean} If progress moves in forward direction. - @param isYoyo {Boolean} If progress inside `yoyo` flip period. - */ - onComplete (isForward, isYoyo) {}, - /* Fires when the `.play` method called and tween isn't in play state yet. */ - onPlaybackStart () {}, - /* Fires when the `.pause` method called and tween isn't in pause state yet. */ - onPlaybackPause () {}, - /* Fires when the `.stop` method called and tween isn't in stop state yet. */ - onPlaybackStop () {}, - /* Fires when the tween end's animation (regardless progress) */ - onPlaybackComplete () {}, -}) - /* PUBLIC METHODS */ - - /* - Starts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .play( shift = 0 ) - /* - Starts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .playBackward( shift = 0 ) - - /* - Stops playback. - @param progress {Number} Progress to set after stop [0..1]. *Default* is `0`. - */ - .stop( progress = 0 ) - /* - Pauses playback. - */ - .pause() - /* - Restarts playback. - @param shift {Number} Start progress shift in milliseconds. - */ - .replay( shift = 0 ) - /* - Restarts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. - */ - .replayBackward( shift = 0 ) - /* - Resumes playback in direction it was prior to `pause`. - @param shift {Number} Start progress shift in milliseconds. - */ - .resume( shift = 0 ) - /* - Sets progress of the tween. - @param progress {Number} Progress to set [ 0..1 ]. - */ - .setProgress( progress ) - /* - Sets speed of the tween. - @param speed {Number} Progress to set [ 0..∞ ]. - */ - .setSpeed( speed ) - - /* Stops and resets the tween state. */ - .reset() - -``` - -- [CodePen Example](https://codepen.io/sandstedt/pen/ZEOoePr?editors=0011) -- [Timeline](/api/tweens/timeline.md) diff --git a/docs/api/utils/stagger.md b/docs/api/utils/stagger.md deleted file mode 100755 index 33a7d672..00000000 --- a/docs/api/utils/stagger.md +++ /dev/null @@ -1,171 +0,0 @@ -# Stagger - -References: - -- [CodePen Example](https://codepen.io/sol0mka/pen/68c596ca7444cb3df7b66b84fb1fd5c6?editors=0010) - -Contents: - - - [Basic Usage](#basic-usage) - - [Full API Reference](#full-api-reference) - -### Basic Usage: - -`stagger` is a function `not constructor!` that wraps `ANY` module to create staggered animations. You can treat `stagger` function as a `prism` is mounted on top of modules and splits input properties evenly between them: - -```javascript -// wrap shape in stagger -const Shapes = mojs.stagger( mojs.Shape ); -// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes -const shapes = new Shapes({ - // quantifier defines number of modules to create - quantifier: 5, - // each module will have the same scale transition - scale: { 1: 0 } -}); - -``` - -[CodePen Example](https://codepen.io/sol0mka/pen/81885a6b6125bc73b0665b5816b12012?editors=0010) - -You can use `array` to specify property value for each shape: - -```javascript -// wrap shape in stagger -const StaggeredShape = mojs.stagger( mojs.Shape ); -// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes -const shapes = new StaggeredShape({ - // quantifier defines number of modules to create - quantifier: 5, - // each module will receive value from this array. if array is smaller than amount of modules (4 vs 5), the stagger prism will loop on the array, thus `5th` item will receive value by `index = 0`, `6th` item will receive value by `index = 1` and so on. This is called `property map` because it maps properties array to modules inside stagger. - scale: [{ 0: 1 }, {0: 1.25}, { 0: 1.5 }, { 0: 2 }], -}); - -``` - -[CodePen Example](https://codepen.io/sol0mka/pen/78c17f405451e644cb424db364266015?editors=0010) - -You can use `stagger` string incremental properties: - -```javascript -// wrap shape in stagger -const StaggeredShape = mojs.stagger( mojs.Shape ); -// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes -const shapes = new StaggeredShape({ - // quantifier defines number of modules to create - quantifier: 5, - // the value of the property will be increased for each module with specified `step`(.25), starting from the `initial value`(1). Step could be `positive` or `negative`. - scale: 'stagger(1, .25)' -}); - -``` - -[CodePen Example](https://codepen.io/sol0mka/pen/dd71c464c891b79b561b663f31c17804?editors=0010) - -The `initial value` could be omitted - it will fallback to `0`: - -```javascript -// wrap shape in stagger -const Shapes = mojs.stagger( mojs.Shape ); -// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes -const shapes = new Shapes({ - // quantifier defines number of modules to create - quantifier: 5, - // this means stagger with step of `50` starting from `0` - x: 'stagger(50)' -}); - -``` - -[CodePen Example](https://codepen.io/sol0mka/pen/39a051dfdaed0d565c1acef5117effc7?editors=0010) - -`stagger` strings can be used inside `deltas` and can contain `rand` expressions: - -```javascript -// wrap shape in stagger -const StaggeredShape = mojs.stagger( mojs.Shape ); -// now you can have staggered syntax on the shape and create multiple shapes at once. the next code will produce 5 shapes -const shapes = new StaggeredShape({ - // quantifier defines number of modules to create - quantifier: 5, - // animate scale from `0` to staggered value (`1` for 1st module, `1.25` for 2nd, `1.5` for 3rd etc.) - scale: { 0: 'stagger(1, .25)' }, - // random value in range from `0` to staggered value (`200` for 1st module, `400` for 2nd, `600` for 3rd etc.) - x: 'stagger(-300, rand(100, 200))' -}); - -``` - -[CodePen Example](https://codepen.io/sol0mka/pen/097474f0a97e492adf87fc24b68cf05c?editors=0010) - -### Full API Reference - -```javascript -const shape = new mojs.Shape({ - // how many modules to create. {Number, String} [amount of modules, property name] - // if `string` is set instead of `number` it is treated as `property name` pointer - the number of modules will be inferred on value of that property, for instance if `quantifier` is set to `el` and `el` property has `array like` as it's value - quantifier will be set to length of that array. - quantifier: 'el', - // options for timeline that controls all modules - timeline: {}, - /* - Module's properties and callbacks, depends on what module has been wrapped into stagger, please see wrapped module API reference. - */ -}) -/* - Creates next state transition chain. - @param options {Object} Next shape state. -*/ -.then({ /* next state options */ }) - -/* - Tunes start state with new options. - @param options {Object} New start properties. -*/ -.tune({ /* new start properties */ }) - -/* - Regenerates all randoms in initial properties. -*/ -.generate() -/* - Starts playback. - @param shift {Number} Start progress shift in milliseconds. -*/ -.play( shift = 0 ) -/* - Starts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. -*/ -.playBackward( shift = 0 ) -/* - Pauses playback. -*/ -.pause() -/* - Restarts playback. - @param shift {Number} Start progress shift in milliseconds. -*/ -.replay( shift = 0 ) -/* - Restarts playback in backward direction. - @param shift {Number} Start progress shift in milliseconds. -*/ -.replayBackward( shift = 0 ) -/* - Resumes playback in direction it was prior to `pause`. - @param shift {Number} Start progress shift in milliseconds. -*/ -.resume( shift = 0 ) -/* - Sets progress of the tween. - @param progress {Number} Progress to set [ 0..1 ]. -*/ -.setProgress( progress ) -/* - Sets speed of the tween. - @param speed {Number} Progress to set [ 0..∞ ]. -*/ -setSpeed ( speed ) -/* Stops and resets the tween. */ -reset ( speed ); -``` diff --git a/docs/tools/README.md b/docs/tools/README.md deleted file mode 100644 index 23350315..00000000 --- a/docs/tools/README.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Tools overview -sidebarDepth: 0 ---- - -# Tools - -**mo.js developer tools helps you when you are building and debugging your animations.** - ---- - -- [Player](/tools/player) - Player to control your animations -- [Curve Editor](/tools/curve-editor) - Helps you create custom easing / property curves -- [Timeline Editor](/tools/timeline-editor) - Interactive html / custom points / timeline editing diff --git a/docs/tools/curve-editor/README.md b/docs/tools/curve-editor/README.md deleted file mode 100644 index 447eac8b..00000000 --- a/docs/tools/curve-editor/README.md +++ /dev/null @@ -1,160 +0,0 @@ -# [Mojs Curve Editor](https://github.com/mojs/mojs-curve-editor) -[![npm](https://img.shields.io/npm/v/@mojs/curve-editor.svg)](https://www.npmjs.com/package/@mojs/curve-editor) - -> `MojsCurveEditor` is a GUI plugin for interactive **custom easings / property curves** editing while crafting your animations. Part of mojs tools. - -[CodePen Example](https://codepen.io/sandstedt/pen/MWJNewP?editors=1010) - -## TLDR; -* Install it: `npm i @mojs/curve-editor` -* Import it: `import MojsCurveEditor from '@mojs/curve-editor';`' -* Use it: -```js -const mojsCurve = new MojsCurveEditor(); - -const tween = new mojs.Tween({ - easing: mojsCurve.getEasing() -}); -``` - -![mojs-curve-editor](https://raw.githubusercontent.com/mojs/mojs-curve-editor/master/logo.png) - - - -## Installation - -The `MojsCurveEditor` depends on `mojs >= 0.225.2`, tween autoupdates available for `mojs >= 0.276.2`. Please make sure you've imported [mojs](https://github.com/mojs/mojs) library first. - -### cdn -```html - -``` -### npm -```bash -npm i @mojs/curve-editor -``` - -Import `MojsCurveEditor` into your code: - -```js -import MojsCurveEditor from '@mojs/curve-editor'; -``` - -::: tip -If you installed it with the CDN option - you should have `MojsCurveEditor` globally. -::: - -## Usage - -Construct `MojsCurveEditor` and provide a name of the curve you're working on: - -```js{2} - const mojsCurve = new MojsCurveEditor({ - name: 'bounce curve' - }); -``` -::: tip -The name is used to -identify record in `localStorage` to restore the state from -when page gets reloaded, so please specify unique names if -you use more than one editor on the same page. -::: - -After that you can "connect" the curve with your `mojs` modules by passing a "sample" of the curve to the `easing` property of the module, like this: - -```js - const myCurve = new MojsCurveEditor({name: 'myCurve'}); - - const tween = new mojs.Tween({ - easing: myCurve.getEasing() - }); - - // or - - const shape = new mojs.Shape({ - easing: myCurve.getEasing() - }); - - // or as `property curve` - - const html = new mojs.Html({ - el: '#js-el', - x: { 0: 100, curve: myCurve.getEasing() } - }); - -``` - -Each `tween`/`module` should have it's out sample of the curve, this means you need to call `myCurve.getEasing()` send the `sample` of the curve to the `easing` property of modules. - -If you use `mojs>0.276.5` the state of the modules with the curve `sample` will be updated automatically. - -The `getEasing` function receives options hash: - -```js - easing: myCurve.getEasing({ - // `transform` function that pipes through the current value - // of the curve so you can transform it - transform: (k) => { return k; } - }); - -``` - -After you are happy with the curve you made, you need to change the **sample** (the `myCurve.getEasing()` call) with the actual path data which you can get by clicking on the `code` button ( ): - -```js - const html = new mojs.Html({ - el: '#js-el', - x: { 0: 100, easing: 'M0, 100 C0, 100 19.8984745544779, 40.10152544552211 30, 30 C40.1015254455221, 19.89847455447789 80, 45 80, 45 C80, 45 100, 0 100, 0 ' } - }); -``` - -## Options - -```js -const curveEditor = new MojsCurveEditor({ - // name of the curve editor - name: 'bounce curve', - - // if should preserve state on page reloads - isSaveState: true, - - // start path - will be loaded on initialization of the curve, - // e.g. before any user modifications were made. Path of 'M0, 100 L100, 0' is set by default. - startPath: 'M0, 100 L100, 0', - - // callback on path change, accepts path string - onChange: function (path) {}, - - // if should hide when minimized - useful when you try to embed - isHiddenOnMin: false -}); -``` - -## Public Methods - -```js -curveEditor - - // get `easing function` of the curve - .getEasing() - - // maximize the curve editor - .maximize() - - // minimize the curve editor - .minimize() - - // toggle `maximize/minimize` methods regarding editor's state - .toggleSize(); -``` - -## Shortcuts - -- `alt + z` - **undo** curve action -- `alt + x` - **redo** curve action -- `alt + d` - **delete** selected point(s) -- [3 times] `alt + \` - **reset** curve - -::: tip -The shortcuts works only in the active editor - it should have **orange mojs logo indicator** at the bottom left. -::: diff --git a/docs/tools/player/README.md b/docs/tools/player/README.md deleted file mode 100644 index a877718a..00000000 --- a/docs/tools/player/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# [Mojs Player](https://github.com/mojs/mojs-player) -[![npm](https://img.shields.io/npm/v/@mojs/player.svg)](https://www.npmjs.com/package/@mojs/player) - -GUI player to control your animations - -### Usage -- Install it: `npm i @mojs/player` -- Import it: `import MojsPlayer from '@mojs/player';` or
- `var MojsPlayer = require('mojs-player');` -- Use it: - 1. Create a [tween](/api/tweens/tween.md) or a [timeline](/api/tweens/timeline.md) - 2. Create a player and mass the tween/timeline as the `add` option: - ```js - const mojsPlayer = new MojsPlayer({ add: mainTimeline }); - ``` - -::: tip -For shotcuts and more options, [read more here](https://github.com/mojs/mojs-player) -::: diff --git a/docs/tools/timeline-editor/README.md b/docs/tools/timeline-editor/README.md deleted file mode 100644 index aaecdaee..00000000 --- a/docs/tools/timeline-editor/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# [Timeline Editor](https://github.com/mojs/mojs-timeline-editor) -[![npm](https://img.shields.io/npm/v/@mojs/timeline-editor.svg)](https://www.npmjs.com/package/@mojs/timeline-editor) - -MojsTimelineEditor is a GUI plugin for interactive `html`/`custom points`/`timeline` editing while crafting your animations. - -### Usage -::: warning -This tool is a work in progress. The description below may not be correct. -::: - -- Install it: `npm i @mojs/timeline-editor` (Note: this is currently not on NPM) -- Import it: `import MojsTimelineEditor from '@mojs/timeline-editor';` -- Use it: - ```js - const mojsTimelineEditor = new MojsTimelineEditor(); - ``` - -::: tip -[Read more here](https://github.com/mojs/mojs-timeline-editor) -::: diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md deleted file mode 100644 index 12986149..00000000 --- a/docs/tutorials/README.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Tutorials overview -sidebarDepth: 0 ---- - -# Tutorials - ---- - -## Basics -- [Getting started](./getting-started.md) -- [APIs Overview](#) (Need to be written) - -## Modules -- [Shape & ShapeSwirl](./shape-swirl/) -- [Burst](./burst/) - -## SSR -- [Usage with React](./usage-with-react.md) diff --git a/docs/tutorials/burst/README.md b/docs/tutorials/burst/README.md deleted file mode 100644 index 7ad03659..00000000 --- a/docs/tutorials/burst/README.md +++ /dev/null @@ -1,1079 +0,0 @@ -# Burst - - -Burst is the module that helps you to craft numerous sophisticated motion effects. -- [API reference](/api/burst) - -> Please make sure you are comfortable with [Shapes & ShapeSwirl](/tutorials//shape-swirl/) before proceeding with this tutorial. Understanding those modules is crucial for understanding the `Burst`. - -## Burst - - -`Burst` is a higher order module that creates sophisticated visual effects in any part of the screen you want. You can think of `Burst` as a particle emitter that composes a bunch of `ShapeSwirl`'s together, creating a circle of particles. - - - -That's how it looks like by default: - - -```js -const burst = new mojs.Burst(); - -document.addEventListener( 'click', function (e) { - burst.replay(); -}); -``` - - - - -Just like with `Shape`, mojs takes care about all bootstrapping work, creates as narrow container for the burst as possible and positioning the effect for you. - - - -From the technical point of view, `Burst` is just a main `ShapeSwirl` that holds a bunch of child `ShapeSwirl`'s. Pictorially it looks like this: - - -![Illustration of how the burst swirls works](/assets/burst/burst-pic.png) - -The main swirl has no `shape` nor any presentation properties and in fact, is `0` size by default completely unreachable for user's interaction pointer. - -Another important note is that `radius` property (and `radiusX`/`radiusY` ones) has different meaning - it controls the radius of radial shape of particles: - - -```js -const burst = new mojs.Burst({ - radius: { 0: 100 } -}); -``` - - - -There are few more properties that `Burst` implements over `ShapeSwirl` to control the radial shape behavior that particles compose. The first one is the `count` property that sets the amount of particles: - - -```js -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 3 -}); -``` - - - -The particles of the burst are evenly placed in a 360 degree circle, which you can narrow down with the `degree` property: - - -```js -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 5, - degree: 30 -}); -``` - - - -Here above, we have a burst that has `30 degrees` of sufficient place for particles. - - - -It is very important to note here that since the main swirl of `Burst` module has no actual shape - it has no style attributes that define shape's presentation - all of them among which are the `stroke` or `strokeWidth` or `fill` are completely useless. - - - -Also, the main swirl of the burst have no `tween` related properties like `delay` or `duration`, the later one gets computed automatically regarding the `duration` of the particles. - - - -Nonetheless, all **properties** that control shape position, parent and opacity are present: - - -```js -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 7, - rotate: { 0: 90 }, - opacity: { 1: 0 }, -}); -``` - - -To recap, the main swirl of the `Burst` has no `style` attributes because it has no shape, furthermore it has no `tween` related properties like `duration` which is computed from the particles `duration`. But `Burst` has all the other properties, most of them regarding position, opacity, parent etc. You can always use the [Burst API](/api/burst) as the reference. - -But `Burst` won't be much interesting unless we can control child particles, right? - - -## Children Options - -You can control children options with the `children` object property: - - -```js -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 5, - degree: 30, - children: { - fill: { 'magenta' : 'cyan' }, - duration: 2000 - } -}); -``` - - - -I have some good news for you - you already know `Burst`'s syntax! Confusing claim? Nah! If you are familiar with `Shape` and `ShapeSwirl` modules - you know the `Burst`. That's because the `Burst` is nothing than just a `ShapeSwirl` that holds child `ShapeSwirls`, remember? This means you can put any property of `ShapeSwirl` to the `children` object, go try: - - -```js -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 5, - children: { - shape: 'polygon', - fill: { 'cyan' : 'yellow' }, - radius: 20, - rotate: { 360: 0 }, - duration: 2000 - } -}); -``` - - - -Actually `Burst` gives you even more control over each child, allowing you to specify property for each of them explicitly. These two techniques are called `Stagger Strings` and `Property Maps`. - - -### Stagger Strings - -`Stagger Strings` were designed to express continuous numeric values with some defined step (see delay property on children): - - -```js{10} -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 10, - children: { - shape: 'polygon', - points: 5, - fill: { 'cyan' : 'yellow' }, - rotate: { 360: 0 }, - duration: 2000, - delay: 'stagger(0, 100)' - } -}); -``` - - -The first parameter in `stagger` function is the `start` value, all subsequent steps will be added to that start value, that is optional; If you just write `stagger(25)`, it will mean to stagger with step of `25`, starting from `0`. - -In the demo above, that's exact the same circle as in the demo before, but we have **staggered** the `delay` property so it looks rather spiral now. - - - -Every numeric value can be expressed with stagger stings. Also, they can contain `rand`oms (see the delay property in children): - - -```js{10} -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 10, - children: { - shape: 'polygon', - points: 5, - fill: { 'cyan' : 'yellow' }, - rotate: { 360: 0 }, - duration: 2000, - delay: 'stagger( rand(0, 200) )' - } -}); -``` - - - -We have staggered the delay with random function in interval of 0 to 200. - -:::tip -If you run the `.generate()` function before playing your burst, all random values will be recalculated for each time you play the burst. Like this: -```js -burst.generate(); -burst.replay(); -``` -::: - - -### Property Maps - -Property Map was designed to express sequential values. You can use it to generate values that repeat over and over but are mapped to children length. Basically, it is just an array that maps its values to children regarding child index with `mod` function. So if you have a `property map` with `3 values` and burst has `5 children`, then the `4`th and `5`th items will receive the `0`th and `1`st values from the map respectively: - - -```js{7} -const burst = new mojs.Burst({ - radius: { 0: 100 }, - count: 5, - children: { - shape: 'circle', - radius: 20, - fill: [ 'deeppink', 'cyan', 'yellow' ], - strokeWidth: 5, - duration: 2000 - } -}); -``` - - - -So starting from 12 o'clock clockwise, the 5 childrens `fill` properties get values of `deeppink`, `cyan`, `yellow` and then again starting from the beginning of the property map - `deeppink`, `cyan` ( [0],[1],[2],[0],[1] ). - - - -Property maps work with any property and property forms, in fact, that's just a prism (or multiplexer) that feeds children with properties by virtue of modulus function. Good aid if you want to set some property on child explicitly. - - -## then, tune, generate and play - -You can make `then` state chains, `tune` and `generate` any `Burst` the same as you do with `Shape` or `ShapeSwirl`. Also, since the `Burst` is merely a `ShapeSwirl` under the hood, you can use any `tween` interface public method like `play`, `setProgress`, `replay` etc (click somewhere to see): - - -```js -document.addEventListener( 'click', function (e) { - burst - .tune({ x: e.pageX, y: e.pageY }) - .setSpeed(3) - .replay(); -}); -``` - - - -## Recap - - -That's basically the burst, as I said you already know it so we won't go thru the children options again, instead, let's jog thru some use cases in the next section which will help as to gain some intuition over where and how to use the bursts. As you remember, - `Burst` is just a composition of a bunch of `ShapeSwirls`. There is the main swirl in the center of the burst but it has no visual shape. Also, it has no tween properties and its durations is calculated regarding the duration of the children. All child swirls use the main one as a `parent`. You can set properties of `children` with the appropriate property. Please, use the [Burst API](/api/burst) as the reference. - - -## Use Cases - -> Please note that the use cases section contains a lot of live code examples but the actual code samples are omitted for time savings and simplicity sake. The actual code is still available on the `Babel` tab of the pens and I highly encourage you to read through and play with them while we will walk through this section. You can omit reading large demos code since it is probably unreadable (some Codepens can contain bundled code) or it could be too large to understand sparingly, but you can return to them later. I will leave a little **(×)** mark for you to indicate that you can skip reading the source code of the Codepen for now. - - -`Burst`, in similarity with `Shape` or `ShapeSwirl`, has numerous application fields, among which are motion graphics and UI-animations. In contrary to the [ Shape & ShapeSwirl ](/tutorials/shape-swirl/) tutorial, I won't split use cases to different entities but rather will try to do lot's of small demos, each with explanation comments. Hang tight! - - -

Micro Animations

- - -The first thing that comes to mind when I see the default burst - is the famous [Twitter's fav animation](https://codepen.io/donovanh/pen/dYqxNb). Animations like that are usually called **micro animations** but I've used to call them **micro celebrations** because of their festivity. - - - -Anyways, sequences like that are a cinch when you have the burst module in your hands. Here's how to do the main part of the sequence (click anywhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/cb910fce2e9ed27f902ae7f895bbb9ac) - - -Here above, we have declared a burst with 5 particles (which is by default) with a burst's radius transition from 4 to 19. There are 2 strategies for bursts like that - one is to scale children down (by default), the second one is to animate `strokeDashoffset` on children which we have used here. - - - -The next step is to add two more shapes to the scene - one circle with `strokeWidth` animation and a custom one - the star with `elastic.out` transition for the `scale`(click anywhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/080045a3420abd5344443aff91c85fa2) - - -I love using the burst module over sprites because it turns out to be a way flexible over pre-rendered sequence of images, - you can play with easings, time, delay, colors etc. Also, you can even change shapes with no effort at all - for instance, if you want to add stars instead of lines (click anywhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/0fd14523d76f93865539f1f011682da9) - - -Ok, let's redo the later Twitter love animation too. There is the burst part of the sequence(click anywhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/28b429cd2d5ae8c0dd0f10cecd6d0bd0) - - -The catch here is to use the `in` easing for `scale` property and the opposite `out` easing for particles position. Also, we have set the `pathScale` slightly smaller for "inner" particles. After that, we have defined a small `degreeShift` for each odd / inner particle. Then `null` value in the [properyMaps](/api/syntax/property-maps) mean that it takes the default value. For scale it's `1` and in `degreeShift` it's `0`. - - - -The next step is to add the circle shape and heart animations, almost identical to ones we have used in the Twitter fav scene (click anywhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/e3751855536c67dc6f57f9e74e5e347d) - - -And the last touch is to add all the color deltas, there are quite some of them (click anywhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/f25a2fbaf15c43c0923f507d54951cdb) - - -That's basically the same micro confirmations that I've given you in the [Shape & ShapeSwirl](/tutorials/shape/) tutorial **(×)**: - - - -[Link to pen](https://codepen.io/sol0mka/pen/3c49de2d7d0ca3e92bf5db5bf7a2687d) - - -In the example above we didn't use the `Burst` module that much. But you can imagine that those effects are much easier with the `Burst` module. For instance the bubbles in the first part could be made like this: - - - -[Link to pen](https://codepen.io/sol0mka/pen/a336008aff2d73121763887097a99001) - - -Here we have the static `radius` of `25` on burst and `3` `white` particles. We've set a slightly `rand`om `degreeShift` and a `delay` on the `children` that eventually gives us the bubble like motion. - - - -The second burst is super simple too: - - - -[Link to pen](https://codepen.io/sol0mka/pen/afbfb59f00d5dfb8b28fc97510fcc167) - - -As you can see, the second burst is almost the default one, we have only changed the main `radius` to `0 : 30`. As for children, we tweaked the `shape` to a `line` value, and made the `scaleX` to fade out from `1` to `0`. - - - -The final touch is to add center `circle` and `cross` shapes: - - - -[Link to pen](https://codepen.io/sol0mka/pen/d260dc9246f2100b9f2dbe79a01d01f6) - - -The second part - the bubble fadeout effect is even simpler. For the `Burst` module, we just need to set `degree` to `0` so the particles will flow in one direction, then set `isSwirl` to `true` (Burst composes ShapeSwirls, remember?) on `children` thus particles will follow sine path. After that we need to slightly randomize `swirlSize`, `swirlFrequency` and `pathScale` parameters (click somewhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/60d5d3c97981022f20f86c37580bceb1) - - -Just like with the previous example, the last touch is to add `circle` and `cross` transitions (click somewhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/f307bc95b1ac02c09042c89ea7afe945) - -### Motion for the web - - -Let's recall the old "motion for the web" demo **(×)**: - - - -[Link to pen](https://codepen.io/sol0mka/pen/ogOYJj) - - - Note that the demo was made a while ago so it contains deprecated syntax. - - - -How many burst modules have you noticed in this demo? There are quite some actually. I think the most noticeable are collisions with the ground (click to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/4fe37a79f6d665d749ebcb4f22c2ee4e) - - -This one was made by virtue of `degree: 180`, childrens' `radius` of `7` and `strokeDashoffset` animation on particles. - - - -There is another burst in that demo: - - - -[Link to pen](https://codepen.io/sol0mka/pen/953926af8c30d3dd297070b1a079e059) - - -This one is simple too, the good one to practice basics. - - - -Did you notice those meteors on the left of the letters? Those are `Burst` too. How? Well first you have a burst with 3 children: - - - - -[Link to pen](https://codepen.io/sol0mka/pen/1018219ace50f564f7bb8b77b53efeb8) - - -Then you set `degree` of `0` so they all will fly to the same direction: - - - -[Link to pen](https://codepen.io/sol0mka/pen/d84370a3c19fdcea8c714e7049c9ab5d) - - -Hm, they kind of overlap, so let's shift them by staggering `left` and `top` properties on children, after that let's add some `delay` with help of property map: - - - -[Link to pen](https://codepen.io/sol0mka/pen/2be25259bdd8e01f9ac3770f6f2bd36a) - - -Do you see that? Almost there. The last touch is to rotate the main swirl: - - - - -[Link to pen](https://codepen.io/sol0mka/pen/bf8377efd5b0dada9537481e29ecd6af) - - -Pretty yummy detail. - - - -What else have we got in the demo? Letters! That's how O letter was made: - - - -[Link to pen](https://codepen.io/sol0mka/pen/432464f276fe6f06b457915ca6062723) - - -As you can see, we've set the main swirl's `radius` and `degree` to `0` to put the child shapes in the one spot. Then we just have to slightly stagger `delay` on children. - - - -The same technique for the other parts - vertical and horizontal lines: - - - -[Link to pen](https://codepen.io/sol0mka/pen/33f7924ecd146d951698bf190ac7838e) - - -Good. Let's refactor it a bit and make the vertical line start from the bottom, like firework launch: - - - - -[Link to pen](https://codepen.io/sol0mka/pen/a3c64825683dddd18316f8f288475131) - - -That's better. - - -

Blast all the things up

- - -Let's move on. What else we can do with `Burst`? We can blast things up. I love blasting things up, do you? Recall this demo from the [Shape & ShapeSwirl](/tutorials/shape/) tutorial(×): - - - -[Link to pen](https://codepen.io/sandstedt/pen/RzqpRz) - - -Do you see that blast at the start? Let's make it together. First, you can notice these small particles (click somewhere to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/79db23782ec1eb9d16246b136ec82b9c) - - -Notice how we use `pathScale` and `degreeShift` properties to add randomness to the blast. The `pathScale` property defines how the length of the particle's path scales. The `degreeShift` property defines how much the particle will shift in its radial position in burst circle shape. So if a particle has `degreeShift` of `90`, it will be shifted in radial shape by 90 degrees. Since `pathScale` and `degreeShift` both have random values and we `generate` the module on each user click - we always have the random blast pattern. - - - -Let's add more details to the blast, for instance, another burst with large geometric shapes: - - - -[Link to pen](https://codepen.io/sol0mka/pen/3b9c757a7625dc015753740bcad8fb66) - - -Feels rather messy. But it's fine for now, it should get straight when we will add more shapes: - - - -[Link to pen](https://codepen.io/sol0mka/pen/4c8366d3a7eea2a5f83a3d457f8e9cd9) - - -And the last touch is to add "one spot" large burst of 3 items - one red, one white and one black: - - - -[Link to pen](https://codepen.io/sol0mka/pen/699cfc8716a13e0e1c15105af2b6fb95) - - -Yum. I hope you love to blast things up too now. Notice we did it without a single repaint! - - -

Modal blast

- - -If you recall the next old demo, you probably can say now how it was made. How many modules does this blast compose (click close to see the effect) **(×)**? - - - -[Link to pen](https://codepen.io/sol0mka/pen/XJjLxe) - - -The answer is 3 - `2 Bursts` and `1 subtle circle` in the middle. - - - -[Link to pen](https://codepen.io/sol0mka/pen/6caf96461207a5caa9226fbd2631569d) - - -The effect is a bit more modest than the previous one. As you can see, I haven't recreated exactly the same sequence here, but rather made a slightly different one. - - -

The sleepy mole

- - -OK. Enough distraction. Let's create something less straightforward. Recall this demo with the mole **(×)**: - - - -[Link to pen](https://codepen.io/sol0mka/pen/477056cb1ffe88c4bfbf8a3005d99496) - - -Can you count how much effects are bursts here? There are quite a few. The most noticeable is the effect that appears after the door shuts down - the 4 spots of dust. This one was composed with 4 bursts (one for each corner), let's start with just one for now: - - - -[Link to pen](https://codepen.io/sol0mka/pen/97a95a5cb7663cf336e8d80f9f511553) - - -How is it possible? Remember that the `Burst` composes `ShapeSwirls`, not simple `Shape`s so, if we set `isSwirl` to `true`, we will have sine paths. This is how you do 4 at once (click to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/bbc4c52b7145d9d872ac437f21afd75f) - - - You can do the same `4 dust points effect` with just one declarative call if will use `Stagger` module, but that's a topic for the next tutorial. - - - -OK. Recalling the mole demo, what else did you notice? Probably confetti that appears when cube hits the floor. Right! - - - -That's how you do the first large one: - - - -[Link to pen](https://codepen.io/sol0mka/pen/421a16733643447bb4770424cf72563d) - - -The main catch here is to mimic the air flow by rotating the main swirl backward slightly. Then you have to create more bursts, each one is smaller than previous one and each of them should have a smaller delay. - - - -[Link to pen](https://codepen.io/sol0mka/pen/d0d0c2b1e98f1a0f8d6ea250c31ed081) - - -What else have you noticed in the mole demo? Yep saliva that comes from the mole mouth when it teases. First, you want to make `0-degree` burst, and rotate the main swirl downward, imitating that the air current which comes out of his mouth gets weaker: - - - -[Link to pen](https://codepen.io/sol0mka/pen/828d4f1e1f6fdfd608b588af0b9bdd45) - - -Then add larger burst's `radius`, turn on swirl sine paths and randomize them with `pathScale` property: - - - -[Link to pen](https://codepen.io/sol0mka/pen/8b3f0eb920226a7c2d703e601af38fcf) - - -At last, add random `radius` to children and mix `direction` of the swirls: - - - -[Link to pen](https://codepen.io/sol0mka/pen/b1e36259bfa2d6023402eef7de77cc8d) - - -You can see that the `Burst` module is pretty flexible thus helps you to craft numerous sophisticated effects. - - -

The dust trail

- - -OK, let's recall another demo, remember this one from previous the tutorial? Did I notice that the dust trail effect is much easier with burst **(×)**? - - - -[Link to pen](https://codepen.io/sol0mka/pen/633e6aa52d40691cca2f2cda91650bae) - - -As you remember, to create the dust trail effect, we first need to shoot the child swirls downwards to the ground with random children radiuses: - - - -[Link to pen](https://codepen.io/sol0mka/pen/c59d4e046a6c78f3ac9d3a5699018fa8) - - -Now instead of multiple swirl modules which we have been using in the previous tutorial, we use just one burst - `stagger` expressions turn out to be useful! After that you want to create an `overflow: hidden` container and assign it as `parent` to the burst: - - - - -[Link to pen](https://codepen.io/sol0mka/pen/e48eb4e56ce1fa94c515b4fda6513d24) - - -This time, we have used the `Shape` module as `parent` overflow constrain. - - - - The last touch is to add the fading burst at the end and make the `parent` move to the left: - - - -[Link to pen](https://codepen.io/sol0mka/pen/10cc620075141688d0cf8eca7a561062) - - -That's exact the same effect as we have made in the [Shape & ShapeSwirl](/tutorials/shape/) tutorial, but this time with just 2 `Bursts`! `Bursts` are fun, there is a little demo I've made with this dust trail effect (click to see): - - - -[Link to pen](https://codepen.io/sol0mka/pen/03e9d8f2fbf886aa1505c61c81d782a0) - - -That's it for `Burst`. We've touched only the surface of the possible effects that you can compose with this module, but that's a good start to convey the idea and APIs. Also, my friends from [Codrops](http://tympanus.net/codrops/) wrote an awesome [post](http://tympanus.net/Development/Animocons/) a while ago on the `Burst` matter, definitely check it out. - - -## Recap - - -Burst is the module that helps you to craft sophisticated motion effects with simple declarative calls. Technically, it is the main `ShapeSwirl` that composes a bunch of child `ShapeSwirls` forming the radial shape by default. `mojs` takes care about all markup bootstrapping and positioning of the module for you. The main swirl has no shape thus no presentation properties. The duration of the main swirl is calculated regarding duration of the child swirls. To control child swirls, pass the `ShapeSwirl` properties to the `children` property of the main swirl. You can find exhaustive API reference at [Burst API](/api/burst) section. - - - -Burst is indeed an interesting module but, please don't overuse it. Your intention should be to guide and cheer users but not overwhelm them. Be cautious and think twice, if you feel that anyhow the effect you've done makes a visual noize rather than helps to solve a real problem, skip it entirely. - -
- -## Thank you! - - -I'm happy you've made it here! It was a long and intense journey, I hope you don't feel overwhelmed. I also humbly hope that these effect modules will come handy to you on your web development route. There are some more "effects" modules that will land to the mojs shortly so stay tuned. For any questions, catch me on Twitter [@legomushroom](https://twitter.com/legomushroom), ask a question on StackOverflow with `#mojs` tag, rise an issue on the [GitHub repo](https://github.com/mojs/). You can help the project on [GitHub](https://github.com/mojs/). {'Love <3.'} - - - -Kudos to [Jonas Sandstedt](https://twitter.com/jonassandstedt) for his help in read proofing this tutorial! diff --git a/docs/tutorials/burst/demos_for_backup.md b/docs/tutorials/burst/demos_for_backup.md deleted file mode 100644 index 1fd2b48b..00000000 --- a/docs/tutorials/burst/demos_for_backup.md +++ /dev/null @@ -1,1467 +0,0 @@ -In case the codepens in the tutorial disapears, here is a backup of all of them - -# https://codepen.io/sol0mka/pen/cb910fce2e9ed27f902ae7f895bbb9ac - -```css -body, html { - padding: 0; -} -body { - //background: #202223; -} -``` - -```js -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 4: 19 }, - rotate: 45, - children: { - shape: 'line', - radius: 3, - scale: 1, - stroke: '#FD7932', - strokeDasharray: '100%', - strokeDashoffset: { '-100%' : '100%' }, - duration: 700, - easing: 'quad.out', - } -}); - -document.addEventListener( 'click', function (e) { - burst - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - -# https://codepen.io/sol0mka/pen/080045a3420abd5344443aff91c85fa2 -``` -const RADIUS = 28; -const circle = new mojs.Shape({ - left: 0, top: 0, - stroke: '#FF9C00', - strokeWidth: { [2*RADIUS] : 0 }, - fill: 'none', - scale: { 0: 1, easing: 'quad.out' }, - radius: RADIUS, - duration: 450 -}); - -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 6: RADIUS - 7 }, - rotate: 45, - children: { - shape: 'line', - radius: RADIUS/7.3, - scale: 1, - stroke: '#FD7932', - strokeDasharray: '100%', - strokeDashoffset: { '-100%' : '100%' }, - degreeShift: 'stagger(0,-5)', - duration: 700, - delay: 200, - easing: 'quad.out', - } -}); - -class Star extends mojs.CustomShape { - getShape () { - return ''; - } -} -mojs.addShape( 'star', Star ); - -const star = new mojs.Shape({ - left: 0, top: 0, - shape: 'star', - fill: '#FF9C00', - scale: { 0 : 1 }, - easing: 'elastic.out', - duration: 1600, - delay: 300, - radius: RADIUS/2.25 -}); - -const timeline = new mojs.Timeline({ speed: 1.5 }); - -timeline - .add( burst, circle, star ); - -document.addEventListener( 'click', function (e) { - const coords = { x: e.pageX, y: e.pageY }; - burst.tune(coords); - circle.tune(coords); - star.tune(coords); - timeline.replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/0fd14523d76f93865539f1f011682da9 - -```js -class Star extends mojs.CustomShape { - getShape () { - return ''; - } -} -mojs.addShape( 'star', Star ); - -const RADIUS = 28; -const circle = new mojs.Shape({ - left: 0, top: 0, - stroke: '#FF9C00', - strokeWidth: { [2*RADIUS] : 0 }, - fill: 'none', - scale: { 0: 1, easing: 'quad.out' }, - radius: RADIUS, - duration: 450, -}); - -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 6: RADIUS - 3 }, - rotate: 45, - children: { - shape: 'star', - radius: RADIUS/2.2, - fill: '#FD7932', - degreeShift: 'stagger(0,-5)', - duration: 700, - delay: 200, - easing: 'quad.out', - // delay: 100, - } -}); - -const star = new mojs.Shape({ - left: 0, top: 0, - shape: 'star', - fill: '#FF9C00', - scale: { 0 : 1 }, - easing: 'elastic.out', - duration: 1600, - delay: 300, - radius: RADIUS/2.35 -}); - -const timeline = new mojs.Timeline({ speed: 1.5 }); - -timeline - .add( burst, circle, star ); - -document.addEventListener( 'click', function (e) { - const coords = { x: e.pageX, y: e.pageY }; - burst.tune(coords); - circle.tune(coords); - star.tune(coords); - timeline.replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/28b429cd2d5ae8c0dd0f10cecd6d0bd0 - -```js -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 4: 32 }, - rotate: 45, - count: 14, - children: { - radius: 2.5, - fill: '#FD7932', - scale: { 1: 0, easing: 'quad.in' }, - pathScale: [ .8, null ], - degreeShift: [ 13, null ], - duration: [ 500, 700 ], - easing: 'quint.out' - } -}); - -document.addEventListener( 'click', function (e) { - const coords = { x: e.pageX, y: e.pageY }; - burst - .tune(coords) - .replay(); -}); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/28b429cd2d5ae8c0dd0f10cecd6d0bd0 - -```js -class Heart extends mojs.CustomShape { - getShape () { - return ''; - } -} -mojs.addShape( 'heart', Heart ); - -const CIRCLE_RADIUS = 20; -const RADIUS = 32; -const circle = new mojs.Shape({ - left: 0, top: 0, - stroke: '#FF9C00', - strokeWidth: { [2*CIRCLE_RADIUS] : 0 }, - fill: 'none', - scale: { 0: 1 }, - radius: CIRCLE_RADIUS, - duration: 400, - easing: 'cubic.out' -}); - -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 4: RADIUS }, - rotate: 45, - count: 14, - timeline: { delay: 300 }, - children: { - radius: 2.5, - fill: '#FD7932', - scale: { 1: 0, easing: 'quad.in' }, - pathScale: [ .8, null ], - degreeShift: [ 13, null ], - duration: [ 500, 700 ], - easing: 'quint.out' - } -}); - -const heart = new mojs.Shape({ - left: 0, top: 2, - shape: 'heart', - fill: '#E5214A', - scale: { 0 : 1 }, - easing: 'elastic.out', - duration: 1600, - delay: 300, - radius: 11 -}); - -document.addEventListener( 'click', function (e) { - const coords = { x: e.pageX, y: e.pageY }; - burst - .tune(coords) - .replay(); - - circle - .tune( coords ) - .replay(); - - heart - .tune( coords ) - .replay(); - -}); -``` - - -# https://codepen.io/sol0mka/pen/f25a2fbaf15c43c0923f507d54951cdb - -```js -class Heart extends mojs.CustomShape { - getShape () { - return ''; - } -} -mojs.addShape( 'heart', Heart ); - -const CIRCLE_RADIUS = 20; -const RADIUS = 32; -const circle = new mojs.Shape({ - left: 0, top: 0, - stroke: { '#E5214A' : '#CC8EF5' }, - strokeWidth: { [2*CIRCLE_RADIUS] : 0 }, - fill: 'none', - scale: { 0: 1 }, - radius: CIRCLE_RADIUS, - duration: 400, - easing: 'cubic.out' -}); - -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 4: RADIUS }, - rotate: 45, - count: 14, - timeline: { delay: 300 }, - children: { - radius: 2.5, - fill: [ - // { '#91D2FA' : '#BDEFD8' }, - // { '#91D2FA' : '#ADD6CA' }, - { '#9EC9F5' : '#9ED8C6' }, - { '#91D3F7' : '#9AE4CF' }, - - { '#DC93CF' : '#E3D36B' }, - { '#CF8EEF' : '#CBEB98' }, - - { '#87E9C6' : '#1FCC93' }, - { '#A7ECD0' : '#9AE4CF' }, - - { '#87E9C6' : '#A635D9' }, - { '#D58EB3' : '#E0B6F5' }, - - { '#F48BA2' : '#CF8EEF' }, - { '#91D3F7' : '#A635D9' }, - - { '#CF8EEF' : '#CBEB98' }, - { '#87E9C6' : '#A635D9' }, - ], - scale: { 1: 0, easing: 'quad.in' }, - pathScale: [ .8, null ], - degreeShift: [ 13, null ], - duration: [ 500, 700 ], - easing: 'quint.out', - // speed: .1 - } -}); - -const heart = new mojs.Shape({ - left: 0, top: 2, - shape: 'heart', - fill: '#E5214A', - scale: { 0 : 1 }, - easing: 'elastic.out', - duration: 1000, - delay: 300, - radius: 11 -}); - -document.addEventListener( 'click', function (e) { - const coords = { x: e.pageX, y: e.pageY }; - burst - .tune(coords) - .replay(); - - circle - .tune( coords ) - .replay(); - - heart - .tune( coords ) - .replay(); - -}); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/a336008aff2d73121763887097a99001 - -```js -const bubbles = new mojs.Burst({ - left: 0, top: 0, - radius: 25, - count: 3, - children: { - stroke: 'white', - fill: 'none', - scale: 1, - strokeWidth: { 8: 0 }, - radius: { 0 : 'rand(8, 12)' }, - degreeShift: 'rand(-50, 50)', - duration: 400, - delay: 'rand(0, 250)', - } -}); - -document.addEventListener( 'click', function (e) { - bubbles - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/d260dc9246f2100b9f2dbe79a01d01f6 - -```js -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 0: 30 }, - rotate: 'rand(0, 360)', - timeline: { delay: 50 }, - children: { - shape: 'line', - stroke: 'white', - fill: 'none', - scale: 1, - scaleX: { 1: 0 }, - // easing: 'cubic.out', - duration: 650 - } -}); - -const bubbles = new mojs.Burst({ - left: 0, top: 0, - radius: 28, - count: 3, - timeline: { delay: 200 }, - children: { - stroke: 'white', - fill: 'none', - scale: 1, - strokeWidth: { 8: 0 }, - radius: { 0 : 'rand(6, 10)' }, - degreeShift: 'rand(-50, 50)', - duration: 450, - delay: 'rand(0, 250)', - } -}); - -const cross = new mojs.Shape({ - left: 0, top: 0, - shape: 'cross', - rotate: 45, - radius: 9, - scale: { 0: 1 }, - stroke: 'white', - duration: 400, - delay: 150 -}); - -const circle = new mojs.Shape({ - left: 0, top: 0, - radius: { 0: 16, easing: 'sin.out' }, - fill: 'none', - stroke: 'white', - strokeWidth: { 10: 0 }, - duration: 450, - easing: 'cubic.out' -}); - -document.addEventListener( 'click', function (e) { - burst - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - bubbles - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - cross - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - circle - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/60d5d3c97981022f20f86c37580bceb1 - -```js -const DURATION = 400 - -const smoke = new mojs.Burst({ - left: 0, top: 0, - degree: 0, - count: 3, - radius: { 0: 100 }, - children: { - fill: 'white', - pathScale: 'rand(0.5, 1)', - radius: 'rand(12, 15)', - swirlSize: 'rand(10, 15)', - swirlFrequency: 'rand(2, 4)', - direction: [ 1, -1 ], - duration: `rand(${1*DURATION}, ${2*DURATION})`, - delay: 'rand(0, 75)', - easing: 'quad.out', - isSwirl: true, - isForce3d: true, - } -}); - - -document.addEventListener( 'click', (e) => { - smoke - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/f307bc95b1ac02c09042c89ea7afe945 - -```js -const DURATION = 400 - -const bubbles = new mojs.Burst({ - left: 0, top: 0, - degree: 0, - count: 3, - radius: { 0: 100 }, - children: { - fill: 'white', - pathScale: 'rand(0.5, 1)', - radius: 'rand(12, 15)', - swirlSize: 'rand(10, 15)', - swirlFrequency: 'rand(2, 4)', - direction: [ 1, -1 ], - duration: `rand(${1*DURATION}, ${2*DURATION})`, - delay: 'rand(0, 75)', - easing: 'quad.out', - isSwirl: true, - isForce3d: true, - } -}); - -const circle = new mojs.Shape({ - top: 0, left: 0, - radius: { 20: 0 }, - stroke: 'white', - strokeWidth: { 5: 0 }, - fill: 'none', - duration: 500 - // delay: 200 -}); - -const cross = new mojs.Shape({ - top: 0, left: 0, - rotate: 45, - shape: 'cross', - radius: { 10: 0 }, - stroke: 'white', - fill: 'none', - easing: 'cubic.out', - duration: 500 -}); - -document.addEventListener( 'click', (e) => { - bubbles - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - circle - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - cross - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/4fe37a79f6d665d749ebcb4f22c2ee4e - -```js -const burst = new mojs.Burst({ - left: 0, top: 0, - degree: 180, - rotate: 90, - radius: { 10: 25 }, - count: 5, - children: { - shape: 'line', - radius: 7, - radiusY: 0, - scale: 1, - strokeDasharray: '100%', - strokeDashoffset: { '-100%' : '100%' }, - stroke: '#F9DD5E' , - easing: 'linear.none', - duration: 600 - } -}); - -document.addEventListener( 'click', function (e) { - burst - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/953926af8c30d3dd297070b1a079e059 - -```js -const burst = new mojs.Burst({ - left: 0, top: 0, - radius: { 10: 25 }, - count: 4, - children: { - shape: 'line', - radius: 7, - radiusY: 0, - scale: 1, - strokeDasharray: '100%', - strokeDashoffset: { '-100%' : '100%' }, - stroke: '#FC2D79' , - easing: 'linear.none', - duration: 600 - } -}); - -document.addEventListener( 'click', function (e) { - burst - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/1018219ace50f564f7bb8b77b53efeb8 - -```js - - -const meteors = new mojs.Burst({ - left: 0, top: 0, - count: 3, - radius: { 0: 250 }, - - children: { - shape: 'line', - stroke: ['#F9DD5E', '#FC2D79', '#11CDC5'], - duration: 400, - radius: 60, - strokeWidth: 8, - isForce3d: true - } -}); - -document.addEventListener( 'click', function (e) { - meteors - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); - -``` - - -# https://codepen.io/sol0mka/pen/d84370a3c19fdcea8c714e7049c9ab5d - -```js -const meteors = new mojs.Burst({ - left: 0, top: 0, - count: 3, - radius: { 0: 250 }, - degree: 0, - - children: { - shape: 'line', - stroke: ['#F9DD5E', '#FC2D79', '#11CDC5'], - duration: 400, - radius: 60, - strokeWidth: 8, - isForce3d: true - } -}); - -document.addEventListener( 'click', function (e) { - meteors - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/2be25259bdd8e01f9ac3770f6f2bd36a - -```js -const meteors = new mojs.Burst({ - left: 0, top: 0, - count: 3, - radius: { 0: 250 }, - degree: 0, - - children: { - shape: 'line', - stroke: ['#F9DD5E', '#FC2D79', '#11CDC5'], - duration: 400, - radius: 60, - strokeWidth: 8, - left: 'stagger(20)', - top: 'stagger(20)', - delay: [ 0, 200, 100 ], - isForce3d: true - } -}); - -document.addEventListener( 'click', function (e) { - meteors - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/bf8377efd5b0dada9537481e29ecd6af - -```js -const meteors = new mojs.Burst({ - left: 0, top: 0, - count: 3, - radius: { 0: 250 }, - degree: 0, - rotate: 225, - - children: { - shape: 'line', - stroke: ['#F9DD5E', '#FC2D79', '#11CDC5'], - duration: 400, - radius: 60, - strokeWidth: 8, - left: 'stagger(20)', - top: 'stagger(20)', - delay: [ 0, 200, 100 ], - isForce3d: true - } -}); - -document.addEventListener( 'click', function (e) { - meteors - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -} ); - -// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/432464f276fe6f06b457915ca6062723 - -```js -const o = new mojs.Burst({ - count: 3, - radius: 0, - degree: 0, - - children: { - stroke: [ '#FC2D79', '#11CDC5', 'white'], - fill: 'none', - duration: 400, - scale: 1, - radius: 35, - radiusY: { 0: 35 }, - strokeWidth: 3, - duration: 800, - delay: 'stagger(125)', - } -}); - -const timeline = new mojs.Timeline; - -timeline - .add( o ); - -new MojsPlayer({ add: timeline, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/33f7924ecd146d951698bf190ac7838e - -```js -const vertLine = new mojs.Burst({ - count: 3, - radius: 0, - degree: 0, - - children: { - shape: 'line', - stroke: [ '#FC2D79', '#11CDC5', 'white'], - duration: 400, - scale: 1, - radius: 35, - radiusX: { 0: 35 }, - strokeWidth: 3, - duration: 800, - delay: 'stagger(125)', - } -}); - -const horLine = new mojs.Burst({ - count: 3, - radius: 0, - degree: 0, - rotate: 90, - y: -50, - x: 1, - - children: { - shape: 'line', - stroke: [ '#FC2D79', '#11CDC5', 'white'], - duration: 400, - scale: 1, - radius: 20, - radiusX: { 0: 20 }, - strokeWidth: 3, - duration: 800, - delay: 'stagger(800, 125)', - } -}); - - -const o = new mojs.Burst({ - count: 3, - radius: 0, - degree: 0, - - children: { - stroke: [ '#FC2D79', '#11CDC5', 'white'], - fill: 'none', - duration: 400, - scale: 1, - radius: 35, - radiusY: { 0: 35 }, - strokeWidth: 3, - duration: 800, - delay: 'stagger(600, 125)', - } -}); - -const timeline = new mojs.Timeline; - -timeline - .add( o, vertLine, horLine ); - -new MojsPlayer({ add: timeline, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/a3c64825683dddd18316f8f288475131 - -```js -const MAIN_OPTS = { - count: 3, - radius: 0, - degree: 0 -} - -const CHILD_OPTS = { - stroke: [ '#FC2D79', '#11CDC5', 'white'], - fill: 'none', - duration: 400, - scale: 1, - radius: 35, - radiusY: { 0: 35 }, - strokeWidth: 3, - duration: 800, - delay: 'stagger(125)', -} - -const vertLine = new mojs.Burst({ - ...MAIN_OPTS, - x: -1, - - children: { - ...CHILD_OPTS, - shape: 'line', - radius: 35, - scaleX: { 0: 1 }, - left: -35, - top: 35, - origin: '100% 50%' - } -}); - -const horLine = new mojs.Burst({ - ...MAIN_OPTS, - rotate: 90, - y: -50, - - children: { - ...CHILD_OPTS, - shape: 'line', - radius: 20, - radiusX: { 0: 20 }, - delay: 'stagger(800, 125)', - } -}); - -const o = new mojs.Burst({ - ...MAIN_OPTS, - width: 10, height: 10, - - children: { - ...CHILD_OPTS, - delay: 'stagger(650, 125)', - } -}); - - -const timeline = new mojs.Timeline; -timeline - .add( o, vertLine, horLine ); - -new MojsPlayer({ add: timeline, isPlaying: true, isRepeat: true }); -``` - - -# https://codepen.io/sol0mka/pen/79db23782ec1eb9d16246b136ec82b9c - -```js -const COLORS = { - RED: '#FD5061', - YELLOW: '#FFCEA5', - BLACK: '#29363B', - WHITE: 'white', - VINOUS: '#A50710' -} - -const burst1 = new mojs.Burst({ - left: 0, top: 0, - count: 5, - radius: { 50: 250 }, - children: { - fill: 'white', - shape: 'line', - stroke: [ COLORS.WHITE, COLORS.VINOUS ], - strokeWidth: 12, - radius: 'rand(30, 60)', - radiusY: 0, - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - degreeShift: 'rand(-360, 360)', - isForce3d: true, - } -}); - -document.addEventListener( 'click', function (e) { - burst1 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/3b9c757a7625dc015753740bcad8fb66 - -```js -const COLORS = { - RED: '#FD5061', - YELLOW: '#FFCEA5', - BLACK: '#29363B', - WHITE: 'white', - VINOUS: '#A50710' -} - -const burst1 = new mojs.Burst({ - left: 0, top: 0, - count: 5, - radius: { 50: 250 }, - children: { - fill: 'white', - shape: 'line', - stroke: [ COLORS.WHITE, COLORS.VINOUS ], - strokeWidth: 12, - radius: 'rand(30, 60)', - radiusY: 0, - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - degreeShift: 'rand(-360, 360)', - isForce3d: true, - } -}); - -const burst2 = new mojs.Burst({ - left: 0, top: 0, - count: 3, - radius: { 0: 250 }, - rotate: 'rand(0, 360)', - children: { - shape: [ 'circle', 'rect' ], - points: 5, - fill: [ COLORS.WHITE, COLORS.VINOUS ], - radius: 'rand(30, 60)', - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - isForce3d: true - } -}); - -document.addEventListener( 'click', function (e) { - burst1 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - burst2 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/4c8366d3a7eea2a5f83a3d457f8e9cd9 - -```js -const COLORS = { - RED: '#FD5061', - YELLOW: '#FFCEA5', - BLACK: '#29363B', - WHITE: 'white', - VINOUS: '#A50710' -} - -const burst1 = new mojs.Burst({ - left: 0, top: 0, - count: 5, - radius: { 50: 250 }, - children: { - fill: 'white', - shape: 'line', - stroke: [ COLORS.WHITE, COLORS.VINOUS ], - strokeWidth: 12, - radius: 'rand(30, 60)', - radiusY: 0, - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - degreeShift: 'rand(-360, 360)', - isForce3d: true, - } -}); - -const burst2 = new mojs.Burst({ - top: 0, left: 0, - count: 3, - radius: { 0: 250 }, - children: { - shape: [ 'circle', 'rect' ], - points: 5, - fill: [ COLORS.WHITE, COLORS.VINOUS ], - radius: 'rand(30, 60)', - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - isForce3d: true - } -}); - -const CIRCLE_OPTS = { - left: 0, top: 0, - fill: COLORS.WHITE, - scale: { .2: 1 }, - opacity: { 1: 0 }, - isForce3d: true, - isShowEnd: false -} - -const circle1 = new mojs.Shape({ - ...CIRCLE_OPTS, - radius: 200, - }); - -const circle2 = new mojs.Shape({ - ...CIRCLE_OPTS, - radius: 240, - easing: 'cubic.out', - delay: 150, -}); - -document.addEventListener( 'click', function (e) { - burst1 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - burst2 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - circle1 - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - circle2 - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/699cfc8716a13e0e1c15105af2b6fb95 - -```js -const COLORS = { - RED: '#FD5061', - YELLOW: '#FFCEA5', - BLACK: '#29363B', - WHITE: 'white', - VINOUS: '#A50710' -} - -const bgBurst = new mojs.Burst({ - left: 0, top: 0, - count: 3, - radius: 0, - degree: 0, - isShowEnd: false, - children: { - fill: [ COLORS.RED, COLORS.WHITE, COLORS.BLACK ], - radius: 'stagger(200, 2)', - scale: { .25 : 3 }, - duration: 500, - delay: 'stagger(50)', - easing: [ 'cubic.out', 'cubic.out', 'cubic.out' ], - isForce3d: true, - } -}); - -const burst1 = new mojs.Burst({ - left: 0, top: 0, - count: 5, - radius: { 50: 250 }, - children: { - fill: 'white', - shape: 'line', - stroke: [ COLORS.WHITE, COLORS.VINOUS ], - strokeWidth: 12, - radius: 'rand(30, 60)', - radiusY: 0, - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - degreeShift: 'rand(-360, 360)', - isForce3d: true, - } -}); - -const burst2 = new mojs.Burst({ - top: 0, left: 0, - count: 3, - radius: { 0: 250 }, - children: { - shape: [ 'circle', 'rect' ], - points: 5, - fill: [ COLORS.WHITE, COLORS.VINOUS ], - radius: 'rand(30, 60)', - scale: { 1: 0 }, - pathScale: 'rand(.5, 1)', - isForce3d: true - } -}); - -const CIRCLE_OPTS = { - left: 0, top: 0, - fill: COLORS.WHITE, - scale: { .2: 1 }, - opacity: { 1: 0 }, - isForce3d: true, - isShowEnd: false -} - -const circle1 = new mojs.Shape({ - ...CIRCLE_OPTS, - radius: 200, - }); - -const circle2 = new mojs.Shape({ - ...CIRCLE_OPTS, - radius: 240, - easing: 'cubic.out', - delay: 150, -}); - -document.addEventListener( 'click', function (e) { - burst1 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - burst2 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - circle1 - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - circle2 - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - bgBurst - .tune({ x: e.pageX, y: e.pageY }) - .replay(); -}); -``` - - -# https://codepen.io/sol0mka/pen/6caf96461207a5caa9226fbd2631569d - -```js -const COLORS = { - RED: '#FD5061', - YELLOW: '#FFCEA5', - BLACK: '#29363B', - WHITE: 'white', - VINOUS: '#A50710' -} - -const burst1 = new mojs.Burst({ - left: 0, top: 0, - count: 8, - radius: { 50: 150 }, - children: { - shape: 'line', - stroke: [ 'white', '#FFE217', '#FC46AD', '#D0D202', '#B8E986', '#D0D202' ], - scale: 1, - scaleX: { 1 : 0 }, - // pathScale: 'rand(.5, 1.25)', - degreeShift: 'rand(-90, 90)', - radius: 'rand(20, 40)', - // duration: 200, - delay: 'rand(0, 150)', - isForce3d: true - } -}); - -const largeBurst = new mojs.Burst({ - left: 0, top: 0, - count: 4, - radius: 0, - rotate: 45, - radius: { 0: 450 }, - children: { - shape: 'line', - stroke: '#4ACAD9', - scale: 1, - scaleX: { 1 : 0 }, - radius: 100, - duration: 450, - isForce3d: true, - easing: 'cubic.inout' - } -}); - -const CIRCLE_OPTS = { - left: 0, top: 0, - scale: { 0: 1 }, -} - -const largeCircle = new mojs.Shape({ - ...CIRCLE_OPTS, - fill: 'none', - stroke: 'white', - strokeWidth: 4, - opacity: { .25 : 0 }, - radius: 250, - duration: 600, -}); - -const smallCircle = new mojs.Shape({ - ...CIRCLE_OPTS, - fill: 'white', - opacity: { .5 : 0 }, - radius: 30, -}); - -document.addEventListener( 'click', function (e) { - - burst1 - .tune({ x: e.pageX, y: e.pageY }) - .generate() - .replay(); - - largeBurst - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - largeCircle - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - smallCircle - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - -}); -``` - - -# https://codepen.io/sol0mka/pen/97a95a5cb7663cf336e8d80f9f511553 - -```js -var burst1 = new mojs.Burst({ - y: { 0: -100, easing: 'cubic.in' }, - count: 'rand(4,6)', - degree: 40, - rotate: -25, - radius: { 0 : 100 }, - children: { - fill: 'white', - radius: 'rand(10, 20)', - pathScale: ['rand(0, .5)', 'rand(.5, 1)'], - degreeShift: 'rand(.2, 1)', - swirlFrequency: 'rand(3, 10)', - direction: [ 1, -1 ], - isSwirl: true, - duration: 600, - easing: 'cubic.out', - isForce3d: true - } -}); - - -const timeline = new mojs.Timeline({ speed: .5 }); -timeline.add( burst1 ); - -new MojsPlayer({ - add: timeline, isPlaying: true, isRepeat: true -}); -``` - - -# https://codepen.io/sol0mka/pen/bbc4c52b7145d9d872ac437f21afd75f - -```js -const BUST_OPTS = { - parent: '#js-container', - count: 'rand(3,5)', - degree: 40, - rotate: -25, - radius: { 25 : 75 }, - children: { - fill: 'white', - radius: 'rand(8, 15)', - pathScale: ['rand(0, .5)', 'rand(.35, 1)'], - degreeShift: 'rand(.2, 1)', - swirlFrequency: 'rand(3, 5)', - direction: [ 1, -1 ], - isSwirl: true, - duration: 400, - easing: 'cubic.out', - isForce3d: true - } -} - -const burst1 = new mojs.Burst({ - ...BUST_OPTS, - left: 145, - top: 75, - y: { 0: -65 } -}); - -const burst2 = new mojs.Burst({ - ...BUST_OPTS, - left: 295, - top: 25, - y: { 0: -50 } -}); - -const burst3 = new mojs.Burst({ - ...BUST_OPTS, - left: 50, - top: 25, - y: { 0: -50 } -}); - -const burst4 = new mojs.Burst({ - ...BUST_OPTS, - left: 175, - top: 0, - y: { 0: -35 } -}); - - -const timeline = new mojs.Timeline({ speed: .5 }); -timeline.add( burst1, burst2, burst3, burst4 ); - -document.addEventListener('click', function () { - timeline.replay(); -}); - -// new MojsPlayer({ -// add: timeline, isPlaying: true, isRepeat: true -// }); -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` - - -# - -```js - -``` diff --git a/docs/tutorials/easing/path-easing/README.md b/docs/tutorials/easing/path-easing/README.md deleted file mode 100644 index 3c0b0b06..00000000 --- a/docs/tutorials/easing/path-easing/README.md +++ /dev/null @@ -1 +0,0 @@ -Coming soon diff --git a/docs/tutorials/getting-started.md b/docs/tutorials/getting-started.md deleted file mode 100644 index a8d590a1..00000000 --- a/docs/tutorials/getting-started.md +++ /dev/null @@ -1,84 +0,0 @@ - -# Getting started - -## Setup mo.js in your project -- Run `npm i @mojs/core` OR `yarn add @mojs/core` -- Import it `import mojs from '@mojs/core'` - - Or use the minified CDN version: - ```js - - ``` - -- Create your animations. What about a bouncy circle? - - - - - - ---- - -Or maybe a loading animation? - - - - - - -Go creative! - -See the [API](/api/README.md) for more info. - -## Usage with Server Side Rendering (SSR) -Note that this is a client-side library, and is not meant to be run on a server. So if you are using a library like Next.js, Gatsby, Nuxt.js or Angular Universal, make sure not to run your MoJS code on the server, just on the client side. How to do that differs from the library you are using. In React based libraries you can use the `useEffect` hook or a dynamic import ([read more here](https://dev.to/vvo/how-to-solve-window-is-not-defined-errors-in-react-and-next-js-5f97)). For Angular Universal you can use Guards ([read more about it here](https://github.com/angular/universal/blob/master/docs/gotchas.md#window-is-not-defined)). Lastly if you use Vue with Nuxt.js, you will find [more info here](https://nuxtjs.org/faq/window-document-undefined), or info about using the `mounted` hook [here](https://nuxtjs.org/guides/concepts/server-side-rendering). - -Also see tutorial on how to use MoJS inside a [React app here](./usage-with-react.md). diff --git a/docs/tutorials/shape-swirl/README.md b/docs/tutorials/shape-swirl/README.md deleted file mode 100755 index aa4ad815..00000000 --- a/docs/tutorials/shape-swirl/README.md +++ /dev/null @@ -1,1937 +0,0 @@ -# Shape & ShapeSwirl - - -This post is about Shape and ShapeSwirl - modules that help you to bootstrap motion effects. -- [API reference](/api/shape-swirl) -#### Author: [legomushroom](https://github.com/legomushroom/) - -* * * - -## Shape - -`Shape` is a special `mojs` module that bootstraps visual effects. The idea behind `Shapes` is simple and neat - you can have an animatable shape in any part of the screen or an `HTML` element with one declarative call. So it's like saying: - -> Hey Computer! I want a pink outlined polygon right in the middle of the screen! - -or like something this: - -> Hey Machine! I want a dust trail after this element when it moves! - -And appropriate effects should appear. Most importantly, `Shape` is a tiny bit that can be composed into more mature modules like [`Burst`](/tutorials/burst/) or `Stagger` which we will discuss shortly in the upcoming tutorials, right now I should make sure you are comfortable with [Shape APIs](/api/shape.md) and use cases. - -So in the simplest way - `Shape` is just a declarative shape transition in any desired place of the screen in any moment of the time. The concept can be confusing at first, so I will try to give you as much code samples as possible, there is the first one: - - -```js -new mojs.Shape({ - shape: 'circle', - isShowStart: true, -}); -``` - - - -Nothing interesting yet. Well maybe there is one thing - the shape magically appears just in the middle of the screen. `mojs` takes care to create as narrow container for the shape as possible, bootstraps all the markup and places the result just where you want it. Pretty handy. `isShowStart` property says to the shape to be visible even before any animations starts. - -Obviously, you can style the shape as you want (play around with the different props and use the buttons to update the code): - - - - - - -The entire list of shape properties with comments could be found at [Shape API](/api/shape/) section. - -## Value types - -When you set colors, they can be expressed in different forms like [color keywords](https://www.w3.org/TR/css3-color/), `rgb`, `rgba` or `hex` (see `stroke` and `fill` properties). - -Numeric properties may be unit based (like `top`/`left` below) or can be expressed with `rand` strings (like `x` below): - - - - -::: tip -Use the _Update code_ button to see the random function in use. -::: - -Here above, we've set random value for the `x` property in the interval from `-250` to `250` so it should show up in random position inside that period every time you will rerun the code. `rand` string syntax is simple - it takes start and end value to generate a random value between those two. - -With the `x` and `y` properties, the shape is always translated from the current position of the shape, so if the `x` property gets the value of 250px, the circle's gets translated 250px to the right. - -### Radius -The `radius` property sets shape's (no prizes for guessing) radius. Also, you can set `radiusX`/`radiusY` values explicitly: - - - - -Worth noting that the `radius` property is a property that determines size of any shape, not just `circle` as in example above, so if you have a shape of `rect` or `polygon` or any other, they would have `radius` properties too, just like a circle shape: - - -```js -var circle = new mojs.Shape({ - shape: 'circle', - radius: 10, - radiusX: 20, // explicit radiusX - left: '25%', - fill: 'deeppink', - isShowStart: true, -}); - -var rect = new mojs.Shape({ - shape: 'rect', - radius: 15, - left: '50%', - fill: 'cyan', - isShowStart: true, -}); - -var polygon = new mojs.Shape({ - shape: 'polygon', - radiusX: 10, - radiusY: 20, - left: '75%', - fill: 'yellow', - isShowStart: true, -}); -``` - - -Also, worth noting that the `radius` properties control form of shape not just size - it gets pretty clear with `zigzag` or `curve` shapes: - - -```js -var zigzag = new mojs.Shape({ - shape: 'zigzag', - points: 11, - radius: 25, - radiusY: 50, - left: '25%', - fill: 'none', - stroke: 'deeppink', - isShowStart: true, -}); - -var curve = new mojs.Shape({ - shape: 'curve', - points: 11, - radius: 25, - radiusY: 50, - left: '50%', - fill: 'none', - stroke: 'deeppink', - isShowStart: true, -}); - -var cross = new mojs.Shape({ - shape: 'cross', - points: 11, - radius: 25, - radiusX: 50, - left: '75%', - fill: 'none', - stroke: 'deeppink', - isShowStart: true, - y: -25, -}); -``` - - -You can see in example above, the `radiusY` controls size of the spikes for the `zigzag` shape and for the `curve` it controls how much it bends up. - -## Boolean properties -As for boolean properties of the shape, they start with the `is` prefix to separate them from other values (e.g. `isShowStart`, `isShowEnd`, `isYoyo` etc.). - -## Delta (∆) - -To keep the `APIs` declarative, `mojs` uses `delta` objects to describe transitions of shape properties: - - - -We have set transition for the `scale` property of the shape from `0` to `1`. As you can see the `delta` in `mojs` is plain javascript object that holds `start` and `end` state of the property, where the `key` of the object is the `start` state and `value` of the object is the `end` state respectively. If you still feel confused, just change `:` to `->` in your mind and you will have `{ '0 -> 1' }` outcome which might be more intuitive. - -::: tip -To play the animation, add the `.play()` method after your shape declaration. For simplicity, we have left that one out for most of the other examples. For other public methods, check out the [API](/api/shape/). -::: - -Start and end values in the `delta` object can be `unit` based or random (`rand`) ones or whatever you have — just the same as we did it before with static values (all objects in the code sample below are deltas): - - -```js -const circle = new mojs.Shape({ - shape: 'circle', - scale: { 0 : 1 }, - left: '25%', - fill: { 'cyan': 'yellow' }, - radius: 25, - - duration: 2000, - repeat: 999, -}).play(); - -const rect = new mojs.Shape({ - shape: 'rect', - left: '50%', - fill: 'none', - radius: 20, - stroke: { 'rgba(0,255,255, 1)' : 'magenta' }, - strokeWidth: { 10: 0 }, - strokeDasharray: '100%', - strokeDashoffset: { '-100%' : '100%' }, - rotate: { 0: 180 }, - - duration: 2000, - repeat: 999, -}).play(); - -const polygon = new mojs.Shape({ - shape: 'polygon', - points: 5, - left: '75%', - fill: { 'deeppink' : '#00F87F' }, - x: { 'rand(-100%, -200%)' : 0 }, - rotate: { 0: 'rand(0, 360)' }, - radius: 25, - - duration: 2000, - repeat: 999, -}).play(); -``` - - -Here, delta of the `strokeDashoffset` property on the rectangle uses **_unit based_** values. The delta of the `x` property of the polygon shape uses random unit based values. The delta of the `fill` property for all the shapes uses **_color keywords_** to describe color transitions. - -The nice thing about declarative APIs is that you define _what_ you want to do by contrast with _how_ to do it, so it makes the intention of the transition crystal clear with just one short glimpse. Consider this code sample of a trirotate: - - - - - -If you will translate this code sample to proper English, you will have something like this — we have a `orange` `polygon` of `65px radius` right in the middle of the screen(by default), when animation starts — it rotates from `-120` to `-40` degrees, shifts `180px` to the right starting from `-200px` and `scale`s from `0` to `1.3` concurrently. That happens during `800ms` and repeats `10` times with default `easing` and `sin.in` easing when moving backward in `yoyo` period. When animation ends, the shape `disappears`. - -Note that almost every property transition besides `tween` properties (like duration/delay etc) and `boolean` values, can be expressed with `delta` object, please refer to the [API](/api/shape/) on that matter. The `∆` symbol in the comment right above properties defines that the property is _"deltable"_ thus supports delta transitions. - -### Delta easing -Delta can also have its own explicit `easing` field that can hold any `mojs` easing type, this makes shape transitions more flexible to the real world needs. - - - - -Here above, we've defined the explicit easing values for `scale` and `fill` properties. - - -### Delta curve -The 3rd property that is available on delta objects is `curve` property that overrides `easing` property if both present. The `curve` property is the way to go if you want to declare a `property curve` for a property transition, where start and end values of the `delta` are based on a curve, that will be multiplied by current curve's value when animation runs: - - -```js -const shiftCurve = mojs.easing.path( 'M0,100 C50,100 50,100 50,50 C50,0 50,0 100,0' ); -const scaleCurveBase = mojs.easing.path( 'M0,100 C21.3776817,95.8051376 50,77.3262711 50,-700 C50,80.1708527 76.6222458,93.9449005 100,100' ); -const scaleCurve = (p) => { return 1 + scaleCurveBase(p); }; -const nScaleCurve = (p) => { return 1 - scaleCurveBase(p)/10; }; - -const circle = new mojs.Shape({ - shape: 'rect', - fill: { '#F64040' : '#F64040', curve: scaleCurve }, - radius: 10, - rx: 3, - x: { [-125] : 125, easing: shiftCurve }, - scaleX: { 1 : 1, curve: scaleCurve }, - scaleY: { 1 : 1, curve: nScaleCurve }, - origin: { '0 50%' : '100% 50%', easing: shiftCurve }, - - isYoyo: true, - delay: 500, - duration: 800, - repeat: 999 -}).play(); -``` - - -We won't spend a lot of time with `property curves` in this tutorial, but I highly encourage you to dig into the [topic](/tutorials/easing/path-easing/) because it is a very sophisticated and powerful concept to note. - -So to recap, `delta`'s syntax: - -```js -{ - startState: endState, - easing: 'cubic.out', // optional `easing`, - curve: 'M0,100 L100,0' // optional `curve` that suppress `easing` if both present -} -``` - -At this point we can declare and animate shapes. - -Then what? - -## Then Zen - -You can chain shape states with `then` calls (hit play button to see): - - - -::: tip Note -In the demo above, I've added `MojsPlayer` to control the demo sequence instead of explicit `.play` call on the shape. `MojsPlayer` is part of **_mojs tools_** that gives you GUI controls thus helps you to craft your motion sequences. Also, it keeps the animation state and settings on page reloads, saving you lots of time and effort. Since our animations can get quite complex, the player could be a good aide. [Read more here](/tools/#player) how to use it. -::: - -So in the demo above, we have continued the sequence with the next state declaration for the `strokeWidth` and `scale` properties. What's important - `then` doesn't need delta to describe new transition - it creates delta automatically from whatever property value was before to the new one. - -If you want explicitly specify `easing` for next property state - you can use object instead of primitive value, where `to` key describes the next state ( see `scale` property in `then` call above). - -Yet you can set entire new `delta` for `then` call (see `strokeWidth` and `stroke` property in `then` call below): - - - - -As you can witness, setting new `delta` in `then` call tells `mojs` to ignore everything whatever was before and proceed with completely new delta transition. - -The last thing to note is that if the `duration` property is not set in the new `then` call, it inherits the value from the previous block: - - - - - -So in the code sample above, the duration inside `then` call has the same value of `600ms` inherited from the previous state block, but the `delay` has the default value of `0`. - -## Tweenable Interface - -`Shape` obeys `tweenable` interface thus it has the same `tween properties`, `callbacks` and `public methods` as any [tween](/api/tweens/tween.md) has: - -```js -const shape = new mojs.Shape({ - // shape properties which we have already used - shape: 'rect', - stroke: 'cyan', - rotate: { [-360] : 0 }, - - // tween properties - duration: 600, - delay: 200, - repeat: 0, - speed: 1, - yoyo: false, - easing: 'sin.out', - backwardEasing: 'sin.in', - yoyo: true, - - // callbacks - onStart (isForward, isYoyo) { - //... - }, - onRepeatStart (isForward, isYoyo) { - //... - }, - onUpdate (ep, p, isForward, isYoyo) { - //... - }, - onRepeatComplete (isForward, isYoyo) { - //... - }, - onComplete (isForward, isYoyo) { - //... - }, - onProgress (p, isForward, isYoyo) { - //... - }, - onRefresh (isBefore) { - //... - }, - onPlaybackStart () {}, - onPlaybackPause () {}, - onPlaybackStop () {}, - onPlaybackComplete () {}, -}) -// tween public methods -.play() -.playBackward() -.pause() -.stop() -.replay() -.replayBackward() -.setProgress() -.setSpeed() -.reset() -``` - - - -Also implementing `tweenable` interface means that any `Shape` can be `add`ed or `append`ed to any `timeline` exact the same way as any simple `tween`: - - -```js -const timeline = new mojs.Timeline; -timeline - .add( rect, circle, triangle, polygon, triangle2, polygon2, circle2 ); -``` - - - -Here above we have added shapes to timeline just like any tween - with the `add` public method. - -## Tune - -After you have created a shape, you can `tune` any of its properties before starting the animation. The `tune` method is handy when you want to add some interactivity to your animation or to play the shape regarding user input - the method was designed exactly for this purpose(click somewhere to see): - - -```js -document.addEventListener( 'click', function (e) { - - circle1 - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - - circle2 - .tune({ x: e.pageX, y: e.pageY }) - .replay(); - -}); -``` - - -::: tip -See the full source code on [codepen](https://codepen.io/sol0mka/pen/XKdWJg). You can also see how to use it in a container like we do it on this demo page [in this pen](https://codepen.io/sandstedt/pen/PgyYro) -::: - - -Here above, we have tuned `x` and `y` properties of the circles before `replay`ing it. Any properties besides `shape` ones could be tuned at any moment of time. - -Note that `tune` call transforms entire shape's property query that was set up with `then` calls. It works that way to keep the chain up to date starting from the newly tuned value. Thus you tune not only the first shape state but the subsequent ones. For instance, if you had a chain of y `-50 -> 50` then `100`, and tune it to `-100`, you will eventually have `-150 -> -150 -> 100` chain. But if you will tune to delta value like `-100 -> 0`, you will have the `-100 -> 0 -> 100` chain as the result (click somewhere to see): - - -```js -const circle = new mojs.Shape({ - y: { [-50] : 0 }, -}).then({ - y: 100 -}); - -document.addEventListener( 'click', function (e) { - - // no tune - circle1 - .replay(); - - // static value tune, results in -100 for the first block, - // transforms the second block to the '-100 -> 100' delta - circle2 - .tune({ y: -100 }) - .replay(); - - // delta tune, results in -100 : 25 for the first block, - // transforms the second block to the '25 -> 100' delta - circle3 - .tune({ y: { [-100] : 0 } }) - .replay(); -}); -``` - - - - - -_1st circle wasn't tuned at all, 2nd circle was tuned to static value, 3rd circle was tuned to new delta value_ - - -## Generate - -The `generate` method is very similar to `tune` one, but it doesn't receive any options. The method was designed to regenerate randoms that the shape had on initialization: - - -```js -/* Props from smallCircles: -{ - delay: 'rand(0, 350)', - x: 'rand(-50, 50)', - y: 'rand(-50, 50)', - radius: 'rand(5, 20)' -} -*/ - -document.addEventListener( 'click', function (e) { - for ( let i = 0; i < smallCircles.length; i++ ) { - smallCircles[i] - .generate() - .replay(); - } -}); -``` - - - -Here above, shapes had randoms in `delay`, `x`, `y` and `radius` properties. Then we've added the mouse click handler, and `generate` the shapes inside, as the result, we have unique effect pattern every time the click event fires. [See full code here.](https://codepen.io/sol0mka/pen/7d905a98fd120441f52df0b59421fc80) - -## Custom Shapes - -You probably have noticed that mojs supports a bunch of built in shapes. Namely, they are `circle`, `rect`, `polygon`, `line`, `cross`, `equal`, `curve` and `zigzag`. You can extend this set of shapes by providing mojs with a custom one that suits your needs. For that: - -* Draw your shape on a `100x100` artboard (viewBox) in any vector editor and save the shape as a `svg`. -* Create a class that extends the `mojs.CustomShape` class. -* Copy the shape tags from within the svg file... - ```svg{2} - - - - ``` -* ... and paste and return them inside a `getShape` method. - ```js - class Bubble extends mojs.CustomShape { - getShape () { return ''; } - getLength () { return 200; } // optional - } - ``` - -* Now you can register this shape in mojs with a `custom name` that will be used further in `shape` property of `mojs.Shape` constructor as you did it before: - -```js -mojs.addShape( 'bubble', Bubble ); // passing name and Bubble class -// now it is avaliable on mojs.Shape constructor as usual -new mojs.Shape({ shape: 'bubble' });` -``` - -All together in one block: - - -```js -/* ADD CUSTOM SHAPE SOMEWHERE IN YOUR CODE */ -class Heart extends mojs.CustomShape { - getShape () { return ''; } - getLength () { return 200; } // optional -} -mojs.addShape( 'heart', Heart ); // passing name and Bubble class - -/* USE CUSTOM SHAPE */ -// now it is available on mojs.Shape constructor as usual -const heart = new mojs.Shape({ - shape: 'heart', // <--- shape of heart is now available! - fill: 'none', - stroke: 'red', - scale: { 0 : 1 }, - strokeWidth: { 50 : 0 }, - y: -20, - duration: 1000, -}); -``` - - - -Worth noting that you should remove all presentation attributes from svg tags to give `mojs` the ability to style them, otherwise the values will be static: - - -```js -/* ADD CUSTOM SHAPE */ -class Heart extends mojs.CustomShape { - getShape () { - return '' + '' + ''; // see full code here: https://codepen.io/sol0mka/pen/d2be0ef912c7e21e0e990536ed6d39fa - } - getLength () { return 200; } // optional -} -mojs.addShape( 'heart', Heart ); // passing name and Bubble class - -/* USE CUSTOM SHAPE */ -// now it is available on mojs.Shape constructor as usual -const heart = new mojs.Shape({ - shape: 'heart', - fill: 'none', - stroke: { 'white' : 'deeppink' }, - scale: { 0 : 1 }, - strokeWidth: { 50 : 0 }, - y: -20, - duration: 1000, -}); -``` - - - -Here above, the middle heart has static `stroke` property on its tag, so it was left unattended by contrast with other two. - -Regarding the second `getLength` lifecycle method, - it is handy only if you want to use relative percent values for `strokeDasharray`/`strokeDashoffset` properties. Since `mojs` knows very little about the custom shape you have had provided, it is on you to specify what is the perimeter length of the custom shape. In the example below, we return the precise `292.110107421875` length of the heart from the `getLength` method, this allows us to use percent values in `strokeDash*` properties. - - -```js -/* ADD CUSTOM SHAPE */ -class Heart extends mojs.CustomShape { - getShape () { return ''; } // see full code here: https://codepen.io/sol0mka/pen/75894cd43b0f12ecdb425cad5149ab37 - getLength () { return 292.110107421875; } // optional -} -mojs.addShape( 'heart', Heart ); // passing name and Bubble class - -/* USE CUSTOM SHAPE */ -// now it is available on mojs.Shape constructor as usual -const heart = new mojs.Shape({ - shape: 'heart', - fill: 'none', - stroke: 'white', - strokeDasharray: '100%', - strokeDashoffset: { '-100%' : '100%' }, - y: -20, - duration: 1000, -}); -``` - - -Here above, we are using percent values for `strokeDashoffset` property so we had to provide the custom shape with `getLength` method for precise stroke dash length calculations. Read how to find out what the exact length is [in the Wiki](https://github.com/mojs/mojs/wiki/Get-the-exact-length-for-a-custom-shape). - -## ShapeSwirl - -`ShapeSwirl` module basically is a `Shape` with a little bit more functionality bolted on. ShapeSwirl automatically calculates sinusoidal x/y path for shape making it easy to send the shapes over sine trajectories. - - -```js -const shapeswirl = new mojs.ShapeSwirl({ - fill: '#F64040', - y: { 0: -150 }, - duration: 1000 -}); -``` - - -::: tip -Note that the ShapeSwirl has the default of `{ 1 : 0 }` for the `scale` property so it fades out. - -To trigger the animation we have added a click event listener to the container and then run `shapeswirl.replay()`. -::: - -To give you control over this behavior, ShapeSwirl accepts more `6` properties, thus you can define frequency or size of the path and other supporting parameters: - -```js -const shapeSwirl = new mojs.ShapeSwirl({ - y: { 0: -150 }, - // other props: - isSwirl: true, // sets if the shape should follow sinusoidal path, true by default - swirlSize: 10, // defines amplitude of the sine - swirlFrequency: 3, // defines frequency of the sine - pathScale: 'rand( .1, 1 )', // defines how much the total path length should be scaled - direction: 1, // direction of the sine could be 1 or -1 - degreeShift: 45, // rotatation shift for the sinusoidal path -}); -``` - -### 1. isSwirl -The `isSwirl` property (`true` by default) defines if shape should follow sine path, if set to `false` it will act exactly the same as simple `Shape`. - -### 2. swirlSize -The `swirlSize` property (`10` by default) defines the deviation or amplitude of the sine. Here is an example with `swirlSize: 35`: - - -```js -const swirl = new mojs.ShapeSwirl({ - fill: '#F64040', - y: { 0: -150 }, - radius: 8, - swirlSize: 35, - swirlFrequency: 4, - duration: 1000, - direction: -1, -}); -``` - - -### 3. swirlFrequency -The `swirlFrequency` property (`3` by default) defines the frequency of the sine, here is an example with `swirlFrequency: 10`: - - -```js -const swirl = new mojs.ShapeSwirl({ - fill: '#F64040', - y: { 0: -150 }, - radius: 8, - swirlFrequency: 10, - duration: 1000, -}); -``` - - -### 4. direction -The `direction` property (`1` by default) defines direction of the amplitude of the sine - it have value of either `1` or `-1`. Here is the example for `-1`. Note how it starts to the left instead of right: - - -```js -const swirl = new mojs.ShapeSwirl({ - fill: '#F64040', - y: { 0: -150 }, - radius: 8, - direction: -1, - swirlSize: 35, - swirlFrequency: 4, - duration: 1000 -}); -``` - - -### 5. pathScale -The `pathScale` property (`1` by default) defines the scale size of the sine path. Here is an example of `pathScale: .5` - which scales the sine by half (of the original radius): - - -```js -const swirl = new mojs.ShapeSwirl({ - fill: '#F64040', - y: { 0: -150 }, - radius: 8, - pathScale: .5, - duration: 1000, -}); -``` - - - -You are probably thinking - why not just to shorten the `y` value instead of `pathScale` one? Well, because the `pathScale` scales the actual path of the swirl, for instance if you will add the transition for the `x` property, the path scale will affect the product of `y` and `x` - the actual path that the shape makes while move: - - -```js -const swirl = new mojs.ShapeSwirl({ - fill: '#F64040', - x: { 0: -100 }, - y: { 0: -150 }, - radius: 8, - pathScale: .5, - duration: 1000, -}); -``` - - -The `pathScale` property will become very useful when we will discuss the `Burst` module shortly and will have a bunch of `ShapeSwirls` at once, especially when we will need to randomize their sine lengths. - -### 6. degreeShift -The `degreeShift` property (`0` by default) defines rotatation of the swirl. This property becomes interesting when `shapeSwirl` is used inside other modules (like `Burst`). For now it will act just like rotatation of the sine path. Here is an example for `degreeShift: 90`: - - -```js -const swirl = new mojs.ShapeSwirl({ - fill: '#F64040', - y: { 0: -150 }, - radius: 8, - degreeShift: 90, - duration: 1000, -}); -``` - - -How ShapeSwirl can be handy will be cristal clear soon, in short, the main idea behind swirls is to give you the ability to compose dust/smoke/bubbles effects or basically any effect that needs shapes to move over sine path: - - - - [See code here](https://codepen.io/sol0mka/pen/90e2506d73313d14d49486f7d71fb9d0) - - - -Except those 6 properties, the `ShapeSwirl` is the same as a simple `Shape`. - - -## Recap - -That was a pretty fast intro to the `Shape` module. You can use [Shape APIs](/api/shape) and [ShapeSwirl API](/api/shape-swirl) sections as reference further on. What is important ro remember: -* You can create a `Shape` in any part of the screen, or an HTML element using the parent prop. -* If you want to animate some property — you add a `delta` object (`{'from': to}`) that describes the transition of that property. -* You can chain the shape transitions with `then` calls and `tune` new properties when you want. -* Tweenable interface allows you to work with `Shape` in the same way you work with any other `Tween`. - -Now you probably asking yourself - Why do we need something as simple as an animatable shape? In the next section I will cover few use cases for shapes but most importantly it will become crystal clear why do we need shapes in the next [Burst Tutorial](/tutorials/burst/). Probably, you can treat this tutorial as finished at this point, the further sections are rather optional and were written just for fun. So you can skip reading them in favor of [Burst Tutorial](/tutorials/burst/) but I highly encourage you to continue reading to gain solid understanding of the shapes. - -* * * - -## Use Cases - -> Please note that the use cases section contains a lot of live code examples but the actual code samples are omitted for time savings and simplicity sake. The actual code is still available in the Codepen link and I highly encourage you to read through and play with them while we will walk through this section. You can omit reading large demos code since it is probably unreadable (Codepen can contain bundled code) or it could be too large to understand sparingly, but you can return to them later, - after you will complete this tutorial. I will leave a little (×) mark for you to indicate that you can skip reading the source code of the Codepen for now. - -Despite the fact that `Shape` and `ShapeSwirl` modules are nothing than tiny bits that compose higher order modules creating some matured effects, they have strong use cases and can be used on their own. There is no thing in the whole world such expressive and appealing as simple geometric shapes so they are ubiquitous in the motion graphics nowadays. You can use shapes in your animations to add special effects and details making your animation more expressive. Also, `Shapes` are often used to implode them into `UI` thus enhancing it. From the development point of view — `Shape` can be created with just one declarative call allowing you to focus entirely on you motion sequences and don't spend the time bootstrapping things, this fact powers you with a `"shape framework"` to think in, so your motion sequences get more organized and consistent. - -I hope you don't believe that `Shapes` are useful just because I claimed it out loud, so let me convince you with the next real world use cases. Note that the code samples are omitted in this section but feel free to check Codepen link to tweak the part that interests you. - -### Motion Graphics Use Cases - -Motion graphics is indeed one of the strongest use cases for `Shapes`. Nothing breathes life into static content better than the use of motion graphics. With shapes, the limits are simply the imagination of the designer or the artist, - you can create complex mograph sequences based entirely on geometric or custom shapes or use them aside as reinforcement support. - -#### Bubbles - -Let's start with the simple intro sequence, it was composed of custom "speech bubble" shapes and few built in ones. - - -[Link to pen](https://codepen.io/sol0mka/pen/EyKxqO) - -Custom shapes allow you to use shapes that suite your current needs. To be clear that's not just images that you can animate inside some wrapper, they are highly styleable shapes thus a way flexible than just an image or HTMLElement with some background. - -#### Geometric Scenes - -Let's walk through some short random geometric scenes just to get some intuition about shape usage with mograph. After that, we will combine them to get slightly longer intro sequence. - -We will start with a simple and appealing triangles scene. Just 6 triangles and few `then` statements: - - -[Link to pen](https://codepen.io/sol0mka/pen/4db9ec6079a3537d8c60ec888dd8e532) - -We will compose the next scene by using another 6 triangles, slightly more elegant, with a little contrast to the first one, but still quite simple: - - -[Link to pen](https://codepen.io/sol0mka/pen/c0b7b94e90142f19acba6ed9a4b05a2f) - -Let's do the next one with contrast to these two, - simple rectangle with some sparks, this one rather funky: - - -[Link to pen](https://codepen.io/sol0mka/pen/c33a3582fc02842b99fa6eb01be6b3ba) - -Note that the best module to use for the white `sparks` effect on the sides of the square would be the `Burst` module which we will discuss shortly in the next tutorial. Meanwhile in this particular demo, it was made with custom shapes to give you yet another clue how you would use the custom shapes. - -After that we need a nice transition between screens, just a few circles will do the trick: - - -[Link to pen](https://codepen.io/sol0mka/pen/95a862f1ad8445134466ad7d64213d46) - -::: warning Accessibility warning -When making fullscreen transitions, make sure to include a chech for if the user preferes reduced motion. We don't wanna trigger a migrane attack for our user. For example, you can play the animation from the end instead of frame 0, to ensure the last frame will be visible: - -```js -let prefersReducedMotion = false; -const motionQuery = matchMedia('(prefers-reduced-motion)'); -const handleReduceMotionChanged = () => { - prefersReducedMotion = motionQuery.matches; // set to true if user preferes reduced motion -} -motionQuery.addListener(handleReduceMotionChanged); -handleReduceMotionChanged(); // trigger once on load to check initial value - -this.timeline.play( - prefersReducedMotion ? 1000 : 0; // 1000 = the length/end of the timeline -); -``` -[Read more at CSS-tricks](https://css-tricks.com/introduction-reduced-motion-media-query/). -::: - -The last scene for this sequence would be `mojs` logo reveal - use case for shapes in tandem with `property curves`: - - -[Link to pen](https://codepen.io/sol0mka/pen/b37bb9c6dede99d0ac75d60b5fb0d43d) - - -Now, let's finally compose these short scenes into one: - - -[Link to pen](https://codepen.io/sol0mka/pen/RRRgLq) - -_You can find the entire source code in [this repo](https://github.com/legomushroom/shape-demo1) since the bundled Codepen code ~~could be~~ **is** unreadable._ - -#### Word reveal - - -[Link to pen](https://codepen.io/sol0mka/pen/c94452fb65dbf676b0ae8a12d4267473) - - -That's was the last demo for the mograph use cases, I hope you getting more convinced that shapes could be useful sometimes. Let's move on. - -## Inspiration -There are also few gifs for your inspiration. All of them pretty much easy with `mojs` shapes: - - ![Example gif](/assets/gifs/shape-mograph/blend_square.gif) - ![Example gif](/assets/gifs/shape-mograph/random.gif) - ![Example gif](/assets/gifs/shape-mograph/omam-logo-imprint.gif) - ![Example gif](/assets/gifs/shape-mograph/number_1_jrcanest.gif) - ![Example gif](/assets/gifs/shape-mograph/lookinside.gif) - ![Example gif](/assets/gifs/shape-mograph/lukas_pink_loading.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-1.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-2.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-3.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-4.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-5.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-6.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-7.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-8.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-11.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-12.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-10.gif) - ![Example gif](/assets/gifs/shape-mograph/shapes-9.gif) - - -## Animation Use Cases -Animation is another field for Shapes application. You can compose some visual effects to support your main sequence, crafting more details and depth. - -I've made a little animation demo as a starting point to which we will apply some effects. 4 physical balls in a harsh living situation(x): - - - -_You can find the entire source code in [this repo](https://github.com/legomushroom/shape-demo2) since the bundled Codepen code could be unreadable._ - -The demo itself is a good illustration of how you can use shapes as "main actors" in your scenes because it was made entirely with shapes. But there are few cases that should be discussed besides that. - -For instance, you can add the effect of collision between balls with ease(x): - - - -_You can find the entire source code in [this repo](https://github.com/legomushroom/shape-demo2) since the bundled Codepen code could be unreadable._ - -As you would expect, the effect itself was composed of bunch of shapes and swirls: - - - - -The next effect, you can add to the scene is the "motion trails" effect (x): - - - -_You can find the entire source code in [this repo](https://github.com/legomushroom/shape-demo2) since the bundled Codepen code could be unreadable._ - -Motion trail effect is usually used to exaggerate velocity of the object that moves and the environment it moves in. Just a nice subtle detail. The effect was composed of 2 shapes, namely curves. - -There is another simple example with lines instead of curves: - - - -The next effect that can fit this scene is the "dust trail" effect (x): - - - -_You can find the entire source code in [this repo](https://github.com/legomushroom/shape-demo2) since the bundled Codepen code could be unreadable._ - -It was composed of bunch of swirls, let's spend some time and see how exactly you can build something like that. First, you want to make the swirls move downward, - somewhere into the ground: - - - -Then put these swirls inside `overflow: hidden` container to constrain the visible area: - - - -As the last touch, you need to add 2 swirls that will fade upward at the end: - - - -To recap, there is the same exact effect with simple object: - - - -_Note: Again, this dust effect could be done with just one declarative call with `Burst` or `Stagger` modules that we will discuss shortly, but for now let's keep it `Swirl`._ - -That's basically all for animation use cases. My effort in this section was focused to convey the idea of how you can use the shapes to enhance and support your main animation scenes, applying little effects and details. - - -Just a few gifs for your inspiration: - - ![Example gif](/assets/gifs/shape-animation/bens.gif) - ![Example gif](/assets/gifs/shape-animation/galshir-candles.gif) - ![Example gif](/assets/gifs/shape-animation/space-dog.gif) - ![Example gif](/assets/gifs/shape-animation/galshir-coffee-machine.gif) - ![Example gif](/assets/gifs/shape-animation/galshir.gif) - ![Example gif](/assets/gifs/shape-animation/galshir-sharpener.gif) - ![Example gif](/assets/gifs/shape-animation/galshir-toaster.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-9.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-11.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-20.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-2.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-6.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-8.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-10.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-111.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-12.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-16.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-21.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-24.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-25.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-28.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-31.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-32.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-36.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-38.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-39.gif) - ![Example gif](/assets/gifs/shape-animation/rain_dribbble.gif) - ![Example gif](/assets/gifs/shape-animation/sloth.gif) - ![Example gif](/assets/gifs/shape-animation/LingoAsset-23.gif) - - - -## UI Use Cases - -UI is another common use case for shapes. You can enhance UI transitions with shapes, add effects or even implode shapes to use them as part of UIs. - -Usually motion in UI helps the user to catch a clue about position, purpose and intention of the UI element. - -### Bubble Close Button - -The next demo illustrates how the shapes can be used to appeal users' attention, providing them with feedback about availability of the control element in a playful way. There is a demo with two shapes that act in place of UI element: - - - -Then you can add even more effects to the button to fit the mood of your current UIs, for instance "bubble UI": - - - -If user will click the close button, we need to remove it, for that we can add a "bubbles fade out" effect to keep the "bubbles" pace: - - - -This is how it will look like if we will connect these two transitions (click the close button): - - - -That's the exact same effect I've used in Bubble Layout demo a while ago, when I was trying to convey the bubble interface (click on any circle to see the close button)(x): - - - -In this demo above you can notice two more effects that were made with shapes, - one is the subtle white ripple that spreads out when you click on any bubble (click somewhere to see): - - - -The second one is the white collision effect right under the project image box when it jumps over the screen: - - - -### Micro Interactions - -Since the shapes are tuneable, you can add effects to you UI regarding user interactions (hover over the links to see): - - - -Another demo for micro interactions is the pointer ripple, the effect that spreads out after a user clicks any touchable surface. The `mojs-player` itself has a lot of those so I will put an empty player as demo (click on player controls to see): - - - -That's basically exact the same principle we have used in this tune demo (click somewhere to see): - - - -### Love/Hate Modal - -OK. Let's do another demo with shapes regarding UI. This time, we will have a plus button, it will show up from bottom left, after it will stop - we will mimic button push transition by adding the concurrent rotation of the button. By that we will imitate "let's go/follow me" gesture, inviting user to follow up with a click: - - - -Then we can expand the button sequence even more to add some playful splash effect: - - - -Then, if user doesn't click the button for a while, let's invite him to proceed by adding the callout vibration, to mime an incoming call: - - - -When the user eventually will click the button, we will show the quiz modal with the most valuable question we have ever had. That's how the modal will look like: - - - -Every piece of this sequence above is composed of shapes - ripple inside a modal, few details in the top and bottom right corners, background spread effect, modal shape itself and its corner are shapes too. - -Now when the user hovers over any button, we need to show some tension, conveying that something is going to happen if he will proceed with a click (hover over buttons to see): - - - -The extend parts of inflating modal are nothing than plain shapes, in fact - `curve`s that just get scaled when the user hovers over the buttons. I've set the modal shape to disappear to reveal the extending parts so it will be clear for you what I mean (hover over buttons): - - - -As you can see now - the extending parts are just `curves` on each side of the modal. They get larger when user hovers over the buttons. - -Next, if user leaves the button with his pointer, we need to show the tension relief by mimicking the air currents that float out of the modal, just a few swirls would do here (hover over buttons and then release to see): - - - -In the other case, when the user finally proceeds with the button click, we will blow up the modal as a consequence of the modal's tension and show the chosen word. That's the entire sequence (x): - - - -_You can find the entire source code in [this repo](https://github.com/legomushroom/shape-demo3) since the bundled Codepen code could be unreadable._ - -There are few gifs for your inspiration over the UI's and shapes: - - - ![Example gif](/assets/gifs/shape-ui/upload.gif) - ![Example gif](/assets/gifs/shape-ui/awsm.gif) - ![Example gif](/assets/gifs/shape-ui/checkbox.gif) - ![Example gif](/assets/gifs/shape-ui/download.gif) - ![Example gif](/assets/gifs/shape-ui/circle-menu-github-open-source-ramotion.gif) - ![Example gif](/assets/gifs/shape-ui/close.gif) - ![Example gif](/assets/gifs/shape-ui/dailyui-049.gif) - ![Example gif](/assets/gifs/shape-ui/download2.gif) - ![Example gif](/assets/gifs/shape-ui/dribbble_hex-nav.gif) - ![Example gif](/assets/gifs/shape-ui/dribbble-morph.gif) - ![Example gif](/assets/gifs/shape-ui/ezgif.com-gif-maker2.gif) - ![Example gif](/assets/gifs/shape-ui/ezgif.com-gif-maker5.gif) - ![Example gif](/assets/gifs/shape-ui/fab-animation.gif) - ![Example gif](/assets/gifs/shape-ui/finalshot.gif) - ![Example gif](/assets/gifs/shape-ui/hp_dribbble_2.gif) - ![Example gif](/assets/gifs/shape-ui/IMG_1171.gif) - ![Example gif](/assets/gifs/shape-ui/inboxui.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-1.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-2.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-3.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-4.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-5.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-6.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-7.gif) - ![Example gif](/assets/gifs/shape-ui/LingoAsset-8.gif) - ![Example gif](/assets/gifs/shape-ui/pause-push2.gif) - ![Example gif](/assets/gifs/shape-ui/right-and-wrong.gif) - ![Example gif](/assets/gifs/shape-ui/search_3.gif) - ![Example gif](/assets/gifs/shape-ui/share.gif) - ![Example gif](/assets/gifs/shape-ui/time-marine-hud.gif) - ![Example gif](/assets/gifs/shape-ui/anim.gif) - - - - - -## It's a wrap! - -Phew, that was intense. I hope you didn't get bored. We have touched only the surface of possible use cases in this post but I hope it puts some light on why and when you can use shapes. At this point it's probably clear that to create a shape you use a declarative call and the shape appears in any place of the screen (or HTMLElement) you want without any bootstrapping. You can use `then` method to chain states of shape and `tune` them afterward or even re`generate` all random properties on it before starting the animation. Remember that shapes obey the `tweenable` interface thus it has tween properties, callbacks and public methods that any `tween` has. - -Need to admit that this post was written as an introduction to more complex and mature module that is called `Burst`, it was important to familiarize you with the base concepts and API's syntax before we will proceed further. I think now you are ready to meet the [Burst](/tutorials/burst/)! - -## Thank you! - -I deeply appreciate you did it down here, I tried to make it not so boring for you. For any questions, catch me on twitter ([@legomushroom](https://twitter.com/legomushroom)), ask a question on StackOverflow with `#mojs` tag, rise an issue on [GitHub repo](https://github.com/mojs/mojs) or join our [Slack Community](https://mojs.slack.com/). You can help the project on [GitHub](https://github.com/mojs/). {'Love <3.'} - -Kudos to [Jonas Sandstedt](https://twitter.com/jonassandstedt) for his help in rewriting and proof reading this tutorial! diff --git a/docs/tutorials/usage-with-react.md b/docs/tutorials/usage-with-react.md deleted file mode 100644 index 93226e6f..00000000 --- a/docs/tutorials/usage-with-react.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -title: Usage with React -sidebarDepth: 0 ---- - -# Usage with React - -> ### In this tutorial your will learn how to use MoJS in React using React's Hooks API. - -#### Author: [Jonas Sandstedt](https://twitter.com/jonassandstedt) - -[Fork example on CodeSandbox](https://codesandbox.io/s/mojs-react-example-kbikb?file=/src/MojsExample.js) - -::: tip TLDR; -Assign your animation to an `useRef` immutable object inside a `useEffect` hook. Then you can use this ref to control the animation, like this: `myRef.current.play()` -::: - ---- - -## Install packages - -Start by installing React, ReactDOM and @mojs/core from your favorite package manager. Here we use npm: - -```bash -npm i react react-dom @mojs/core -``` - -## Create the animation component - -Here is the final component that we're gonna build: - -```js -import React, { useRef, useEffect, useState, useCallback } from "react"; -import mojs from "@mojs/core"; - -/** - * Usage: - * import MojsExample from './MojsExample'; - * - * - */ - -const MojsExample = ({ duration }) => { - const animDom = useRef(); - const bouncyCircle = useRef(); - const [isOpen, setIsOpen] = useState(false); - const [isAnimating, setIsAnimating] = useState(false); - - useEffect(() => { - // Prevent multiple instansiations on hot reloads - if (bouncyCircle.current) return; - - // Assign a Shape animation to a ref - bouncyCircle.current = new mojs.Shape({ - parent: animDom.current, - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: duration, - isShowStart: true, - easing: "elastic.inout", - onStart() { - setIsAnimating(true); - }, - onComplete() { - setIsAnimating(false); - }, - }); - }); - - // Update the animation values when the prop changes - useEffect(() => { - if (!bouncyCircle.current) return; - bouncyCircle.current.tune({ duration: duration }); - isOpen - ? bouncyCircle.current.replayBackward() - : bouncyCircle.current.replay(); - setIsOpen(!isOpen); - }, [duration]); - - const clickHandler = useCallback(() => { - // If the "modal" is open, play the animation backwards, else play it forwards - isOpen ? bouncyCircle.current.playBackward() : bouncyCircle.current.play(); - setIsOpen(!isOpen); - }, [isOpen]); - - return ( -
-
-

MoJS React Example

-

Using hooks

- -
-
- ); -}; - -export default MojsExample; -``` - ---- - -### Let's break it down! - -First we create a `useRef` hooks, and takes advantage of its immutable object and assign our MoJS `Shape` animation to it. This way we can later use it to control our animation: - -```js{2,5} -const MojsExample = () => { - const bouncyCircle = useRef(); - - useEffect(() => { - bouncyCircle.current = new mojs.Shape({ - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: 1000, - isShowStart: true, - easing: "elastic.inout", - }); - }); - - return; -}; -``` - -By checking if the ref already has been assigned, we can prevent the animation from being instantiated again on re-renders (very useful when using hot reloads): - -```js{5} -const MojsExample = () => { - const bouncyCircle = useRef(); - - useEffect(() => { - if (bouncyCircle.current) return; - - bouncyCircle.current = new mojs.Shape({ - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: 1000, - isShowStart: true, - easing: "elastic.inout", - }); - }); - - return; -}; -``` - -To get the reference to DOM element we want to append our animation to, we can use a `useRef` hook, and attach it to a container: - -```js{3,9,21} -const MojsExample = () => { - const bouncyCircle = useRef(); - const animDom = useRef(); - - useEffect(() => { - if (bouncyCircle.current) return; - - bouncyCircle.current = new mojs.Shape({ - parent: animDom.current, - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: 1000, - isShowStart: true, - easing: "elastic.inout", - }); - - bouncyCircle.current.play(); - }); - - return
; -}; - -export default MojsExample; -``` - -Now lets add a button to play the animation when we click it. To control the animation, we can now reference the MoJS animation using `bouncyCircle.current.play();` - -```js{19-21,25-27} -const MojsExample = () => { - const bouncyCircle = useRef(); - const animDom = useRef(); - - useEffect(() => { - if (bouncyCircle.current) return; - - bouncyCircle.current = new mojs.Shape({ - parent: animDom.current, - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: 1000, - isShowStart: true, - easing: "elastic.inout", - }); - }); - - const clickHandler = useCallback(() => { - bouncyCircle.current.play(); - }); - - return ( -
- -
- ); -}; - -export default MojsExample; -``` - -::: tip -If we instead would want to play our animation directly, we could add `bouncyCircle.current.play();` directly after the bouncyCircle declaration. -::: - -By passing props to our `MojsExample` function, we can control the initial values of the animation, and also `.tune()` the animation when they change. - -```js{7,19,25-29} -/** - * Usage: - * import MojsExample from './MojsExample'; - * - * - */ -const MojsExample = ({ duration }) => { - const animDom = useRef(); - const bouncyCircle = useRef(); - - useEffect(() => { - if (bouncyCircle.current) return; - - bouncyCircle.current = new mojs.Shape({ - parent: animDom.current, - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: duration, - isShowStart: true, - easing: "elastic.inout", - }); - }); - - useEffect(() => { - if (!bouncyCircle.current) return; - bouncyCircle.current.tune({ duration: duration }); - bouncyCircle.current.replay(); - }, [duration]); - - const clickHandler = useCallback(() => { - bouncyCircle.current.play(); - }); - - return ( -
- -
- ); -}; -``` - -As a final touch, lets add some methods to listen animation events, and use Reacts useState to save it as a local state: - -```js{4-5,18-23,30-33,38-40,45} -const MojsExample = ({ duration }) => { - const animDom = useRef(); - const bouncyCircle = useRef(); - const [isOpen, setIsOpen] = useState(false); - const [isAnimating, setIsAnimating] = useState(false); - - useEffect(() => { - if (bouncyCircle.current) return; - - bouncyCircle.current = new mojs.Shape({ - parent: animDom.current, - shape: "circle", - fill: { "#FC46AD": "#F64040" }, - radius: { 50: 200 }, - duration: duration, - isShowStart: true, - easing: "elastic.inout", - onStart() { - setIsAnimating(true); - }, - onComplete() { - setIsAnimating(false); - }, - }); - }); - - useEffect(() => { - if (!bouncyCircle.current) return; - bouncyCircle.current.tune({ duration: duration }); - isOpen - ? bouncyCircle.current.replayBackward() - : bouncyCircle.current.replay(); - setIsOpen(!isOpen); - }, [duration]); - - const clickHandler = useCallback(() => { - // If the "modal" is open, play the animation backwards, else play it forwards - isOpen ? bouncyCircle.current.playBackward() : bouncyCircle.current.play(); - setIsOpen(!isOpen); - }, [isOpen]); - - return ( -
- -
- ); -}; -``` - ---- - -## Create the root App and render the page - -Finally we import our component and add it to the root of our site. - -```js -import React from "react"; -import ReactDOM from "react-dom"; - -import MojsExample from "./MojsExample"; - -const rootElement = document.getElementById("root"); -ReactDOM.render( - - - , - rootElement -); -``` - -You can see the full example and try it out here: [CodeSandbox](https://codesandbox.io/s/mojs-react-example-kbikb?file=/src/MojsExample.js). -There is also a [button example](https://codesandbox.io/s/mojs-react-example-kbikb?file=/src/Button.js) with a `Burst` animation using an object pooling array. - -::: tip Usage with Server Side Rendering (SSR) - -Note that this is a client-side library, and is not meant to be run on a server. So if you are using a library like Next.js, Gatsby, Nuxt.js or Angular Universal, make sure not to run your MoJS code on the server, just on the client side. How to do that differs from the library you are using. In React based libraries you can use the `useEffect` hook or a dynamic import ([read more here](https://dev.to/vvo/how-to-solve-window-is-not-defined-errors-in-react-and-next-js-5f97)). -::: - -Happy animating! diff --git a/index.html b/index.html new file mode 100644 index 00000000..e5a0feb9 --- /dev/null +++ b/index.html @@ -0,0 +1,50 @@ + + + + + + mo.js + + + + + + + + + + + + + + + + +
Fast

Fast

Silky smooth animations and effects for staggering user's experience.

Retina Ready

Retina Ready

Screen density independent effects look good on any device.

Simple

Simple

Simple declarative APIs to master your motion project with ease.

Modular

Modular

Custom build for the current project's needs. Bye bye large file size overheads.

Robust

Robust

1580+ unit tests and ci techniques help us to carve & backstrap the reliable tool.

Open Sourced

Open Sourced

Great growing community refines mo· js fast and ships frequently.

+ + + diff --git a/docs/.vuepress/public/logo.png b/logo.png similarity index 100% rename from docs/.vuepress/public/logo.png rename to logo.png diff --git a/logo.svg b/logo.svg deleted file mode 100644 index 0773ccd8..00000000 --- a/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index d5febf85..00000000 --- a/package-lock.json +++ /dev/null @@ -1,15421 +0,0 @@ -{ - "name": "mojs.github.io", - "version": "1.9.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "mojs.github.io", - "version": "1.9.0", - "license": "MIT", - "dependencies": { - "@mojs/core": "^1.7.1", - "@mojs/curve-editor": "^1.7.1", - "@mojs/player": "^1.3.0", - "@vuepress/shared-utils": "^1.8.2", - "vue-prism-editor": "^0.6.1" - }, - "devDependencies": { - "cache-loader": "^4.1.0", - "cross-env": "^7.0.3", - "vuepress": "^1.9.7" - }, - "engines": { - "node": "^20", - "npm": "^10" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz", - "integrity": "sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/plugin-syntax-decorators": "^7.22.10" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", - "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", - "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", - "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", - "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", - "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", - "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", - "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", - "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.20", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.15", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.15", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.15", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.15", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.19", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mojs/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@mojs/core/-/core-1.7.1.tgz", - "integrity": "sha512-DMe8b6DPiYqpPoVi9HiDTVTchDE47A6aqGD0b1yGmHrGnNO+I25fSKkVFxvjWrW1lAIqpV/ROMZH03GPl3d6PA==", - "dependencies": { - "@babel/runtime": "^7.23.1" - }, - "engines": { - "node": "^20", - "npm": "^10" - } - }, - "node_modules/@mojs/curve-editor": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@mojs/curve-editor/-/curve-editor-1.7.1.tgz", - "integrity": "sha512-lBxqrV5UCQfBrO+D1uOgSv9HRi+juAaNUljqiaeHhyP11Pjr9fr2haMDeOCWwhuy1VzEMG20w5gbTvXWceKtyQ==", - "dependencies": { - "hammerjs": "^2.0.8", - "path-data-polyfill": "^1.0.0", - "preact": "^7.1.0", - "redux": "^3.5.2", - "redux-recycle": "^1.2.0", - "redux-undo": "^0.6.1" - } - }, - "node_modules/@mojs/player": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@mojs/player/-/player-1.3.0.tgz", - "integrity": "sha512-x6FruXqv2+4+OPV17tjOU5LAT4r+Boc/lru8PaGDHaWd7pwC+i1GUI/tz1P5CIclws4KwwC5ZVj3kGRbHs2Wcw==", - "dependencies": { - "classlist-polyfill": "^1.0.2", - "hammerjs": "^2.0.6" - }, - "engines": { - "node": "^20", - "npm": "^10" - } - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", - "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", - "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.18", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", - "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.37", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", - "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", - "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.12", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", - "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==", - "dev": true - }, - "node_modules/@types/markdown-it": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-10.0.2.tgz", - "integrity": "sha512-FGKiVW1UgeIEAChYAuHcfCd0W4LsMEyrSyTVaZiuJhwR4BwSVUD8JKnzmWAMK2FHNLZSPGUaEkpa/dkZj2uq1w==", - "dev": true, - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.3.tgz", - "integrity": "sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", - "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "node_modules/@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "node_modules/@types/q": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", - "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz", - "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", - "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", - "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/source-list-map": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.3.tgz", - "integrity": "sha512-I9R/7fUjzUOyDy6AFkehCK711wWoAXEaBi80AfjZt1lIkbe6AcXKd3ckQc3liMvQExWvfOeh/8CtKzrfUFN5gA==", - "dev": true - }, - "node_modules/@types/tapable": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.9.tgz", - "integrity": "sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==", - "dev": true - }, - "node_modules/@types/uglify-js": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.2.tgz", - "integrity": "sha512-9SjrHO54LINgC/6Ehr81NjAxAYvwEZqjUHLjJYvC4Nmr9jbLQCIZbWSvl4vXQkkmR1UAuaKDycau3O1kWGFyXQ==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/@types/webpack": { - "version": "4.41.34", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.34.tgz", - "integrity": "sha512-CN2aOGrR3zbMc2v+cKqzaClYP1ldkpPOgtdNvgX+RmlWCSWxHxpzz6WSCVQZRkF8D60ROlkRzAoEpgjWQ+bd2g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/@types/webpack-dev-server": { - "version": "3.11.6", - "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz", - "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==", - "dev": true, - "dependencies": { - "@types/connect-history-api-fallback": "*", - "@types/express": "*", - "@types/serve-static": "*", - "@types/webpack": "^4", - "http-proxy-middleware": "^1.0.0" - } - }, - "node_modules/@types/webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-iLC3Fsx62ejm3ST3PQ8vBMC54Rb3EoCprZjeJGI5q+9QjfDLGt9jeg/k245qz1G9AQnORGk0vqPicJFPT1QODQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - } - }, - "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", - "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", - "dev": true - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", - "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", - "dev": true - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", - "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "@vue/babel-helper-vue-transform-on": "^1.1.5", - "camelcase": "^6.3.0", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-jsx/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", - "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-preset-app": { - "version": "4.5.19", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz", - "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "peerDependencies": { - "@babel/core": "*", - "core-js": "^3", - "vue": "^2 || ^3.0.0-0" - }, - "peerDependenciesMeta": { - "core-js": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-preset-app/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vue/babel-preset-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", - "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", - "dev": true, - "dependencies": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", - "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", - "@vue/babel-sugar-functional-vue": "^1.4.0", - "@vue/babel-sugar-inject-h": "^1.4.0", - "@vue/babel-sugar-v-model": "^1.4.0", - "@vue/babel-sugar-v-on": "^1.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0", - "vue": "*" - }, - "peerDependenciesMeta": { - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-sugar-composition-api-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", - "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-composition-api-render-instance": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", - "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-functional-vue": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", - "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", - "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", - "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-sugar-v-on": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", - "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/@vue/compiler-sfc/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dev": true, - "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/@vuepress/core": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-1.9.10.tgz", - "integrity": "sha512-H9ddo5fSinPb8QYl8OJFbZikMpOW84bm/U3Drzz8CnCXNtpda7CU2wX/XzOhe98G8jp45xhtZRkxOrqzBBAShA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.4", - "@vue/babel-preset-app": "^4.1.2", - "@vuepress/markdown": "1.9.10", - "@vuepress/markdown-loader": "1.9.10", - "@vuepress/plugin-last-updated": "1.9.10", - "@vuepress/plugin-register-components": "1.9.10", - "@vuepress/shared-utils": "1.9.10", - "@vuepress/types": "1.9.10", - "autoprefixer": "^9.5.1", - "babel-loader": "^8.0.4", - "bundle-require": "2.1.8", - "cache-loader": "^3.0.0", - "chokidar": "^2.0.3", - "connect-history-api-fallback": "^1.5.0", - "copy-webpack-plugin": "^5.0.2", - "core-js": "^3.6.4", - "cross-spawn": "^6.0.5", - "css-loader": "^2.1.1", - "esbuild": "0.14.7", - "file-loader": "^3.0.1", - "js-yaml": "^3.13.1", - "lru-cache": "^5.1.1", - "mini-css-extract-plugin": "0.6.0", - "optimize-css-assets-webpack-plugin": "^5.0.1", - "portfinder": "^1.0.13", - "postcss-loader": "^3.0.0", - "postcss-safe-parser": "^4.0.1", - "toml": "^3.0.0", - "url-loader": "^1.0.1", - "vue": "^2.6.10", - "vue-loader": "^15.7.1", - "vue-router": "^3.4.5", - "vue-server-renderer": "^2.6.10", - "vue-template-compiler": "^2.6.10", - "vuepress-html-webpack-plugin": "^3.2.0", - "vuepress-plugin-container": "^2.0.2", - "webpack": "^4.8.1", - "webpack-chain": "^6.0.0", - "webpack-dev-server": "^3.5.1", - "webpack-merge": "^4.1.2", - "webpackbar": "3.2.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@vuepress/core/node_modules/cache-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-3.0.1.tgz", - "integrity": "sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==", - "dev": true, - "dependencies": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/@vuepress/core/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/@vuepress/core/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/core/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/core/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/core/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/core/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/core/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vuepress/core/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/core/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@vuepress/markdown": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.9.10.tgz", - "integrity": "sha512-sXTLjeZzH8SQuAL5AEH0hhsMljjNJbzWbBvzaj5yQCCdf+3sp/dJ0kwnBSnQjFPPnzPg5t3tLKGUYHyW0KiKzA==", - "dev": true, - "dependencies": { - "@vuepress/shared-utils": "1.9.10", - "markdown-it": "^8.4.1", - "markdown-it-anchor": "^5.0.2", - "markdown-it-chain": "^1.3.0", - "markdown-it-emoji": "^1.4.0", - "markdown-it-table-of-contents": "^0.4.0", - "prismjs": "^1.13.0" - } - }, - "node_modules/@vuepress/markdown-loader": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/markdown-loader/-/markdown-loader-1.9.10.tgz", - "integrity": "sha512-94BlwKc+lOaN/A5DkyA9KWHvMlMC1sWunAXE3Tv0WYzgYLDs9QqCsx7L5kLkpcOOVVm/8kBJumnXvVBwhqJddw==", - "dev": true, - "dependencies": { - "@vuepress/markdown": "1.9.10", - "loader-utils": "^1.1.0", - "lru-cache": "^5.1.1" - } - }, - "node_modules/@vuepress/plugin-active-header-links": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.9.10.tgz", - "integrity": "sha512-2dRr3DE2UBFXhyMtLR3sGTdRyDM8YStuY6AOoQmoSgwy1IHt7PO7ypOuf1akF+1Nv8Q2aISU06q6TExZouu3Mw==", - "dev": true, - "dependencies": { - "@vuepress/types": "1.9.10", - "lodash.debounce": "^4.0.8" - } - }, - "node_modules/@vuepress/plugin-last-updated": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-last-updated/-/plugin-last-updated-1.9.10.tgz", - "integrity": "sha512-YxzWGF/OfU6WsHSynZFn74NGGp7dY27Bjy9JyyFo8wF5+2V1gpyDjveHKHGKugS/pMXlxfjzhv9E2Wmy9R7Iog==", - "dev": true, - "dependencies": { - "@vuepress/types": "1.9.10", - "cross-spawn": "^6.0.5" - } - }, - "node_modules/@vuepress/plugin-last-updated/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/@vuepress/plugin-nprogress": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-1.9.10.tgz", - "integrity": "sha512-I1kkm6yWUQd7vwiV3lEDVpVP0Lr04K0zlczU502lDUa1RufSZ7vt+mlF5fOM28GqT+pKTEToWmm+VNT/R3qvMQ==", - "dev": true, - "dependencies": { - "@vuepress/types": "1.9.10", - "nprogress": "^0.2.0" - } - }, - "node_modules/@vuepress/plugin-register-components": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-register-components/-/plugin-register-components-1.9.10.tgz", - "integrity": "sha512-sgdJ5OydTPZAoTkselpvVP3Xsd6bfZ0FpaxOTinal0gJ99h49lvLu9bvzMx13rdGRFO/kRXn0qQQpwKTAfTPqA==", - "dev": true, - "dependencies": { - "@vuepress/shared-utils": "1.9.10", - "@vuepress/types": "1.9.10" - } - }, - "node_modules/@vuepress/plugin-search": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-1.9.10.tgz", - "integrity": "sha512-bn2XJikaRgQZXvu8upCjOWrxbLHIRTqnJ3w7G0mo6jCYWGVsHNo6XhVpqylpLR2PWnHT/ImO2bGo38/5Bag/tQ==", - "dev": true, - "dependencies": { - "@vuepress/types": "1.9.10" - } - }, - "node_modules/@vuepress/shared-utils": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.9.10.tgz", - "integrity": "sha512-M9A3DocPih+V8dKK2Zg9FJQ/f3JZrYsdaM/vQ9F48l8bPlzxw5NvqXIYMK4kKcGEyerQNTWCudoCpLL5uiU0hg==", - "dependencies": { - "chalk": "^2.3.2", - "escape-html": "^1.0.3", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "gray-matter": "^4.0.1", - "hash-sum": "^1.0.2", - "semver": "^6.0.0", - "toml": "^3.0.0", - "upath": "^1.1.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vuepress/theme-default": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-1.9.10.tgz", - "integrity": "sha512-XnXn9t+pYCIhWi3cZXJlighuy93FFm5yXdISAAlFlcNkshuGtqamkjacHV8q/QZMfOhSIs6wX7Hj88u2IsT5mw==", - "dev": true, - "dependencies": { - "@vuepress/plugin-active-header-links": "1.9.10", - "@vuepress/plugin-nprogress": "1.9.10", - "@vuepress/plugin-search": "1.9.10", - "@vuepress/types": "1.9.10", - "docsearch.js": "^2.5.2", - "lodash": "^4.17.15", - "stylus": "^0.54.8", - "stylus-loader": "^3.0.2", - "vuepress-plugin-container": "^2.0.2", - "vuepress-plugin-smooth-scroll": "^0.0.3" - } - }, - "node_modules/@vuepress/types": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@vuepress/types/-/types-1.9.10.tgz", - "integrity": "sha512-TDNQn4og85onmBpLTTXXmncW3rUnYGr2MkuI8OIFJZetDNM49t1WbjNVlrT+kx7C6qXi6okDQgrHGYXajHZWfg==", - "dev": true, - "dependencies": { - "@types/markdown-it": "^10.0.0", - "@types/webpack-dev-server": "^3", - "webpack-chain": "^6.0.0" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agentkeepalive": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", - "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/algoliasearch": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz", - "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==", - "dev": true, - "dependencies": { - "agentkeepalive": "^2.2.0", - "debug": "^2.6.9", - "envify": "^4.0.0", - "es6-promise": "^4.1.0", - "events": "^1.1.0", - "foreach": "^2.0.5", - "global": "^4.3.2", - "inherits": "^2.0.1", - "isarray": "^2.0.1", - "load-script": "^1.0.0", - "object-keys": "^1.0.11", - "querystring-es3": "^0.2.1", - "reduce": "^1.0.1", - "semver": "^5.1.0", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/algoliasearch/node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/algoliasearch/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autocomplete.js": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.36.0.tgz", - "integrity": "sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==", - "dev": true, - "dependencies": { - "immediate": "^3.2.3" - } - }, - "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", - "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.32.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/buffer-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", - "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "node_modules/bundle-require": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-2.1.8.tgz", - "integrity": "sha512-oOEg3A0hy/YzvNWNowtKD0pmhZKseOFweCbgyMqTIih4gRY1nJWsvrOCT27L9NbIyL5jMjTFrAUpGxxpW68Puw==", - "dev": true, - "peerDependencies": { - "esbuild": ">=0.13" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.2.tgz", - "integrity": "sha512-w0bH1IF9rEjdi0a6lTtlXYT+vBZEJL9oytaXXRdsD68MH6+SrZGOGsu7s2saHQvYXqwo/wBdkW75tt8wFpj+mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", - "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", - "dev": true, - "dependencies": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001546", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz", - "integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/classlist-polyfill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", - "integrity": "sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4=" - }, - "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/component-props": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz", - "integrity": "sha1-+bffm5kntubZfJvScqqGdnDzSUQ=" - }, - "node_modules/component-xor": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/component-xor/-/component-xor-0.0.4.tgz", - "integrity": "sha1-xV2DzMG5TNUImk6T+niRxyY+Wao=" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", - "dev": true, - "dependencies": { - "bluebird": "^3.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dev": true, - "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", - "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", - "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", - "dev": true, - "dependencies": { - "browserslist": "^4.22.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "engines": { - "node": ">4" - } - }, - "node_modules/css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", - "dev": true, - "dependencies": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/css-loader/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==", - "dev": true, - "dependencies": { - "css": "^2.0.0" - } - }, - "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dir-glob/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/docsearch.js": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.3.tgz", - "integrity": "sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @docsearch/js.", - "dev": true, - "dependencies": { - "algoliasearch": "^3.24.5", - "autocomplete.js": "0.36.0", - "hogan.js": "^3.0.2", - "request": "^2.87.0", - "stack-utils": "^1.0.1", - "to-factory": "^1.0.0", - "zepto": "^1.2.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dom-iterator/-/dom-iterator-1.0.0.tgz", - "integrity": "sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig==", - "dependencies": { - "component-props": "1.1.1", - "component-xor": "0.0.4" - } - }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domhandler/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.543", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.543.tgz", - "integrity": "sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/envify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", - "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.0", - "through": "~2.3.4" - }, - "bin": { - "envify": "bin/envify" - } - }, - "node_modules/envinfo": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", - "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.7.tgz", - "integrity": "sha512-+u/msd6iu+HvfysUPkZ9VHm83LImmSNnecYPfFI01pQ7TTcsFR+V0BkybZX7mPtIaI7LCrse6YRj+v3eraJSgw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "optionalDependencies": { - "esbuild-android-arm64": "0.14.7", - "esbuild-darwin-64": "0.14.7", - "esbuild-darwin-arm64": "0.14.7", - "esbuild-freebsd-64": "0.14.7", - "esbuild-freebsd-arm64": "0.14.7", - "esbuild-linux-32": "0.14.7", - "esbuild-linux-64": "0.14.7", - "esbuild-linux-arm": "0.14.7", - "esbuild-linux-arm64": "0.14.7", - "esbuild-linux-mips64le": "0.14.7", - "esbuild-linux-ppc64le": "0.14.7", - "esbuild-netbsd-64": "0.14.7", - "esbuild-openbsd-64": "0.14.7", - "esbuild-sunos-64": "0.14.7", - "esbuild-windows-32": "0.14.7", - "esbuild-windows-64": "0.14.7", - "esbuild-windows-arm64": "0.14.7" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.7.tgz", - "integrity": "sha512-9/Q1NC4JErvsXzJKti0NHt+vzKjZOgPIjX/e6kkuCzgfT/GcO3FVBcGIv4HeJG7oMznE6KyKhvLrFgt7CdU2/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.7.tgz", - "integrity": "sha512-Z9X+3TT/Xj+JiZTVlwHj2P+8GoiSmUnGVz0YZTSt8WTbW3UKw5Pw2ucuJ8VzbD2FPy0jbIKJkko/6CMTQchShQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.7.tgz", - "integrity": "sha512-68e7COhmwIiLXBEyxUxZSSU0akgv8t3e50e2QOtKdBUE0F6KIRISzFntLe2rYlNqSsjGWsIO6CCc9tQxijjSkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.7.tgz", - "integrity": "sha512-76zy5jAjPiXX/S3UvRgG85Bb0wy0zv/J2lel3KtHi4V7GUTBfhNUPt0E5bpSXJ6yMT7iThhnA5rOn+IJiUcslQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.7.tgz", - "integrity": "sha512-lSlYNLiqyzd7qCN5CEOmLxn7MhnGHPcu5KuUYOG1i+t5A6q7LgBmfYC9ZHJBoYyow3u4CNu79AWHbvVLpE/VQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/esbuild-linux-32": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.7.tgz", - "integrity": "sha512-Vk28u409wVOXqTaT6ek0TnfQG4Ty1aWWfiysIaIRERkNLhzLhUf4i+qJBN8mMuGTYOkE40F0Wkbp6m+IidOp2A==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.7.tgz", - "integrity": "sha512-+Lvz6x+8OkRk3K2RtZwO+0a92jy9si9cUea5Zoru4yJ/6EQm9ENX5seZE0X9DTwk1dxJbjmLsJsd3IoowyzgVg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.7.tgz", - "integrity": "sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.7.tgz", - "integrity": "sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.7.tgz", - "integrity": "sha512-mFWpnDhZJmj/h7pxqn1GGDsKwRfqtV7fx6kTF5pr4PfXe8pIaTERpwcKkoCwZUkWAOmUEjMIUAvFM72A6hMZnA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.7.tgz", - "integrity": "sha512-wM7f4M0bsQXfDL4JbbYD0wsr8cC8KaQ3RPWc/fV27KdErPW7YsqshZZSjDV0kbhzwpNNdhLItfbaRT8OE8OaKA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.7.tgz", - "integrity": "sha512-J/afS7woKyzGgAL5FlgvMyqgt5wQ597lgsT+xc2yJ9/7BIyezeXutXqfh05vszy2k3kSvhLesugsxIA71WsqBw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ] - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.7.tgz", - "integrity": "sha512-7CcxgdlCD+zAPyveKoznbgr3i0Wnh0L8BDGRCjE/5UGkm5P/NQko51tuIDaYof8zbmXjjl0OIt9lSo4W7I8mrw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.7.tgz", - "integrity": "sha512-GKCafP2j/KUljVC3nesw1wLFSZktb2FGCmoT1+730zIF5O6hNroo0bSEofm6ZK5mNPnLiSaiLyRB9YFgtkd5Xg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ] - }, - "node_modules/esbuild-windows-32": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.7.tgz", - "integrity": "sha512-5I1GeL/gZoUUdTPA0ws54bpYdtyeA2t6MNISalsHpY269zK8Jia/AXB3ta/KcDHv2SvNwabpImeIPXC/k0YW6A==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.7.tgz", - "integrity": "sha512-CIGKCFpQOSlYsLMbxt8JjxxvVw9MlF1Rz2ABLVfFyHUF5OeqHD5fPhGrCVNaVrhO8Xrm+yFmtjcZudUGr5/WYQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.7.tgz", - "integrity": "sha512-eOs1eSivOqN7cFiRIukEruWhaCf75V0N8P0zP7dh44LIhLl8y6/z++vv9qQVbkBm5/D7M7LfCfCTmt1f1wHOCw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", - "dev": true, - "dependencies": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", - "dev": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "node_modules/gray-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", - "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", - "dependencies": { - "js-yaml": "^3.11.0", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hogan.js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", - "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==", - "dev": true, - "dependencies": { - "mkdirp": "0.3.0", - "nopt": "1.0.10" - }, - "bin": { - "hulk": "bin/hulk" - } - }, - "node_modules/hogan.js/node_modules/mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "node_modules/html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "bin": { - "html-minifier": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/htmlparser2/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/htmlparser2/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", - "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, - "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true - }, - "node_modules/import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", - "dev": true, - "dependencies": { - "import-from": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-installed-globally/node_modules/is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "dependencies": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true, - "peerDependencies": { - "markdown-it": "*" - } - }, - "node_modules/markdown-it-chain": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", - "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==", - "dev": true, - "dependencies": { - "webpack-chain": "^4.9.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "markdown-it": ">=5.0.0" - } - }, - "node_modules/markdown-it-chain/node_modules/javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==", - "dev": true - }, - "node_modules/markdown-it-chain/node_modules/webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "dev": true, - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - } - }, - "node_modules/markdown-it-container": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz", - "integrity": "sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==", - "dev": true - }, - "node_modules/markdown-it-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", - "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", - "dev": true - }, - "node_modules/markdown-it-table-of-contents": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", - "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", - "dev": true, - "engines": { - "node": ">6.4.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", - "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "normalize-url": "^2.0.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.4.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "dev": true - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", - "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optimize-css-assets-webpack-plugin": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", - "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==", - "dev": true, - "dependencies": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-data-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/path-data-polyfill/-/path-data-polyfill-1.0.3.tgz", - "integrity": "sha512-zZMXB709yzMu7y+2FkKDn4Ctp+uEbufmCkO1w90itOTGH99Dq6N8jXmX7bcxrUT/dMw2jnmKN8ucfw9LI/XToQ==" - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.26" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/preact": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-7.2.1.tgz", - "integrity": "sha1-FZ4YkvYUmF5J6wqW/W5ti9+LvMU=" - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/reduce": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz", - "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.1.0" - } - }, - "node_modules/redux": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", - "dependencies": { - "lodash": "^4.2.1", - "lodash-es": "^4.2.1", - "loose-envify": "^1.1.0", - "symbol-observable": "^1.0.3" - } - }, - "node_modules/redux-recycle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/redux-recycle/-/redux-recycle-1.4.0.tgz", - "integrity": "sha512-6ZirQGVJ4Ux5/mNEz6n5UQH+oE3nJJiQhDvH1StBKfCZGgRQMYn/L1EbvSHYwIfG579JrJpFn8ozC86Hg6Od9g==", - "dependencies": { - "redux": "^3.3.1" - } - }, - "node_modules/redux-undo": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/redux-undo/-/redux-undo-0.6.1.tgz", - "integrity": "sha1-/0B3Sbj0aL6tY25BOBnpLAmC7so=", - "dependencies": { - "redux": "^3.0.2" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/smoothscroll-polyfill": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", - "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==", - "dev": true - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sockjs-client/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/sockjs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/sort-keys/node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stack-utils": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", - "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/std-env": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", - "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "dependencies": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - } - }, - "node_modules/stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", - "dev": true, - "dependencies": { - "loader-utils": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "when": "~3.6.x" - }, - "peerDependencies": { - "stylus": ">=0.52.4" - } - }, - "node_modules/stylus/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/stylus/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylus/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/stylus/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/to-factory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz", - "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" - }, - "node_modules/toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", - "dev": true - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unescape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", - "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "dependencies": { - "extend-shallow": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-browserslist-db/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "dependencies": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "dev": true, - "dependencies": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" - } - }, - "node_modules/vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "node_modules/vue-loader": { - "version": "15.11.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.11.1.tgz", - "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", - "dev": true, - "dependencies": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "prettier": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/vue-prism-editor": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-0.6.1.tgz", - "integrity": "sha512-UyFLZ242eAplU0C1Tx/ZHSKFTPODQDMBuW9qqgMJyZqHFL2iuIbfT8EWmKtoNUn8w9VWS9IIicPs2odz2eni4Q==", - "dependencies": { - "dom-iterator": "^1.0.0", - "escape-html": "^1.0.3", - "unescape": "^1.0.1" - } - }, - "node_modules/vue-router": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", - "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==", - "dev": true - }, - "node_modules/vue-server-renderer": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.7.14.tgz", - "integrity": "sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "hash-sum": "^2.0.0", - "he": "^1.2.0", - "lodash.template": "^4.5.0", - "lodash.uniq": "^4.5.0", - "resolve": "^1.22.0", - "serialize-javascript": "^6.0.0", - "source-map": "0.5.6" - } - }, - "node_modules/vue-server-renderer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/vue-server-renderer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/vue-server-renderer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/vue-server-renderer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/vue-server-renderer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/vue-server-renderer/node_modules/hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, - "node_modules/vue-server-renderer/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/vue-server-renderer/node_modules/source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-server-renderer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "node_modules/vuepress": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-1.9.10.tgz", - "integrity": "sha512-UnGm9vjQvG918SZVNvgiUlNimLqawdYPq0aPRXDpEB1VksvqegVFy/GKdA8ShXJaEpOMPSt7YD4uK21jaMs3kA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@vuepress/core": "1.9.10", - "@vuepress/theme-default": "1.9.10", - "@vuepress/types": "1.9.10", - "cac": "^6.5.6", - "envinfo": "^7.2.0", - "opencollective-postinstall": "^2.0.2", - "update-notifier": "^4.0.0" - }, - "bin": { - "vuepress": "cli.js" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/vuepress-html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==", - "dev": true, - "dependencies": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", - "dev": true, - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/vuepress-plugin-container": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/vuepress-plugin-container/-/vuepress-plugin-container-2.1.4.tgz", - "integrity": "sha512-l+EkeL+rC6DJch1wAZUFIkNDaz2TNOg4NQTHa3yMAsYkC+QaSRubGdN6YwOSmfjxVmM9s9D3gwBWw0O7OBhqRg==", - "dev": true, - "dependencies": { - "markdown-it-container": "^2.0.0" - } - }, - "node_modules/vuepress-plugin-smooth-scroll": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz", - "integrity": "sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==", - "dev": true, - "dependencies": { - "smoothscroll-polyfill": "^0.4.3" - } - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "optional": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/watchpack/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/watchpack/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/watchpack/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/watchpack/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/watchpack/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.1", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "dev": true, - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-server/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpackbar": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-3.2.0.tgz", - "integrity": "sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.1.0", - "chalk": "^2.4.1", - "consola": "^2.6.0", - "figures": "^3.0.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^5.1.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/when": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", - "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/zepto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", - "integrity": "sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==", - "dev": true - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index e6c3a6a5..00000000 --- a/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "mojs.github.io", - "version": "1.9.0", - "description": "Official mojs website for tutorials and documentation", - "private": true, - "scripts": { - "dev": "cross-env NODE_OPTIONS=--openssl-legacy-provider vuepress dev docs --no-cache --open --host localhost", - "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider vuepress build docs --no-cache" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/mojs/mojs.github.io.git" - }, - "keywords": [ - "site", - "web", - "mojs", - "tutorials", - "documentation" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/mojs/mojs.github.io/issues" - }, - "homepage": "https://mojs.github.io/", - "engines": { - "node": "^20", - "npm": "^10" - }, - "devDependencies": { - "cache-loader": "^4.1.0", - "cross-env": "^7.0.3", - "vuepress": "^1.9.7" - }, - "dependencies": { - "@mojs/core": "^1.7.1", - "@mojs/curve-editor": "^1.7.1", - "@mojs/player": "^1.3.0", - "@vuepress/shared-utils": "^1.8.2", - "vue-prism-editor": "^0.6.1" - } -} diff --git a/tools/curve-editor/index.html b/tools/curve-editor/index.html new file mode 100644 index 00000000..57f3407b --- /dev/null +++ b/tools/curve-editor/index.html @@ -0,0 +1,127 @@ + + + + + + Mojs Curve Editor | mo.js + + + + + + + + + + + + + + + + +

# Mojs Curve Editor (opens new window)

npm (opens new window)

MojsCurveEditor is a GUI plugin for interactive custom easings / property curves editing while crafting your animations. Part of mojs tools.

CodePen Example (opens new window)

# TLDR;

  • Install it: npm i @mojs/curve-editor
  • Import it: import MojsCurveEditor from '@mojs/curve-editor';'
  • Use it:
const mojsCurve = new MojsCurveEditor();
+
+const tween = new mojs.Tween({
+  easing: mojsCurve.getEasing()
+});
+

mojs-curve-editor

# Installation

The MojsCurveEditor depends on mojs >= 0.225.2, tween autoupdates available for mojs >= 0.276.2. Please make sure you've imported mojs (opens new window) library first.

# cdn

<script src="https://cdn.jsdelivr.net/npm/@mojs/curve-editor"></script>
+

# npm

npm i @mojs/curve-editor
+

Import MojsCurveEditor into your code:

import MojsCurveEditor from '@mojs/curve-editor';
+

TIP

If you installed it with the CDN option - you should have MojsCurveEditor globally.

# Usage

Construct MojsCurveEditor and provide a name of the curve you're working on:


 


  const mojsCurve = new MojsCurveEditor({
+    name: 'bounce curve'
+  });
+

TIP

The name is used to +identify record in localStorage to restore the state from +when page gets reloaded, so please specify unique names if +you use more than one editor on the same page.

After that you can "connect" the curve with your mojs modules by passing a "sample" of the curve to the easing property of the module, like this:

  const myCurve = new MojsCurveEditor({name: 'myCurve'});
+
+  const tween = new mojs.Tween({
+    easing: myCurve.getEasing()
+  });
+
+  // or
+
+  const shape = new mojs.Shape({
+    easing: myCurve.getEasing()
+  });
+
+  // or as `property curve`
+
+  const html = new mojs.Html({
+    el: '#js-el',
+    x: { 0: 100, curve: myCurve.getEasing() }
+  });
+
+

Each tween/module should have it's out sample of the curve, this means you need to call myCurve.getEasing() send the sample of the curve to the easing property of modules.

If you use mojs>0.276.5 the state of the modules with the curve sample will be updated automatically.

The getEasing function receives options hash:

  easing: myCurve.getEasing({
+    // `transform` function that pipes through the current value
+    // of the curve so you can transform it
+    transform: (k) => { return k; }
+  });
+
+

After you are happy with the curve you made, you need to change the sample (the myCurve.getEasing() call) with the actual path data which you can get by clicking on the code button ( ):

  const html = new mojs.Html({
+    el: '#js-el',
+    x: { 0: 100, easing: 'M0, 100 C0, 100 19.8984745544779, 40.10152544552211 30, 30 C40.1015254455221, 19.89847455447789 80, 45 80, 45 C80, 45 100, 0 100, 0 ' }
+  });
+

# Options

const curveEditor = new MojsCurveEditor({
+  // name of the curve editor
+  name: 'bounce curve',
+
+  // if should preserve state on page reloads
+  isSaveState: true,
+
+  // start path - will be loaded on initialization of the curve,
+  // e.g. before any user modifications were made. Path of 'M0, 100 L100, 0' is set by default.
+  startPath: 'M0, 100 L100, 0',
+
+  // callback on path change, accepts path string
+  onChange: function (path) {},
+
+  // if should hide when minimized - useful when you try to embed
+  isHiddenOnMin: false
+});
+

# Public Methods

curveEditor
+
+  // get `easing function` of the curve
+  .getEasing()
+
+  // maximize the curve editor
+  .maximize()
+
+  // minimize the curve editor
+  .minimize()
+
+  // toggle `maximize/minimize` methods regarding editor's state
+  .toggleSize();
+

# Shortcuts

  • alt + z - undo curve action
  • alt + x - redo curve action
  • alt + d - delete selected point(s)
  • [3 times] alt + \ - reset curve

TIP

The shortcuts works only in the active editor - it should have orange mojs logo indicator at the bottom left.

+ + + diff --git a/tools/index.html b/tools/index.html new file mode 100644 index 00000000..049a9883 --- /dev/null +++ b/tools/index.html @@ -0,0 +1,54 @@ + + + + + + Tools overview | mo.js + + + + + + + + + + + + + + + + +

# Tools

mo.js developer tools helps you when you are building and debugging your animations.


  • Player - Player to control your animations
  • Curve Editor - Helps you create custom easing / property curves
  • Timeline Editor - Interactive html / custom points / timeline editing
+ + + diff --git a/tools/player/index.html b/tools/player/index.html new file mode 100644 index 00000000..c749fe52 --- /dev/null +++ b/tools/player/index.html @@ -0,0 +1,56 @@ + + + + + + Mojs Player | mo.js + + + + + + + + + + + + + + + + +

# Mojs Player (opens new window)

npm (opens new window)

GUI player to control your animations

# Usage

  • Install it: npm i @mojs/player
  • Import it: import MojsPlayer from '@mojs/player'; or
    var MojsPlayer = require('mojs-player');
  • Use it: +
    1. Create a tween or a timeline
    2. Create a player and mass the tween/timeline as the add option:
      const mojsPlayer = new MojsPlayer({ add: mainTimeline });
    +

TIP

For shotcuts and more options, read more here (opens new window)

+ + + diff --git a/tools/timeline-editor/index.html b/tools/timeline-editor/index.html new file mode 100644 index 00000000..16b0c6a9 --- /dev/null +++ b/tools/timeline-editor/index.html @@ -0,0 +1,55 @@ + + + + + + Timeline Editor | mo.js + + + + + + + + + + + + + + + + +

# Timeline Editor (opens new window)

npm (opens new window)

MojsTimelineEditor is a GUI plugin for interactive html/custom points/timeline editing while crafting your animations.

# Usage

WARNING

This tool is a work in progress. The description below may not be correct.

  • Install it: npm i @mojs/timeline-editor (Note: this is currently not on NPM)
  • Import it: import MojsTimelineEditor from '@mojs/timeline-editor';
  • Use it:
      const mojsTimelineEditor = new MojsTimelineEditor();
    +
+ + + diff --git a/tutorials/burst/demos_for_backup.html b/tutorials/burst/demos_for_backup.html new file mode 100644 index 00000000..e1924f68 --- /dev/null +++ b/tutorials/burst/demos_for_backup.html @@ -0,0 +1,1296 @@ + + + + + + mo.js + + + + + + + + + + + + + + + + +

In case the codepens in the tutorial disapears, here is a backup of all of them

# https://codepen.io/sol0mka/pen/cb910fce2e9ed27f902ae7f895bbb9ac

body, html {
+  padding: 0;
+}
+body {
+  //background: #202223;
+}
+
const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 4: 19 },
+  rotate:    45,
+  children: {
+    shape:        'line',
+    radius:       3,
+    scale:        1,
+    stroke:       '#FD7932',
+    strokeDasharray: '100%',
+    strokeDashoffset: { '-100%' : '100%' },
+    duration:     700,
+    easing:       'quad.out',
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  burst
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/080045a3420abd5344443aff91c85fa2

const RADIUS = 28;
+const circle = new mojs.Shape({
+  left: 0, top: 0,
+  stroke:   '#FF9C00',
+  strokeWidth: { [2*RADIUS] : 0 },
+  fill:     'none',
+  scale:    { 0: 1, easing: 'quad.out' },
+  radius:   RADIUS,
+  duration:  450
+});
+
+const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 6: RADIUS - 7 },
+  rotate:    45,
+  children: {
+    shape:        'line',
+    radius:       RADIUS/7.3,
+    scale:        1,
+    stroke:       '#FD7932',
+    strokeDasharray: '100%',
+    strokeDashoffset: { '-100%' : '100%' },
+    degreeShift:     'stagger(0,-5)',
+    duration:     700,
+    delay:        200,
+    easing:       'quad.out',
+  }
+});
+
+class Star extends mojs.CustomShape {
+  getShape () {
+    return '<path d="M5.51132201,34.7776271 L33.703781,32.8220808 L44.4592855,6.74813038 C45.4370587,4.30369752 47.7185293,3 50,3 C52.2814707,3 54.5629413,4.30369752 55.5407145,6.74813038 L66.296219,32.8220808 L94.488678,34.7776271 C99.7034681,35.1035515 101.984939,41.7850013 97.910884,45.2072073 L75.9109883,63.1330483 L82.5924381,90.3477341 C83.407249,94.4217888 80.4739296,97.6810326 77.0517236,97.6810326 C76.0739505,97.6810326 74.9332151,97.3551083 73.955442,96.7032595 L49.8370378,81.8737002 L26.044558,96.7032595 C25.0667849,97.3551083 23.9260495,97.6810326 22.9482764,97.6810326 C19.3631082,97.6810326 16.2668266,94.4217888 17.4075619,90.3477341 L23.9260495,63.2960105 L2.08911601,45.2072073 C-1.98493875,41.7850013 0.296531918,35.1035515 5.51132201,34.7776271 Z" />';
+  }
+}
+mojs.addShape( 'star', Star );
+
+const star = new mojs.Shape({
+  left: 0, top: 0,
+  shape:    'star',
+  fill:     '#FF9C00',
+  scale:    { 0 : 1 },
+  easing:   'elastic.out',
+  duration: 1600,
+  delay:    300,
+  radius:   RADIUS/2.25
+});
+
+const timeline = new mojs.Timeline({ speed: 1.5 });
+
+timeline
+  .add( burst, circle, star );
+
+document.addEventListener( 'click', function (e) {
+  const coords = { x: e.pageX, y: e.pageY };
+  burst.tune(coords);
+  circle.tune(coords);
+  star.tune(coords);
+  timeline.replay();
+});
+

# https://codepen.io/sol0mka/pen/0fd14523d76f93865539f1f011682da9

class Star extends mojs.CustomShape {
+  getShape () {
+    return '<path d="M5.51132201,34.7776271 L33.703781,32.8220808 L44.4592855,6.74813038 C45.4370587,4.30369752 47.7185293,3 50,3 C52.2814707,3 54.5629413,4.30369752 55.5407145,6.74813038 L66.296219,32.8220808 L94.488678,34.7776271 C99.7034681,35.1035515 101.984939,41.7850013 97.910884,45.2072073 L75.9109883,63.1330483 L82.5924381,90.3477341 C83.407249,94.4217888 80.4739296,97.6810326 77.0517236,97.6810326 C76.0739505,97.6810326 74.9332151,97.3551083 73.955442,96.7032595 L49.8370378,81.8737002 L26.044558,96.7032595 C25.0667849,97.3551083 23.9260495,97.6810326 22.9482764,97.6810326 C19.3631082,97.6810326 16.2668266,94.4217888 17.4075619,90.3477341 L23.9260495,63.2960105 L2.08911601,45.2072073 C-1.98493875,41.7850013 0.296531918,35.1035515 5.51132201,34.7776271 Z" />';
+  }
+}
+mojs.addShape( 'star', Star );
+
+const RADIUS = 28;
+const circle = new mojs.Shape({
+  left: 0, top: 0,
+  stroke:   '#FF9C00',
+  strokeWidth: { [2*RADIUS] : 0 },
+  fill:     'none',
+  scale:    { 0: 1, easing: 'quad.out' },
+  radius:   RADIUS,
+  duration:  450,
+});
+
+const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 6: RADIUS - 3 },
+  rotate:    45,
+  children: {
+    shape:        'star',
+    radius:       RADIUS/2.2,
+    fill:         '#FD7932',
+    degreeShift:  'stagger(0,-5)',
+    duration:     700,
+    delay:        200,
+    easing:       'quad.out',
+    // delay:        100,
+  }
+});
+
+const star = new mojs.Shape({
+  left: 0, top: 0,
+  shape:    'star',
+  fill:     '#FF9C00',
+  scale:    { 0 : 1 },
+  easing:   'elastic.out',
+  duration: 1600,
+  delay:    300,
+  radius:   RADIUS/2.35
+});
+
+const timeline = new mojs.Timeline({ speed: 1.5 });
+
+timeline
+  .add( burst, circle, star );
+
+document.addEventListener( 'click', function (e) {
+  const coords = { x: e.pageX, y: e.pageY };
+  burst.tune(coords);
+  circle.tune(coords);
+  star.tune(coords);
+  timeline.replay();
+});
+

# https://codepen.io/sol0mka/pen/28b429cd2d5ae8c0dd0f10cecd6d0bd0

const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 4: 32 },
+  rotate:    45,
+  count:    14,
+  children: {
+    radius:       2.5,
+    fill:         '#FD7932',
+    scale:        { 1: 0, easing: 'quad.in' },
+    pathScale:    [ .8, null ],
+    degreeShift:  [ 13, null ],
+    duration:     [ 500, 700 ],
+    easing:       'quint.out'
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  const coords = { x: e.pageX, y: e.pageY };
+  burst
+    .tune(coords)
+    .replay();
+});
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/28b429cd2d5ae8c0dd0f10cecd6d0bd0

class Heart extends mojs.CustomShape {
+  getShape () {
+    return '<path d="M73.6170213,0 C64.4680851,0 56.5957447,5.53191489 51.7021277,13.8297872 C50.8510638,15.3191489 48.9361702,15.3191489 48.0851064,13.8297872 C43.4042553,5.53191489 35.3191489,0 26.1702128,0 C11.9148936,0 0,14.0425532 0,31.2765957 C0,48.0851064 14.893617,77.8723404 47.6595745,99.3617021 C49.1489362,100.212766 50.8510638,100.212766 52.1276596,99.3617021 C83.8297872,78.5106383 99.787234,48.2978723 99.787234,31.2765957 C100,14.0425532 88.0851064,0 73.6170213,0 L73.6170213,0 Z"></path>';
+  }
+}
+mojs.addShape( 'heart', Heart );
+
+const CIRCLE_RADIUS = 20;
+const RADIUS = 32;
+const circle = new mojs.Shape({
+  left: 0, top: 0,
+  stroke:   '#FF9C00',
+  strokeWidth: { [2*CIRCLE_RADIUS] : 0 },
+  fill:       'none',
+  scale:      { 0: 1 },
+  radius:     CIRCLE_RADIUS,
+  duration:   400,
+  easing:     'cubic.out'
+});
+
+const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 4: RADIUS },
+  rotate:    45,
+  count:    14,
+  timeline: { delay: 300 },
+  children: {
+    radius:       2.5,
+    fill:         '#FD7932',
+    scale:        { 1: 0, easing: 'quad.in' },
+    pathScale:    [ .8, null ],
+    degreeShift:  [ 13, null ],
+    duration:     [ 500, 700 ],
+    easing:       'quint.out'
+  }
+});
+
+const heart = new mojs.Shape({
+  left: 0, top: 2,
+  shape:    'heart',
+  fill:     '#E5214A',
+  scale:    { 0 : 1 },
+  easing:   'elastic.out',
+  duration: 1600,
+  delay:    300,
+  radius:   11
+});
+
+document.addEventListener( 'click', function (e) {
+  const coords = { x: e.pageX, y: e.pageY };
+  burst
+    .tune(coords)
+    .replay();
+
+  circle
+    .tune( coords )
+    .replay();
+
+  heart
+    .tune( coords )
+    .replay();
+
+});
+

# https://codepen.io/sol0mka/pen/f25a2fbaf15c43c0923f507d54951cdb

class Heart extends mojs.CustomShape {
+  getShape () {
+    return '<path d="M73.6170213,0 C64.4680851,0 56.5957447,5.53191489 51.7021277,13.8297872 C50.8510638,15.3191489 48.9361702,15.3191489 48.0851064,13.8297872 C43.4042553,5.53191489 35.3191489,0 26.1702128,0 C11.9148936,0 0,14.0425532 0,31.2765957 C0,48.0851064 14.893617,77.8723404 47.6595745,99.3617021 C49.1489362,100.212766 50.8510638,100.212766 52.1276596,99.3617021 C83.8297872,78.5106383 99.787234,48.2978723 99.787234,31.2765957 C100,14.0425532 88.0851064,0 73.6170213,0 L73.6170213,0 Z"></path>';
+  }
+}
+mojs.addShape( 'heart', Heart );
+
+const CIRCLE_RADIUS = 20;
+const RADIUS = 32;
+const circle = new mojs.Shape({
+  left: 0, top: 0,
+  stroke:   { '#E5214A' : '#CC8EF5' },
+  strokeWidth: { [2*CIRCLE_RADIUS] : 0 },
+  fill:       'none',
+  scale:      { 0: 1 },
+  radius:     CIRCLE_RADIUS,
+  duration:   400,
+  easing:     'cubic.out'
+});
+
+const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 4: RADIUS },
+  rotate:    45,
+  count:    14,
+  timeline: { delay: 300 },
+  children: {
+    radius:       2.5,
+    fill:         [
+      // { '#91D2FA' : '#BDEFD8' },
+      // { '#91D2FA' : '#ADD6CA' },
+      { '#9EC9F5' : '#9ED8C6' },
+      { '#91D3F7' : '#9AE4CF' },
+
+      { '#DC93CF' : '#E3D36B' },
+      { '#CF8EEF' : '#CBEB98' },
+
+      { '#87E9C6' : '#1FCC93' },
+      { '#A7ECD0' : '#9AE4CF' },
+
+      { '#87E9C6' : '#A635D9' },
+      { '#D58EB3' : '#E0B6F5' },
+
+      { '#F48BA2' : '#CF8EEF' },
+      { '#91D3F7' : '#A635D9' },
+
+      { '#CF8EEF' : '#CBEB98' },
+      { '#87E9C6' : '#A635D9' },
+    ],
+    scale:        { 1: 0, easing: 'quad.in' },
+    pathScale:    [ .8, null ],
+    degreeShift:  [ 13, null ],
+    duration:     [ 500, 700 ],
+    easing:       'quint.out',
+    // speed: .1
+  }
+});
+
+const heart = new mojs.Shape({
+  left: 0, top: 2,
+  shape:    'heart',
+  fill:     '#E5214A',
+  scale:    { 0 : 1 },
+  easing:   'elastic.out',
+  duration: 1000,
+  delay:    300,
+  radius:   11
+});
+
+document.addEventListener( 'click', function (e) {
+  const coords = { x: e.pageX, y: e.pageY };
+  burst
+    .tune(coords)
+    .replay();
+
+  circle
+    .tune( coords )
+    .replay();
+
+  heart
+    .tune( coords )
+    .replay();
+
+});
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/a336008aff2d73121763887097a99001

const bubbles = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   25,
+  count:    3,
+  children: {
+    stroke:       'white',
+    fill:         'none',
+    scale:        1,
+    strokeWidth:  { 8: 0 },
+    radius:       { 0 : 'rand(8, 12)' },
+    degreeShift:  'rand(-50, 50)',
+    duration:     400,
+    delay:        'rand(0, 250)',
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  bubbles
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/d260dc9246f2100b9f2dbe79a01d01f6

const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 0: 30 },
+  rotate:    'rand(0, 360)',
+  timeline: { delay: 50 },
+  children: {
+    shape:        'line',
+    stroke:       'white',
+    fill:         'none',
+    scale:        1,
+    scaleX:       { 1: 0 },
+    // easing:       'cubic.out',
+    duration:     650
+  }
+});
+
+const bubbles = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   28,
+  count:    3,
+  timeline: { delay: 200 },
+  children: {
+    stroke:       'white',
+    fill:         'none',
+    scale:        1,
+    strokeWidth:  { 8: 0 },
+    radius:       { 0 : 'rand(6, 10)' },
+    degreeShift:  'rand(-50, 50)',
+    duration:     450,
+    delay:        'rand(0, 250)',
+  }
+});
+
+const cross = new mojs.Shape({
+  left: 0, top: 0,
+  shape:    'cross',
+  rotate:    45,
+  radius:   9,
+  scale:    { 0: 1 },
+  stroke:   'white',
+  duration:     400,
+  delay:        150
+});
+
+const circle = new mojs.Shape({
+  left: 0, top: 0,
+  radius:       { 0: 16, easing: 'sin.out' },
+  fill:         'none',
+  stroke:       'white',
+  strokeWidth:  { 10: 0 },
+  duration:     450,
+  easing:       'cubic.out'
+});
+
+document.addEventListener( 'click', function (e) {
+  burst
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  bubbles
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  cross
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  circle
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/60d5d3c97981022f20f86c37580bceb1

const DURATION = 400
+
+const smoke = new mojs.Burst({
+  left: 0, top: 0,
+  degree:   0,
+  count:    3,
+  radius:   { 0: 100 },
+  children: {
+    fill:       'white',
+    pathScale:  'rand(0.5, 1)',
+    radius:     'rand(12, 15)',
+    swirlSize:  'rand(10, 15)',
+    swirlFrequency: 'rand(2, 4)',
+    direction:  [ 1, -1 ],
+    duration:   `rand(${1*DURATION}, ${2*DURATION})`,
+    delay:      'rand(0, 75)',
+    easing:     'quad.out',
+    isSwirl:    true,
+    isForce3d:  true,
+  }
+});
+
+
+document.addEventListener( 'click',  (e) => {
+  smoke
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/f307bc95b1ac02c09042c89ea7afe945

const DURATION = 400
+
+const bubbles = new mojs.Burst({
+  left: 0, top: 0,
+  degree:   0,
+  count:    3,
+  radius:   { 0: 100 },
+  children: {
+    fill:       'white',
+    pathScale:  'rand(0.5, 1)',
+    radius:     'rand(12, 15)',
+    swirlSize:  'rand(10, 15)',
+    swirlFrequency: 'rand(2, 4)',
+    direction:  [ 1, -1 ],
+    duration:   `rand(${1*DURATION}, ${2*DURATION})`,
+    delay:      'rand(0, 75)',
+    easing:     'quad.out',
+    isSwirl:    true,
+    isForce3d:  true,
+  }
+});
+
+const circle = new mojs.Shape({
+  top: 0, left: 0,
+  radius:       { 20: 0 },
+  stroke:       'white',
+  strokeWidth:  { 5: 0 },
+  fill:         'none',
+  duration:     500
+  // delay:        200
+});
+
+const cross = new mojs.Shape({
+  top: 0, left: 0,
+  rotate:        45,
+  shape:        'cross',
+  radius:       { 10: 0 },
+  stroke:       'white',
+  fill:         'none',
+  easing:       'cubic.out',
+  duration:     500
+});
+
+document.addEventListener( 'click',  (e) => {
+  bubbles
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+  circle
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  cross
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/4fe37a79f6d665d749ebcb4f22c2ee4e

const burst = new mojs.Burst({
+  left: 0, top: 0,
+  degree:   180,
+  rotate:    90,
+  radius:   { 10: 25 },
+  count:    5,
+  children: {
+    shape:        'line',
+    radius:       7,
+    radiusY:      0,
+    scale:        1,
+    strokeDasharray: '100%',
+    strokeDashoffset: { '-100%' : '100%' },
+    stroke:       '#F9DD5E' ,
+    easing:       'linear.none',
+    duration:     600
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  burst
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/953926af8c30d3dd297070b1a079e059

const burst = new mojs.Burst({
+  left: 0, top: 0,
+  radius:   { 10: 25 },
+  count:    4,
+  children: {
+    shape:        'line',
+    radius:       7,
+    radiusY:      0,
+    scale:        1,
+    strokeDasharray: '100%',
+    strokeDashoffset: { '-100%' : '100%' },
+    stroke:       '#FC2D79' ,
+    easing:       'linear.none',
+    duration:     600
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  burst
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/1018219ace50f564f7bb8b77b53efeb8


+
+const meteors = new mojs.Burst({
+  left: 0, top: 0,
+  count:    3,
+  radius:   { 0: 250 },
+
+  children: {
+    shape:        'line',
+    stroke:       ['#F9DD5E', '#FC2D79', '#11CDC5'],
+    duration:     400,
+    radius:       60,
+    strokeWidth:  8,
+    isForce3d:    true
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  meteors
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+
+

# https://codepen.io/sol0mka/pen/d84370a3c19fdcea8c714e7049c9ab5d

const meteors = new mojs.Burst({
+  left: 0, top: 0,
+  count:    3,
+  radius:   { 0: 250 },
+  degree:   0,
+
+  children: {
+    shape:        'line',
+    stroke:       ['#F9DD5E', '#FC2D79', '#11CDC5'],
+    duration:     400,
+    radius:       60,
+    strokeWidth:  8,
+    isForce3d:    true
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  meteors
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/2be25259bdd8e01f9ac3770f6f2bd36a

const meteors = new mojs.Burst({
+  left: 0, top: 0,
+  count:    3,
+  radius:   { 0: 250 },
+  degree:   0,
+
+  children: {
+    shape:        'line',
+    stroke:       ['#F9DD5E', '#FC2D79', '#11CDC5'],
+    duration:     400,
+    radius:       60,
+    strokeWidth:  8,
+    left:         'stagger(20)',
+    top:          'stagger(20)',
+    delay:        [ 0, 200, 100 ],
+    isForce3d:    true
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  meteors
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/bf8377efd5b0dada9537481e29ecd6af

const meteors = new mojs.Burst({
+  left: 0, top: 0,
+  count:    3,
+  radius:   { 0: 250 },
+  degree:   0,
+  rotate:    225,
+
+  children: {
+    shape:        'line',
+    stroke:       ['#F9DD5E', '#FC2D79', '#11CDC5'],
+    duration:     400,
+    radius:       60,
+    strokeWidth:  8,
+    left:         'stagger(20)',
+    top:          'stagger(20)',
+    delay:        [ 0, 200, 100 ],
+    isForce3d:    true
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  meteors
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+} );
+
+// new MojsPlayer({ add: burst, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/432464f276fe6f06b457915ca6062723

const o = new mojs.Burst({
+  count:    3,
+  radius:   0,
+  degree:   0,
+
+  children: {
+    stroke:       [ '#FC2D79', '#11CDC5', 'white'],
+    fill:         'none',
+    duration:     400,
+    scale:        1,
+    radius:       35,
+    radiusY:      { 0: 35 },
+    strokeWidth:  3,
+    duration:     800,
+    delay:        'stagger(125)',
+  }
+});
+
+const timeline = new mojs.Timeline;
+
+timeline
+  .add( o );
+
+new MojsPlayer({ add: timeline, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/33f7924ecd146d951698bf190ac7838e

const vertLine = new mojs.Burst({
+  count:    3,
+  radius:   0,
+  degree:   0,
+
+  children: {
+    shape:        'line',
+    stroke:       [ '#FC2D79', '#11CDC5', 'white'],
+    duration:     400,
+    scale:        1,
+    radius:       35,
+    radiusX:      { 0: 35 },
+    strokeWidth:  3,
+    duration:     800,
+    delay:        'stagger(125)',
+  }
+});
+
+const horLine = new mojs.Burst({
+  count:    3,
+  radius:   0,
+  degree:   0,
+  rotate:    90,
+  y:       -50,
+  x:        1,
+
+  children: {
+    shape:        'line',
+    stroke:       [ '#FC2D79', '#11CDC5', 'white'],
+    duration:     400,
+    scale:        1,
+    radius:       20,
+    radiusX:      { 0: 20 },
+    strokeWidth:  3,
+    duration:     800,
+    delay:        'stagger(800, 125)',
+  }
+});
+
+
+const o = new mojs.Burst({
+  count:    3,
+  radius:   0,
+  degree:   0,
+
+  children: {
+    stroke:       [ '#FC2D79', '#11CDC5', 'white'],
+    fill:         'none',
+    duration:     400,
+    scale:        1,
+    radius:       35,
+    radiusY:      { 0: 35 },
+    strokeWidth:  3,
+    duration:     800,
+    delay:        'stagger(600, 125)',
+  }
+});
+
+const timeline = new mojs.Timeline;
+
+timeline
+  .add( o, vertLine, horLine );
+
+new MojsPlayer({ add: timeline, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/a3c64825683dddd18316f8f288475131

const MAIN_OPTS = {
+  count:    3,
+  radius:   0,
+  degree:   0
+}
+
+const CHILD_OPTS = {
+  stroke:       [ '#FC2D79', '#11CDC5', 'white'],
+  fill:         'none',
+  duration:     400,
+  scale:        1,
+  radius:       35,
+  radiusY:      { 0: 35 },
+  strokeWidth:  3,
+  duration:     800,
+  delay:        'stagger(125)',
+}
+
+const vertLine = new mojs.Burst({
+  ...MAIN_OPTS,
+  x: -1,
+
+  children: {
+    ...CHILD_OPTS,
+    shape:         'line',
+    radius:        35,
+    scaleX:        { 0: 1 },
+    left:         -35,
+    top:           35,
+    origin:        '100% 50%'
+  }
+});
+
+const horLine = new mojs.Burst({
+  ...MAIN_OPTS,
+  rotate:    90,
+  y:       -50,
+
+  children: {
+    ...CHILD_OPTS,
+    shape:        'line',
+    radius:       20,
+    radiusX:      { 0: 20 },
+    delay:        'stagger(800, 125)',
+  }
+});
+
+const o = new mojs.Burst({
+  ...MAIN_OPTS,
+  width: 10, height: 10,
+
+  children: {
+    ...CHILD_OPTS,
+    delay:        'stagger(650, 125)',
+  }
+});
+
+
+const timeline = new mojs.Timeline;
+timeline
+  .add( o, vertLine, horLine );
+
+new MojsPlayer({ add: timeline, isPlaying: true, isRepeat: true });
+

# https://codepen.io/sol0mka/pen/79db23782ec1eb9d16246b136ec82b9c

const COLORS = {
+  RED:      '#FD5061',
+  YELLOW:   '#FFCEA5',
+  BLACK:    '#29363B',
+  WHITE:    'white',
+  VINOUS:   '#A50710'
+}
+
+const burst1 = new mojs.Burst({
+  left: 0, top: 0,
+  count:    5,
+  radius:   { 50: 250 },
+  children: {
+    fill:   'white',
+    shape:  'line',
+    stroke: [ COLORS.WHITE, COLORS.VINOUS ],
+    strokeWidth: 12,
+    radius: 'rand(30, 60)',
+    radiusY: 0,
+    scale: { 1: 0 },
+    pathScale: 'rand(.5, 1)',
+    degreeShift: 'rand(-360, 360)',
+    isForce3d: true,
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  burst1
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/3b9c757a7625dc015753740bcad8fb66

const COLORS = {
+  RED:      '#FD5061',
+  YELLOW:   '#FFCEA5',
+  BLACK:    '#29363B',
+  WHITE:    'white',
+  VINOUS:   '#A50710'
+}
+
+const burst1 = new mojs.Burst({
+  left: 0, top: 0,
+  count:    5,
+  radius:   { 50: 250 },
+  children: {
+    fill:   'white',
+    shape:  'line',
+    stroke: [ COLORS.WHITE, COLORS.VINOUS ],
+    strokeWidth: 12,
+    radius: 'rand(30, 60)',
+    radiusY: 0,
+    scale: { 1: 0 },
+    pathScale: 'rand(.5, 1)',
+    degreeShift: 'rand(-360, 360)',
+    isForce3d: true,
+  }
+});
+
+const burst2 = new mojs.Burst({
+  left: 0, top: 0,
+  count:  3,
+  radius: { 0: 250 },
+  rotate: 'rand(0, 360)',
+  children: {
+    shape:      [ 'circle', 'rect' ],
+    points:     5,
+    fill:       [ COLORS.WHITE, COLORS.VINOUS ],
+    radius:     'rand(30, 60)',
+    scale:      { 1: 0 },
+    pathScale:  'rand(.5, 1)',
+    isForce3d:  true
+  }
+});
+
+document.addEventListener( 'click', function (e) {
+  burst1
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  burst2
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/4c8366d3a7eea2a5f83a3d457f8e9cd9

const COLORS = {
+  RED:      '#FD5061',
+  YELLOW:   '#FFCEA5',
+  BLACK:    '#29363B',
+  WHITE:    'white',
+  VINOUS:   '#A50710'
+}
+
+const burst1 = new mojs.Burst({
+  left: 0, top: 0,
+  count:    5,
+  radius:   { 50: 250 },
+  children: {
+    fill:   'white',
+    shape:  'line',
+    stroke: [ COLORS.WHITE, COLORS.VINOUS ],
+    strokeWidth: 12,
+    radius: 'rand(30, 60)',
+    radiusY: 0,
+    scale: { 1: 0 },
+    pathScale: 'rand(.5, 1)',
+    degreeShift: 'rand(-360, 360)',
+    isForce3d: true,
+  }
+});
+
+const burst2 = new mojs.Burst({
+  top: 0, left: 0,
+  count:  3,
+  radius: { 0: 250 },
+  children: {
+    shape:      [ 'circle', 'rect' ],
+    points:     5,
+    fill:       [ COLORS.WHITE, COLORS.VINOUS ],
+    radius:     'rand(30, 60)',
+    scale:      { 1: 0 },
+    pathScale:  'rand(.5, 1)',
+    isForce3d:  true
+  }
+});
+
+const CIRCLE_OPTS = {
+  left: 0, top: 0,
+  fill:     COLORS.WHITE,
+  scale:    { .2: 1 },
+  opacity: { 1: 0 },
+  isForce3d: true,
+  isShowEnd: false
+}
+
+const circle1 = new mojs.Shape({
+    ...CIRCLE_OPTS,
+    radius:   200,
+  });
+
+const circle2 = new mojs.Shape({
+  ...CIRCLE_OPTS,
+  radius:   240,
+  easing: 'cubic.out',
+  delay: 150,
+});
+
+document.addEventListener( 'click', function (e) {
+  burst1
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  burst2
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  circle1
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  circle2
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/699cfc8716a13e0e1c15105af2b6fb95

const COLORS = {
+  RED:      '#FD5061',
+  YELLOW:   '#FFCEA5',
+  BLACK:    '#29363B',
+  WHITE:    'white',
+  VINOUS:   '#A50710'
+}
+
+const bgBurst = new mojs.Burst({
+  left: 0, top: 0,
+  count:  3,
+  radius: 0,
+  degree: 0,
+  isShowEnd: false,
+  children: {
+    fill:           [ COLORS.RED, COLORS.WHITE, COLORS.BLACK ],
+    radius:         'stagger(200, 2)',
+    scale:          { .25 : 3 },
+    duration:       500,
+    delay:          'stagger(50)',
+    easing:         [ 'cubic.out', 'cubic.out', 'cubic.out' ],
+    isForce3d:      true,
+  }
+});
+
+const burst1 = new mojs.Burst({
+  left: 0, top: 0,
+  count:    5,
+  radius:   { 50: 250 },
+  children: {
+    fill:   'white',
+    shape:  'line',
+    stroke: [ COLORS.WHITE, COLORS.VINOUS ],
+    strokeWidth: 12,
+    radius: 'rand(30, 60)',
+    radiusY: 0,
+    scale: { 1: 0 },
+    pathScale: 'rand(.5, 1)',
+    degreeShift: 'rand(-360, 360)',
+    isForce3d: true,
+  }
+});
+
+const burst2 = new mojs.Burst({
+  top: 0, left: 0,
+  count:  3,
+  radius: { 0: 250 },
+  children: {
+    shape:      [ 'circle', 'rect' ],
+    points:     5,
+    fill:       [ COLORS.WHITE, COLORS.VINOUS ],
+    radius:     'rand(30, 60)',
+    scale:      { 1: 0 },
+    pathScale:  'rand(.5, 1)',
+    isForce3d:  true
+  }
+});
+
+const CIRCLE_OPTS = {
+  left: 0, top: 0,
+  fill:     COLORS.WHITE,
+  scale:    { .2: 1 },
+  opacity: { 1: 0 },
+  isForce3d: true,
+  isShowEnd: false
+}
+
+const circle1 = new mojs.Shape({
+    ...CIRCLE_OPTS,
+    radius:   200,
+  });
+
+const circle2 = new mojs.Shape({
+  ...CIRCLE_OPTS,
+  radius:   240,
+  easing: 'cubic.out',
+  delay: 150,
+});
+
+document.addEventListener( 'click', function (e) {
+  burst1
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  burst2
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  circle1
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  circle2
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  bgBurst
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+});
+

# https://codepen.io/sol0mka/pen/6caf96461207a5caa9226fbd2631569d

const COLORS = {
+  RED:      '#FD5061',
+  YELLOW:   '#FFCEA5',
+  BLACK:    '#29363B',
+  WHITE:    'white',
+  VINOUS:   '#A50710'
+}
+
+const burst1 = new mojs.Burst({
+  left: 0, top: 0,
+  count:          8,
+  radius:         { 50: 150 },
+  children: {
+    shape:        'line',
+    stroke:       [ 'white', '#FFE217', '#FC46AD', '#D0D202', '#B8E986', '#D0D202' ],
+    scale:        1,
+    scaleX:       { 1 : 0 },
+    // pathScale:    'rand(.5, 1.25)',
+    degreeShift:  'rand(-90, 90)',
+    radius:       'rand(20, 40)',
+    // duration:     200,
+    delay:        'rand(0, 150)',
+    isForce3d:    true
+  }
+});
+
+const largeBurst = new mojs.Burst({
+  left: 0, top: 0,
+  count:          4,
+  radius:         0,
+  rotate:         45,
+  radius:        { 0: 450  },
+  children: {
+    shape:        'line',
+    stroke:       '#4ACAD9',
+    scale:        1,
+    scaleX:       { 1 : 0 },
+    radius:       100,
+    duration:     450,
+    isForce3d:    true,
+    easing:       'cubic.inout'
+  }
+});
+
+const CIRCLE_OPTS = {
+  left: 0, top: 0,
+  scale:      { 0: 1 },
+}
+
+const largeCircle = new mojs.Shape({
+  ...CIRCLE_OPTS,
+  fill:       'none',
+  stroke:     'white',
+  strokeWidth: 4,
+  opacity:    { .25 : 0 },
+  radius:     250,
+  duration:   600,
+});
+
+const smallCircle = new mojs.Shape({
+  ...CIRCLE_OPTS,
+  fill:       'white',
+  opacity:    { .5 : 0 },
+  radius:     30,
+});
+
+document.addEventListener( 'click', function (e) {
+
+  burst1
+    .tune({ x: e.pageX, y: e.pageY })
+    .generate()
+    .replay();
+
+  largeBurst
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  largeCircle
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+  smallCircle
+    .tune({ x: e.pageX, y: e.pageY })
+    .replay();
+
+});
+

# https://codepen.io/sol0mka/pen/97a95a5cb7663cf336e8d80f9f511553

var burst1 = new mojs.Burst({
+  y:              { 0: -100, easing: 'cubic.in' },
+  count:          'rand(4,6)',
+  degree:         40,
+  rotate:         -25,
+  radius:         { 0 : 100 },
+  children: {
+    fill:           'white',
+    radius:         'rand(10, 20)',
+    pathScale:      ['rand(0, .5)', 'rand(.5, 1)'],
+    degreeShift:    'rand(.2, 1)',
+    swirlFrequency: 'rand(3, 10)',
+    direction:      [ 1, -1 ],
+    isSwirl:        true,
+    duration:       600,
+    easing:         'cubic.out',
+    isForce3d:      true
+  }
+});
+
+
+const timeline = new mojs.Timeline({ speed: .5 });
+timeline.add( burst1 );
+
+new MojsPlayer({
+  add: timeline, isPlaying: true, isRepeat: true
+});
+

# https://codepen.io/sol0mka/pen/bbc4c52b7145d9d872ac437f21afd75f

const BUST_OPTS = {
+  parent:         '#js-container',
+  count:          'rand(3,5)',
+  degree:         40,
+  rotate:         -25,
+  radius:         { 25 : 75 },
+  children: {
+    fill:           'white',
+    radius:         'rand(8, 15)',
+    pathScale:      ['rand(0, .5)', 'rand(.35, 1)'],
+    degreeShift:    'rand(.2, 1)',
+    swirlFrequency: 'rand(3, 5)',
+    direction:      [ 1, -1 ],
+    isSwirl:        true,
+    duration:       400,
+    easing:         'cubic.out',
+    isForce3d:      true
+  }
+}
+
+const burst1 = new mojs.Burst({
+  ...BUST_OPTS,
+  left:     145,
+  top:      75,
+  y:        { 0: -65 }
+});
+
+const burst2 = new mojs.Burst({
+  ...BUST_OPTS,
+  left:     295,
+  top:      25,
+  y:        { 0: -50 }
+});
+
+const burst3 = new mojs.Burst({
+  ...BUST_OPTS,
+  left:     50,
+  top:      25,
+  y:        { 0: -50 }
+});
+
+const burst4 = new mojs.Burst({
+  ...BUST_OPTS,
+  left:     175,
+  top:      0,
+  y:        { 0: -35 }
+});
+
+
+const timeline = new mojs.Timeline({ speed: .5 });
+timeline.add( burst1, burst2, burst3, burst4 );
+
+document.addEventListener('click', function () {
+  timeline.replay();
+});
+
+// new MojsPlayer({
+//   add: timeline, isPlaying: true, isRepeat: true
+// });
+

#


+

#


+

#


+

#


+

#


+

#


+

#


+

#


+

#


+

#


+
+ + + diff --git a/tutorials/burst/index.html b/tutorials/burst/index.html new file mode 100644 index 00000000..ebc197ca --- /dev/null +++ b/tutorials/burst/index.html @@ -0,0 +1,228 @@ + + + + + + Burst | mo.js + + + + + + + + + + + + + + + + +

# Burst

Burst is the module that helps you to craft numerous sophisticated motion effects.

Please make sure you are comfortable with Shapes & ShapeSwirl before proceeding with this tutorial. Understanding those modules is crucial for understanding the Burst.

# Burst

Burst is a higher order module that creates sophisticated visual effects in any part of the screen you want. You can think of Burst as a particle emitter that composes a bunch of ShapeSwirl's together, creating a circle of particles.

That's how it looks like by default:

const burst = new mojs.Burst();
+
+document.addEventListener( 'click', function (e) {
+  burst.replay();
+});
+

Click somewhere to see

Just like with Shape, mojs takes care about all bootstrapping work, creates as narrow container for the burst as possible and positioning the effect for you.

From the technical point of view, Burst is just a main ShapeSwirl that holds a bunch of child ShapeSwirl's. Pictorially it looks like this:

Illustration of how the burst swirls works

The main swirl has no shape nor any presentation properties and in fact, is 0 size by default completely unreachable for user's interaction pointer.

Another important note is that radius property (and radiusX/radiusY ones) has different meaning - it controls the radius of radial shape of particles:

const burst = new mojs.Burst({
+  radius: { 0: 100 }
+});
+

Click somewhere to see

There are few more properties that Burst implements over ShapeSwirl to control the radial shape behavior that particles compose. The first one is the count property that sets the amount of particles:

const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    3
+});
+

Click somewhere to see

The particles of the burst are evenly placed in a 360 degree circle, which you can narrow down with the degree property:

const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    5,
+  degree:   30
+});
+

Click somewhere to see

Here above, we have a burst that has 30 degrees of sufficient place for particles.

It is very important to note here that since the main swirl of Burst module has no actual shape - it has no style attributes that define shape's presentation - all of them among which are the stroke or strokeWidth or fill are completely useless.

Also, the main swirl of the burst have no tween related properties like delay or duration, the later one gets computed automatically regarding the duration of the particles.

Nonetheless, all properties that control shape position, parent and opacity are present:

const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    7,
+  rotate:    { 0: 90 },
+  opacity:  { 1: 0 },
+});
+

Click somewhere to see

To recap, the main swirl of the Burst has no style attributes because it has no shape, furthermore it has no tween related properties like duration which is computed from the particles duration. But Burst has all the other properties, most of them regarding position, opacity, parent etc. You can always use the Burst API as the reference.

But Burst won't be much interesting unless we can control child particles, right?

# Children Options

You can control children options with the children object property:

const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    5,
+  degree:   30,
+  children: {
+    fill:       { 'magenta' : 'cyan' },
+    duration:   2000
+  }
+});
+

Click somewhere to see

I have some good news for you - you already know Burst's syntax! Confusing claim? Nah! If you are familiar with Shape and ShapeSwirl modules - you know the Burst. That's because the Burst is nothing than just a ShapeSwirl that holds child ShapeSwirls, remember? This means you can put any property of ShapeSwirl to the children object, go try:

const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    5,
+  children: {
+    shape:      'polygon',
+    fill:       { 'cyan' : 'yellow' },
+    radius:     20,
+    rotate:      { 360: 0 },
+    duration:   2000
+  }
+});
+

Click somewhere to see

Actually Burst gives you even more control over each child, allowing you to specify property for each of them explicitly. These two techniques are called Stagger Strings and Property Maps.

# Stagger Strings

Stagger Strings were designed to express continuous numeric values with some defined step (see delay property on children):










 



const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    10,
+  children: {
+    shape:      'polygon',
+    points:     5,
+    fill:       { 'cyan' : 'yellow' },
+    rotate:      { 360: 0 },
+    duration:   2000,
+    delay:      'stagger(0, 100)'
+  }
+});
+

Click somewhere to see

The first parameter in stagger function is the start value, all subsequent steps will be added to that start value, that is optional; If you just write stagger(25), it will mean to stagger with step of 25, starting from 0.

In the demo above, that's exact the same circle as in the demo before, but we have staggered the delay property so it looks rather spiral now.

Every numeric value can be expressed with stagger stings. Also, they can contain randoms (see the delay property in children):










 



const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    10,
+  children: {
+    shape:      'polygon',
+    points:     5,
+    fill:       { 'cyan' : 'yellow' },
+    rotate:      { 360: 0 },
+    duration:   2000,
+    delay:      'stagger( rand(0, 200) )'
+  }
+});
+

Click somewhere to see

We have staggered the delay with random function in interval of 0 to 200.

TIP

If you run the .generate() function before playing your burst, all random values will be recalculated for each time you play the burst. Like this:

burst.generate();
+burst.replay();
+

# Property Maps

Property Map was designed to express sequential values. You can use it to generate values that repeat over and over but are mapped to children length. Basically, it is just an array that maps its values to children regarding child index with mod function. So if you have a property map with 3 values and burst has 5 children, then the 4th and 5th items will receive the 0th and 1st values from the map respectively:







 





const burst = new mojs.Burst({
+  radius:   { 0: 100 },
+  count:    5,
+  children: {
+    shape:        'circle',
+    radius:       20,
+    fill:         [ 'deeppink', 'cyan', 'yellow' ],
+    strokeWidth:  5,
+    duration:     2000
+  }
+});
+

So starting from 12 o'clock clockwise, the 5 childrens fill properties get values of deeppink, cyan, yellow and then again starting from the beginning of the property map - deeppink, cyan ( [0],[1],[2],[0],[1] ).

Property maps work with any property and property forms, in fact, that's just a prism (or multiplexer) that feeds children with properties by virtue of modulus function. Good aid if you want to set some property on child explicitly.

# then, tune, generate and play

You can make then state chains, tune and generate any Burst the same as you do with Shape or ShapeSwirl. Also, since the Burst is merely a ShapeSwirl under the hood, you can use any tween interface public method like play, setProgress, replay etc (click somewhere to see):

document.addEventListener( 'click', function (e) {
+  burst
+    .tune({ x: e.pageX, y: e.pageY })
+    .setSpeed(3)
+    .replay();
+});
+

Click anywhere to see

# Recap

That's basically the burst, as I said you already know it so we won't go thru the children options again, instead, let's jog thru some use cases in the next section which will help as to gain some intuition over where and how to use the bursts. As you remember, - Burst is just a composition of a bunch of ShapeSwirls. There is the main swirl in the center of the burst but it has no visual shape. Also, it has no tween properties and its durations is calculated regarding the duration of the children. All child swirls use the main one as a parent. You can set properties of children with the appropriate property. Please, use the Burst API as the reference.

# Use Cases

Please note that the use cases section contains a lot of live code examples but the actual code samples are omitted for time savings and simplicity sake. The actual code is still available on the Babel tab of the pens and I highly encourage you to read through and play with them while we will walk through this section. You can omit reading large demos code since it is probably unreadable (some Codepens can contain bundled code) or it could be too large to understand sparingly, but you can return to them later. I will leave a little (×) mark for you to indicate that you can skip reading the source code of the Codepen for now.

Burst, in similarity with Shape or ShapeSwirl, has numerous application fields, among which are motion graphics and UI-animations. In contrary to the Shape & ShapeSwirl tutorial, I won't split use cases to different entities but rather will try to do lot's of small demos, each with explanation comments. Hang tight!

Micro Animations

The first thing that comes to mind when I see the default burst - is the famous Twitter's fav animation (opens new window). Animations like that are usually called micro animations but I've used to call them micro celebrations because of their festivity.

Anyways, sequences like that are a cinch when you have the burst module in your hands. Here's how to do the main part of the sequence (click anywhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Here above, we have declared a burst with 5 particles (which is by default) with a burst's radius transition from 4 to 19. There are 2 strategies for bursts like that - one is to scale children down (by default), the second one is to animate strokeDashoffset on children which we have used here.

The next step is to add two more shapes to the scene - one circle with strokeWidth animation and a custom one - the star with elastic.out transition for the scale(click anywhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

I love using the burst module over sprites because it turns out to be a way flexible over pre-rendered sequence of images, - you can play with easings, time, delay, colors etc. Also, you can even change shapes with no effort at all - for instance, if you want to add stars instead of lines (click anywhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Ok, let's redo the later Twitter love animation too. There is the burst part of the sequence(click anywhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

The catch here is to use the in easing for scale property and the opposite out easing for particles position. Also, we have set the pathScale slightly smaller for "inner" particles. After that, we have defined a small degreeShift for each odd / inner particle. Then null value in the properyMaps mean that it takes the default value. For scale it's 1 and in degreeShift it's 0.

The next step is to add the circle shape and heart animations, almost identical to ones we have used in the Twitter fav scene (click anywhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

And the last touch is to add all the color deltas, there are quite some of them (click anywhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

That's basically the same micro confirmations that I've given you in the Shape & ShapeSwirl tutorial (×):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

In the example above we didn't use the Burst module that much. But you can imagine that those effects are much easier with the Burst module. For instance the bubbles in the first part could be made like this:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Here we have the static radius of 25 on burst and 3 white particles. We've set a slightly random degreeShift and a delay on the children that eventually gives us the bubble like motion.

The second burst is super simple too:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

As you can see, the second burst is almost the default one, we have only changed the main radius to 0 : 30. As for children, we tweaked the shape to a line value, and made the scaleX to fade out from 1 to 0.

The final touch is to add center circle and cross shapes:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

The second part - the bubble fadeout effect is even simpler. For the Burst module, we just need to set degree to 0 so the particles will flow in one direction, then set isSwirl to true (Burst composes ShapeSwirls, remember?) on children thus particles will follow sine path. After that we need to slightly randomize swirlSize, swirlFrequency and pathScale parameters (click somewhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Just like with the previous example, the last touch is to add circle and cross transitions (click somewhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

# Motion for the web

Let's recall the old "motion for the web" demo (×):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

+ Note that the demo was made a while ago so it contains deprecated syntax. +

How many burst modules have you noticed in this demo? There are quite some actually. I think the most noticeable are collisions with the ground (click to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

This one was made by virtue of degree: 180, childrens' radius of 7 and strokeDashoffset animation on particles.

There is another burst in that demo:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

This one is simple too, the good one to practice basics.

Did you notice those meteors on the left of the letters? Those are Burst too. How? Well first you have a burst with 3 children:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Then you set degree of 0 so they all will fly to the same direction:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Hm, they kind of overlap, so let's shift them by staggering left and top properties on children, after that let's add some delay with help of property map:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Do you see that? Almost there. The last touch is to rotate the main swirl:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Pretty yummy detail.

What else have we got in the demo? Letters! That's how O letter was made:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

As you can see, we've set the main swirl's radius and degree to 0 to put the child shapes in the one spot. Then we just have to slightly stagger delay on children.

The same technique for the other parts - vertical and horizontal lines:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Good. Let's refactor it a bit and make the vertical line start from the bottom, like firework launch:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

That's better.

Blast all the things up

Let's move on. What else we can do with Burst? We can blast things up. I love blasting things up, do you? Recall this demo from the Shape & ShapeSwirl tutorial(×):

See the Pen + mograph by LegoMushroom (@sandstedt) + on CodePen.

Link to pen (opens new window)

Do you see that blast at the start? Let's make it together. First, you can notice these small particles (click somewhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Notice how we use pathScale and degreeShift properties to add randomness to the blast. The pathScale property defines how the length of the particle's path scales. The degreeShift property defines how much the particle will shift in its radial position in burst circle shape. So if a particle has degreeShift of 90, it will be shifted in radial shape by 90 degrees. Since pathScale and degreeShift both have random values and we generate the module on each user click - we always have the random blast pattern.

Let's add more details to the blast, for instance, another burst with large geometric shapes:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Feels rather messy. But it's fine for now, it should get straight when we will add more shapes:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

And the last touch is to add "one spot" large burst of 3 items - one red, one white and one black:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Yum. I hope you love to blast things up too now. Notice we did it without a single repaint!

Modal blast

If you recall the next old demo, you probably can say now how it was made. How many modules does this blast compose (click close to see the effect) (×)?

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

The answer is 3 - 2 Bursts and 1 subtle circle in the middle.

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

The effect is a bit more modest than the previous one. As you can see, I haven't recreated exactly the same sequence here, but rather made a slightly different one.

The sleepy mole

OK. Enough distraction. Let's create something less straightforward. Recall this demo with the mole (×):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Can you count how much effects are bursts here? There are quite a few. The most noticeable is the effect that appears after the door shuts down - the 4 spots of dust. This one was composed with 4 bursts (one for each corner), let's start with just one for now:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

How is it possible? Remember that the Burst composes ShapeSwirls, not simple Shapes so, if we set isSwirl to true, we will have sine paths. This is how you do 4 at once (click to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

+ You can do the same `4 dust points effect` with just one declarative call if will use `Stagger` module, but that's a topic for the next tutorial. +

OK. Recalling the mole demo, what else did you notice? Probably confetti that appears when cube hits the floor. Right!

That's how you do the first large one:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

The main catch here is to mimic the air flow by rotating the main swirl backward slightly. Then you have to create more bursts, each one is smaller than previous one and each of them should have a smaller delay.

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

What else have you noticed in the mole demo? Yep saliva that comes from the mole mouth when it teases. First, you want to make 0-degree burst, and rotate the main swirl downward, imitating that the air current which comes out of his mouth gets weaker:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Then add larger burst's radius, turn on swirl sine paths and randomize them with pathScale property:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

At last, add random radius to children and mix direction of the swirls:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

You can see that the Burst module is pretty flexible thus helps you to craft numerous sophisticated effects.

The dust trail

OK, let's recall another demo, remember this one from previous the tutorial? Did I notice that the dust trail effect is much easier with burst (×)?

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

As you remember, to create the dust trail effect, we first need to shoot the child swirls downwards to the ground with random children radiuses:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

Now instead of multiple swirl modules which we have been using in the previous tutorial, we use just one burst - stagger expressions turn out to be useful! After that you want to create an overflow: hidden container and assign it as parent to the burst:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

This time, we have used the Shape module as parent overflow constrain.

The last touch is to add the fading burst at the end and make the parent move to the left:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

That's exact the same effect as we have made in the Shape & ShapeSwirl tutorial, but this time with just 2 Bursts! Bursts are fun, there is a little demo I've made with this dust trail effect (click to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

That's it for Burst. We've touched only the surface of the possible effects that you can compose with this module, but that's a good start to convey the idea and APIs. Also, my friends from Codrops (opens new window) wrote an awesome post (opens new window) a while ago on the Burst matter, definitely check it out.

# Recap

Burst is the module that helps you to craft sophisticated motion effects with simple declarative calls. Technically, it is the main ShapeSwirl that composes a bunch of child ShapeSwirls forming the radial shape by default. mojs takes care about all markup bootstrapping and positioning of the module for you. The main swirl has no shape thus no presentation properties. The duration of the main swirl is calculated regarding duration of the child swirls. To control child swirls, pass the ShapeSwirl properties to the children property of the main swirl. You can find exhaustive API reference at Burst API section.

Burst is indeed an interesting module but, please don't overuse it. Your intention should be to guide and cheer users but not overwhelm them. Be cautious and think twice, if you feel that anyhow the effect you've done makes a visual noize rather than helps to solve a real problem, skip it entirely.


# Thank you!

I'm happy you've made it here! It was a long and intense journey, I hope you don't feel overwhelmed. I also humbly hope that these effect modules will come handy to you on your web development route. There are some more "effects" modules that will land to the mojs shortly so stay tuned. For any questions, catch me on Twitter @legomushroom (opens new window), ask a question on StackOverflow with #mojs tag, rise an issue on the GitHub repo (opens new window). You can help the project on GitHub (opens new window). {'Love ❤️.'}

Kudos to Jonas Sandstedt (opens new window) for his help in read proofing this tutorial!

+ + + diff --git a/tutorials/easing/path-easing/index.html b/tutorials/easing/path-easing/index.html new file mode 100644 index 00000000..0ca12eff --- /dev/null +++ b/tutorials/easing/path-easing/index.html @@ -0,0 +1,46 @@ + + + + + + mo.js + + + + + + + + + + + + + + + + + + + + diff --git a/tutorials/getting-started.html b/tutorials/getting-started.html new file mode 100644 index 00000000..2c18e89c --- /dev/null +++ b/tutorials/getting-started.html @@ -0,0 +1,94 @@ + + + + + + Getting started | mo.js + + + + + + + + + + + + + + + + +

# Getting started

# Setup mo.js in your project

  • Run npm i @mojs/core OR yarn add @mojs/core

  • Import it import mojs from '@mojs/core'

    Or use the minified CDN version:

    <script src="https://cdn.jsdelivr.net/npm/@mojs/core"></script>
    +
  • Create your animations. What about a bouncy circle?

const bouncyCircle = new mojs.Shape({
+  parent:       '#bouncyCircle',
+  shape:        'circle',
+  fill:         {'#F64040': '#FC46AD'},
+  radius:       {20: 80},
+  duration:     2000,
+  isYoyo:       true,
+  isShowStart:  true,
+  easing:       'elastic.inout',
+  repeat:       1,
+});
+
+bouncyCircle.play()

Or maybe a loading animation?

const spinner = new mojs.Shape({
+  parent:           '#spinner',
+  shape:            'circle',
+  stroke:           '#FC46AD',
+  strokeDasharray:  '125, 125',
+  strokeDashoffset: {'0': '-125'},
+  strokeWidth:      4,
+  fill:             'none',
+  left:             '50%',
+  top:              '50%',
+  rotate:            {'-90': '270'},
+  radius:           20,
+  isShowStart:      true,
+  duration:         2000,
+  easing:           'back.in',
+})
+.then({
+  rotate:            {'-90': '270'},
+  strokeDashoffset: {'-125': '-250'},
+  duration:         3000,
+  easing:           'cubic.out',
+});
+
+spinner.play();

Go creative!

See the API for more info.

# Usage with Server Side Rendering (SSR)

Note that this is a client-side library, and is not meant to be run on a server. So if you are using a library like Next.js, Gatsby, Nuxt.js or Angular Universal, make sure not to run your MoJS code on the server, just on the client side. How to do that differs from the library you are using. In React based libraries you can use the useEffect hook or a dynamic import (read more here (opens new window)). For Angular Universal you can use Guards (read more about it here (opens new window)). Lastly if you use Vue with Nuxt.js, you will find more info here (opens new window), or info about using the mounted hook here (opens new window).

Also see tutorial on how to use MoJS inside a React app here.

+ + + diff --git a/tutorials/index.html b/tutorials/index.html new file mode 100644 index 00000000..e0784248 --- /dev/null +++ b/tutorials/index.html @@ -0,0 +1,50 @@ + + + + + + Tutorials overview | mo.js + + + + + + + + + + + + + + + + + + + + diff --git a/tutorials/shape-swirl/index.html b/tutorials/shape-swirl/index.html new file mode 100644 index 00000000..8103d0eb --- /dev/null +++ b/tutorials/shape-swirl/index.html @@ -0,0 +1,620 @@ + + + + + + Shape & ShapeSwirl | mo.js + + + + + + + + + + + + + + + + +

# Shape & ShapeSwirl

This post is about Shape and ShapeSwirl - modules that help you to bootstrap motion effects.

# Author: legomushroom (opens new window)


# Shape

Shape is a special mojs module that bootstraps visual effects. The idea behind Shapes is simple and neat - you can have an animatable shape in any part of the screen or an HTML element with one declarative call. So it's like saying:

Hey Computer! I want a pink outlined polygon right in the middle of the screen!

or like something this:

Hey Machine! I want a dust trail after this element when it moves!

And appropriate effects should appear. Most importantly, Shape is a tiny bit that can be composed into more mature modules like Burst or Stagger which we will discuss shortly in the upcoming tutorials, right now I should make sure you are comfortable with Shape APIs and use cases.

So in the simplest way - Shape is just a declarative shape transition in any desired place of the screen in any moment of the time. The concept can be confusing at first, so I will try to give you as much code samples as possible, there is the first one:

new mojs.Shape({
+  shape:        'circle',
+  isShowStart:  true,
+});
+

Nothing interesting yet. Well maybe there is one thing - the shape magically appears just in the middle of the screen. mojs takes care to create as narrow container for the shape as possible, bootstraps all the markup and places the result just where you want it. Pretty handy. isShowStart property says to the shape to be visible even before any animations starts.

Obviously, you can style the shape as you want (play around with the different props and use the buttons to update the code):

new mojs.Shape({
+  parent:       '#circle',
+  shape:        'circle',     // shape 'circle' is default
+  radius:       25,           // shape radius
+  fill:         'transparent',// same as 'transparent'
+  stroke:       '#F64040',    // or 'cyan'
+  strokeWidth:  5,            // width of the stroke
+  isShowStart:  true,         // show before any animation starts
+});
+

The entire list of shape properties with comments could be found at Shape API section.

# Value types

When you set colors, they can be expressed in different forms like color keywords (opens new window), rgb, rgba or hex (see stroke and fill properties).

Numeric properties may be unit based (like top/left below) or can be expressed with rand strings (like x below):

new mojs.Shape({
+  parent:       '#values',
+  shape:        'circle',
+  top:          '50%',
+  x:            'rand(-250, 250)',
+  isShowStart:  true,
+});
+

TIP

Use the Update code button to see the random function in use.

Here above, we've set random value for the x property in the interval from -250 to 250 so it should show up in random position inside that period every time you will rerun the code. rand string syntax is simple - it takes start and end value to generate a random value between those two.

With the x and y properties, the shape is always translated from the current position of the shape, so if the x property gets the value of 250px, the circle's gets translated 250px to the right.

# Radius

The radius property sets shape's (no prizes for guessing) radius. Also, you can set radiusX/radiusY values explicitly:

new mojs.Shape({
+  parent:       '#radius_example',
+  shape:        'circle',
+  radius:       25,
+  radiusX:      35, // explicit radiusX
+  fill:         'transparent',
+  stroke:       '#F64040',
+  strokeWidth:  7,
+  isShowStart:  true,
+});
+

Worth noting that the radius property is a property that determines size of any shape, not just circle as in example above, so if you have a shape of rect or polygon or any other, they would have radius properties too, just like a circle shape:

var circle = new mojs.Shape({
+  shape:        'circle',
+  radius:       10,
+  radiusX:      20, // explicit radiusX
+  left:         '25%',
+  fill:         'deeppink',
+  isShowStart:  true,
+});
+
+var rect = new mojs.Shape({
+  shape:        'rect',
+  radius:       15,
+  left:         '50%',
+  fill:         'cyan',
+  isShowStart:  true,
+});
+
+var polygon = new mojs.Shape({
+  shape:        'polygon',
+  radiusX:      10,
+  radiusY:      20,
+  left:         '75%',
+  fill:         'yellow',
+  isShowStart:  true,
+});
+

Also, worth noting that the radius properties control form of shape not just size - it gets pretty clear with zigzag or curve shapes:

var zigzag = new mojs.Shape({
+  shape:        'zigzag',
+  points:       11,
+  radius:       25,
+  radiusY:      50,
+  left:         '25%',
+  fill:         'none',
+  stroke:       'deeppink',
+  isShowStart:   true,
+});
+
+var curve = new mojs.Shape({
+  shape:        'curve',
+  points:       11,
+  radius:       25,
+  radiusY:      50,
+  left:         '50%',
+  fill:         'none',
+  stroke:       'deeppink',
+  isShowStart:   true,
+});
+
+var cross = new mojs.Shape({
+  shape:        'cross',
+  points:       11,
+  radius:       25,
+  radiusX:      50,
+  left:         '75%',
+  fill:         'none',
+  stroke:       'deeppink',
+  isShowStart:   true,
+  y:            -25,
+});
+

You can see in example above, the radiusY controls size of the spikes for the zigzag shape and for the curve it controls how much it bends up.

# Boolean properties

As for boolean properties of the shape, they start with the is prefix to separate them from other values (e.g. isShowStart, isShowEnd, isYoyo etc.).

# Delta (∆)

To keep the APIs declarative, mojs uses delta objects to describe transitions of shape properties:

new mojs.Shape({
+  parent:       '#delta',
+  shape:        'circle',
+  scale:         { 0 : 1 },
+
+  duration:      1000,
+  delay:         1000,
+  easing:        'cubic.out',
+  repeat:        2
+}).play();

We have set transition for the scale property of the shape from 0 to 1. As you can see the delta in mojs is plain javascript object that holds start and end state of the property, where the key of the object is the start state and value of the object is the end state respectively. If you still feel confused, just change : to -> in your mind and you will have { '0 -> 1' } outcome which might be more intuitive.

TIP

To play the animation, add the .play() method after your shape declaration. For simplicity, we have left that one out for most of the other examples. For other public methods, check out the API.

Start and end values in the delta object can be unit based or random (rand) ones or whatever you have — just the same as we did it before with static values (all objects in the code sample below are deltas):

const circle = new mojs.Shape({
+  shape:        'circle',
+  scale:        { 0 : 1 },
+  left:         '25%',
+  fill:         { 'cyan': 'yellow' },
+  radius:       25,
+
+  duration:     2000,
+  repeat:       999,
+}).play();
+
+const rect = new mojs.Shape({
+  shape:        'rect',
+  left:         '50%',
+  fill:         'none',
+  radius:       20,
+  stroke:       { 'rgba(0,255,255, 1)' : 'magenta' },
+  strokeWidth:  { 10: 0 },
+  strokeDasharray: '100%',
+  strokeDashoffset: { '-100%' : '100%' },
+  rotate:        { 0: 180 },
+
+  duration:     2000,
+  repeat:       999,
+}).play();
+
+const polygon = new mojs.Shape({
+  shape:        'polygon',
+  points:       5,
+  left:         '75%',
+  fill:         { 'deeppink' : '#00F87F' },
+  x:            { 'rand(-100%, -200%)' : 0  },
+  rotate:        { 0: 'rand(0, 360)' },
+  radius:       25,
+
+  duration:     2000,
+  repeat:       999,
+}).play();
+

Here, delta of the strokeDashoffset property on the rectangle uses unit based values. The delta of the x property of the polygon shape uses random unit based values. The delta of the fill property for all the shapes uses color keywords to describe color transitions.

The nice thing about declarative APIs is that you define what you want to do by contrast with how to do it, so it makes the intention of the transition crystal clear with just one short glimpse. Consider this code sample of a trirotate:

new mojs.Shape({
+  parent:     '#triangle',
+  shape:      'polygon',
+  fill:       'orange',
+  radius:     65,
+  rotate:      { [-120]: -40 },
+  x:          { [-200]: 20 },
+  y:          { [50]: -20 },
+  scaleX:     { 0 : 1.3 },
+
+  repeat:     10,
+  duration:   800,
+  isYoyo:     true,
+  backwardEasing: 'sin.in',
+
+  isShowEnd:  false
+})

If you will translate this code sample to proper English, you will have something like this — we have a orange polygon of 65px radius right in the middle of the screen(by default), when animation starts — it rotates from -120 to -40 degrees, shifts 180px to the right starting from -200px and scales from 0 to 1.3 concurrently. That happens during 800ms and repeats 10 times with default easing and sin.in easing when moving backward in yoyo period. When animation ends, the shape disappears.

Note that almost every property transition besides tween properties (like duration/delay etc) and boolean values, can be expressed with delta object, please refer to the API on that matter. The symbol in the comment right above properties defines that the property is "deltable" thus supports delta transitions.

# Delta easing

Delta can also have its own explicit easing field that can hold any mojs easing type, this makes shape transitions more flexible to the real world needs.

new mojs.Shape({
+  parent:       '#deltaeasing',
+  shape:        'circle',
+  scale:        { 0 : 1, easing: 'cubic.out' },
+  fill:         { 'cyan': 'yellow', easing: 'cubic.in' },
+
+  duration:     2000,
+  repeat:       2,
+})

Here above, we've defined the explicit easing values for scale and fill properties.

# Delta curve

The 3rd property that is available on delta objects is curve property that overrides easing property if both present. The curve property is the way to go if you want to declare a property curve for a property transition, where start and end values of the delta are based on a curve, that will be multiplied by current curve's value when animation runs:

const shiftCurve = mojs.easing.path( 'M0,100 C50,100 50,100 50,50 C50,0 50,0 100,0' );
+const scaleCurveBase = mojs.easing.path( 'M0,100 C21.3776817,95.8051376 50,77.3262711 50,-700 C50,80.1708527 76.6222458,93.9449005 100,100' );
+const scaleCurve = (p) => { return 1 + scaleCurveBase(p); };
+const nScaleCurve = (p) => { return 1 - scaleCurveBase(p)/10; };
+
+const circle = new mojs.Shape({
+  shape:        'rect',
+  fill:         { '#F64040' : '#F64040', curve: scaleCurve },
+  radius:       10,
+  rx:           3,
+  x:            { [-125] : 125, easing: shiftCurve },
+  scaleX:       { 1 : 1, curve: scaleCurve },
+  scaleY:       { 1 : 1, curve: nScaleCurve },
+  origin:       { '0 50%' : '100% 50%', easing: shiftCurve },
+
+  isYoyo:         true,
+  delay:        500,
+  duration:     800,
+  repeat:       999
+}).play();
+

We won't spend a lot of time with property curves in this tutorial, but I highly encourage you to dig into the topic because it is a very sophisticated and powerful concept to note.

So to recap, delta's syntax:

{
+  startState: endState,
+  easing:     'cubic.out',     // optional `easing`,
+  curve:      'M0,100 L100,0'  // optional `curve` that suppress `easing` if both present
+}
+

At this point we can declare and animate shapes.

Then what?

# Then Zen

You can chain shape states with then calls (hit play button to see):

new mojs.Shape({
+  parent:       '#then',
+  shape:          'rect',
+  fill:           'none',
+  stroke:         '#FC46AD',
+  radius:         10,
+  strokeWidth:    20,
+  rotate:          { [-180] : 0 },
+
+  duration:       600
+}).then({
+  strokeWidth:    0,
+  scale:          { to: 2, easing: 'sin.in' },
+});

Note

In the demo above, I've added MojsPlayer to control the demo sequence instead of explicit .play call on the shape. MojsPlayer is part of mojs tools that gives you GUI controls thus helps you to craft your motion sequences. Also, it keeps the animation state and settings on page reloads, saving you lots of time and effort. Since our animations can get quite complex, the player could be a good aide. Read more here how to use it.

So in the demo above, we have continued the sequence with the next state declaration for the strokeWidth and scale properties. What's important - then doesn't need delta to describe new transition - it creates delta automatically from whatever property value was before to the new one.

If you want explicitly specify easing for next property state - you can use object instead of primitive value, where to key describes the next state ( see scale property in then call above).

Yet you can set entire new delta for then call (see strokeWidth and stroke property in then call below):

new mojs.Shape({
+  parent:       '#newdeltainthen',
+  shape:        'rect',
+  fill:         'none',
+  stroke:       'cyan',
+  radius:       10,
+  strokeWidth:  20,
+  rotate:        { [-180] : 0 },
+
+  duration:     600
+}).then({
+  strokeWidth:  { 50 : 0 },
+  stroke:       { 'magenta' : 'yellow'  }
+});

As you can witness, setting new delta in then call tells mojs to ignore everything whatever was before and proceed with completely new delta transition.

The last thing to note is that if the duration property is not set in the new then call, it inherits the value from the previous block:

new mojs.Shape({
+  parent:         '#duration',
+  shape:          'rect',
+  fill:           'none',
+  stroke:         'cyan',
+  radius:         10,
+  strokeWidth:    20,
+  rotate:          { [-180] : 0 },
+  top: '50%', y: -20,
+
+  duration:       600,
+  delay:          200
+}).then({
+
+  // duration here will be 600 too because inherited from the previous block
+  // delay here will have default 0 value
+
+  rotate:          -360,
+  scale:          2,
+  strokeWidth:    0,
+  stroke:         { 'magenta' : 'yellow'  }
+});

So in the code sample above, the duration inside then call has the same value of 600ms inherited from the previous state block, but the delay has the default value of 0.

# Tweenable Interface

Shape obeys tweenable interface thus it has the same tween properties, callbacks and public methods as any tween has:

const shape = new mojs.Shape({
+  // shape properties which we have already used
+  shape:          'rect',
+  stroke:         'cyan',
+  rotate:          { [-360] : 0 },
+
+  // tween properties
+  duration:       600,
+  delay:          200,
+  repeat:         0,
+  speed:          1,
+  yoyo:           false,
+  easing:         'sin.out',
+  backwardEasing: 'sin.in',
+  yoyo:           true,
+
+  // callbacks
+  onStart (isForward, isYoyo) {
+    //...
+  },
+  onRepeatStart (isForward, isYoyo) {
+    //...
+  },
+  onUpdate (ep, p, isForward, isYoyo) {
+    //...
+  },
+  onRepeatComplete (isForward, isYoyo) {
+    //...
+  },
+  onComplete (isForward, isYoyo) {
+    //...
+  },
+  onProgress (p, isForward, isYoyo) {
+    //...
+  },
+  onRefresh (isBefore) {
+    //...
+  },
+  onPlaybackStart () {},
+  onPlaybackPause () {},
+  onPlaybackStop () {},
+  onPlaybackComplete () {},
+})
+// tween public methods
+.play()
+.playBackward()
+.pause()
+.stop()
+.replay()
+.replayBackward()
+.setProgress()
+.setSpeed()
+.reset()
+

Also implementing tweenable interface means that any Shape can be added or appended to any timeline exact the same way as any simple tween:

const timeline = new mojs.Timeline;
+timeline
+  .add( rect, circle, triangle, polygon, triangle2, polygon2, circle2 );
+

Here above we have added shapes to timeline just like any tween - with the add public method.

# Tune

After you have created a shape, you can tune any of its properties before starting the animation. The tune method is handy when you want to add some interactivity to your animation or to play the shape regarding user input - the method was designed exactly for this purpose(click somewhere to see):

document.addEventListener( 'click', function (e) {
+
+  circle1
+    .tune({ x: e.pageX, y: e.pageY  })
+    .replay();
+
+  circle2
+    .tune({ x: e.pageX, y: e.pageY  })
+    .replay();
+
+});
+

TIP

See the full source code on codepen (opens new window). You can also see how to use it in a container like we do it on this demo page in this pen (opens new window)

Here above, we have tuned x and y properties of the circles before replaying it. Any properties besides shape ones could be tuned at any moment of time.

Note that tune call transforms entire shape's property query that was set up with then calls. It works that way to keep the chain up to date starting from the newly tuned value. Thus you tune not only the first shape state but the subsequent ones. For instance, if you had a chain of y -50 -> 50 then 100, and tune it to -100, you will eventually have -150 -> -150 -> 100 chain. But if you will tune to delta value like -100 -> 0, you will have the -100 -> 0 -> 100 chain as the result (click somewhere to see):

const circle = new mojs.Shape({
+  y: { [-50] : 0 },
+}).then({
+  y: 100
+});
+
+document.addEventListener( 'click', function (e) {
+
+  // no tune
+  circle1
+    .replay();
+
+  // static value tune, results in -100 for the first block,
+  // transforms the second block to the '-100 -> 100' delta
+  circle2
+    .tune({ y: -100 })
+    .replay();
+
+  // delta tune, results in -100 : 25 for the first block,
+  // transforms the second block to the '25 -> 100' delta
+  circle3
+    .tune({ y: { [-100] : 0 } })
+    .replay();
+});
+

1st circle wasn't tuned at all, 2nd circle was tuned to static value, 3rd circle was tuned to new delta value

# Generate

The generate method is very similar to tune one, but it doesn't receive any options. The method was designed to regenerate randoms that the shape had on initialization:

/* Props from smallCircles:
+{
+  delay:          'rand(0, 350)',
+  x:              'rand(-50, 50)',
+  y:              'rand(-50, 50)',
+  radius:         'rand(5, 20)'
+}
+*/
+
+document.addEventListener( 'click', function (e) {
+  for ( let i = 0; i < smallCircles.length; i++ ) {
+    smallCircles[i]
+      .generate()
+      .replay();
+  }
+});
+

Here above, shapes had randoms in delay, x, y and radius properties. Then we've added the mouse click handler, and generate the shapes inside, as the result, we have unique effect pattern every time the click event fires. See full code here. (opens new window)

# Custom Shapes

You probably have noticed that mojs supports a bunch of built in shapes. Namely, they are circle, rect, polygon, line, cross, equal, curve and zigzag. You can extend this set of shapes by providing mojs with a custom one that suits your needs. For that:

  • Draw your shape on a 100x100 artboard (viewBox) in any vector editor and save the shape as a svg.

  • Create a class that extends the mojs.CustomShape class.

  • Copy the shape tags from within the svg file...


     


    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
    +  <path d="M83.0657721,87.5048737 C74.252469,95.2810178 62.6770192,99.9991713 49.9995857,99.9991713 C22.385577,99.9991713 0,77.6135943 0,49.9995857 C0,22.385577 22.385577,0 49.9995857,0 C77.6135943,0 99.9991713,22.385577 99.9991713,49.9995857 C99.9991713,50.0248803 99.9991526,50.0501705 99.999115,50.0754564 L100,94.5453117 C100,99.9979302 96.8685022,101.290527 93.0045119,97.4313174 L83.0657721,87.5048737 Z"></path>
    +</svg>
    +
  • ... and paste and return them inside a getShape method.

    class Bubble extends mojs.CustomShape {
    +  getShape () { return '<path d="M83.0657721,87.5048737 C74.252469,95.2810178 62.6770192,99.9991713 49.9995857,99.9991713 C22.385577,99.9991713 0,77.6135943 0,49.9995857 C0,22.385577 22.385577,0 49.9995857,0 C77.6135943,0 99.9991713,22.385577 99.9991713,49.9995857 C99.9991713,50.0248803 99.9991526,50.0501705 99.999115,50.0754564 L100,94.5453117 C100,99.9979302 96.8685022,101.290527 93.0045119,97.4313174 L83.0657721,87.5048737 Z"></path>'; }
    +  getLength () { return 200; } // optional
    +}
    +
  • Now you can register this shape in mojs with a custom name that will be used further in shape property of mojs.Shape constructor as you did it before:

mojs.addShape( 'bubble', Bubble ); // passing name and Bubble class
+// now it is avaliable on mojs.Shape constructor as usual
+new mojs.Shape({ shape: 'bubble' });`
+

All together in one block:

/* ADD CUSTOM SHAPE SOMEWHERE IN YOUR CODE */
+class Heart extends mojs.CustomShape {
+  getShape () { return '<path d="M92.6 7.4c-10-9.9-26-9.9-35.9 0l-4.4 4.3a3.4 3.4 0 0 1-4.7 0l-4.3-4.3c-10-9.9-26-9.9-35.9 0a25 25 0 0 0 0 35.5l22.4 22.2 13.5 13.4a9.5 9.5 0 0 0 13.4 0L70.2 65 92.6 43a25 25 0 0 0 0-35.5z"/>'; }
+  getLength () { return 200; } // optional
+}
+mojs.addShape( 'heart', Heart ); // passing name and Bubble class
+
+/* USE CUSTOM SHAPE */
+// now it is available on mojs.Shape constructor as usual
+const heart = new mojs.Shape({
+  shape:    'heart', // <--- shape of heart is now available!
+  fill:     'none',
+  stroke:   'red',
+  scale:    { 0 : 1 },
+  strokeWidth: { 50 : 0 },
+  y:         -20,
+  duration:  1000,
+});
+

Worth noting that you should remove all presentation attributes from svg tags to give mojs the ability to style them, otherwise the values will be static:

/* ADD CUSTOM SHAPE */
+class Heart extends mojs.CustomShape {
+  getShape () {
+    return '' + '' + ''; // see full code here: https://codepen.io/sol0mka/pen/d2be0ef912c7e21e0e990536ed6d39fa
+  }
+  getLength () { return 200; } // optional
+}
+mojs.addShape( 'heart', Heart ); // passing name and Bubble class
+
+/* USE CUSTOM SHAPE */
+// now it is available on mojs.Shape constructor as usual
+const heart = new mojs.Shape({
+  shape:    'heart',
+  fill:     'none',
+  stroke:   { 'white' : 'deeppink' },
+  scale:    { 0 : 1 },
+  strokeWidth: { 50 : 0 },
+  y:         -20,
+  duration:  1000,
+});
+

Here above, the middle heart has static stroke property on its tag, so it was left unattended by contrast with other two.

Regarding the second getLength lifecycle method, - it is handy only if you want to use relative percent values for strokeDasharray/strokeDashoffset properties. Since mojs knows very little about the custom shape you have had provided, it is on you to specify what is the perimeter length of the custom shape. In the example below, we return the precise 292.110107421875 length of the heart from the getLength method, this allows us to use percent values in strokeDash* properties.

/* ADD CUSTOM SHAPE */
+class Heart extends mojs.CustomShape {
+  getShape () { return ''; } // see full code here: https://codepen.io/sol0mka/pen/75894cd43b0f12ecdb425cad5149ab37
+  getLength () { return 292.110107421875; } // optional
+}
+mojs.addShape( 'heart', Heart ); // passing name and Bubble class
+
+/* USE CUSTOM SHAPE */
+// now it is available on mojs.Shape constructor as usual
+const heart = new mojs.Shape({
+  shape:            'heart',
+  fill:             'none',
+  stroke:           'white',
+  strokeDasharray:  '100%',
+  strokeDashoffset: { '-100%' : '100%' },
+  y:               -20,
+  duration:         1000,
+});
+

Here above, we are using percent values for strokeDashoffset property so we had to provide the custom shape with getLength method for precise stroke dash length calculations. Read how to find out what the exact length is in the Wiki (opens new window).

# ShapeSwirl

ShapeSwirl module basically is a Shape with a little bit more functionality bolted on. ShapeSwirl automatically calculates sinusoidal x/y path for shape making it easy to send the shapes over sine trajectories.

const shapeswirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  y:              { 0: -150 },
+  duration:       1000
+});
+

Click anywhere to trigger the animation

TIP

Note that the ShapeSwirl has the default of { 1 : 0 } for the scale property so it fades out.

To trigger the animation we have added a click event listener to the container and then run shapeswirl.replay().

To give you control over this behavior, ShapeSwirl accepts more 6 properties, thus you can define frequency or size of the path and other supporting parameters:

const shapeSwirl = new mojs.ShapeSwirl({
+  y:              { 0: -150 },
+  // other props:
+  isSwirl:        true, // sets if the shape should follow sinusoidal path, true by default
+  swirlSize:      10, // defines amplitude of the sine
+  swirlFrequency: 3, // defines frequency of the sine
+  pathScale:      'rand( .1, 1 )', // defines how much the total path length should be scaled
+  direction:      1, // direction of the sine could be 1 or -1
+  degreeShift:    45, // rotatation shift for the sinusoidal path
+});
+

# 1. isSwirl

The isSwirl property (true by default) defines if shape should follow sine path, if set to false it will act exactly the same as simple Shape.

# 2. swirlSize

The swirlSize property (10 by default) defines the deviation or amplitude of the sine. Here is an example with swirlSize: 35:

const swirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  y:              { 0: -150 },
+  radius:         8,
+  swirlSize:      35,
+  swirlFrequency: 4,
+  duration:       1000,
+  direction:       -1,
+});
+

Click anywhere to trigger the animation

# 3. swirlFrequency

The swirlFrequency property (3 by default) defines the frequency of the sine, here is an example with swirlFrequency: 10:

const swirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  y:              { 0: -150 },
+  radius:         8,
+  swirlFrequency: 10,
+  duration:       1000,
+});
+

Click anywhere to trigger the animation

# 4. direction

The direction property (1 by default) defines direction of the amplitude of the sine - it have value of either 1 or -1. Here is the example for -1. Note how it starts to the left instead of right:

const swirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  y:              { 0: -150 },
+  radius:         8,
+  direction:      -1,
+  swirlSize:      35,
+  swirlFrequency: 4,
+  duration:       1000
+});
+

Click anywhere to trigger the animation

# 5. pathScale

The pathScale property (1 by default) defines the scale size of the sine path. Here is an example of pathScale: .5 - which scales the sine by half (of the original radius):

const swirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  y:              { 0: -150 },
+  radius:         8,
+  pathScale:      .5,
+  duration:       1000,
+});
+

Click anywhere to trigger the animation

You are probably thinking - why not just to shorten the y value instead of pathScale one? Well, because the pathScale scales the actual path of the swirl, for instance if you will add the transition for the x property, the path scale will affect the product of y and x - the actual path that the shape makes while move:

const swirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  x:              { 0: -100 },
+  y:              { 0: -150 },
+  radius:         8,
+  pathScale:      .5,
+  duration:       1000,
+});
+

Click anywhere to trigger the animation

The pathScale property will become very useful when we will discuss the Burst module shortly and will have a bunch of ShapeSwirls at once, especially when we will need to randomize their sine lengths.

# 6. degreeShift

The degreeShift property (0 by default) defines rotatation of the swirl. This property becomes interesting when shapeSwirl is used inside other modules (like Burst). For now it will act just like rotatation of the sine path. Here is an example for degreeShift: 90:

const swirl = new mojs.ShapeSwirl({
+  fill:           '#F64040',
+  y:              { 0: -150 },
+  radius:         8,
+  degreeShift:    90,
+  duration:       1000,
+});
+

Click anywhere to trigger the animation

How ShapeSwirl can be handy will be cristal clear soon, in short, the main idea behind swirls is to give you the ability to compose dust/smoke/bubbles effects or basically any effect that needs shapes to move over sine path:

Click anywhere to see

Except those 6 properties, the ShapeSwirl is the same as a simple Shape.

# Recap

That was a pretty fast intro to the Shape module. You can use Shape APIs and ShapeSwirl API sections as reference further on. What is important ro remember:

  • You can create a Shape in any part of the screen, or an HTML element using the parent prop.
  • If you want to animate some property — you add a delta object ({'from': to}) that describes the transition of that property.
  • You can chain the shape transitions with then calls and tune new properties when you want.
  • Tweenable interface allows you to work with Shape in the same way you work with any other Tween.

Now you probably asking yourself - Why do we need something as simple as an animatable shape? In the next section I will cover few use cases for shapes but most importantly it will become crystal clear why do we need shapes in the next Burst Tutorial. Probably, you can treat this tutorial as finished at this point, the further sections are rather optional and were written just for fun. So you can skip reading them in favor of Burst Tutorial but I highly encourage you to continue reading to gain solid understanding of the shapes.


# Use Cases

Please note that the use cases section contains a lot of live code examples but the actual code samples are omitted for time savings and simplicity sake. The actual code is still available in the Codepen link and I highly encourage you to read through and play with them while we will walk through this section. You can omit reading large demos code since it is probably unreadable (Codepen can contain bundled code) or it could be too large to understand sparingly, but you can return to them later, - after you will complete this tutorial. I will leave a little (×) mark for you to indicate that you can skip reading the source code of the Codepen for now.

Despite the fact that Shape and ShapeSwirl modules are nothing than tiny bits that compose higher order modules creating some matured effects, they have strong use cases and can be used on their own. There is no thing in the whole world such expressive and appealing as simple geometric shapes so they are ubiquitous in the motion graphics nowadays. You can use shapes in your animations to add special effects and details making your animation more expressive. Also, Shapes are often used to implode them into UI thus enhancing it. From the development point of view — Shape can be created with just one declarative call allowing you to focus entirely on you motion sequences and don't spend the time bootstrapping things, this fact powers you with a "shape framework" to think in, so your motion sequences get more organized and consistent.

I hope you don't believe that Shapes are useful just because I claimed it out loud, so let me convince you with the next real world use cases. Note that the code samples are omitted in this section but feel free to check Codepen link to tweak the part that interests you.

# Motion Graphics Use Cases

Motion graphics is indeed one of the strongest use cases for Shapes. Nothing breathes life into static content better than the use of motion graphics. With shapes, the limits are simply the imagination of the designer or the artist, - you can create complex mograph sequences based entirely on geometric or custom shapes or use them aside as reinforcement support.

# Bubbles

Let's start with the simple intro sequence, it was composed of custom "speech bubble" shapes and few built in ones.

Link to pen (opens new window)

Custom shapes allow you to use shapes that suite your current needs. To be clear that's not just images that you can animate inside some wrapper, they are highly styleable shapes thus a way flexible than just an image or HTMLElement with some background.

# Geometric Scenes

Let's walk through some short random geometric scenes just to get some intuition about shape usage with mograph. After that, we will combine them to get slightly longer intro sequence.

We will start with a simple and appealing triangles scene. Just 6 triangles and few then statements:

Link to pen (opens new window)

We will compose the next scene by using another 6 triangles, slightly more elegant, with a little contrast to the first one, but still quite simple:

Link to pen (opens new window)

Let's do the next one with contrast to these two, - simple rectangle with some sparks, this one rather funky:

Link to pen (opens new window)

Note that the best module to use for the white sparks effect on the sides of the square would be the Burst module which we will discuss shortly in the next tutorial. Meanwhile in this particular demo, it was made with custom shapes to give you yet another clue how you would use the custom shapes.

After that we need a nice transition between screens, just a few circles will do the trick:

Link to pen (opens new window)

Accessibility warning

When making fullscreen transitions, make sure to include a chech for if the user preferes reduced motion. We don't wanna trigger a migrane attack for our user. For example, you can play the animation from the end instead of frame 0, to ensure the last frame will be visible:

let prefersReducedMotion = false;
+const motionQuery = matchMedia('(prefers-reduced-motion)');
+const handleReduceMotionChanged = () => {
+  prefersReducedMotion = motionQuery.matches; // set to true if user preferes reduced motion
+}
+motionQuery.addListener(handleReduceMotionChanged);
+handleReduceMotionChanged(); // trigger once on load to check initial value
+
+this.timeline.play(
+  prefersReducedMotion ? 1000 : 0; // 1000 = the length/end of the timeline
+);
+

Read more at CSS-tricks (opens new window).

The last scene for this sequence would be mojs logo reveal - use case for shapes in tandem with property curves:

Link to pen (opens new window)

Now, let's finally compose these short scenes into one:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Link to pen (opens new window)

You can find the entire source code in this repo (opens new window) since the bundled Codepen code could be is unreadable.

# Word reveal

+ There is another demo that can set some light on the shape usage in motion + graphics, it was made with bunch of shapes and few characters that compose + a love word + together: +

Link to pen (opens new window)

That's was the last demo for the mograph use cases, I hope you getting more convinced that shapes could be useful sometimes. Let's move on.

# Inspiration

There are also few gifs for your inspiration. All of them pretty much easy with mojs shapes: +

# Animation Use Cases

Animation is another field for Shapes application. You can compose some visual effects to support your main sequence, crafting more details and depth.

I've made a little animation demo as a starting point to which we will apply some effects. 4 physical balls in a harsh living situation(x):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

You can find the entire source code in this repo (opens new window) since the bundled Codepen code could be unreadable.

The demo itself is a good illustration of how you can use shapes as "main actors" in your scenes because it was made entirely with shapes. But there are few cases that should be discussed besides that.

For instance, you can add the effect of collision between balls with ease(x):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

You can find the entire source code in this repo (opens new window) since the bundled Codepen code could be unreadable.

As you would expect, the effect itself was composed of bunch of shapes and swirls:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

The next effect, you can add to the scene is the "motion trails" effect (x):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

You can find the entire source code in this repo (opens new window) since the bundled Codepen code could be unreadable.

Motion trail effect is usually used to exaggerate velocity of the object that moves and the environment it moves in. Just a nice subtle detail. The effect was composed of 2 shapes, namely curves.

There is another simple example with lines instead of curves:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

The next effect that can fit this scene is the "dust trail" effect (x):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

You can find the entire source code in this repo (opens new window) since the bundled Codepen code could be unreadable.

It was composed of bunch of swirls, let's spend some time and see how exactly you can build something like that. First, you want to make the swirls move downward, - somewhere into the ground:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Then put these swirls inside overflow: hidden container to constrain the visible area:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

As the last touch, you need to add 2 swirls that will fade upward at the end:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

To recap, there is the same exact effect with simple object:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Note: Again, this dust effect could be done with just one declarative call with Burst or Stagger modules that we will discuss shortly, but for now let's keep it Swirl.

That's basically all for animation use cases. My effort in this section was focused to convey the idea of how you can use the shapes to enhance and support your main animation scenes, applying little effects and details.

Just a few gifs for your inspiration: +

# UI Use Cases

UI is another common use case for shapes. You can enhance UI transitions with shapes, add effects or even implode shapes to use them as part of UIs.

Usually motion in UI helps the user to catch a clue about position, purpose and intention of the UI element.

# Bubble Close Button

The next demo illustrates how the shapes can be used to appeal users' attention, providing them with feedback about availability of the control element in a playful way. There is a demo with two shapes that act in place of UI element:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Then you can add even more effects to the button to fit the mood of your current UIs, for instance "bubble UI":

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

If user will click the close button, we need to remove it, for that we can add a "bubbles fade out" effect to keep the "bubbles" pace:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

This is how it will look like if we will connect these two transitions (click the close button):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

That's the exact same effect I've used in Bubble Layout demo a while ago, when I was trying to convey the bubble interface (click on any circle to see the close button)(x):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

In this demo above you can notice two more effects that were made with shapes, - one is the subtle white ripple that spreads out when you click on any bubble (click somewhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

The second one is the white collision effect right under the project image box when it jumps over the screen:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

# Micro Interactions

Since the shapes are tuneable, you can add effects to you UI regarding user interactions (hover over the links to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Another demo for micro interactions is the pointer ripple, the effect that spreads out after a user clicks any touchable surface. The mojs-player itself has a lot of those so I will put an empty player as demo (click on player controls to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

That's basically exact the same principle we have used in this tune demo (click somewhere to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

# Love/Hate Modal

OK. Let's do another demo with shapes regarding UI. This time, we will have a plus button, it will show up from bottom left, after it will stop - we will mimic button push transition by adding the concurrent rotation of the button. By that we will imitate "let's go/follow me" gesture, inviting user to follow up with a click:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Then we can expand the button sequence even more to add some playful splash effect:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Then, if user doesn't click the button for a while, let's invite him to proceed by adding the callout vibration, to mime an incoming call:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

When the user eventually will click the button, we will show the quiz modal with the most valuable question we have ever had. That's how the modal will look like:

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

Every piece of this sequence above is composed of shapes - ripple inside a modal, few details in the top and bottom right corners, background spread effect, modal shape itself and its corner are shapes too.

Now when the user hovers over any button, we need to show some tension, conveying that something is going to happen if he will proceed with a click (hover over buttons to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

The extend parts of inflating modal are nothing than plain shapes, in fact - curves that just get scaled when the user hovers over the buttons. I've set the modal shape to disappear to reveal the extending parts so it will be clear for you what I mean (hover over buttons):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

As you can see now - the extending parts are just curves on each side of the modal. They get larger when user hovers over the buttons.

Next, if user leaves the button with his pointer, we need to show the tension relief by mimicking the air currents that float out of the modal, just a few swirls would do here (hover over buttons and then release to see):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

In the other case, when the user finally proceeds with the button click, we will blow up the modal as a consequence of the modal's tension and show the chosen word. That's the entire sequence (x):

See the Pen + mograph by LegoMushroom (@sol0mka) + on CodePen.

You can find the entire source code in this repo (opens new window) since the bundled Codepen code could be unreadable.

There are few gifs for your inspiration over the UI's and shapes:

# It's a wrap!

Phew, that was intense. I hope you didn't get bored. We have touched only the surface of possible use cases in this post but I hope it puts some light on why and when you can use shapes. At this point it's probably clear that to create a shape you use a declarative call and the shape appears in any place of the screen (or HTMLElement) you want without any bootstrapping. You can use then method to chain states of shape and tune them afterward or even regenerate all random properties on it before starting the animation. Remember that shapes obey the tweenable interface thus it has tween properties, callbacks and public methods that any tween has.

Need to admit that this post was written as an introduction to more complex and mature module that is called Burst, it was important to familiarize you with the base concepts and API's syntax before we will proceed further. I think now you are ready to meet the Burst!

# Thank you!

I deeply appreciate you did it down here, I tried to make it not so boring for you. For any questions, catch me on twitter (@legomushroom (opens new window)), ask a question on StackOverflow with #mojs tag, rise an issue on GitHub repo (opens new window) or join our Slack Community (opens new window). You can help the project on GitHub (opens new window). {'Love ❤️.'}

Kudos to Jonas Sandstedt (opens new window) for his help in rewriting and proof reading this tutorial!

+ + + diff --git a/tutorials/usage-with-react.html b/tutorials/usage-with-react.html new file mode 100644 index 00000000..dc1a0e68 --- /dev/null +++ b/tutorials/usage-with-react.html @@ -0,0 +1,317 @@ + + + + + + Usage with React | mo.js + + + + + + + + + + + + + + + + +

# Usage with React

# In this tutorial your will learn how to use MoJS in React using React's Hooks API.

# Author: Jonas Sandstedt (opens new window)

Fork example on CodeSandbox (opens new window)

TLDR;

Assign your animation to an useRef immutable object inside a useEffect hook. Then you can use this ref to control the animation, like this: myRef.current.play()


# Install packages

Start by installing React, ReactDOM and @mojs/core from your favorite package manager. Here we use npm:

npm i react react-dom @mojs/core
+

# Create the animation component

Here is the final component that we're gonna build:

import React, { useRef, useEffect, useState, useCallback } from "react";
+import mojs from "@mojs/core";
+
+/**
+ * Usage:
+ * import MojsExample from './MojsExample';
+ *
+ * <MojsExample duration={1000}/>
+ */
+
+const MojsExample = ({ duration }) => {
+  const animDom = useRef();
+  const bouncyCircle = useRef();
+  const [isOpen, setIsOpen] = useState(false);
+  const [isAnimating, setIsAnimating] = useState(false);
+
+  useEffect(() => {
+    // Prevent multiple instansiations on hot reloads
+    if (bouncyCircle.current) return;
+
+    // Assign a Shape animation to a ref
+    bouncyCircle.current = new mojs.Shape({
+      parent: animDom.current,
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: duration,
+      isShowStart: true,
+      easing: "elastic.inout",
+      onStart() {
+        setIsAnimating(true);
+      },
+      onComplete() {
+        setIsAnimating(false);
+      },
+    });
+  });
+
+  // Update the animation values when the prop changes
+  useEffect(() => {
+    if (!bouncyCircle.current) return;
+    bouncyCircle.current.tune({ duration: duration });
+    isOpen
+      ? bouncyCircle.current.replayBackward()
+      : bouncyCircle.current.replay();
+    setIsOpen(!isOpen);
+  }, [duration]);
+
+  const clickHandler = useCallback(() => {
+    // If the "modal" is open, play the animation backwards, else play it forwards
+    isOpen ? bouncyCircle.current.playBackward() : bouncyCircle.current.play();
+    setIsOpen(!isOpen);
+  }, [isOpen]);
+
+  return (
+    <div ref={animDom} className="MojsExample">
+      <div className="content">
+        <h1>MoJS React Example</h1>
+        <p>Using hooks</p>
+        <button className="button" onClick={clickHandler}>
+          {isAnimating && isOpen ? "Animating" : isOpen ? "Close" : "Open"}
+        </button>
+      </div>
+    </div>
+  );
+};
+
+export default MojsExample;
+

# Let's break it down!

First we create a useRef hooks, and takes advantage of its immutable object and assign our MoJS Shape animation to it. This way we can later use it to control our animation:


 


 












const MojsExample = () => {
+  const bouncyCircle = useRef();
+
+  useEffect(() => {
+    bouncyCircle.current = new mojs.Shape({
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: 1000,
+      isShowStart: true,
+      easing: "elastic.inout",
+    });
+  });
+
+  return;
+};
+

By checking if the ref already has been assigned, we can prevent the animation from being instantiated again on re-renders (very useful when using hot reloads):





 














const MojsExample = () => {
+  const bouncyCircle = useRef();
+
+  useEffect(() => {
+    if (bouncyCircle.current) return;
+
+    bouncyCircle.current = new mojs.Shape({
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: 1000,
+      isShowStart: true,
+      easing: "elastic.inout",
+    });
+  });
+
+  return;
+};
+

To get the reference to DOM element we want to append our animation to, we can use a useRef hook, and attach it to a container:



 





 











 




const MojsExample = () => {
+  const bouncyCircle = useRef();
+  const animDom = useRef();
+
+  useEffect(() => {
+    if (bouncyCircle.current) return;
+
+    bouncyCircle.current = new mojs.Shape({
+      parent: animDom.current,
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: 1000,
+      isShowStart: true,
+      easing: "elastic.inout",
+    });
+
+    bouncyCircle.current.play();
+  });
+
+  return <div ref={animDom} className="MojsExample" />;
+};
+
+export default MojsExample;
+

Now lets add a button to play the animation when we click it. To control the animation, we can now reference the MoJS animation using bouncyCircle.current.play();



















 
 
 



 
 
 






const MojsExample = () => {
+  const bouncyCircle = useRef();
+  const animDom = useRef();
+
+  useEffect(() => {
+    if (bouncyCircle.current) return;
+
+    bouncyCircle.current = new mojs.Shape({
+      parent: animDom.current,
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: 1000,
+      isShowStart: true,
+      easing: "elastic.inout",
+    });
+  });
+
+  const clickHandler = useCallback(() => {
+    bouncyCircle.current.play();
+  });
+
+  return (
+    <div ref={animDom} className="MojsExample">
+      <button className="button" onClick={clickHandler}>
+        Play animation
+      </button>
+    </div>
+  );
+};
+
+export default MojsExample;
+

TIP

If we instead would want to play our animation directly, we could add bouncyCircle.current.play(); directly after the bouncyCircle declaration.

By passing props to our MojsExample function, we can control the initial values of the animation, and also .tune() the animation when they change.







 











 





 
 
 
 
 














/**
+ * Usage:
+ * import MojsExample from './MojsExample';
+ *
+ * <MojsExample duration={1000}/>
+ */
+const MojsExample = ({ duration }) => {
+  const animDom = useRef();
+  const bouncyCircle = useRef();
+
+  useEffect(() => {
+    if (bouncyCircle.current) return;
+
+    bouncyCircle.current = new mojs.Shape({
+      parent: animDom.current,
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: duration,
+      isShowStart: true,
+      easing: "elastic.inout",
+    });
+  });
+
+  useEffect(() => {
+    if (!bouncyCircle.current) return;
+    bouncyCircle.current.tune({ duration: duration });
+    bouncyCircle.current.replay();
+  }, [duration]);
+
+  const clickHandler = useCallback(() => {
+    bouncyCircle.current.play();
+  });
+
+  return (
+    <div ref={animDom} className="MojsExample">
+      <button className="button" onClick={clickHandler}>
+        Play animation
+      </button>
+    </div>
+  );
+};
+

As a final touch, lets add some methods to listen animation events, and use Reacts useState to save it as a local state:




 
 












 
 
 
 
 
 






 
 
 
 




 
 
 




 





const MojsExample = ({ duration }) => {
+  const animDom = useRef();
+  const bouncyCircle = useRef();
+  const [isOpen, setIsOpen] = useState(false);
+  const [isAnimating, setIsAnimating] = useState(false);
+
+  useEffect(() => {
+    if (bouncyCircle.current) return;
+
+    bouncyCircle.current = new mojs.Shape({
+      parent: animDom.current,
+      shape: "circle",
+      fill: { "#FC46AD": "#F64040" },
+      radius: { 50: 200 },
+      duration: duration,
+      isShowStart: true,
+      easing: "elastic.inout",
+      onStart() {
+        setIsAnimating(true);
+      },
+      onComplete() {
+        setIsAnimating(false);
+      },
+    });
+  });
+
+  useEffect(() => {
+    if (!bouncyCircle.current) return;
+    bouncyCircle.current.tune({ duration: duration });
+    isOpen
+      ? bouncyCircle.current.replayBackward()
+      : bouncyCircle.current.replay();
+    setIsOpen(!isOpen);
+  }, [duration]);
+
+  const clickHandler = useCallback(() => {
+    // If the "modal" is open, play the animation backwards, else play it forwards
+    isOpen ? bouncyCircle.current.playBackward() : bouncyCircle.current.play();
+    setIsOpen(!isOpen);
+  }, [isOpen]);
+
+  return (
+    <div ref={animDom} className="MojsExample">
+      <button className="button" onClick={clickHandler}>
+        {isAnimating && isOpen ? "Animating" : isOpen ? "Close" : "Open"}
+      </button>
+    </div>
+  );
+};
+

# Create the root App and render the page

Finally we import our component and add it to the root of our site.

import React from "react";
+import ReactDOM from "react-dom";
+
+import MojsExample from "./MojsExample";
+
+const rootElement = document.getElementById("root");
+ReactDOM.render(
+  <React.StrictMode>
+    <MojsExample duration={2000} />
+  </React.StrictMode>,
+  rootElement
+);
+

You can see the full example and try it out here: CodeSandbox (opens new window). +There is also a button example (opens new window) with a Burst animation using an object pooling array.

Usage with Server Side Rendering (SSR)

Note that this is a client-side library, and is not meant to be run on a server. So if you are using a library like Next.js, Gatsby, Nuxt.js or Angular Universal, make sure not to run your MoJS code on the server, just on the client side. How to do that differs from the library you are using. In React based libraries you can use the useEffect hook or a dynamic import (read more here (opens new window)).

Happy animating!

+ + +