Magenta background for main content to enable chroma keying. Slideshow working properly, background image added.
21
src/node_modules/animated-tailwindcss/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2021 IIIT Kota CodeBase
|
||||
|
||||
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.
|
58
src/node_modules/animated-tailwindcss/README.md
generated
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
<!-- markdownlint-disable MD033 MD041 -->
|
||||
<p align="center">
|
||||
<a href="https://github.com/ikcb/animated-tailwindcss"><img src="logo.svg" width="400" /></a>
|
||||
<br />
|
||||
A configuration to use <a href="https://github.com/animate-css/animate.css">Animate.css</a> with
|
||||
<a href="https://github.com/tailwindlabs/tailwindcss">Tailwind CSS</a>.
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://github.com/animate-css/animate.css/releases/tag/v4.1.1">
|
||||
<img src="https://img.shields.io/badge/animate.css-v4.1.1-007EC6?style=flat-square" />
|
||||
</a>
|
||||
<a href="https://www.npmjs.com/package/animated-tailwindcss">
|
||||
<img src="https://img.shields.io/npm/v/animated-tailwindcss?style=flat-square" />
|
||||
<img src="https://img.shields.io/npm/dm/animated-tailwindcss?logo=npm&style=flat-square" />
|
||||
</a>
|
||||
<a href="LICENSE">
|
||||
<img src="https://img.shields.io/npm/l/animated-tailwindcss?style=flat-square" />
|
||||
</a>
|
||||
<a href="https://conventionalcommits.org">
|
||||
<img src="https://img.shields.io/badge/conventional%20commits-1.0.0-yellow.svg?style=flat-square" />
|
||||
</a>
|
||||
<a href="https://ikcb.org/animated-tailwindcss">
|
||||
<img src="https://img.shields.io/netlify/f63b8a42-3984-4b43-96ff-7419625005e8?label=docs&logo=netlify&style=flat-square" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [Docs for v3](https://ikcb.org/animated-tailwindcss)
|
||||
- [tw-Playground](https://play.tailwindcss.com/TsNC9Yw9Nc)
|
||||
- [Docs for v2](https://www.npmjs.com/package/animated-tailwindcss/v/2.6.1)
|
||||
|
||||
## License
|
||||
|
||||
This configuration is licensed under [the MIT license](LICENSE).
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
This project and everyone participating in it are governed by the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [contact@ikcb.org](mailto:contact@ikcb.org).
|
||||
|
||||
## Contributing
|
||||
|
||||
All sorts of contributions are welcome here! But please follow the [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) while creating PRs.
|
||||
|
||||
When you submit code changes, your submissions are understood to be under the same MIT license that covers the project. Feel free to contact the maintainers if that's a concern.
|
||||
|
||||
## Credits
|
||||
|
||||
- [Animate.css](https://github.com/animate-css/animate.css) – for animation utilities & keyframes – used under [Hippocratic License 2.1](https://github.com/animate-css/animate.css/blob/main/LICENSE).
|
||||
- [Transform.tools](https://github.com/ritz078/transform) – for converting Animate.css to CSS-in-JS – used under [the MIT license](https://github.com/ritz078/transform/blob/master/LICENSE).
|
||||
|
||||
## Contributors
|
||||
|
||||
|  |  |
|
||||
| :----------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |
|
||||
| [Divyansh Singh](https://github.com/brc-dd) <br /> Author | [Akash Tureha](https://github.com/MrMischievousX) <br /> Contributor |
|
340
src/node_modules/animated-tailwindcss/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,340 @@
|
|||
// https://github.com/tailwindlabs/play.tailwindcss.com/tree/master/src/monaco/ *.d.ts
|
||||
|
||||
import type * as CSS from 'csstype';
|
||||
import type * as postcss from 'postcss';
|
||||
|
||||
type KeyValuePair<TKey extends keyof never = string, TValue = string> = Record<TKey, TValue>;
|
||||
|
||||
type CSSProperties = CSS.Properties & Record<`--${string}`, string>;
|
||||
|
||||
type CSSBlock = Record<string, CSSProperties | Record<string, CSSProperties>>;
|
||||
|
||||
type ConfigUtils = {
|
||||
negative: <TInput, TOutput>(input: TInput) => TOutput;
|
||||
breakpoints: <TInput, TOutput>(input: TInput) => TOutput;
|
||||
};
|
||||
|
||||
type ConfigDotNotationPath = string;
|
||||
|
||||
type ResolvableTo<TResult> =
|
||||
| TResult
|
||||
| ((theme: (path: ConfigDotNotationPath) => TResult, utils: ConfigUtils) => TResult);
|
||||
|
||||
type BaseConfig = {
|
||||
important: boolean | string;
|
||||
target: 'ie11' | 'relaxed';
|
||||
prefix: string | ((className: string) => string);
|
||||
separator: string;
|
||||
};
|
||||
|
||||
type PurgeConfig =
|
||||
| Array<string>
|
||||
| false
|
||||
| { enabled: boolean; mode: 'all' | 'conservative'; content: Array<string> }
|
||||
| { enabled: boolean; options: { content: Array<string>; whitelist: Array<string> } };
|
||||
|
||||
type ContentConfig =
|
||||
| Array<string>
|
||||
| {
|
||||
files: Array<string>;
|
||||
safelist?: Array<string | { pattern: RegExp; variants?: Array<string> }>;
|
||||
transform?: Record<string, (content: string) => string>;
|
||||
extract?: Record<string, (content: string) => Array<string>>;
|
||||
};
|
||||
|
||||
type FutureConfig = Record<never, never> | 'all' | [];
|
||||
|
||||
type ExperimentalConfig = Record<never, never> | 'all' | [];
|
||||
|
||||
type DarkModeConfig = 'class' | 'media' | false;
|
||||
|
||||
type ThemeConfig = Partial<
|
||||
Record<string, unknown> & {
|
||||
extend: Partial<Omit<ThemeConfig, 'extend'>>;
|
||||
|
||||
/** Responsiveness */
|
||||
screens: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Reusable base configs */
|
||||
colors: ResolvableTo<KeyValuePair | Record<string, Record<number | string, string>>>;
|
||||
spacing: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Background */
|
||||
backgroundColor: ThemeConfig['colors'];
|
||||
backgroundImage: ResolvableTo<KeyValuePair>;
|
||||
gradientColorStops: ThemeConfig['colors'];
|
||||
backgroundOpacity: ThemeConfig['opacity'];
|
||||
backgroundPosition: ResolvableTo<KeyValuePair>;
|
||||
backgroundSize: ResolvableTo<KeyValuePair>;
|
||||
backgroundOrigin: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Border */
|
||||
borderColor: ThemeConfig['colors'];
|
||||
borderOpacity: ThemeConfig['opacity'];
|
||||
borderRadius: ResolvableTo<KeyValuePair>;
|
||||
borderWidth: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Shadow */
|
||||
boxShadow: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Outline */
|
||||
outline: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Cursor */
|
||||
cursor: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Content */
|
||||
content: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Divider */
|
||||
divideColor: ThemeConfig['borderColor'];
|
||||
divideOpacity: ThemeConfig['borderOpacity'];
|
||||
devideWidth: ThemeConfig['borderWidth'];
|
||||
|
||||
/** SVG */
|
||||
fill: ResolvableTo<KeyValuePair>;
|
||||
stroke: ResolvableTo<KeyValuePair>;
|
||||
strokeWidth: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Flexbox */
|
||||
flex: ResolvableTo<KeyValuePair>;
|
||||
flexGrow: ResolvableTo<KeyValuePair>;
|
||||
flexShrink: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Fonts */
|
||||
fontFamily: ResolvableTo<Record<string, Array<string>>>;
|
||||
fontSize: ResolvableTo<KeyValuePair>;
|
||||
fontWeight: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Sizes */
|
||||
height: ThemeConfig['spacing'];
|
||||
minHeight: ResolvableTo<KeyValuePair>;
|
||||
maxHeight: ResolvableTo<KeyValuePair>;
|
||||
width: ThemeConfig['spacing'];
|
||||
minWidth: ResolvableTo<KeyValuePair>;
|
||||
maxWidth: ResolvableTo<KeyValuePair>;
|
||||
aspectRatio: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Positioning */
|
||||
inset: ResolvableTo<KeyValuePair>;
|
||||
zIndex: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Text */
|
||||
letterSpacing: ResolvableTo<KeyValuePair>;
|
||||
lineHeight: ResolvableTo<KeyValuePair>;
|
||||
textColor: ThemeConfig['colors'];
|
||||
textOpacity: ThemeConfig['opacity'];
|
||||
textIndent: ThemeConfig['spacing'];
|
||||
|
||||
/** Input */
|
||||
placeholderColor: ThemeConfig['colors'];
|
||||
placeholderOpacity: ThemeConfig['opacity'];
|
||||
caretColor: ThemeConfig['colors'];
|
||||
|
||||
/** Lists */
|
||||
listStyleType: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Layout */
|
||||
margin: ThemeConfig['spacing'];
|
||||
padding: ThemeConfig['spacing'];
|
||||
space: ThemeConfig['spacing'];
|
||||
opacity: ResolvableTo<KeyValuePair>;
|
||||
order: ResolvableTo<KeyValuePair>;
|
||||
columns: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Images */
|
||||
objectPosition: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Grid */
|
||||
gap: ThemeConfig['spacing'];
|
||||
gridTemplateColumns: ResolvableTo<KeyValuePair>;
|
||||
gridColumn: ResolvableTo<KeyValuePair>;
|
||||
gridColumnStart: ResolvableTo<KeyValuePair>;
|
||||
gridColumnEnd: ResolvableTo<KeyValuePair>;
|
||||
gridTemplateRows: ResolvableTo<KeyValuePair>;
|
||||
gridRow: ResolvableTo<KeyValuePair>;
|
||||
gridRowStart: ResolvableTo<KeyValuePair>;
|
||||
gridRowEnd: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Transformations */
|
||||
transformOrigin: ResolvableTo<KeyValuePair>;
|
||||
scale: ResolvableTo<KeyValuePair>;
|
||||
rotate: ResolvableTo<KeyValuePair>;
|
||||
translate: ThemeConfig['spacing'];
|
||||
skew: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Transitions */
|
||||
transitionProperty: ResolvableTo<KeyValuePair>;
|
||||
transitionTimingFunction: ResolvableTo<KeyValuePair>;
|
||||
transitionDuration: ResolvableTo<KeyValuePair>;
|
||||
transitionDelay: ResolvableTo<KeyValuePair>;
|
||||
willChange: ResolvableTo<KeyValuePair>;
|
||||
|
||||
/** Animations */
|
||||
animation: ResolvableTo<KeyValuePair>;
|
||||
keyframes: ResolvableTo<Record<string, Record<string, KeyValuePair | string>>>;
|
||||
|
||||
/** Filters */
|
||||
blur: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
brightness: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
contrast: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
dropShadow: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
grayscale: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
hueRotate: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
invert: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
saturate: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
sepia: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropFilter: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropBlur: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropBrightness: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropContrast: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropGrayscale: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropHueRotate: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropInvert: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropOpacity: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropSaturate: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
backdropSepia: ResolvableTo<Record<string, Array<string> | string>>;
|
||||
|
||||
/** Components */
|
||||
container: Partial<{
|
||||
screens:
|
||||
| Array<string>
|
||||
| Record<string, { min: string; max: string }>
|
||||
| Record<string, string>;
|
||||
center: boolean;
|
||||
padding: KeyValuePair | string;
|
||||
}>;
|
||||
}
|
||||
>;
|
||||
|
||||
type VariantsAPI = {
|
||||
variants: (path: string) => Array<string>;
|
||||
|
||||
before: (
|
||||
toInsert: Array<string>,
|
||||
variant?: string,
|
||||
existingPluginVariants?: Array<string>,
|
||||
) => Array<string>;
|
||||
|
||||
after: (
|
||||
toInsert: Array<string>,
|
||||
variant?: string,
|
||||
existingPluginVariants?: Array<string>,
|
||||
) => Array<string>;
|
||||
|
||||
without: (toRemove: Array<string>, existingPluginVariants?: Array<string>) => Array<string>;
|
||||
};
|
||||
|
||||
type VariantsConfig =
|
||||
| Array<string>
|
||||
| Record<string, Array<string> | ((api: VariantsAPI) => Array<string>)>
|
||||
| { extend: Record<string, Array<string>> };
|
||||
|
||||
type CorePluginsConfig = Array<string> | Record<string, boolean>;
|
||||
|
||||
type VariantConfig =
|
||||
| Array<string>
|
||||
| Partial<{ variants: Array<string>; respectPrefix: false; respectImportant: false }>;
|
||||
|
||||
type ValueType =
|
||||
| 'absolute-size'
|
||||
| 'any'
|
||||
| 'color'
|
||||
| 'family-name'
|
||||
| 'generic-name'
|
||||
| 'image'
|
||||
| 'length'
|
||||
| 'line-width'
|
||||
| 'lookup'
|
||||
| 'number'
|
||||
| 'percentage'
|
||||
| 'position'
|
||||
| 'relative-size'
|
||||
| 'url';
|
||||
|
||||
type PluginAPI = {
|
||||
/** Get access to the whole config */
|
||||
config: <TDefaultValue = TailwindConfig>(
|
||||
path?: ConfigDotNotationPath,
|
||||
defaultValue?: TDefaultValue,
|
||||
) => TDefaultValue;
|
||||
|
||||
/** Escape classNames */
|
||||
e: (className: string) => string;
|
||||
|
||||
/** Shortcut for the theme section of the config */
|
||||
theme: <TDefaultValue>(
|
||||
path: ConfigDotNotationPath,
|
||||
defaultValue?: TDefaultValue,
|
||||
) => TDefaultValue;
|
||||
|
||||
variants: <TDefaultValue>(
|
||||
path: ConfigDotNotationPath,
|
||||
defaultValue: TDefaultValue,
|
||||
) => TDefaultValue;
|
||||
|
||||
target: (path: ConfigDotNotationPath) => string;
|
||||
|
||||
prefix: (selector: string) => string;
|
||||
|
||||
/** Ability to add utilities. E.g.: .p-4 */
|
||||
addUtilities: (utilities: CSSBlock, variantConfig?: VariantConfig) => void;
|
||||
|
||||
/** Ability to add components. E.g.: .btn */
|
||||
addComponents: (components: CSSBlock, variantConfig?: VariantConfig) => void;
|
||||
|
||||
addBase: (base: CSSBlock) => void;
|
||||
|
||||
addVariant: (
|
||||
name: string,
|
||||
generator: (api: {
|
||||
container: postcss.Container;
|
||||
separator: string;
|
||||
modifySelectors: (
|
||||
modifierFunction: (api: { className: string; selector: string }) => void,
|
||||
) => void;
|
||||
}) => void,
|
||||
) => void;
|
||||
|
||||
matchUtilities: <T>(
|
||||
utilities: Record<string, (value: T) => CSSBlock[string]>,
|
||||
options?: Partial<{
|
||||
values: Record<string, T>;
|
||||
type: Array<ValueType> | ValueType;
|
||||
respectPrefix: boolean;
|
||||
respectImportant: boolean;
|
||||
respectVariants: boolean;
|
||||
}>,
|
||||
) => void;
|
||||
|
||||
corePlugins: (path: string) => boolean;
|
||||
|
||||
postcss: typeof postcss;
|
||||
};
|
||||
|
||||
type PluginCreator = (api: PluginAPI) => void;
|
||||
|
||||
type PluginsConfig = Array<PluginCreator | { handler: PluginCreator; config?: TailwindConfig }>;
|
||||
|
||||
/** The holy grail Tailwind config definition */
|
||||
type TailwindConfig = Partial<
|
||||
BaseConfig &
|
||||
Record<string, unknown> & {
|
||||
presets: Array<TailwindConfig>;
|
||||
future: FutureConfig;
|
||||
experimental: ExperimentalConfig;
|
||||
purge: PurgeConfig;
|
||||
content: ContentConfig;
|
||||
darkMode: DarkModeConfig;
|
||||
theme: ThemeConfig;
|
||||
variants: VariantsConfig;
|
||||
corePlugins: CorePluginsConfig;
|
||||
plugins: PluginsConfig;
|
||||
mode: 'aot' | 'jit';
|
||||
}
|
||||
>;
|
||||
|
||||
type EntryPoint = (config: TailwindConfig) => TailwindConfig;
|
||||
|
||||
declare const withAnimations: EntryPoint;
|
||||
export = withAnimations;
|
3
src/node_modules/animated-tailwindcss/index.min.js
generated
vendored
Normal file
86
src/node_modules/animated-tailwindcss/package.json
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"_from": "animated-tailwindcss",
|
||||
"_id": "animated-tailwindcss@3.0.1",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-xFDqlUTOGUp/aYHDecakGQiB2EkCfu0amzBpTafGb0J4+3vXelRTZyhrKYC2LC0f/eyO0JMP8HNhRKitqrp+2g==",
|
||||
"_location": "/animated-tailwindcss",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "tag",
|
||||
"registry": true,
|
||||
"raw": "animated-tailwindcss",
|
||||
"name": "animated-tailwindcss",
|
||||
"escapedName": "animated-tailwindcss",
|
||||
"rawSpec": "",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "latest"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"#DEV:/",
|
||||
"#USER"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/animated-tailwindcss/-/animated-tailwindcss-3.0.1.tgz",
|
||||
"_shasum": "a800d235dc20931a14d776b3ab2058fd30d5beaa",
|
||||
"_spec": "animated-tailwindcss",
|
||||
"_where": "/usr/src/app",
|
||||
"author": {
|
||||
"name": "Divyansh Singh",
|
||||
"email": "divyansh.singh@ikcb.org",
|
||||
"url": "https://github.com/brc-dd"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/ikcb/animated-tailwindcss/issues",
|
||||
"email": "codebase@iiitkota.ac.in"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Akash Tureha",
|
||||
"email": "2020kucp1138@iiitkota.ac.in",
|
||||
"url": "https://github.com/MrMischievousX"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"csstype": "^3",
|
||||
"lodash.get": "^4",
|
||||
"lodash.range": "^3",
|
||||
"lodash.set": "^4"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "A configuration to use Animate.css with Tailwind CSS",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts"
|
||||
],
|
||||
"homepage": "https://ikcb.org/animated-tailwindcss",
|
||||
"keywords": [
|
||||
"animate.css",
|
||||
"animatecss",
|
||||
"animations",
|
||||
"configuration",
|
||||
"css",
|
||||
"jit",
|
||||
"keyframes",
|
||||
"tailwind",
|
||||
"tailwindcss"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.min.js",
|
||||
"name": "animated-tailwindcss",
|
||||
"peerDependencies": {
|
||||
"postcss": "^8",
|
||||
"tailwindcss": "^3"
|
||||
},
|
||||
"publishConfig": {
|
||||
"registry": "https://registry.npmjs.org"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/ikcb/animated-tailwindcss.git"
|
||||
},
|
||||
"types": "index.d.ts",
|
||||
"version": "3.0.1"
|
||||
}
|
19
src/node_modules/csstype/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
Copyright (c) 2017-2018 Fredrik Nicol
|
||||
|
||||
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.
|
271
src/node_modules/csstype/README.md
generated
vendored
Normal file
|
@ -0,0 +1,271 @@
|
|||
# CSSType
|
||||
|
||||
[](https://www.npmjs.com/package/csstype)
|
||||
|
||||
TypeScript and Flow definitions for CSS, generated by [data from MDN](https://github.com/mdn/data). It provides autocompletion and type checking for CSS properties and values.
|
||||
|
||||
**TypeScript**
|
||||
|
||||
```ts
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
const style: CSS.Properties = {
|
||||
colour: 'white', // Type error on property
|
||||
textAlign: 'middle', // Type error on value
|
||||
};
|
||||
```
|
||||
|
||||
**Flow**
|
||||
|
||||
```js
|
||||
// @flow strict
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
const style: CSS.Properties<> = {
|
||||
colour: 'white', // Type error on property
|
||||
textAlign: 'middle', // Type error on value
|
||||
};
|
||||
```
|
||||
|
||||
_Further examples below will be in TypeScript!_
|
||||
|
||||
## Getting started
|
||||
|
||||
```sh
|
||||
$ npm install csstype
|
||||
```
|
||||
|
||||
## Table of content
|
||||
|
||||
- [Style types](#style-types)
|
||||
- [At-rule types](#at-rule-types)
|
||||
- [Pseudo types](#pseudo-types)
|
||||
- [Generics](#generics)
|
||||
- [Usage](#usage)
|
||||
- [What should I do when I get type errors?](#what-should-i-do-when-i-get-type-errors)
|
||||
- [Version 3.0](#version-30)
|
||||
- [Contributing](#contributing)
|
||||
|
||||
## Style types
|
||||
|
||||
Properties are categorized in different uses and in several technical variations to provide typings that suits as many as possible.
|
||||
|
||||
| | Default | `Hyphen` | `Fallback` | `HyphenFallback` |
|
||||
| -------------- | -------------------- | -------------------------- | ---------------------------- | ---------------------------------- |
|
||||
| **All** | `Properties` | `PropertiesHyphen` | `PropertiesFallback` | `PropertiesHyphenFallback` |
|
||||
| **`Standard`** | `StandardProperties` | `StandardPropertiesHyphen` | `StandardPropertiesFallback` | `StandardPropertiesHyphenFallback` |
|
||||
| **`Vendor`** | `VendorProperties` | `VendorPropertiesHyphen` | `VendorPropertiesFallback` | `VendorPropertiesHyphenFallback` |
|
||||
| **`Obsolete`** | `ObsoleteProperties` | `ObsoletePropertiesHyphen` | `ObsoletePropertiesFallback` | `ObsoletePropertiesHyphenFallback` |
|
||||
| **`Svg`** | `SvgProperties` | `SvgPropertiesHyphen` | `SvgPropertiesFallback` | `SvgPropertiesHyphenFallback` |
|
||||
|
||||
Categories:
|
||||
|
||||
- **All** - Includes `Standard`, `Vendor`, `Obsolete` and `Svg`
|
||||
- **`Standard`** - Current properties and extends subcategories `StandardLonghand` and `StandardShorthand` _(e.g. `StandardShorthandProperties`)_
|
||||
- **`Vendor`** - Vendor prefixed properties and extends subcategories `VendorLonghand` and `VendorShorthand` _(e.g. `VendorShorthandProperties`)_
|
||||
- **`Obsolete`** - Removed or deprecated properties
|
||||
- **`Svg`** - SVG-specific properties
|
||||
|
||||
Variations:
|
||||
|
||||
- **Default** - JavaScript (camel) cased property names
|
||||
- **`Hyphen`** - CSS (kebab) cased property names
|
||||
- **`Fallback`** - Also accepts array of values e.g. `string | string[]`
|
||||
|
||||
## At-rule types
|
||||
|
||||
At-rule interfaces with descriptors.
|
||||
|
||||
**TypeScript**: These will be found in the `AtRule` namespace, e.g. `AtRule.Viewport`.
|
||||
**Flow**: These will be prefixed with `AtRule$`, e.g. `AtRule$Viewport`.
|
||||
|
||||
| | Default | `Hyphen` | `Fallback` | `HyphenFallback` |
|
||||
| -------------------- | -------------- | -------------------- | ---------------------- | ---------------------------- |
|
||||
| **`@counter-style`** | `CounterStyle` | `CounterStyleHyphen` | `CounterStyleFallback` | `CounterStyleHyphenFallback` |
|
||||
| **`@font-face`** | `FontFace` | `FontFaceHyphen` | `FontFaceFallback` | `FontFaceHyphenFallback` |
|
||||
| **`@viewport`** | `Viewport` | `ViewportHyphen` | `ViewportFallback` | `ViewportHyphenFallback` |
|
||||
|
||||
## Pseudo types
|
||||
|
||||
String literals of pseudo classes and pseudo elements
|
||||
|
||||
- `Pseudos`
|
||||
|
||||
Extends:
|
||||
|
||||
- `AdvancedPseudos`
|
||||
|
||||
Function-like pseudos e.g. `:not(:first-child)`. The string literal contains the value excluding the parenthesis: `:not`. These are separated because they require an argument that results in infinite number of variations.
|
||||
|
||||
- `SimplePseudos`
|
||||
|
||||
Plain pseudos e.g. `:hover` that can only be **one** variation.
|
||||
|
||||
## Generics
|
||||
|
||||
All interfaces has two optional generic argument to define length and time: `CSS.Properties<TLength = string | 0, TTime = string>`
|
||||
|
||||
- **Length** is the first generic parameter and defaults to `string | 0` because `0` is the only [length where the unit identifier is optional](https://drafts.csswg.org/css-values-3/#lengths). You can specify this, e.g. `string | number`, for platforms and libraries that accepts any numeric value as length with a specific unit.
|
||||
```tsx
|
||||
const style: CSS.Properties<string | number> = {
|
||||
width: 100,
|
||||
};
|
||||
```
|
||||
- **Time** is the second generic argument and defaults to `string`. You can specify this, e.g. `string | number`, for platforms and libraries that accepts any numeric value as length with a specific unit.
|
||||
```tsx
|
||||
const style: CSS.Properties<string | number, number> = {
|
||||
transitionDuration: 1000,
|
||||
};
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```ts
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
const style: CSS.Properties = {
|
||||
width: '10px',
|
||||
margin: '1em',
|
||||
};
|
||||
```
|
||||
|
||||
In some cases, like for CSS-in-JS libraries, an array of values is a way to provide fallback values in CSS. Using `CSS.PropertiesFallback` instead of `CSS.Properties` will add the possibility to use any property value as an array of values.
|
||||
|
||||
```ts
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
const style: CSS.PropertiesFallback = {
|
||||
display: ['-webkit-flex', 'flex'],
|
||||
color: 'white',
|
||||
};
|
||||
```
|
||||
|
||||
There's even string literals for pseudo selectors and elements.
|
||||
|
||||
```ts
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
const pseudos: { [P in CSS.SimplePseudos]?: CSS.Properties } = {
|
||||
':hover': {
|
||||
display: 'flex',
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
Hyphen cased (kebab cased) properties are provided in `CSS.PropertiesHyphen` and `CSS.PropertiesHyphenFallback`. It's not **not** added by default in `CSS.Properties`. To allow both of them, you can simply extend with `CSS.PropertiesHyphen` or/and `CSS.PropertiesHyphenFallback`.
|
||||
|
||||
```ts
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
interface Style extends CSS.Properties, CSS.PropertiesHyphen {}
|
||||
|
||||
const style: Style = {
|
||||
'flex-grow': 1,
|
||||
'flex-shrink': 0,
|
||||
'font-weight': 'normal',
|
||||
backgroundColor: 'white',
|
||||
};
|
||||
```
|
||||
|
||||
Adding type checked CSS properties to a `HTMLElement`.
|
||||
|
||||
```ts
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
const style: CSS.Properties = {
|
||||
color: 'red',
|
||||
margin: '1em',
|
||||
};
|
||||
|
||||
let button = document.createElement('button');
|
||||
|
||||
Object.assign(button.style, style);
|
||||
```
|
||||
|
||||
## What should I do when I get type errors?
|
||||
|
||||
The goal is to have as perfect types as possible and we're trying to do our best. But with CSS Custom Properties, the CSS specification changing frequently and vendors implementing their own specifications with new releases sometimes causes type errors even if it should work. Here's some steps you could take to get it fixed:
|
||||
|
||||
_If you're using CSS Custom Properties you can step directly to step 3._
|
||||
|
||||
1. **First of all, make sure you're doing it right.** A type error could also indicate that you're not :wink:
|
||||
|
||||
- Some CSS specs that some vendors has implemented could have been officially rejected or haven't yet received any official acceptance and are therefor not included
|
||||
- If you're using TypeScript, [type widening](https://blog.mariusschulz.com/2017/02/04/TypeScript-2-1-literal-type-widening) could be the reason you get `Type 'string' is not assignable to...` errors
|
||||
|
||||
2. **Have a look in [issues](https://github.com/frenic/csstype/issues) to see if an issue already has been filed. If not, create a new one.** To help us out, please refer to any information you have found.
|
||||
3. Fix the issue locally with **TypeScript** (Flow further down):
|
||||
|
||||
- The recommended way is to use **module augmentation**. Here's a few examples:
|
||||
|
||||
```ts
|
||||
// My css.d.ts file
|
||||
import * as CSS from 'csstype';
|
||||
|
||||
declare module 'csstype' {
|
||||
interface Properties {
|
||||
// Add a missing property
|
||||
WebkitRocketLauncher?: string;
|
||||
|
||||
// Add a CSS Custom Property
|
||||
'--theme-color'?: 'black' | 'white';
|
||||
|
||||
// ...or allow any other property
|
||||
[index: string]: any;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- The alternative way is to use **type assertion**. Here's a few examples:
|
||||
|
||||
```ts
|
||||
const style: CSS.Properties = {
|
||||
// Add a missing property
|
||||
['WebkitRocketLauncher' as any]: 'launching',
|
||||
|
||||
// Add a CSS Custom Property
|
||||
['--theme-color' as any]: 'black',
|
||||
};
|
||||
```
|
||||
|
||||
Fix the issue locally with **Flow**:
|
||||
|
||||
- Use **type assertion**. Here's a few examples:
|
||||
|
||||
```js
|
||||
const style: $Exact<CSS.Properties<*>> = {
|
||||
// Add a missing property
|
||||
[('WebkitRocketLauncher': any)]: 'launching',
|
||||
|
||||
// Add a CSS Custom Property
|
||||
[('--theme-color': any)]: 'black',
|
||||
};
|
||||
```
|
||||
|
||||
## Version 3.0
|
||||
|
||||
- **All property types are exposed with namespace**
|
||||
TypeScript: `Property.AlignContent` (was `AlignContentProperty` before)
|
||||
Flow: `Property$AlignContent`
|
||||
- **All at-rules are exposed with namespace**
|
||||
TypeScript: `AtRule.FontFace` (was `FontFace` before)
|
||||
Flow: `AtRule$FontFace`
|
||||
- **Data types are NOT exposed**
|
||||
E.g. `Color` and `Box`. Because the generation of data types may suddenly be removed or renamed.
|
||||
- **TypeScript hack for autocompletion**
|
||||
Uses `(string & {})` for literal string unions and `(number & {})` for literal number unions ([related issue](https://github.com/microsoft/TypeScript/issues/29729)). Utilize `PropertyValue<T>` to unpack types from e.g. `(string & {})` to `string`.
|
||||
- **New generic for time**
|
||||
Read more on the ["Generics"](#generics) section.
|
||||
- **Flow types improvements**
|
||||
Flow Strict enabled and exact types are used.
|
||||
|
||||
## Contributing
|
||||
|
||||
**Never modify `index.d.ts` and `index.js.flow` directly. They are generated automatically and committed so that we can easily follow any change it results in.** Therefor it's important that you run `$ git config merge.ours.driver true` after you've forked and cloned. That setting prevents merge conflicts when doing rebase.
|
||||
|
||||
### Commands
|
||||
|
||||
- `npm run build` Generates typings and type checks them
|
||||
- `npm run watch` Runs build on each save
|
||||
- `npm run test` Runs the tests
|
||||
- `npm run lazy` Type checks, lints and formats everything
|
20512
src/node_modules/csstype/index.d.ts
generated
vendored
Normal file
6317
src/node_modules/csstype/index.js.flow
generated
vendored
Normal file
101
src/node_modules/csstype/package.json
generated
vendored
Normal file
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"_from": "csstype@^3",
|
||||
"_id": "csstype@3.0.10",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==",
|
||||
"_location": "/csstype",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "csstype@^3",
|
||||
"name": "csstype",
|
||||
"escapedName": "csstype",
|
||||
"rawSpec": "^3",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^3"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/animated-tailwindcss"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
|
||||
"_shasum": "2ad3a7bed70f35b965707c092e5f30b327c290e5",
|
||||
"_spec": "csstype@^3",
|
||||
"_where": "/usr/src/app/node_modules/animated-tailwindcss",
|
||||
"author": {
|
||||
"name": "Fredrik Nicol",
|
||||
"email": "fredrik.nicol@gmail.com"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/frenic/csstype/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"deprecated": false,
|
||||
"description": "Strict TypeScript and Flow types for style based on MDN data",
|
||||
"devDependencies": {
|
||||
"@types/chokidar": "^2.1.3",
|
||||
"@types/css-tree": "^1.0.6",
|
||||
"@types/jest": "^27.0.1",
|
||||
"@types/jsdom": "^16.2.13",
|
||||
"@types/node": "^16.9.1",
|
||||
"@types/prettier": "^2.3.2",
|
||||
"@types/request": "^2.48.7",
|
||||
"@types/turndown": "^5.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^4.31.0",
|
||||
"@typescript-eslint/parser": "^4.31.0",
|
||||
"chalk": "^4.1.2",
|
||||
"chokidar": "^3.5.2",
|
||||
"css-tree": "^1.1.3",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"fast-glob": "^3.2.7",
|
||||
"flow-bin": "^0.159.0",
|
||||
"jest": "^27.2.0",
|
||||
"jsdom": "^17.0.0",
|
||||
"mdn-browser-compat-data": "git+https://github.com/mdn/browser-compat-data.git#a9a17ff717b73cb9bb7072357a080509b73e22bb",
|
||||
"mdn-data": "git+https://github.com/mdn/data.git#ff55c39c1da3f1519e3a8f890a7cf6e6339a4b87",
|
||||
"prettier": "^2.4.0",
|
||||
"request": "^2.88.2",
|
||||
"ts-jest": "^27.0.5",
|
||||
"ts-node": "^10.2.1",
|
||||
"turndown": "^7.1.1",
|
||||
"typescript": "~4.4.3"
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"index.js.flow"
|
||||
],
|
||||
"homepage": "https://github.com/frenic/csstype#readme",
|
||||
"keywords": [
|
||||
"css",
|
||||
"style",
|
||||
"typescript",
|
||||
"flow",
|
||||
"typings",
|
||||
"types",
|
||||
"definitions"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "",
|
||||
"name": "csstype",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/frenic/csstype.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "ts-node --files build.ts --start",
|
||||
"lazy": "tsc && npm run lint",
|
||||
"lint": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
|
||||
"prepublish": "npm install --prefix __tests__ && npm install --prefix __tests__/__fixtures__",
|
||||
"prepublishOnly": "tsc && npm run test:src && npm run build && ts-node --files prepublish.ts",
|
||||
"pretty": "prettier --write build.ts **/*.{ts,js,json,md}",
|
||||
"test": "jest",
|
||||
"test:dist": "jest dist.*.ts",
|
||||
"test:src": "jest src.*.ts",
|
||||
"update": "ts-node --files update.ts",
|
||||
"watch": "ts-node --files build.ts --watch"
|
||||
},
|
||||
"types": "index.d.ts",
|
||||
"version": "3.0.10"
|
||||
}
|
47
src/node_modules/lodash.get/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||||
|
||||
Based on Underscore.js, copyright Jeremy Ashkenas,
|
||||
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
|
||||
|
||||
This software consists of voluntary contributions made by many
|
||||
individuals. For exact contribution history, see the revision history
|
||||
available at https://github.com/lodash/lodash
|
||||
|
||||
The following license applies to all parts of this software except as
|
||||
documented below:
|
||||
|
||||
====
|
||||
|
||||
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.
|
||||
|
||||
====
|
||||
|
||||
Copyright and related rights for sample code are waived via CC0. Sample
|
||||
code is defined as all source code displayed within the prose of the
|
||||
documentation.
|
||||
|
||||
CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
====
|
||||
|
||||
Files located in the node_modules and vendor directories are externally
|
||||
maintained libraries used by this software which have their own
|
||||
licenses; we recommend you read them, as their terms may differ from the
|
||||
terms above.
|
18
src/node_modules/lodash.get/README.md
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
# lodash.get v4.4.2
|
||||
|
||||
The [lodash](https://lodash.com/) method `_.get` exported as a [Node.js](https://nodejs.org/) module.
|
||||
|
||||
## Installation
|
||||
|
||||
Using npm:
|
||||
```bash
|
||||
$ {sudo -H} npm i -g npm
|
||||
$ npm i --save lodash.get
|
||||
```
|
||||
|
||||
In Node.js:
|
||||
```js
|
||||
var get = require('lodash.get');
|
||||
```
|
||||
|
||||
See the [documentation](https://lodash.com/docs#get) or [package source](https://github.com/lodash/lodash/blob/4.4.2-npm-packages/lodash.get) for more details.
|
931
src/node_modules/lodash.get/index.js
generated
vendored
Normal file
|
@ -0,0 +1,931 @@
|
|||
/**
|
||||
* lodash (Custom Build) <https://lodash.com/>
|
||||
* Build: `lodash modularize exports="npm" -o ./`
|
||||
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||||
* Released under MIT license <https://lodash.com/license>
|
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
*/
|
||||
|
||||
/** Used as the `TypeError` message for "Functions" methods. */
|
||||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||||
|
||||
/** Used to stand-in for `undefined` hash values. */
|
||||
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
||||
|
||||
/** Used as references for various `Number` constants. */
|
||||
var INFINITY = 1 / 0;
|
||||
|
||||
/** `Object#toString` result references. */
|
||||
var funcTag = '[object Function]',
|
||||
genTag = '[object GeneratorFunction]',
|
||||
symbolTag = '[object Symbol]';
|
||||
|
||||
/** Used to match property names within property paths. */
|
||||
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
|
||||
reIsPlainProp = /^\w*$/,
|
||||
reLeadingDot = /^\./,
|
||||
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
||||
|
||||
/**
|
||||
* Used to match `RegExp`
|
||||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
||||
*/
|
||||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||||
|
||||
/** Used to match backslashes in property paths. */
|
||||
var reEscapeChar = /\\(\\)?/g;
|
||||
|
||||
/** Used to detect host constructors (Safari). */
|
||||
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||||
|
||||
/** Detect free variable `global` from Node.js. */
|
||||
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
||||
|
||||
/** Detect free variable `self`. */
|
||||
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
||||
|
||||
/** Used as a reference to the global object. */
|
||||
var root = freeGlobal || freeSelf || Function('return this')();
|
||||
|
||||
/**
|
||||
* Gets the value at `key` of `object`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} [object] The object to query.
|
||||
* @param {string} key The key of the property to get.
|
||||
* @returns {*} Returns the property value.
|
||||
*/
|
||||
function getValue(object, key) {
|
||||
return object == null ? undefined : object[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a host object in IE < 9.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
|
||||
*/
|
||||
function isHostObject(value) {
|
||||
// Many host objects are `Object` objects that can coerce to strings
|
||||
// despite having improperly defined `toString` methods.
|
||||
var result = false;
|
||||
if (value != null && typeof value.toString != 'function') {
|
||||
try {
|
||||
result = !!(value + '');
|
||||
} catch (e) {}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Used for built-in method references. */
|
||||
var arrayProto = Array.prototype,
|
||||
funcProto = Function.prototype,
|
||||
objectProto = Object.prototype;
|
||||
|
||||
/** Used to detect overreaching core-js shims. */
|
||||
var coreJsData = root['__core-js_shared__'];
|
||||
|
||||
/** Used to detect methods masquerading as native. */
|
||||
var maskSrcKey = (function() {
|
||||
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
|
||||
return uid ? ('Symbol(src)_1.' + uid) : '';
|
||||
}());
|
||||
|
||||
/** Used to resolve the decompiled source of functions. */
|
||||
var funcToString = funcProto.toString;
|
||||
|
||||
/** Used to check objects for own properties. */
|
||||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
|
||||
/**
|
||||
* Used to resolve the
|
||||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||||
* of values.
|
||||
*/
|
||||
var objectToString = objectProto.toString;
|
||||
|
||||
/** Used to detect if a method is native. */
|
||||
var reIsNative = RegExp('^' +
|
||||
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
|
||||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
||||
);
|
||||
|
||||
/** Built-in value references. */
|
||||
var Symbol = root.Symbol,
|
||||
splice = arrayProto.splice;
|
||||
|
||||
/* Built-in method references that are verified to be native. */
|
||||
var Map = getNative(root, 'Map'),
|
||||
nativeCreate = getNative(Object, 'create');
|
||||
|
||||
/** Used to convert symbols to primitives and strings. */
|
||||
var symbolProto = Symbol ? Symbol.prototype : undefined,
|
||||
symbolToString = symbolProto ? symbolProto.toString : undefined;
|
||||
|
||||
/**
|
||||
* Creates a hash object.
|
||||
*
|
||||
* @private
|
||||
* @constructor
|
||||
* @param {Array} [entries] The key-value pairs to cache.
|
||||
*/
|
||||
function Hash(entries) {
|
||||
var index = -1,
|
||||
length = entries ? entries.length : 0;
|
||||
|
||||
this.clear();
|
||||
while (++index < length) {
|
||||
var entry = entries[index];
|
||||
this.set(entry[0], entry[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all key-value entries from the hash.
|
||||
*
|
||||
* @private
|
||||
* @name clear
|
||||
* @memberOf Hash
|
||||
*/
|
||||
function hashClear() {
|
||||
this.__data__ = nativeCreate ? nativeCreate(null) : {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `key` and its value from the hash.
|
||||
*
|
||||
* @private
|
||||
* @name delete
|
||||
* @memberOf Hash
|
||||
* @param {Object} hash The hash to modify.
|
||||
* @param {string} key The key of the value to remove.
|
||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||
*/
|
||||
function hashDelete(key) {
|
||||
return this.has(key) && delete this.__data__[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the hash value for `key`.
|
||||
*
|
||||
* @private
|
||||
* @name get
|
||||
* @memberOf Hash
|
||||
* @param {string} key The key of the value to get.
|
||||
* @returns {*} Returns the entry value.
|
||||
*/
|
||||
function hashGet(key) {
|
||||
var data = this.__data__;
|
||||
if (nativeCreate) {
|
||||
var result = data[key];
|
||||
return result === HASH_UNDEFINED ? undefined : result;
|
||||
}
|
||||
return hasOwnProperty.call(data, key) ? data[key] : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a hash value for `key` exists.
|
||||
*
|
||||
* @private
|
||||
* @name has
|
||||
* @memberOf Hash
|
||||
* @param {string} key The key of the entry to check.
|
||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||
*/
|
||||
function hashHas(key) {
|
||||
var data = this.__data__;
|
||||
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the hash `key` to `value`.
|
||||
*
|
||||
* @private
|
||||
* @name set
|
||||
* @memberOf Hash
|
||||
* @param {string} key The key of the value to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns the hash instance.
|
||||
*/
|
||||
function hashSet(key, value) {
|
||||
var data = this.__data__;
|
||||
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
|
||||
return this;
|
||||
}
|
||||
|
||||
// Add methods to `Hash`.
|
||||
Hash.prototype.clear = hashClear;
|
||||
Hash.prototype['delete'] = hashDelete;
|
||||
Hash.prototype.get = hashGet;
|
||||
Hash.prototype.has = hashHas;
|
||||
Hash.prototype.set = hashSet;
|
||||
|
||||
/**
|
||||
* Creates an list cache object.
|
||||
*
|
||||
* @private
|
||||
* @constructor
|
||||
* @param {Array} [entries] The key-value pairs to cache.
|
||||
*/
|
||||
function ListCache(entries) {
|
||||
var index = -1,
|
||||
length = entries ? entries.length : 0;
|
||||
|
||||
this.clear();
|
||||
while (++index < length) {
|
||||
var entry = entries[index];
|
||||
this.set(entry[0], entry[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all key-value entries from the list cache.
|
||||
*
|
||||
* @private
|
||||
* @name clear
|
||||
* @memberOf ListCache
|
||||
*/
|
||||
function listCacheClear() {
|
||||
this.__data__ = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `key` and its value from the list cache.
|
||||
*
|
||||
* @private
|
||||
* @name delete
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the value to remove.
|
||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||
*/
|
||||
function listCacheDelete(key) {
|
||||
var data = this.__data__,
|
||||
index = assocIndexOf(data, key);
|
||||
|
||||
if (index < 0) {
|
||||
return false;
|
||||
}
|
||||
var lastIndex = data.length - 1;
|
||||
if (index == lastIndex) {
|
||||
data.pop();
|
||||
} else {
|
||||
splice.call(data, index, 1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the list cache value for `key`.
|
||||
*
|
||||
* @private
|
||||
* @name get
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the value to get.
|
||||
* @returns {*} Returns the entry value.
|
||||
*/
|
||||
function listCacheGet(key) {
|
||||
var data = this.__data__,
|
||||
index = assocIndexOf(data, key);
|
||||
|
||||
return index < 0 ? undefined : data[index][1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a list cache value for `key` exists.
|
||||
*
|
||||
* @private
|
||||
* @name has
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the entry to check.
|
||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||
*/
|
||||
function listCacheHas(key) {
|
||||
return assocIndexOf(this.__data__, key) > -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list cache `key` to `value`.
|
||||
*
|
||||
* @private
|
||||
* @name set
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the value to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns the list cache instance.
|
||||
*/
|
||||
function listCacheSet(key, value) {
|
||||
var data = this.__data__,
|
||||
index = assocIndexOf(data, key);
|
||||
|
||||
if (index < 0) {
|
||||
data.push([key, value]);
|
||||
} else {
|
||||
data[index][1] = value;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
// Add methods to `ListCache`.
|
||||
ListCache.prototype.clear = listCacheClear;
|
||||
ListCache.prototype['delete'] = listCacheDelete;
|
||||
ListCache.prototype.get = listCacheGet;
|
||||
ListCache.prototype.has = listCacheHas;
|
||||
ListCache.prototype.set = listCacheSet;
|
||||
|
||||
/**
|
||||
* Creates a map cache object to store key-value pairs.
|
||||
*
|
||||
* @private
|
||||
* @constructor
|
||||
* @param {Array} [entries] The key-value pairs to cache.
|
||||
*/
|
||||
function MapCache(entries) {
|
||||
var index = -1,
|
||||
length = entries ? entries.length : 0;
|
||||
|
||||
this.clear();
|
||||
while (++index < length) {
|
||||
var entry = entries[index];
|
||||
this.set(entry[0], entry[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all key-value entries from the map.
|
||||
*
|
||||
* @private
|
||||
* @name clear
|
||||
* @memberOf MapCache
|
||||
*/
|
||||
function mapCacheClear() {
|
||||
this.__data__ = {
|
||||
'hash': new Hash,
|
||||
'map': new (Map || ListCache),
|
||||
'string': new Hash
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `key` and its value from the map.
|
||||
*
|
||||
* @private
|
||||
* @name delete
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the value to remove.
|
||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||
*/
|
||||
function mapCacheDelete(key) {
|
||||
return getMapData(this, key)['delete'](key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the map value for `key`.
|
||||
*
|
||||
* @private
|
||||
* @name get
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the value to get.
|
||||
* @returns {*} Returns the entry value.
|
||||
*/
|
||||
function mapCacheGet(key) {
|
||||
return getMapData(this, key).get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a map value for `key` exists.
|
||||
*
|
||||
* @private
|
||||
* @name has
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the entry to check.
|
||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||
*/
|
||||
function mapCacheHas(key) {
|
||||
return getMapData(this, key).has(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the map `key` to `value`.
|
||||
*
|
||||
* @private
|
||||
* @name set
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the value to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns the map cache instance.
|
||||
*/
|
||||
function mapCacheSet(key, value) {
|
||||
getMapData(this, key).set(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
// Add methods to `MapCache`.
|
||||
MapCache.prototype.clear = mapCacheClear;
|
||||
MapCache.prototype['delete'] = mapCacheDelete;
|
||||
MapCache.prototype.get = mapCacheGet;
|
||||
MapCache.prototype.has = mapCacheHas;
|
||||
MapCache.prototype.set = mapCacheSet;
|
||||
|
||||
/**
|
||||
* Gets the index at which the `key` is found in `array` of key-value pairs.
|
||||
*
|
||||
* @private
|
||||
* @param {Array} array The array to inspect.
|
||||
* @param {*} key The key to search for.
|
||||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||||
*/
|
||||
function assocIndexOf(array, key) {
|
||||
var length = array.length;
|
||||
while (length--) {
|
||||
if (eq(array[length][0], key)) {
|
||||
return length;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The base implementation of `_.get` without support for default values.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} object The object to query.
|
||||
* @param {Array|string} path The path of the property to get.
|
||||
* @returns {*} Returns the resolved value.
|
||||
*/
|
||||
function baseGet(object, path) {
|
||||
path = isKey(path, object) ? [path] : castPath(path);
|
||||
|
||||
var index = 0,
|
||||
length = path.length;
|
||||
|
||||
while (object != null && index < length) {
|
||||
object = object[toKey(path[index++])];
|
||||
}
|
||||
return (index && index == length) ? object : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* The base implementation of `_.isNative` without bad shim checks.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a native function,
|
||||
* else `false`.
|
||||
*/
|
||||
function baseIsNative(value) {
|
||||
if (!isObject(value) || isMasked(value)) {
|
||||
return false;
|
||||
}
|
||||
var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
|
||||
return pattern.test(toSource(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* The base implementation of `_.toString` which doesn't convert nullish
|
||||
* values to empty strings.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to process.
|
||||
* @returns {string} Returns the string.
|
||||
*/
|
||||
function baseToString(value) {
|
||||
// Exit early for strings to avoid a performance hit in some environments.
|
||||
if (typeof value == 'string') {
|
||||
return value;
|
||||
}
|
||||
if (isSymbol(value)) {
|
||||
return symbolToString ? symbolToString.call(value) : '';
|
||||
}
|
||||
var result = (value + '');
|
||||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts `value` to a path array if it's not one.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to inspect.
|
||||
* @returns {Array} Returns the cast property path array.
|
||||
*/
|
||||
function castPath(value) {
|
||||
return isArray(value) ? value : stringToPath(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the data for `map`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} map The map to query.
|
||||
* @param {string} key The reference key.
|
||||
* @returns {*} Returns the map data.
|
||||
*/
|
||||
function getMapData(map, key) {
|
||||
var data = map.__data__;
|
||||
return isKeyable(key)
|
||||
? data[typeof key == 'string' ? 'string' : 'hash']
|
||||
: data.map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the native function at `key` of `object`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} object The object to query.
|
||||
* @param {string} key The key of the method to get.
|
||||
* @returns {*} Returns the function if it's native, else `undefined`.
|
||||
*/
|
||||
function getNative(object, key) {
|
||||
var value = getValue(object, key);
|
||||
return baseIsNative(value) ? value : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a property name and not a property path.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @param {Object} [object] The object to query keys on.
|
||||
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
|
||||
*/
|
||||
function isKey(value, object) {
|
||||
if (isArray(value)) {
|
||||
return false;
|
||||
}
|
||||
var type = typeof value;
|
||||
if (type == 'number' || type == 'symbol' || type == 'boolean' ||
|
||||
value == null || isSymbol(value)) {
|
||||
return true;
|
||||
}
|
||||
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
|
||||
(object != null && value in Object(object));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is suitable for use as unique object key.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
|
||||
*/
|
||||
function isKeyable(value) {
|
||||
var type = typeof value;
|
||||
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
|
||||
? (value !== '__proto__')
|
||||
: (value === null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `func` has its source masked.
|
||||
*
|
||||
* @private
|
||||
* @param {Function} func The function to check.
|
||||
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
|
||||
*/
|
||||
function isMasked(func) {
|
||||
return !!maskSrcKey && (maskSrcKey in func);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `string` to a property path array.
|
||||
*
|
||||
* @private
|
||||
* @param {string} string The string to convert.
|
||||
* @returns {Array} Returns the property path array.
|
||||
*/
|
||||
var stringToPath = memoize(function(string) {
|
||||
string = toString(string);
|
||||
|
||||
var result = [];
|
||||
if (reLeadingDot.test(string)) {
|
||||
result.push('');
|
||||
}
|
||||
string.replace(rePropName, function(match, number, quote, string) {
|
||||
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
||||
});
|
||||
return result;
|
||||
});
|
||||
|
||||
/**
|
||||
* Converts `value` to a string key if it's not a string or symbol.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to inspect.
|
||||
* @returns {string|symbol} Returns the key.
|
||||
*/
|
||||
function toKey(value) {
|
||||
if (typeof value == 'string' || isSymbol(value)) {
|
||||
return value;
|
||||
}
|
||||
var result = (value + '');
|
||||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `func` to its source code.
|
||||
*
|
||||
* @private
|
||||
* @param {Function} func The function to process.
|
||||
* @returns {string} Returns the source code.
|
||||
*/
|
||||
function toSource(func) {
|
||||
if (func != null) {
|
||||
try {
|
||||
return funcToString.call(func);
|
||||
} catch (e) {}
|
||||
try {
|
||||
return (func + '');
|
||||
} catch (e) {}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a function that memoizes the result of `func`. If `resolver` is
|
||||
* provided, it determines the cache key for storing the result based on the
|
||||
* arguments provided to the memoized function. By default, the first argument
|
||||
* provided to the memoized function is used as the map cache key. The `func`
|
||||
* is invoked with the `this` binding of the memoized function.
|
||||
*
|
||||
* **Note:** The cache is exposed as the `cache` property on the memoized
|
||||
* function. Its creation may be customized by replacing the `_.memoize.Cache`
|
||||
* constructor with one whose instances implement the
|
||||
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
|
||||
* method interface of `delete`, `get`, `has`, and `set`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Function
|
||||
* @param {Function} func The function to have its output memoized.
|
||||
* @param {Function} [resolver] The function to resolve the cache key.
|
||||
* @returns {Function} Returns the new memoized function.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': 1, 'b': 2 };
|
||||
* var other = { 'c': 3, 'd': 4 };
|
||||
*
|
||||
* var values = _.memoize(_.values);
|
||||
* values(object);
|
||||
* // => [1, 2]
|
||||
*
|
||||
* values(other);
|
||||
* // => [3, 4]
|
||||
*
|
||||
* object.a = 2;
|
||||
* values(object);
|
||||
* // => [1, 2]
|
||||
*
|
||||
* // Modify the result cache.
|
||||
* values.cache.set(object, ['a', 'b']);
|
||||
* values(object);
|
||||
* // => ['a', 'b']
|
||||
*
|
||||
* // Replace `_.memoize.Cache`.
|
||||
* _.memoize.Cache = WeakMap;
|
||||
*/
|
||||
function memoize(func, resolver) {
|
||||
if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
|
||||
throw new TypeError(FUNC_ERROR_TEXT);
|
||||
}
|
||||
var memoized = function() {
|
||||
var args = arguments,
|
||||
key = resolver ? resolver.apply(this, args) : args[0],
|
||||
cache = memoized.cache;
|
||||
|
||||
if (cache.has(key)) {
|
||||
return cache.get(key);
|
||||
}
|
||||
var result = func.apply(this, args);
|
||||
memoized.cache = cache.set(key, result);
|
||||
return result;
|
||||
};
|
||||
memoized.cache = new (memoize.Cache || MapCache);
|
||||
return memoized;
|
||||
}
|
||||
|
||||
// Assign cache to `_.memoize`.
|
||||
memoize.Cache = MapCache;
|
||||
|
||||
/**
|
||||
* Performs a
|
||||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||||
* comparison between two values to determine if they are equivalent.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to compare.
|
||||
* @param {*} other The other value to compare.
|
||||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': 1 };
|
||||
* var other = { 'a': 1 };
|
||||
*
|
||||
* _.eq(object, object);
|
||||
* // => true
|
||||
*
|
||||
* _.eq(object, other);
|
||||
* // => false
|
||||
*
|
||||
* _.eq('a', 'a');
|
||||
* // => true
|
||||
*
|
||||
* _.eq('a', Object('a'));
|
||||
* // => false
|
||||
*
|
||||
* _.eq(NaN, NaN);
|
||||
* // => true
|
||||
*/
|
||||
function eq(value, other) {
|
||||
return value === other || (value !== value && other !== other);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as an `Array` object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isArray([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isArray(document.body.children);
|
||||
* // => false
|
||||
*
|
||||
* _.isArray('abc');
|
||||
* // => false
|
||||
*
|
||||
* _.isArray(_.noop);
|
||||
* // => false
|
||||
*/
|
||||
var isArray = Array.isArray;
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `Function` object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isFunction(_);
|
||||
* // => true
|
||||
*
|
||||
* _.isFunction(/abc/);
|
||||
* // => false
|
||||
*/
|
||||
function isFunction(value) {
|
||||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||||
// in Safari 8-9 which returns 'object' for typed array and other constructors.
|
||||
var tag = isObject(value) ? objectToString.call(value) : '';
|
||||
return tag == funcTag || tag == genTag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is the
|
||||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isObject({});
|
||||
* // => true
|
||||
*
|
||||
* _.isObject([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isObject(_.noop);
|
||||
* // => true
|
||||
*
|
||||
* _.isObject(null);
|
||||
* // => false
|
||||
*/
|
||||
function isObject(value) {
|
||||
var type = typeof value;
|
||||
return !!value && (type == 'object' || type == 'function');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
||||
* and has a `typeof` result of "object".
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isObjectLike({});
|
||||
* // => true
|
||||
*
|
||||
* _.isObjectLike([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isObjectLike(_.noop);
|
||||
* // => false
|
||||
*
|
||||
* _.isObjectLike(null);
|
||||
* // => false
|
||||
*/
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == 'object';
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `Symbol` primitive or object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isSymbol(Symbol.iterator);
|
||||
* // => true
|
||||
*
|
||||
* _.isSymbol('abc');
|
||||
* // => false
|
||||
*/
|
||||
function isSymbol(value) {
|
||||
return typeof value == 'symbol' ||
|
||||
(isObjectLike(value) && objectToString.call(value) == symbolTag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `value` to a string. An empty string is returned for `null`
|
||||
* and `undefined` values. The sign of `-0` is preserved.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to process.
|
||||
* @returns {string} Returns the string.
|
||||
* @example
|
||||
*
|
||||
* _.toString(null);
|
||||
* // => ''
|
||||
*
|
||||
* _.toString(-0);
|
||||
* // => '-0'
|
||||
*
|
||||
* _.toString([1, 2, 3]);
|
||||
* // => '1,2,3'
|
||||
*/
|
||||
function toString(value) {
|
||||
return value == null ? '' : baseToString(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value at `path` of `object`. If the resolved value is
|
||||
* `undefined`, the `defaultValue` is returned in its place.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 3.7.0
|
||||
* @category Object
|
||||
* @param {Object} object The object to query.
|
||||
* @param {Array|string} path The path of the property to get.
|
||||
* @param {*} [defaultValue] The value returned for `undefined` resolved values.
|
||||
* @returns {*} Returns the resolved value.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
||||
*
|
||||
* _.get(object, 'a[0].b.c');
|
||||
* // => 3
|
||||
*
|
||||
* _.get(object, ['a', '0', 'b', 'c']);
|
||||
* // => 3
|
||||
*
|
||||
* _.get(object, 'a.b.c', 'default');
|
||||
* // => 'default'
|
||||
*/
|
||||
function get(object, path, defaultValue) {
|
||||
var result = object == null ? undefined : baseGet(object, path);
|
||||
return result === undefined ? defaultValue : result;
|
||||
}
|
||||
|
||||
module.exports = get;
|
69
src/node_modules/lodash.get/package.json
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"_from": "lodash.get@^4",
|
||||
"_id": "lodash.get@4.4.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
|
||||
"_location": "/lodash.get",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "lodash.get@^4",
|
||||
"name": "lodash.get",
|
||||
"escapedName": "lodash.get",
|
||||
"rawSpec": "^4",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^4"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/animated-tailwindcss"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
||||
"_shasum": "2d177f652fa31e939b4438d5341499dfa3825e99",
|
||||
"_spec": "lodash.get@^4",
|
||||
"_where": "/usr/src/app/node_modules/animated-tailwindcss",
|
||||
"author": {
|
||||
"name": "John-David Dalton",
|
||||
"email": "john.david.dalton@gmail.com",
|
||||
"url": "http://allyoucanleet.com/"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/lodash/lodash/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "John-David Dalton",
|
||||
"email": "john.david.dalton@gmail.com",
|
||||
"url": "http://allyoucanleet.com/"
|
||||
},
|
||||
{
|
||||
"name": "Blaine Bublitz",
|
||||
"email": "blaine.bublitz@gmail.com",
|
||||
"url": "https://github.com/phated"
|
||||
},
|
||||
{
|
||||
"name": "Mathias Bynens",
|
||||
"email": "mathias@qiwi.be",
|
||||
"url": "https://mathiasbynens.be/"
|
||||
}
|
||||
],
|
||||
"deprecated": false,
|
||||
"description": "The lodash method `_.get` exported as a module.",
|
||||
"homepage": "https://lodash.com/",
|
||||
"icon": "https://lodash.com/icon.svg",
|
||||
"keywords": [
|
||||
"lodash-modularized",
|
||||
"get"
|
||||
],
|
||||
"license": "MIT",
|
||||
"name": "lodash.get",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/lodash/lodash.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
|
||||
},
|
||||
"version": "4.4.2"
|
||||
}
|
47
src/node_modules/lodash.range/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||||
|
||||
Based on Underscore.js, copyright Jeremy Ashkenas,
|
||||
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
|
||||
|
||||
This software consists of voluntary contributions made by many
|
||||
individuals. For exact contribution history, see the revision history
|
||||
available at https://github.com/lodash/lodash
|
||||
|
||||
The following license applies to all parts of this software except as
|
||||
documented below:
|
||||
|
||||
====
|
||||
|
||||
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.
|
||||
|
||||
====
|
||||
|
||||
Copyright and related rights for sample code are waived via CC0. Sample
|
||||
code is defined as all source code displayed within the prose of the
|
||||
documentation.
|
||||
|
||||
CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
====
|
||||
|
||||
Files located in the node_modules and vendor directories are externally
|
||||
maintained libraries used by this software which have their own
|
||||
licenses; we recommend you read them, as their terms may differ from the
|
||||
terms above.
|
18
src/node_modules/lodash.range/README.md
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
# lodash.range v3.2.0
|
||||
|
||||
The [lodash](https://lodash.com/) method `_.range` exported as a [Node.js](https://nodejs.org/) module.
|
||||
|
||||
## Installation
|
||||
|
||||
Using npm:
|
||||
```bash
|
||||
$ {sudo -H} npm i -g npm
|
||||
$ npm i --save lodash.range
|
||||
```
|
||||
|
||||
In Node.js:
|
||||
```js
|
||||
var range = require('lodash.range');
|
||||
```
|
||||
|
||||
See the [documentation](https://lodash.com/docs#range) or [package source](https://github.com/lodash/lodash/blob/3.2.0-npm-packages/lodash.range) for more details.
|
462
src/node_modules/lodash.range/index.js
generated
vendored
Normal file
|
@ -0,0 +1,462 @@
|
|||
/**
|
||||
* lodash (Custom Build) <https://lodash.com/>
|
||||
* Build: `lodash modularize exports="npm" -o ./`
|
||||
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||||
* Released under MIT license <https://lodash.com/license>
|
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
*/
|
||||
|
||||
/** Used as references for various `Number` constants. */
|
||||
var INFINITY = 1 / 0,
|
||||
MAX_SAFE_INTEGER = 9007199254740991,
|
||||
MAX_INTEGER = 1.7976931348623157e+308,
|
||||
NAN = 0 / 0;
|
||||
|
||||
/** `Object#toString` result references. */
|
||||
var funcTag = '[object Function]',
|
||||
genTag = '[object GeneratorFunction]',
|
||||
symbolTag = '[object Symbol]';
|
||||
|
||||
/** Used to match leading and trailing whitespace. */
|
||||
var reTrim = /^\s+|\s+$/g;
|
||||
|
||||
/** Used to detect bad signed hexadecimal string values. */
|
||||
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
|
||||
|
||||
/** Used to detect binary string values. */
|
||||
var reIsBinary = /^0b[01]+$/i;
|
||||
|
||||
/** Used to detect octal string values. */
|
||||
var reIsOctal = /^0o[0-7]+$/i;
|
||||
|
||||
/** Used to detect unsigned integer values. */
|
||||
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
||||
|
||||
/** Built-in method references without a dependency on `root`. */
|
||||
var freeParseInt = parseInt;
|
||||
|
||||
/** Used for built-in method references. */
|
||||
var objectProto = Object.prototype;
|
||||
|
||||
/**
|
||||
* Used to resolve the
|
||||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||||
* of values.
|
||||
*/
|
||||
var objectToString = objectProto.toString;
|
||||
|
||||
/* Built-in method references for those with the same name as other `lodash` methods. */
|
||||
var nativeCeil = Math.ceil,
|
||||
nativeMax = Math.max;
|
||||
|
||||
/**
|
||||
* The base implementation of `_.range` and `_.rangeRight` which doesn't
|
||||
* coerce arguments.
|
||||
*
|
||||
* @private
|
||||
* @param {number} start The start of the range.
|
||||
* @param {number} end The end of the range.
|
||||
* @param {number} step The value to increment or decrement by.
|
||||
* @param {boolean} [fromRight] Specify iterating from right to left.
|
||||
* @returns {Array} Returns the range of numbers.
|
||||
*/
|
||||
function baseRange(start, end, step, fromRight) {
|
||||
var index = -1,
|
||||
length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
|
||||
result = Array(length);
|
||||
|
||||
while (length--) {
|
||||
result[fromRight ? length : ++index] = start;
|
||||
start += step;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a `_.range` or `_.rangeRight` function.
|
||||
*
|
||||
* @private
|
||||
* @param {boolean} [fromRight] Specify iterating from right to left.
|
||||
* @returns {Function} Returns the new range function.
|
||||
*/
|
||||
function createRange(fromRight) {
|
||||
return function(start, end, step) {
|
||||
if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
|
||||
end = step = undefined;
|
||||
}
|
||||
// Ensure the sign of `-0` is preserved.
|
||||
start = toFinite(start);
|
||||
if (end === undefined) {
|
||||
end = start;
|
||||
start = 0;
|
||||
} else {
|
||||
end = toFinite(end);
|
||||
}
|
||||
step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
|
||||
return baseRange(start, end, step, fromRight);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a valid array-like index.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
|
||||
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
|
||||
*/
|
||||
function isIndex(value, length) {
|
||||
length = length == null ? MAX_SAFE_INTEGER : length;
|
||||
return !!length &&
|
||||
(typeof value == 'number' || reIsUint.test(value)) &&
|
||||
(value > -1 && value % 1 == 0 && value < length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given arguments are from an iteratee call.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The potential iteratee value argument.
|
||||
* @param {*} index The potential iteratee index or key argument.
|
||||
* @param {*} object The potential iteratee object argument.
|
||||
* @returns {boolean} Returns `true` if the arguments are from an iteratee call,
|
||||
* else `false`.
|
||||
*/
|
||||
function isIterateeCall(value, index, object) {
|
||||
if (!isObject(object)) {
|
||||
return false;
|
||||
}
|
||||
var type = typeof index;
|
||||
if (type == 'number'
|
||||
? (isArrayLike(object) && isIndex(index, object.length))
|
||||
: (type == 'string' && index in object)
|
||||
) {
|
||||
return eq(object[index], value);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a
|
||||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||||
* comparison between two values to determine if they are equivalent.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to compare.
|
||||
* @param {*} other The other value to compare.
|
||||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': 1 };
|
||||
* var other = { 'a': 1 };
|
||||
*
|
||||
* _.eq(object, object);
|
||||
* // => true
|
||||
*
|
||||
* _.eq(object, other);
|
||||
* // => false
|
||||
*
|
||||
* _.eq('a', 'a');
|
||||
* // => true
|
||||
*
|
||||
* _.eq('a', Object('a'));
|
||||
* // => false
|
||||
*
|
||||
* _.eq(NaN, NaN);
|
||||
* // => true
|
||||
*/
|
||||
function eq(value, other) {
|
||||
return value === other || (value !== value && other !== other);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is array-like. A value is considered array-like if it's
|
||||
* not a function and has a `value.length` that's an integer greater than or
|
||||
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isArrayLike([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isArrayLike(document.body.children);
|
||||
* // => true
|
||||
*
|
||||
* _.isArrayLike('abc');
|
||||
* // => true
|
||||
*
|
||||
* _.isArrayLike(_.noop);
|
||||
* // => false
|
||||
*/
|
||||
function isArrayLike(value) {
|
||||
return value != null && isLength(value.length) && !isFunction(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `Function` object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isFunction(_);
|
||||
* // => true
|
||||
*
|
||||
* _.isFunction(/abc/);
|
||||
* // => false
|
||||
*/
|
||||
function isFunction(value) {
|
||||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||||
// in Safari 8-9 which returns 'object' for typed array and other constructors.
|
||||
var tag = isObject(value) ? objectToString.call(value) : '';
|
||||
return tag == funcTag || tag == genTag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a valid array-like length.
|
||||
*
|
||||
* **Note:** This method is loosely based on
|
||||
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isLength(3);
|
||||
* // => true
|
||||
*
|
||||
* _.isLength(Number.MIN_VALUE);
|
||||
* // => false
|
||||
*
|
||||
* _.isLength(Infinity);
|
||||
* // => false
|
||||
*
|
||||
* _.isLength('3');
|
||||
* // => false
|
||||
*/
|
||||
function isLength(value) {
|
||||
return typeof value == 'number' &&
|
||||
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is the
|
||||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isObject({});
|
||||
* // => true
|
||||
*
|
||||
* _.isObject([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isObject(_.noop);
|
||||
* // => true
|
||||
*
|
||||
* _.isObject(null);
|
||||
* // => false
|
||||
*/
|
||||
function isObject(value) {
|
||||
var type = typeof value;
|
||||
return !!value && (type == 'object' || type == 'function');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
||||
* and has a `typeof` result of "object".
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isObjectLike({});
|
||||
* // => true
|
||||
*
|
||||
* _.isObjectLike([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isObjectLike(_.noop);
|
||||
* // => false
|
||||
*
|
||||
* _.isObjectLike(null);
|
||||
* // => false
|
||||
*/
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == 'object';
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `Symbol` primitive or object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isSymbol(Symbol.iterator);
|
||||
* // => true
|
||||
*
|
||||
* _.isSymbol('abc');
|
||||
* // => false
|
||||
*/
|
||||
function isSymbol(value) {
|
||||
return typeof value == 'symbol' ||
|
||||
(isObjectLike(value) && objectToString.call(value) == symbolTag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `value` to a finite number.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.12.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to convert.
|
||||
* @returns {number} Returns the converted number.
|
||||
* @example
|
||||
*
|
||||
* _.toFinite(3.2);
|
||||
* // => 3.2
|
||||
*
|
||||
* _.toFinite(Number.MIN_VALUE);
|
||||
* // => 5e-324
|
||||
*
|
||||
* _.toFinite(Infinity);
|
||||
* // => 1.7976931348623157e+308
|
||||
*
|
||||
* _.toFinite('3.2');
|
||||
* // => 3.2
|
||||
*/
|
||||
function toFinite(value) {
|
||||
if (!value) {
|
||||
return value === 0 ? value : 0;
|
||||
}
|
||||
value = toNumber(value);
|
||||
if (value === INFINITY || value === -INFINITY) {
|
||||
var sign = (value < 0 ? -1 : 1);
|
||||
return sign * MAX_INTEGER;
|
||||
}
|
||||
return value === value ? value : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `value` to a number.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to process.
|
||||
* @returns {number} Returns the number.
|
||||
* @example
|
||||
*
|
||||
* _.toNumber(3.2);
|
||||
* // => 3.2
|
||||
*
|
||||
* _.toNumber(Number.MIN_VALUE);
|
||||
* // => 5e-324
|
||||
*
|
||||
* _.toNumber(Infinity);
|
||||
* // => Infinity
|
||||
*
|
||||
* _.toNumber('3.2');
|
||||
* // => 3.2
|
||||
*/
|
||||
function toNumber(value) {
|
||||
if (typeof value == 'number') {
|
||||
return value;
|
||||
}
|
||||
if (isSymbol(value)) {
|
||||
return NAN;
|
||||
}
|
||||
if (isObject(value)) {
|
||||
var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
|
||||
value = isObject(other) ? (other + '') : other;
|
||||
}
|
||||
if (typeof value != 'string') {
|
||||
return value === 0 ? value : +value;
|
||||
}
|
||||
value = value.replace(reTrim, '');
|
||||
var isBinary = reIsBinary.test(value);
|
||||
return (isBinary || reIsOctal.test(value))
|
||||
? freeParseInt(value.slice(2), isBinary ? 2 : 8)
|
||||
: (reIsBadHex.test(value) ? NAN : +value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array of numbers (positive and/or negative) progressing from
|
||||
* `start` up to, but not including, `end`. A step of `-1` is used if a negative
|
||||
* `start` is specified without an `end` or `step`. If `end` is not specified,
|
||||
* it's set to `start` with `start` then set to `0`.
|
||||
*
|
||||
* **Note:** JavaScript follows the IEEE-754 standard for resolving
|
||||
* floating-point values which can produce unexpected results.
|
||||
*
|
||||
* @static
|
||||
* @since 0.1.0
|
||||
* @memberOf _
|
||||
* @category Util
|
||||
* @param {number} [start=0] The start of the range.
|
||||
* @param {number} end The end of the range.
|
||||
* @param {number} [step=1] The value to increment or decrement by.
|
||||
* @returns {Array} Returns the range of numbers.
|
||||
* @see _.inRange, _.rangeRight
|
||||
* @example
|
||||
*
|
||||
* _.range(4);
|
||||
* // => [0, 1, 2, 3]
|
||||
*
|
||||
* _.range(-4);
|
||||
* // => [0, -1, -2, -3]
|
||||
*
|
||||
* _.range(1, 5);
|
||||
* // => [1, 2, 3, 4]
|
||||
*
|
||||
* _.range(0, 20, 5);
|
||||
* // => [0, 5, 10, 15]
|
||||
*
|
||||
* _.range(0, -4, -1);
|
||||
* // => [0, -1, -2, -3]
|
||||
*
|
||||
* _.range(1, 4, 0);
|
||||
* // => [1, 1, 1]
|
||||
*
|
||||
* _.range(0);
|
||||
* // => []
|
||||
*/
|
||||
var range = createRange();
|
||||
|
||||
module.exports = range;
|
69
src/node_modules/lodash.range/package.json
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"_from": "lodash.range@^3",
|
||||
"_id": "lodash.range@3.2.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=",
|
||||
"_location": "/lodash.range",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "lodash.range@^3",
|
||||
"name": "lodash.range",
|
||||
"escapedName": "lodash.range",
|
||||
"rawSpec": "^3",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^3"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/animated-tailwindcss"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz",
|
||||
"_shasum": "f461e588f66683f7eadeade513e38a69a565a15d",
|
||||
"_spec": "lodash.range@^3",
|
||||
"_where": "/usr/src/app/node_modules/animated-tailwindcss",
|
||||
"author": {
|
||||
"name": "John-David Dalton",
|
||||
"email": "john.david.dalton@gmail.com",
|
||||
"url": "http://allyoucanleet.com/"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/lodash/lodash/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "John-David Dalton",
|
||||
"email": "john.david.dalton@gmail.com",
|
||||
"url": "http://allyoucanleet.com/"
|
||||
},
|
||||
{
|
||||
"name": "Blaine Bublitz",
|
||||
"email": "blaine.bublitz@gmail.com",
|
||||
"url": "https://github.com/phated"
|
||||
},
|
||||
{
|
||||
"name": "Mathias Bynens",
|
||||
"email": "mathias@qiwi.be",
|
||||
"url": "https://mathiasbynens.be/"
|
||||
}
|
||||
],
|
||||
"deprecated": false,
|
||||
"description": "The lodash method `_.range` exported as a module.",
|
||||
"homepage": "https://lodash.com/",
|
||||
"icon": "https://lodash.com/icon.svg",
|
||||
"keywords": [
|
||||
"lodash-modularized",
|
||||
"range"
|
||||
],
|
||||
"license": "MIT",
|
||||
"name": "lodash.range",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/lodash/lodash.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
|
||||
},
|
||||
"version": "3.2.0"
|
||||
}
|
47
src/node_modules/lodash.set/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||||
|
||||
Based on Underscore.js, copyright Jeremy Ashkenas,
|
||||
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
|
||||
|
||||
This software consists of voluntary contributions made by many
|
||||
individuals. For exact contribution history, see the revision history
|
||||
available at https://github.com/lodash/lodash
|
||||
|
||||
The following license applies to all parts of this software except as
|
||||
documented below:
|
||||
|
||||
====
|
||||
|
||||
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.
|
||||
|
||||
====
|
||||
|
||||
Copyright and related rights for sample code are waived via CC0. Sample
|
||||
code is defined as all source code displayed within the prose of the
|
||||
documentation.
|
||||
|
||||
CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
====
|
||||
|
||||
Files located in the node_modules and vendor directories are externally
|
||||
maintained libraries used by this software which have their own
|
||||
licenses; we recommend you read them, as their terms may differ from the
|
||||
terms above.
|
18
src/node_modules/lodash.set/README.md
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
# lodash.set v4.3.2
|
||||
|
||||
The [lodash](https://lodash.com/) method `_.set` exported as a [Node.js](https://nodejs.org/) module.
|
||||
|
||||
## Installation
|
||||
|
||||
Using npm:
|
||||
```bash
|
||||
$ {sudo -H} npm i -g npm
|
||||
$ npm i --save lodash.set
|
||||
```
|
||||
|
||||
In Node.js:
|
||||
```js
|
||||
var set = require('lodash.set');
|
||||
```
|
||||
|
||||
See the [documentation](https://lodash.com/docs#set) or [package source](https://github.com/lodash/lodash/blob/4.3.2-npm-packages/lodash.set) for more details.
|
990
src/node_modules/lodash.set/index.js
generated
vendored
Normal file
|
@ -0,0 +1,990 @@
|
|||
/**
|
||||
* lodash (Custom Build) <https://lodash.com/>
|
||||
* Build: `lodash modularize exports="npm" -o ./`
|
||||
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
|
||||
* Released under MIT license <https://lodash.com/license>
|
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
*/
|
||||
|
||||
/** Used as the `TypeError` message for "Functions" methods. */
|
||||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||||
|
||||
/** Used to stand-in for `undefined` hash values. */
|
||||
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
||||
|
||||
/** Used as references for various `Number` constants. */
|
||||
var INFINITY = 1 / 0,
|
||||
MAX_SAFE_INTEGER = 9007199254740991;
|
||||
|
||||
/** `Object#toString` result references. */
|
||||
var funcTag = '[object Function]',
|
||||
genTag = '[object GeneratorFunction]',
|
||||
symbolTag = '[object Symbol]';
|
||||
|
||||
/** Used to match property names within property paths. */
|
||||
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
|
||||
reIsPlainProp = /^\w*$/,
|
||||
reLeadingDot = /^\./,
|
||||
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
||||
|
||||
/**
|
||||
* Used to match `RegExp`
|
||||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
||||
*/
|
||||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||||
|
||||
/** Used to match backslashes in property paths. */
|
||||
var reEscapeChar = /\\(\\)?/g;
|
||||
|
||||
/** Used to detect host constructors (Safari). */
|
||||
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||||
|
||||
/** Used to detect unsigned integer values. */
|
||||
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
||||
|
||||
/** Detect free variable `global` from Node.js. */
|
||||
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
||||
|
||||
/** Detect free variable `self`. */
|
||||
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
||||
|
||||
/** Used as a reference to the global object. */
|
||||
var root = freeGlobal || freeSelf || Function('return this')();
|
||||
|
||||
/**
|
||||
* Gets the value at `key` of `object`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} [object] The object to query.
|
||||
* @param {string} key The key of the property to get.
|
||||
* @returns {*} Returns the property value.
|
||||
*/
|
||||
function getValue(object, key) {
|
||||
return object == null ? undefined : object[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a host object in IE < 9.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
|
||||
*/
|
||||
function isHostObject(value) {
|
||||
// Many host objects are `Object` objects that can coerce to strings
|
||||
// despite having improperly defined `toString` methods.
|
||||
var result = false;
|
||||
if (value != null && typeof value.toString != 'function') {
|
||||
try {
|
||||
result = !!(value + '');
|
||||
} catch (e) {}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Used for built-in method references. */
|
||||
var arrayProto = Array.prototype,
|
||||
funcProto = Function.prototype,
|
||||
objectProto = Object.prototype;
|
||||
|
||||
/** Used to detect overreaching core-js shims. */
|
||||
var coreJsData = root['__core-js_shared__'];
|
||||
|
||||
/** Used to detect methods masquerading as native. */
|
||||
var maskSrcKey = (function() {
|
||||
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
|
||||
return uid ? ('Symbol(src)_1.' + uid) : '';
|
||||
}());
|
||||
|
||||
/** Used to resolve the decompiled source of functions. */
|
||||
var funcToString = funcProto.toString;
|
||||
|
||||
/** Used to check objects for own properties. */
|
||||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
|
||||
/**
|
||||
* Used to resolve the
|
||||
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||||
* of values.
|
||||
*/
|
||||
var objectToString = objectProto.toString;
|
||||
|
||||
/** Used to detect if a method is native. */
|
||||
var reIsNative = RegExp('^' +
|
||||
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
|
||||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
|
||||
);
|
||||
|
||||
/** Built-in value references. */
|
||||
var Symbol = root.Symbol,
|
||||
splice = arrayProto.splice;
|
||||
|
||||
/* Built-in method references that are verified to be native. */
|
||||
var Map = getNative(root, 'Map'),
|
||||
nativeCreate = getNative(Object, 'create');
|
||||
|
||||
/** Used to convert symbols to primitives and strings. */
|
||||
var symbolProto = Symbol ? Symbol.prototype : undefined,
|
||||
symbolToString = symbolProto ? symbolProto.toString : undefined;
|
||||
|
||||
/**
|
||||
* Creates a hash object.
|
||||
*
|
||||
* @private
|
||||
* @constructor
|
||||
* @param {Array} [entries] The key-value pairs to cache.
|
||||
*/
|
||||
function Hash(entries) {
|
||||
var index = -1,
|
||||
length = entries ? entries.length : 0;
|
||||
|
||||
this.clear();
|
||||
while (++index < length) {
|
||||
var entry = entries[index];
|
||||
this.set(entry[0], entry[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all key-value entries from the hash.
|
||||
*
|
||||
* @private
|
||||
* @name clear
|
||||
* @memberOf Hash
|
||||
*/
|
||||
function hashClear() {
|
||||
this.__data__ = nativeCreate ? nativeCreate(null) : {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `key` and its value from the hash.
|
||||
*
|
||||
* @private
|
||||
* @name delete
|
||||
* @memberOf Hash
|
||||
* @param {Object} hash The hash to modify.
|
||||
* @param {string} key The key of the value to remove.
|
||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||
*/
|
||||
function hashDelete(key) {
|
||||
return this.has(key) && delete this.__data__[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the hash value for `key`.
|
||||
*
|
||||
* @private
|
||||
* @name get
|
||||
* @memberOf Hash
|
||||
* @param {string} key The key of the value to get.
|
||||
* @returns {*} Returns the entry value.
|
||||
*/
|
||||
function hashGet(key) {
|
||||
var data = this.__data__;
|
||||
if (nativeCreate) {
|
||||
var result = data[key];
|
||||
return result === HASH_UNDEFINED ? undefined : result;
|
||||
}
|
||||
return hasOwnProperty.call(data, key) ? data[key] : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a hash value for `key` exists.
|
||||
*
|
||||
* @private
|
||||
* @name has
|
||||
* @memberOf Hash
|
||||
* @param {string} key The key of the entry to check.
|
||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||
*/
|
||||
function hashHas(key) {
|
||||
var data = this.__data__;
|
||||
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the hash `key` to `value`.
|
||||
*
|
||||
* @private
|
||||
* @name set
|
||||
* @memberOf Hash
|
||||
* @param {string} key The key of the value to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns the hash instance.
|
||||
*/
|
||||
function hashSet(key, value) {
|
||||
var data = this.__data__;
|
||||
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
|
||||
return this;
|
||||
}
|
||||
|
||||
// Add methods to `Hash`.
|
||||
Hash.prototype.clear = hashClear;
|
||||
Hash.prototype['delete'] = hashDelete;
|
||||
Hash.prototype.get = hashGet;
|
||||
Hash.prototype.has = hashHas;
|
||||
Hash.prototype.set = hashSet;
|
||||
|
||||
/**
|
||||
* Creates an list cache object.
|
||||
*
|
||||
* @private
|
||||
* @constructor
|
||||
* @param {Array} [entries] The key-value pairs to cache.
|
||||
*/
|
||||
function ListCache(entries) {
|
||||
var index = -1,
|
||||
length = entries ? entries.length : 0;
|
||||
|
||||
this.clear();
|
||||
while (++index < length) {
|
||||
var entry = entries[index];
|
||||
this.set(entry[0], entry[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all key-value entries from the list cache.
|
||||
*
|
||||
* @private
|
||||
* @name clear
|
||||
* @memberOf ListCache
|
||||
*/
|
||||
function listCacheClear() {
|
||||
this.__data__ = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `key` and its value from the list cache.
|
||||
*
|
||||
* @private
|
||||
* @name delete
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the value to remove.
|
||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||
*/
|
||||
function listCacheDelete(key) {
|
||||
var data = this.__data__,
|
||||
index = assocIndexOf(data, key);
|
||||
|
||||
if (index < 0) {
|
||||
return false;
|
||||
}
|
||||
var lastIndex = data.length - 1;
|
||||
if (index == lastIndex) {
|
||||
data.pop();
|
||||
} else {
|
||||
splice.call(data, index, 1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the list cache value for `key`.
|
||||
*
|
||||
* @private
|
||||
* @name get
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the value to get.
|
||||
* @returns {*} Returns the entry value.
|
||||
*/
|
||||
function listCacheGet(key) {
|
||||
var data = this.__data__,
|
||||
index = assocIndexOf(data, key);
|
||||
|
||||
return index < 0 ? undefined : data[index][1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a list cache value for `key` exists.
|
||||
*
|
||||
* @private
|
||||
* @name has
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the entry to check.
|
||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||
*/
|
||||
function listCacheHas(key) {
|
||||
return assocIndexOf(this.__data__, key) > -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list cache `key` to `value`.
|
||||
*
|
||||
* @private
|
||||
* @name set
|
||||
* @memberOf ListCache
|
||||
* @param {string} key The key of the value to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns the list cache instance.
|
||||
*/
|
||||
function listCacheSet(key, value) {
|
||||
var data = this.__data__,
|
||||
index = assocIndexOf(data, key);
|
||||
|
||||
if (index < 0) {
|
||||
data.push([key, value]);
|
||||
} else {
|
||||
data[index][1] = value;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
// Add methods to `ListCache`.
|
||||
ListCache.prototype.clear = listCacheClear;
|
||||
ListCache.prototype['delete'] = listCacheDelete;
|
||||
ListCache.prototype.get = listCacheGet;
|
||||
ListCache.prototype.has = listCacheHas;
|
||||
ListCache.prototype.set = listCacheSet;
|
||||
|
||||
/**
|
||||
* Creates a map cache object to store key-value pairs.
|
||||
*
|
||||
* @private
|
||||
* @constructor
|
||||
* @param {Array} [entries] The key-value pairs to cache.
|
||||
*/
|
||||
function MapCache(entries) {
|
||||
var index = -1,
|
||||
length = entries ? entries.length : 0;
|
||||
|
||||
this.clear();
|
||||
while (++index < length) {
|
||||
var entry = entries[index];
|
||||
this.set(entry[0], entry[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all key-value entries from the map.
|
||||
*
|
||||
* @private
|
||||
* @name clear
|
||||
* @memberOf MapCache
|
||||
*/
|
||||
function mapCacheClear() {
|
||||
this.__data__ = {
|
||||
'hash': new Hash,
|
||||
'map': new (Map || ListCache),
|
||||
'string': new Hash
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `key` and its value from the map.
|
||||
*
|
||||
* @private
|
||||
* @name delete
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the value to remove.
|
||||
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
|
||||
*/
|
||||
function mapCacheDelete(key) {
|
||||
return getMapData(this, key)['delete'](key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the map value for `key`.
|
||||
*
|
||||
* @private
|
||||
* @name get
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the value to get.
|
||||
* @returns {*} Returns the entry value.
|
||||
*/
|
||||
function mapCacheGet(key) {
|
||||
return getMapData(this, key).get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a map value for `key` exists.
|
||||
*
|
||||
* @private
|
||||
* @name has
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the entry to check.
|
||||
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
||||
*/
|
||||
function mapCacheHas(key) {
|
||||
return getMapData(this, key).has(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the map `key` to `value`.
|
||||
*
|
||||
* @private
|
||||
* @name set
|
||||
* @memberOf MapCache
|
||||
* @param {string} key The key of the value to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns the map cache instance.
|
||||
*/
|
||||
function mapCacheSet(key, value) {
|
||||
getMapData(this, key).set(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
// Add methods to `MapCache`.
|
||||
MapCache.prototype.clear = mapCacheClear;
|
||||
MapCache.prototype['delete'] = mapCacheDelete;
|
||||
MapCache.prototype.get = mapCacheGet;
|
||||
MapCache.prototype.has = mapCacheHas;
|
||||
MapCache.prototype.set = mapCacheSet;
|
||||
|
||||
/**
|
||||
* Assigns `value` to `key` of `object` if the existing value is not equivalent
|
||||
* using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||||
* for equality comparisons.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} object The object to modify.
|
||||
* @param {string} key The key of the property to assign.
|
||||
* @param {*} value The value to assign.
|
||||
*/
|
||||
function assignValue(object, key, value) {
|
||||
var objValue = object[key];
|
||||
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
|
||||
(value === undefined && !(key in object))) {
|
||||
object[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the index at which the `key` is found in `array` of key-value pairs.
|
||||
*
|
||||
* @private
|
||||
* @param {Array} array The array to inspect.
|
||||
* @param {*} key The key to search for.
|
||||
* @returns {number} Returns the index of the matched value, else `-1`.
|
||||
*/
|
||||
function assocIndexOf(array, key) {
|
||||
var length = array.length;
|
||||
while (length--) {
|
||||
if (eq(array[length][0], key)) {
|
||||
return length;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The base implementation of `_.isNative` without bad shim checks.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a native function,
|
||||
* else `false`.
|
||||
*/
|
||||
function baseIsNative(value) {
|
||||
if (!isObject(value) || isMasked(value)) {
|
||||
return false;
|
||||
}
|
||||
var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
|
||||
return pattern.test(toSource(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* The base implementation of `_.set`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} object The object to modify.
|
||||
* @param {Array|string} path The path of the property to set.
|
||||
* @param {*} value The value to set.
|
||||
* @param {Function} [customizer] The function to customize path creation.
|
||||
* @returns {Object} Returns `object`.
|
||||
*/
|
||||
function baseSet(object, path, value, customizer) {
|
||||
if (!isObject(object)) {
|
||||
return object;
|
||||
}
|
||||
path = isKey(path, object) ? [path] : castPath(path);
|
||||
|
||||
var index = -1,
|
||||
length = path.length,
|
||||
lastIndex = length - 1,
|
||||
nested = object;
|
||||
|
||||
while (nested != null && ++index < length) {
|
||||
var key = toKey(path[index]),
|
||||
newValue = value;
|
||||
|
||||
if (index != lastIndex) {
|
||||
var objValue = nested[key];
|
||||
newValue = customizer ? customizer(objValue, key, nested) : undefined;
|
||||
if (newValue === undefined) {
|
||||
newValue = isObject(objValue)
|
||||
? objValue
|
||||
: (isIndex(path[index + 1]) ? [] : {});
|
||||
}
|
||||
}
|
||||
assignValue(nested, key, newValue);
|
||||
nested = nested[key];
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* The base implementation of `_.toString` which doesn't convert nullish
|
||||
* values to empty strings.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to process.
|
||||
* @returns {string} Returns the string.
|
||||
*/
|
||||
function baseToString(value) {
|
||||
// Exit early for strings to avoid a performance hit in some environments.
|
||||
if (typeof value == 'string') {
|
||||
return value;
|
||||
}
|
||||
if (isSymbol(value)) {
|
||||
return symbolToString ? symbolToString.call(value) : '';
|
||||
}
|
||||
var result = (value + '');
|
||||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts `value` to a path array if it's not one.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to inspect.
|
||||
* @returns {Array} Returns the cast property path array.
|
||||
*/
|
||||
function castPath(value) {
|
||||
return isArray(value) ? value : stringToPath(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the data for `map`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} map The map to query.
|
||||
* @param {string} key The reference key.
|
||||
* @returns {*} Returns the map data.
|
||||
*/
|
||||
function getMapData(map, key) {
|
||||
var data = map.__data__;
|
||||
return isKeyable(key)
|
||||
? data[typeof key == 'string' ? 'string' : 'hash']
|
||||
: data.map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the native function at `key` of `object`.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} object The object to query.
|
||||
* @param {string} key The key of the method to get.
|
||||
* @returns {*} Returns the function if it's native, else `undefined`.
|
||||
*/
|
||||
function getNative(object, key) {
|
||||
var value = getValue(object, key);
|
||||
return baseIsNative(value) ? value : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a valid array-like index.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
|
||||
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
|
||||
*/
|
||||
function isIndex(value, length) {
|
||||
length = length == null ? MAX_SAFE_INTEGER : length;
|
||||
return !!length &&
|
||||
(typeof value == 'number' || reIsUint.test(value)) &&
|
||||
(value > -1 && value % 1 == 0 && value < length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is a property name and not a property path.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @param {Object} [object] The object to query keys on.
|
||||
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
|
||||
*/
|
||||
function isKey(value, object) {
|
||||
if (isArray(value)) {
|
||||
return false;
|
||||
}
|
||||
var type = typeof value;
|
||||
if (type == 'number' || type == 'symbol' || type == 'boolean' ||
|
||||
value == null || isSymbol(value)) {
|
||||
return true;
|
||||
}
|
||||
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
|
||||
(object != null && value in Object(object));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is suitable for use as unique object key.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
|
||||
*/
|
||||
function isKeyable(value) {
|
||||
var type = typeof value;
|
||||
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
|
||||
? (value !== '__proto__')
|
||||
: (value === null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `func` has its source masked.
|
||||
*
|
||||
* @private
|
||||
* @param {Function} func The function to check.
|
||||
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
|
||||
*/
|
||||
function isMasked(func) {
|
||||
return !!maskSrcKey && (maskSrcKey in func);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `string` to a property path array.
|
||||
*
|
||||
* @private
|
||||
* @param {string} string The string to convert.
|
||||
* @returns {Array} Returns the property path array.
|
||||
*/
|
||||
var stringToPath = memoize(function(string) {
|
||||
string = toString(string);
|
||||
|
||||
var result = [];
|
||||
if (reLeadingDot.test(string)) {
|
||||
result.push('');
|
||||
}
|
||||
string.replace(rePropName, function(match, number, quote, string) {
|
||||
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
||||
});
|
||||
return result;
|
||||
});
|
||||
|
||||
/**
|
||||
* Converts `value` to a string key if it's not a string or symbol.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to inspect.
|
||||
* @returns {string|symbol} Returns the key.
|
||||
*/
|
||||
function toKey(value) {
|
||||
if (typeof value == 'string' || isSymbol(value)) {
|
||||
return value;
|
||||
}
|
||||
var result = (value + '');
|
||||
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `func` to its source code.
|
||||
*
|
||||
* @private
|
||||
* @param {Function} func The function to process.
|
||||
* @returns {string} Returns the source code.
|
||||
*/
|
||||
function toSource(func) {
|
||||
if (func != null) {
|
||||
try {
|
||||
return funcToString.call(func);
|
||||
} catch (e) {}
|
||||
try {
|
||||
return (func + '');
|
||||
} catch (e) {}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a function that memoizes the result of `func`. If `resolver` is
|
||||
* provided, it determines the cache key for storing the result based on the
|
||||
* arguments provided to the memoized function. By default, the first argument
|
||||
* provided to the memoized function is used as the map cache key. The `func`
|
||||
* is invoked with the `this` binding of the memoized function.
|
||||
*
|
||||
* **Note:** The cache is exposed as the `cache` property on the memoized
|
||||
* function. Its creation may be customized by replacing the `_.memoize.Cache`
|
||||
* constructor with one whose instances implement the
|
||||
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
|
||||
* method interface of `delete`, `get`, `has`, and `set`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Function
|
||||
* @param {Function} func The function to have its output memoized.
|
||||
* @param {Function} [resolver] The function to resolve the cache key.
|
||||
* @returns {Function} Returns the new memoized function.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': 1, 'b': 2 };
|
||||
* var other = { 'c': 3, 'd': 4 };
|
||||
*
|
||||
* var values = _.memoize(_.values);
|
||||
* values(object);
|
||||
* // => [1, 2]
|
||||
*
|
||||
* values(other);
|
||||
* // => [3, 4]
|
||||
*
|
||||
* object.a = 2;
|
||||
* values(object);
|
||||
* // => [1, 2]
|
||||
*
|
||||
* // Modify the result cache.
|
||||
* values.cache.set(object, ['a', 'b']);
|
||||
* values(object);
|
||||
* // => ['a', 'b']
|
||||
*
|
||||
* // Replace `_.memoize.Cache`.
|
||||
* _.memoize.Cache = WeakMap;
|
||||
*/
|
||||
function memoize(func, resolver) {
|
||||
if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
|
||||
throw new TypeError(FUNC_ERROR_TEXT);
|
||||
}
|
||||
var memoized = function() {
|
||||
var args = arguments,
|
||||
key = resolver ? resolver.apply(this, args) : args[0],
|
||||
cache = memoized.cache;
|
||||
|
||||
if (cache.has(key)) {
|
||||
return cache.get(key);
|
||||
}
|
||||
var result = func.apply(this, args);
|
||||
memoized.cache = cache.set(key, result);
|
||||
return result;
|
||||
};
|
||||
memoized.cache = new (memoize.Cache || MapCache);
|
||||
return memoized;
|
||||
}
|
||||
|
||||
// Assign cache to `_.memoize`.
|
||||
memoize.Cache = MapCache;
|
||||
|
||||
/**
|
||||
* Performs a
|
||||
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
||||
* comparison between two values to determine if they are equivalent.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to compare.
|
||||
* @param {*} other The other value to compare.
|
||||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': 1 };
|
||||
* var other = { 'a': 1 };
|
||||
*
|
||||
* _.eq(object, object);
|
||||
* // => true
|
||||
*
|
||||
* _.eq(object, other);
|
||||
* // => false
|
||||
*
|
||||
* _.eq('a', 'a');
|
||||
* // => true
|
||||
*
|
||||
* _.eq('a', Object('a'));
|
||||
* // => false
|
||||
*
|
||||
* _.eq(NaN, NaN);
|
||||
* // => true
|
||||
*/
|
||||
function eq(value, other) {
|
||||
return value === other || (value !== value && other !== other);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as an `Array` object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isArray([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isArray(document.body.children);
|
||||
* // => false
|
||||
*
|
||||
* _.isArray('abc');
|
||||
* // => false
|
||||
*
|
||||
* _.isArray(_.noop);
|
||||
* // => false
|
||||
*/
|
||||
var isArray = Array.isArray;
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `Function` object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isFunction(_);
|
||||
* // => true
|
||||
*
|
||||
* _.isFunction(/abc/);
|
||||
* // => false
|
||||
*/
|
||||
function isFunction(value) {
|
||||
// The use of `Object#toString` avoids issues with the `typeof` operator
|
||||
// in Safari 8-9 which returns 'object' for typed array and other constructors.
|
||||
var tag = isObject(value) ? objectToString.call(value) : '';
|
||||
return tag == funcTag || tag == genTag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is the
|
||||
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
|
||||
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 0.1.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isObject({});
|
||||
* // => true
|
||||
*
|
||||
* _.isObject([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isObject(_.noop);
|
||||
* // => true
|
||||
*
|
||||
* _.isObject(null);
|
||||
* // => false
|
||||
*/
|
||||
function isObject(value) {
|
||||
var type = typeof value;
|
||||
return !!value && (type == 'object' || type == 'function');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
||||
* and has a `typeof` result of "object".
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isObjectLike({});
|
||||
* // => true
|
||||
*
|
||||
* _.isObjectLike([1, 2, 3]);
|
||||
* // => true
|
||||
*
|
||||
* _.isObjectLike(_.noop);
|
||||
* // => false
|
||||
*
|
||||
* _.isObjectLike(null);
|
||||
* // => false
|
||||
*/
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == 'object';
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `Symbol` primitive or object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isSymbol(Symbol.iterator);
|
||||
* // => true
|
||||
*
|
||||
* _.isSymbol('abc');
|
||||
* // => false
|
||||
*/
|
||||
function isSymbol(value) {
|
||||
return typeof value == 'symbol' ||
|
||||
(isObjectLike(value) && objectToString.call(value) == symbolTag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `value` to a string. An empty string is returned for `null`
|
||||
* and `undefined` values. The sign of `-0` is preserved.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to process.
|
||||
* @returns {string} Returns the string.
|
||||
* @example
|
||||
*
|
||||
* _.toString(null);
|
||||
* // => ''
|
||||
*
|
||||
* _.toString(-0);
|
||||
* // => '-0'
|
||||
*
|
||||
* _.toString([1, 2, 3]);
|
||||
* // => '1,2,3'
|
||||
*/
|
||||
function toString(value) {
|
||||
return value == null ? '' : baseToString(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
|
||||
* it's created. Arrays are created for missing index properties while objects
|
||||
* are created for all other missing properties. Use `_.setWith` to customize
|
||||
* `path` creation.
|
||||
*
|
||||
* **Note:** This method mutates `object`.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 3.7.0
|
||||
* @category Object
|
||||
* @param {Object} object The object to modify.
|
||||
* @param {Array|string} path The path of the property to set.
|
||||
* @param {*} value The value to set.
|
||||
* @returns {Object} Returns `object`.
|
||||
* @example
|
||||
*
|
||||
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
||||
*
|
||||
* _.set(object, 'a[0].b.c', 4);
|
||||
* console.log(object.a[0].b.c);
|
||||
* // => 4
|
||||
*
|
||||
* _.set(object, ['x', '0', 'y', 'z'], 5);
|
||||
* console.log(object.x[0].y.z);
|
||||
* // => 5
|
||||
*/
|
||||
function set(object, path, value) {
|
||||
return object == null ? object : baseSet(object, path, value);
|
||||
}
|
||||
|
||||
module.exports = set;
|
69
src/node_modules/lodash.set/package.json
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"_from": "lodash.set@^4",
|
||||
"_id": "lodash.set@4.3.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
|
||||
"_location": "/lodash.set",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "lodash.set@^4",
|
||||
"name": "lodash.set",
|
||||
"escapedName": "lodash.set",
|
||||
"rawSpec": "^4",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^4"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/animated-tailwindcss"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
|
||||
"_shasum": "d8757b1da807dde24816b0d6a84bea1a76230b23",
|
||||
"_spec": "lodash.set@^4",
|
||||
"_where": "/usr/src/app/node_modules/animated-tailwindcss",
|
||||
"author": {
|
||||
"name": "John-David Dalton",
|
||||
"email": "john.david.dalton@gmail.com",
|
||||
"url": "http://allyoucanleet.com/"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/lodash/lodash/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "John-David Dalton",
|
||||
"email": "john.david.dalton@gmail.com",
|
||||
"url": "http://allyoucanleet.com/"
|
||||
},
|
||||
{
|
||||
"name": "Blaine Bublitz",
|
||||
"email": "blaine.bublitz@gmail.com",
|
||||
"url": "https://github.com/phated"
|
||||
},
|
||||
{
|
||||
"name": "Mathias Bynens",
|
||||
"email": "mathias@qiwi.be",
|
||||
"url": "https://mathiasbynens.be/"
|
||||
}
|
||||
],
|
||||
"deprecated": false,
|
||||
"description": "The lodash method `_.set` exported as a module.",
|
||||
"homepage": "https://lodash.com/",
|
||||
"icon": "https://lodash.com/icon.svg",
|
||||
"keywords": [
|
||||
"lodash-modularized",
|
||||
"set"
|
||||
],
|
||||
"license": "MIT",
|
||||
"name": "lodash.set",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/lodash/lodash.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
|
||||
},
|
||||
"version": "4.3.2"
|
||||
}
|
|
@ -24,4 +24,4 @@
|
|||
"eslint": "8.0.0",
|
||||
"eslint-config-next": "11.1.2"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,42 +1,133 @@
|
|||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import Iframe from "react-iframe";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="min-h-screen font-nerd bg-opacity-0">
|
||||
<div className="min-h-screen font-nerd overflow-hidden">
|
||||
<Head>
|
||||
<title>Create Next App</title>
|
||||
<meta name="description" content="Generated by create next app" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</Head>
|
||||
<div className="p-4 flex flex-row space-x-6 text-center text-xl text-alice-werefox-red-light w-1080p h-1080p">
|
||||
<div className="flex flex-col flex-grow space-y-6">
|
||||
<div
|
||||
className="fixed z-0 overflow-hidden animate-scroll"
|
||||
style={{ width: "3600px" }}
|
||||
>
|
||||
<Image
|
||||
src="/images/logo_silhouette_bg.png"
|
||||
width="1800px"
|
||||
height="1080px"
|
||||
layout="responsive"
|
||||
/>
|
||||
</div>
|
||||
<div className="p-4 flex flex-row space-x-6 text-center text-xl text-alice-werefox-red-light w-1080p h-1080p z-10">
|
||||
<div className="flex flex-col flex-grow space-y-6 z-10">
|
||||
<div className="p-2 flex-grow rounded-sm ring-4 ring-alice-werefox-red bg-alice-werefox-grey-dark">
|
||||
<p>Donation and stuff</p>
|
||||
</div>
|
||||
<div className="flex flex-col space-y-6 h-900p">
|
||||
<div className="p-2 flex-grow rounded-sm ring-4 ring-alice-werefox-red bg-alice-werefox-grey-dark">
|
||||
<p>this is the chat</p>
|
||||
{/* <p>this is the chat</p> */}
|
||||
</div>
|
||||
<div className="rounded-sm ring-4 ring-alice-werefox-red bg-alice-werefox-grey-dark bg-opacity-0 overflow-hidden aspect-ratio">
|
||||
<div className="opacity-0">
|
||||
<div
|
||||
className="rounded-sm ring-4 ring-alice-werefox-red bg-alice-werefox-grey-dark bg-opacity-0 aspect-video overflow-hidden relative"
|
||||
style={{ height: "176px", width: "264px" }}
|
||||
>
|
||||
<div className=" top-0 left-0">
|
||||
<Image
|
||||
src="/images/werefox_logo.svg"
|
||||
src="/images/skye_annoyed.png"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide1"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/skye_coffee.png"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide2"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/skye_heart.png"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide3"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/skye_shrug.png"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide4"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/skye_sunglasses.png"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide5"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/skye_wink.png"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide6"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/skye_witch.jpg"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide7"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/fucker_in_charge.jpeg"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide8"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/ada_werefox_temp.jpeg"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide9"
|
||||
></Image>
|
||||
</div>
|
||||
<div className="absolute top-0 left-0">
|
||||
<Image
|
||||
src="/images/ref_sheet_crop.jpg"
|
||||
width="720"
|
||||
height="480"
|
||||
className="animate-topslide10"
|
||||
></Image>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col space-y-6">
|
||||
<div className="flex flex-col space-y-6 z-10">
|
||||
<div className="p-2 flex-grow rounded-sm ring-4 ring-alice-werefox-red bg-alice-werefox-grey-dark">
|
||||
<p>
|
||||
Oh hi I'm writing things and they're displaying on the browser
|
||||
preview
|
||||
</p>
|
||||
</div>
|
||||
<div className="p-2 rounded-sm ring-4 ring-alice-werefox-red bg-alice-werefox-grey-darker w-900p h-900p bg-opacity-0">
|
||||
<div
|
||||
className="p-2 rounded-sm ring-4 ring-alice-werefox-red w-900p h-900p"
|
||||
style={{ "background-color": "magenta" }}
|
||||
>
|
||||
<p className="p-4 text-8xl bg-alice-werefox-grey-darker bg-opacity-0"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
BIN
src/werefox-obs-layouts/public/images/ada_werefox_temp.jpeg
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
src/werefox-obs-layouts/public/images/crop_popsicle_circle.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
src/werefox-obs-layouts/public/images/fucker_in_charge.jpeg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
src/werefox-obs-layouts/public/images/logo_silhouette_bg.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
src/werefox-obs-layouts/public/images/ref_sheet_crop.jpg
Normal file
After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 224 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB |
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 265 KiB |
Before Width: | Height: | Size: 393 KiB After Width: | Height: | Size: 393 KiB |
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 205 KiB |
Before Width: | Height: | Size: 372 KiB After Width: | Height: | Size: 372 KiB |
|
@ -1,4 +1,6 @@
|
|||
module.exports = {
|
||||
const withAnimations = require("animated-tailwindcss");
|
||||
|
||||
module.exports = withAnimations({
|
||||
purge: ["./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}"],
|
||||
darkMode: "media", // or 'media' or 'class'
|
||||
theme: {
|
||||
|
@ -73,41 +75,115 @@ module.exports = {
|
|||
"0%, 100%": { transform: "scale(1, 1)" },
|
||||
"50%": { transform: "scale(1.01, 1.01)" },
|
||||
},
|
||||
topslide: {
|
||||
topslide1: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"4%": { "margin-top": "0em" },
|
||||
"31%": { "margin-top": "0em" },
|
||||
"35%": { "margin-top": "-10em" },
|
||||
"64%": { "margin-top": "-10em" },
|
||||
"68%": { "margin-top": "-20em" },
|
||||
"96%": { "margin-top": "-20em" },
|
||||
"100%": { "margin-top": "-30em" },
|
||||
"2%": { "margin-top": "0em" },
|
||||
"8%": { "margin-top": "0em" },
|
||||
"10%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
heightslide: {
|
||||
"0%": { width: "auto", padding: "0.5em 1em", border: "thin solid" },
|
||||
"49.99%": {
|
||||
width: "auto",
|
||||
padding: "0.5em 1em",
|
||||
border: "thin solid",
|
||||
},
|
||||
"50.01%": { width: "0", padding: "0", border: "none" },
|
||||
"100%": { width: "0", padding: "0", border: "none" },
|
||||
topslide2: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"10%": { "margin-top": "10em" },
|
||||
"12%": { "margin-top": "0em" },
|
||||
"18%": { "margin-top": "0em" },
|
||||
"20%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide3: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"20%": { "margin-top": "10em" },
|
||||
"22%": { "margin-top": "0em" },
|
||||
"28%": { "margin-top": "0em" },
|
||||
"30%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide4: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"30%": { "margin-top": "10em" },
|
||||
"32%": { "margin-top": "0em" },
|
||||
"38%": { "margin-top": "0em" },
|
||||
"40%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide5: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"40%": { "margin-top": "10em" },
|
||||
"42%": { "margin-top": "0em" },
|
||||
"48%": { "margin-top": "0em" },
|
||||
"50%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide6: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"50%": { "margin-top": "10em" },
|
||||
"52%": { "margin-top": "0em" },
|
||||
"58%": { "margin-top": "0em" },
|
||||
"60%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide7: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"60%": { "margin-top": "10em" },
|
||||
"62%": { "margin-top": "0em" },
|
||||
"68%": { "margin-top": "0em" },
|
||||
"70%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide8: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"70%": { "margin-top": "10em" },
|
||||
"72%": { "margin-top": "0em" },
|
||||
"78%": { "margin-top": "0em" },
|
||||
"80%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide9: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"80%": { "margin-top": "10em" },
|
||||
"82%": { "margin-top": "0em" },
|
||||
"88%": { "margin-top": "0em" },
|
||||
"90%": { "margin-top": "-10em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
topslide10: {
|
||||
"0%": { "margin-top": "10em" },
|
||||
"90%": { "margin-top": "10em" },
|
||||
"92%": { "margin-top": "0em" },
|
||||
"98%": { "margin-top": "0em" },
|
||||
"100%": { "margin-top": "-10em" },
|
||||
},
|
||||
scroll: {
|
||||
"0%": { transform: "translate(-45%, -45%)" },
|
||||
"50%": { transform: "translate(-25%, -25%)" },
|
||||
"100%": { transform: "translate(-5%, -5%)" },
|
||||
},
|
||||
},
|
||||
animation: {
|
||||
wiggle: "wiggle 7s ease-in-out infinite",
|
||||
jiggle: "jiggle 5s cubic-bezier(0.75,0.25,0.25,0.75) infinite",
|
||||
yip: "yip 0.1s ease-in-out",
|
||||
topslide: "topslide 12s ease-in-out infinite",
|
||||
heightslide: "heightslide 8s linear infinite",
|
||||
topslide1: "topslide1 40s ease-in-out infinite",
|
||||
topslide2: "topslide2 40s ease-in-out infinite",
|
||||
topslide3: "topslide3 40s ease-in-out infinite",
|
||||
topslide4: "topslide4 40s ease-in-out infinite",
|
||||
topslide5: "topslide5 40s ease-in-out infinite",
|
||||
topslide6: "topslide6 40s ease-in-out infinite",
|
||||
topslide7: "topslide7 40s ease-in-out infinite",
|
||||
topslide8: "topslide8 40s ease-in-out infinite",
|
||||
topslide9: "topslide9 40s ease-in-out infinite",
|
||||
topslide10: "topslide10 40s ease-in-out infinite",
|
||||
scroll: "scroll 20s linear infinite",
|
||||
},
|
||||
width: {
|
||||
"2k": "3840px",
|
||||
"1080p": "1920px",
|
||||
"900p": "1600px",
|
||||
"720p": "1280px",
|
||||
"480p": "720px",
|
||||
},
|
||||
height: {
|
||||
"2k": "2160px",
|
||||
"1080p": "1080px",
|
||||
"900p": "900px",
|
||||
"720p": "720px",
|
||||
|
@ -135,4 +211,4 @@ module.exports = {
|
|||
},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
});
|
||||
|
|