├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .github
└── FUNDING.yml
├── .gitignore
├── .prettierrc
├── .travis.yml
├── README.md
├── example
├── README.md
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── manifest.json
└── src
│ ├── 1200px-React-icon.svg.png
│ ├── App.js
│ ├── App.test.js
│ ├── index.css
│ ├── index.js
│ └── react-full-page-scroller.gif
├── package-lock.json
├── package.json
└── src
├── .eslintrc
├── Page.js
├── PageIndicator.js
├── PageIndicatorButton.js
├── PageNav.js
├── PageScroller.js
├── helper.js
├── index.js
└── index.test.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/
2 | dist/
3 | node_modules/
4 | .snapshots/
5 | *.min.js
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": [
4 | "standard",
5 | "standard-react",
6 | "plugin:prettier/recommended",
7 | "prettier/standard",
8 | "prettier/react"
9 | ],
10 | "env": {
11 | "node": true
12 | },
13 | "parserOptions": {
14 | "ecmaVersion": 2020,
15 | "ecmaFeatures": {
16 | "legacyDecorators": true,
17 | "jsx": true
18 | }
19 | },
20 | "settings": {
21 | "react": {
22 | "version": "16"
23 | }
24 | },
25 | "rules": {
26 | "space-before-function-paren": 0,
27 | "react/prop-types": 0,
28 | "react/jsx-handler-names": 0,
29 | "react/jsx-fragments": 0,
30 | "react/no-unused-prop-types": 0,
31 | "import/export": 0
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # See https://help.github.com/ignore-files/ for more about ignoring files.
3 |
4 | # dependencies
5 | node_modules
6 |
7 | # builds
8 | build
9 | dist
10 | .rpt2_cache
11 |
12 | # misc
13 | .DS_Store
14 | .env
15 | .env.local
16 | .env.development.local
17 | .env.test.local
18 | .env.production.local
19 |
20 | npm-debug.log*
21 | yarn-debug.log*
22 | yarn-error.log*
23 |
24 | #IDE
25 | #WebStorm
26 | .idea/
27 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "jsxSingleQuote": true,
4 | "semi": false,
5 | "tabWidth": 2,
6 | "bracketSpacing": true,
7 | "jsxBracketSameLine": false,
8 | "arrowParens": "always",
9 | "trailingComma": "none"
10 | }
11 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 12
4 | - 10
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-full-page-scroller
2 |
3 | > A react module for full page scroll
4 |
5 | [](https://www.npmjs.com/package/react-full-page-scroller) [](https://standardjs.com)
6 |
7 | ## Install
8 |
9 | ```bash
10 | npm install --save react-full-page-scroller
11 | ```
12 |
13 | ## Demo
14 |
15 | 
16 |
17 | ## Usage
18 |
19 | ```jsx
20 | import React, { Component } from 'react'
21 |
22 | import MyComponent from 'react-full-page-scroller'
23 | import 'react-full-page-scroller/dist/index.css'
24 |
25 | class Example extends Component {
26 | render() {
27 | return (
28 |
29 |
30 |
1
31 |
32 |
33 |
2
34 |
35 |
36 |
3
37 |
38 |
39 | )
40 | }
41 | }
42 | ```
43 |
44 | ### Props
45 |
46 | | Prop Name | Type |
47 | | -------------------- | ------ |
48 | | pageNav | Object |
49 | | indicatorStyle | object |
50 | | indicatorStyleActive | object |
51 |
52 | #### Page Nav Object
53 |
54 | You can customize every button in the nav page
55 |
56 | | Name | Type | Required | Description |
57 | | --------- | ------ | -------- | --------------------------------------- |
58 | | id | number | Yes | id for the object. |
59 | | title | string | Yes | title of the nav button. |
60 | | className | string | No | the className of the page nav button. |
61 | | style | object | No | A custom style for the page nav button. |
62 |
63 | ##### Exemple
64 |
65 | ```jsx
66 | import React, { Component } from 'react'
67 |
68 | import MyComponent from 'react-full-page-scroller'
69 | import 'react-full-page-scroller/dist/index.css'
70 |
71 | const PageNavExample {
72 |
73 | const navExample={[{
74 | id: 1,
75 | title: 'title 1',
76 | className: 'page-nav-button',
77 | style: { width: '1rem' }
78 | },
79 | {
80 | id: 2,
81 | title: 'title 2',
82 | className: 'page-nav-button',
83 | style: { width: '1rem' }
84 | },
85 | {
86 | id: 3,
87 | title: 'title 3',
88 | className: 'page-nav-button',
89 | style: { width: '1rem' }
90 | }
91 | ]};
92 |
93 | return (
94 |
95 |
96 |
1
97 |
98 |
99 |
2
100 |
101 |
102 |
3
103 |
104 |
105 | )
106 | }
107 | ```
108 |
109 | #### Indicator Style
110 |
111 | You can add an indicator by adding the two props indicatorStyle and indicatorStyleActive
112 |
113 | | Name | Type | Required | Description |
114 | | -------------------- | ------ | -------- | -------------------------------------------------------------- |
115 | | indicatorStyle | object | Yes | the indicator default style is required to show the indicator. |
116 | | indicatorStyleActive | object | No | the style of the active indicator. |
117 |
118 | ##### Exemple
119 |
120 | ```jsx
121 | import React, { Component } from 'react'
122 |
123 | import MyComponent from 'react-full-page-scroller'
124 | import 'react-full-page-scroller/dist/index.css'
125 |
126 | const PageNavExample {
127 |
128 | const indicatorStyle = {
129 | height: '8px',
130 | width: '8px',
131 | margin: '10px',
132 | borderRadius: '4px',
133 | backgroundColor: 'white',
134 | transition: 'width 500ms ease'
135 | }
136 | const indicatorStyleActive= { width: '20px' }
137 |
138 | return (
139 |
140 |
141 |
1
142 |
143 |
144 |
2
145 |
146 |
147 |
3
148 |
149 |
150 | )
151 | }
152 | ```
153 |
154 | ## License
155 |
156 | © [Ibrahim Haouari](https://github.com/Ibrahim-ih)
157 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | This example was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
2 |
3 | It is linked to the react-full-page-scroller package in the parent directory for development purposes.
4 |
5 | You can run `npm install` and then `npm start` to test your package.
6 |
--------------------------------------------------------------------------------
/example/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-full-page-scroller-example",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "react-full-page-scroller-example",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "react": "file:../node_modules/react",
12 | "react-dom": "file:../node_modules/react-dom",
13 | "react-full-page-scroller": "file:..",
14 | "react-scripts": "file:../node_modules/react-scripts",
15 | "react-syntax-highlighter": "^15.4.4"
16 | },
17 | "devDependencies": {
18 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3"
19 | }
20 | },
21 | "..": {
22 | "version": "0.1.6",
23 | "license": "MIT",
24 | "devDependencies": {
25 | "babel-eslint": "^10.0.3",
26 | "cross-env": "^7.0.2",
27 | "eslint": "^6.8.0",
28 | "eslint-config-prettier": "^6.7.0",
29 | "eslint-config-standard": "^14.1.0",
30 | "eslint-config-standard-react": "^9.2.0",
31 | "eslint-plugin-import": "^2.18.2",
32 | "eslint-plugin-node": "^11.0.0",
33 | "eslint-plugin-prettier": "^3.1.1",
34 | "eslint-plugin-promise": "^4.2.1",
35 | "eslint-plugin-react": "^7.17.0",
36 | "eslint-plugin-standard": "^4.0.1",
37 | "gh-pages": "^2.2.0",
38 | "microbundle-crl": "^0.13.10",
39 | "npm-run-all": "^4.1.5",
40 | "prettier": "^2.0.4",
41 | "prop-types": "^15.7.2",
42 | "react": "^16.13.1",
43 | "react-dom": "^16.13.1",
44 | "react-scripts": "^3.4.1"
45 | },
46 | "engines": {
47 | "node": ">=10"
48 | },
49 | "peerDependencies": {
50 | "react": "^16.0.0"
51 | }
52 | },
53 | "../node_modules/react": {
54 | "version": "16.14.0",
55 | "license": "MIT",
56 | "dependencies": {
57 | "loose-envify": "^1.1.0",
58 | "object-assign": "^4.1.1",
59 | "prop-types": "^15.6.2"
60 | },
61 | "engines": {
62 | "node": ">=0.10.0"
63 | }
64 | },
65 | "../node_modules/react-dom": {
66 | "version": "16.14.0",
67 | "license": "MIT",
68 | "dependencies": {
69 | "loose-envify": "^1.1.0",
70 | "object-assign": "^4.1.1",
71 | "prop-types": "^15.6.2",
72 | "scheduler": "^0.19.1"
73 | },
74 | "peerDependencies": {
75 | "react": "^16.14.0"
76 | }
77 | },
78 | "../node_modules/react-scripts": {
79 | "version": "3.4.4",
80 | "license": "MIT",
81 | "dependencies": {
82 | "@babel/core": "7.9.0",
83 | "@svgr/webpack": "4.3.3",
84 | "@typescript-eslint/eslint-plugin": "^2.10.0",
85 | "@typescript-eslint/parser": "^2.10.0",
86 | "babel-eslint": "10.1.0",
87 | "babel-jest": "^24.9.0",
88 | "babel-loader": "8.1.0",
89 | "babel-plugin-named-asset-import": "^0.3.6",
90 | "babel-preset-react-app": "^9.1.2",
91 | "camelcase": "^5.3.1",
92 | "case-sensitive-paths-webpack-plugin": "2.3.0",
93 | "css-loader": "3.4.2",
94 | "dotenv": "8.2.0",
95 | "dotenv-expand": "5.1.0",
96 | "eslint": "^6.6.0",
97 | "eslint-config-react-app": "^5.2.1",
98 | "eslint-loader": "3.0.3",
99 | "eslint-plugin-flowtype": "4.6.0",
100 | "eslint-plugin-import": "2.20.1",
101 | "eslint-plugin-jsx-a11y": "6.2.3",
102 | "eslint-plugin-react": "7.19.0",
103 | "eslint-plugin-react-hooks": "^1.6.1",
104 | "file-loader": "4.3.0",
105 | "fs-extra": "^8.1.0",
106 | "html-webpack-plugin": "4.0.0-beta.11",
107 | "identity-obj-proxy": "3.0.0",
108 | "jest": "24.9.0",
109 | "jest-environment-jsdom-fourteen": "1.0.1",
110 | "jest-resolve": "24.9.0",
111 | "jest-watch-typeahead": "0.4.2",
112 | "mini-css-extract-plugin": "0.9.0",
113 | "optimize-css-assets-webpack-plugin": "5.0.3",
114 | "pnp-webpack-plugin": "1.6.4",
115 | "postcss-flexbugs-fixes": "4.1.0",
116 | "postcss-loader": "3.0.0",
117 | "postcss-normalize": "8.0.1",
118 | "postcss-preset-env": "6.7.0",
119 | "postcss-safe-parser": "4.0.1",
120 | "react-app-polyfill": "^1.0.6",
121 | "react-dev-utils": "^10.2.1",
122 | "resolve": "1.15.0",
123 | "resolve-url-loader": "3.1.2",
124 | "sass-loader": "8.0.2",
125 | "semver": "6.3.0",
126 | "style-loader": "0.23.1",
127 | "terser-webpack-plugin": "2.3.8",
128 | "ts-pnp": "1.1.6",
129 | "url-loader": "2.3.0",
130 | "webpack": "4.42.0",
131 | "webpack-dev-server": "3.11.0",
132 | "webpack-manifest-plugin": "2.2.0",
133 | "workbox-webpack-plugin": "4.3.1"
134 | },
135 | "bin": {
136 | "react-scripts": "bin/react-scripts.js"
137 | },
138 | "engines": {
139 | "node": ">=8.10"
140 | },
141 | "optionalDependencies": {
142 | "fsevents": "2.1.2"
143 | },
144 | "peerDependencies": {
145 | "typescript": "^3.2.1"
146 | },
147 | "peerDependenciesMeta": {
148 | "typescript": {
149 | "optional": true
150 | }
151 | }
152 | },
153 | "node_modules/@babel/code-frame": {
154 | "version": "7.14.5",
155 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
156 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
157 | "dev": true,
158 | "peer": true,
159 | "dependencies": {
160 | "@babel/highlight": "^7.14.5"
161 | },
162 | "engines": {
163 | "node": ">=6.9.0"
164 | }
165 | },
166 | "node_modules/@babel/compat-data": {
167 | "version": "7.15.0",
168 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
169 | "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
170 | "dev": true,
171 | "peer": true,
172 | "engines": {
173 | "node": ">=6.9.0"
174 | }
175 | },
176 | "node_modules/@babel/core": {
177 | "version": "7.15.5",
178 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz",
179 | "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==",
180 | "dev": true,
181 | "peer": true,
182 | "dependencies": {
183 | "@babel/code-frame": "^7.14.5",
184 | "@babel/generator": "^7.15.4",
185 | "@babel/helper-compilation-targets": "^7.15.4",
186 | "@babel/helper-module-transforms": "^7.15.4",
187 | "@babel/helpers": "^7.15.4",
188 | "@babel/parser": "^7.15.5",
189 | "@babel/template": "^7.15.4",
190 | "@babel/traverse": "^7.15.4",
191 | "@babel/types": "^7.15.4",
192 | "convert-source-map": "^1.7.0",
193 | "debug": "^4.1.0",
194 | "gensync": "^1.0.0-beta.2",
195 | "json5": "^2.1.2",
196 | "semver": "^6.3.0",
197 | "source-map": "^0.5.0"
198 | },
199 | "engines": {
200 | "node": ">=6.9.0"
201 | },
202 | "funding": {
203 | "type": "opencollective",
204 | "url": "https://opencollective.com/babel"
205 | }
206 | },
207 | "node_modules/@babel/generator": {
208 | "version": "7.15.4",
209 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
210 | "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
211 | "dev": true,
212 | "peer": true,
213 | "dependencies": {
214 | "@babel/types": "^7.15.4",
215 | "jsesc": "^2.5.1",
216 | "source-map": "^0.5.0"
217 | },
218 | "engines": {
219 | "node": ">=6.9.0"
220 | }
221 | },
222 | "node_modules/@babel/helper-compilation-targets": {
223 | "version": "7.15.4",
224 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz",
225 | "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
226 | "dev": true,
227 | "peer": true,
228 | "dependencies": {
229 | "@babel/compat-data": "^7.15.0",
230 | "@babel/helper-validator-option": "^7.14.5",
231 | "browserslist": "^4.16.6",
232 | "semver": "^6.3.0"
233 | },
234 | "engines": {
235 | "node": ">=6.9.0"
236 | },
237 | "peerDependencies": {
238 | "@babel/core": "^7.0.0"
239 | }
240 | },
241 | "node_modules/@babel/helper-function-name": {
242 | "version": "7.15.4",
243 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
244 | "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
245 | "dev": true,
246 | "peer": true,
247 | "dependencies": {
248 | "@babel/helper-get-function-arity": "^7.15.4",
249 | "@babel/template": "^7.15.4",
250 | "@babel/types": "^7.15.4"
251 | },
252 | "engines": {
253 | "node": ">=6.9.0"
254 | }
255 | },
256 | "node_modules/@babel/helper-get-function-arity": {
257 | "version": "7.15.4",
258 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
259 | "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
260 | "dev": true,
261 | "peer": true,
262 | "dependencies": {
263 | "@babel/types": "^7.15.4"
264 | },
265 | "engines": {
266 | "node": ">=6.9.0"
267 | }
268 | },
269 | "node_modules/@babel/helper-hoist-variables": {
270 | "version": "7.15.4",
271 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
272 | "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
273 | "dev": true,
274 | "peer": true,
275 | "dependencies": {
276 | "@babel/types": "^7.15.4"
277 | },
278 | "engines": {
279 | "node": ">=6.9.0"
280 | }
281 | },
282 | "node_modules/@babel/helper-member-expression-to-functions": {
283 | "version": "7.15.4",
284 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz",
285 | "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
286 | "dev": true,
287 | "peer": true,
288 | "dependencies": {
289 | "@babel/types": "^7.15.4"
290 | },
291 | "engines": {
292 | "node": ">=6.9.0"
293 | }
294 | },
295 | "node_modules/@babel/helper-module-imports": {
296 | "version": "7.15.4",
297 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz",
298 | "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
299 | "dev": true,
300 | "peer": true,
301 | "dependencies": {
302 | "@babel/types": "^7.15.4"
303 | },
304 | "engines": {
305 | "node": ">=6.9.0"
306 | }
307 | },
308 | "node_modules/@babel/helper-module-transforms": {
309 | "version": "7.15.4",
310 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
311 | "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
312 | "dev": true,
313 | "peer": true,
314 | "dependencies": {
315 | "@babel/helper-module-imports": "^7.15.4",
316 | "@babel/helper-replace-supers": "^7.15.4",
317 | "@babel/helper-simple-access": "^7.15.4",
318 | "@babel/helper-split-export-declaration": "^7.15.4",
319 | "@babel/helper-validator-identifier": "^7.14.9",
320 | "@babel/template": "^7.15.4",
321 | "@babel/traverse": "^7.15.4",
322 | "@babel/types": "^7.15.4"
323 | },
324 | "engines": {
325 | "node": ">=6.9.0"
326 | }
327 | },
328 | "node_modules/@babel/helper-optimise-call-expression": {
329 | "version": "7.15.4",
330 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
331 | "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
332 | "dev": true,
333 | "peer": true,
334 | "dependencies": {
335 | "@babel/types": "^7.15.4"
336 | },
337 | "engines": {
338 | "node": ">=6.9.0"
339 | }
340 | },
341 | "node_modules/@babel/helper-plugin-utils": {
342 | "version": "7.14.5",
343 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
344 | "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
345 | "dev": true,
346 | "engines": {
347 | "node": ">=6.9.0"
348 | }
349 | },
350 | "node_modules/@babel/helper-replace-supers": {
351 | "version": "7.15.4",
352 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz",
353 | "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
354 | "dev": true,
355 | "peer": true,
356 | "dependencies": {
357 | "@babel/helper-member-expression-to-functions": "^7.15.4",
358 | "@babel/helper-optimise-call-expression": "^7.15.4",
359 | "@babel/traverse": "^7.15.4",
360 | "@babel/types": "^7.15.4"
361 | },
362 | "engines": {
363 | "node": ">=6.9.0"
364 | }
365 | },
366 | "node_modules/@babel/helper-simple-access": {
367 | "version": "7.15.4",
368 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz",
369 | "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
370 | "dev": true,
371 | "peer": true,
372 | "dependencies": {
373 | "@babel/types": "^7.15.4"
374 | },
375 | "engines": {
376 | "node": ">=6.9.0"
377 | }
378 | },
379 | "node_modules/@babel/helper-split-export-declaration": {
380 | "version": "7.15.4",
381 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
382 | "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
383 | "dev": true,
384 | "peer": true,
385 | "dependencies": {
386 | "@babel/types": "^7.15.4"
387 | },
388 | "engines": {
389 | "node": ">=6.9.0"
390 | }
391 | },
392 | "node_modules/@babel/helper-validator-identifier": {
393 | "version": "7.14.9",
394 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
395 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
396 | "dev": true,
397 | "peer": true,
398 | "engines": {
399 | "node": ">=6.9.0"
400 | }
401 | },
402 | "node_modules/@babel/helper-validator-option": {
403 | "version": "7.14.5",
404 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
405 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
406 | "dev": true,
407 | "peer": true,
408 | "engines": {
409 | "node": ">=6.9.0"
410 | }
411 | },
412 | "node_modules/@babel/helpers": {
413 | "version": "7.15.4",
414 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz",
415 | "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
416 | "dev": true,
417 | "peer": true,
418 | "dependencies": {
419 | "@babel/template": "^7.15.4",
420 | "@babel/traverse": "^7.15.4",
421 | "@babel/types": "^7.15.4"
422 | },
423 | "engines": {
424 | "node": ">=6.9.0"
425 | }
426 | },
427 | "node_modules/@babel/highlight": {
428 | "version": "7.14.5",
429 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
430 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
431 | "dev": true,
432 | "peer": true,
433 | "dependencies": {
434 | "@babel/helper-validator-identifier": "^7.14.5",
435 | "chalk": "^2.0.0",
436 | "js-tokens": "^4.0.0"
437 | },
438 | "engines": {
439 | "node": ">=6.9.0"
440 | }
441 | },
442 | "node_modules/@babel/parser": {
443 | "version": "7.15.6",
444 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz",
445 | "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==",
446 | "dev": true,
447 | "peer": true,
448 | "bin": {
449 | "parser": "bin/babel-parser.js"
450 | },
451 | "engines": {
452 | "node": ">=6.0.0"
453 | }
454 | },
455 | "node_modules/@babel/plugin-syntax-object-rest-spread": {
456 | "version": "7.8.3",
457 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
458 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
459 | "dev": true,
460 | "dependencies": {
461 | "@babel/helper-plugin-utils": "^7.8.0"
462 | },
463 | "peerDependencies": {
464 | "@babel/core": "^7.0.0-0"
465 | }
466 | },
467 | "node_modules/@babel/runtime": {
468 | "version": "7.15.4",
469 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
470 | "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
471 | "dependencies": {
472 | "regenerator-runtime": "^0.13.4"
473 | },
474 | "engines": {
475 | "node": ">=6.9.0"
476 | }
477 | },
478 | "node_modules/@babel/template": {
479 | "version": "7.15.4",
480 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
481 | "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
482 | "dev": true,
483 | "peer": true,
484 | "dependencies": {
485 | "@babel/code-frame": "^7.14.5",
486 | "@babel/parser": "^7.15.4",
487 | "@babel/types": "^7.15.4"
488 | },
489 | "engines": {
490 | "node": ">=6.9.0"
491 | }
492 | },
493 | "node_modules/@babel/traverse": {
494 | "version": "7.15.4",
495 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
496 | "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
497 | "dev": true,
498 | "peer": true,
499 | "dependencies": {
500 | "@babel/code-frame": "^7.14.5",
501 | "@babel/generator": "^7.15.4",
502 | "@babel/helper-function-name": "^7.15.4",
503 | "@babel/helper-hoist-variables": "^7.15.4",
504 | "@babel/helper-split-export-declaration": "^7.15.4",
505 | "@babel/parser": "^7.15.4",
506 | "@babel/types": "^7.15.4",
507 | "debug": "^4.1.0",
508 | "globals": "^11.1.0"
509 | },
510 | "engines": {
511 | "node": ">=6.9.0"
512 | }
513 | },
514 | "node_modules/@babel/types": {
515 | "version": "7.15.6",
516 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
517 | "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
518 | "dev": true,
519 | "peer": true,
520 | "dependencies": {
521 | "@babel/helper-validator-identifier": "^7.14.9",
522 | "to-fast-properties": "^2.0.0"
523 | },
524 | "engines": {
525 | "node": ">=6.9.0"
526 | }
527 | },
528 | "node_modules/@types/hast": {
529 | "version": "2.3.4",
530 | "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
531 | "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
532 | "dependencies": {
533 | "@types/unist": "*"
534 | }
535 | },
536 | "node_modules/@types/unist": {
537 | "version": "2.0.6",
538 | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
539 | "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
540 | },
541 | "node_modules/ansi-styles": {
542 | "version": "3.2.1",
543 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
544 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
545 | "dev": true,
546 | "peer": true,
547 | "dependencies": {
548 | "color-convert": "^1.9.0"
549 | },
550 | "engines": {
551 | "node": ">=4"
552 | }
553 | },
554 | "node_modules/browserslist": {
555 | "version": "4.17.0",
556 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz",
557 | "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==",
558 | "dev": true,
559 | "peer": true,
560 | "dependencies": {
561 | "caniuse-lite": "^1.0.30001254",
562 | "colorette": "^1.3.0",
563 | "electron-to-chromium": "^1.3.830",
564 | "escalade": "^3.1.1",
565 | "node-releases": "^1.1.75"
566 | },
567 | "bin": {
568 | "browserslist": "cli.js"
569 | },
570 | "engines": {
571 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
572 | },
573 | "funding": {
574 | "type": "opencollective",
575 | "url": "https://opencollective.com/browserslist"
576 | }
577 | },
578 | "node_modules/caniuse-lite": {
579 | "version": "1.0.30001257",
580 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz",
581 | "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==",
582 | "dev": true,
583 | "peer": true,
584 | "funding": {
585 | "type": "opencollective",
586 | "url": "https://opencollective.com/browserslist"
587 | }
588 | },
589 | "node_modules/chalk": {
590 | "version": "2.4.2",
591 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
592 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
593 | "dev": true,
594 | "peer": true,
595 | "dependencies": {
596 | "ansi-styles": "^3.2.1",
597 | "escape-string-regexp": "^1.0.5",
598 | "supports-color": "^5.3.0"
599 | },
600 | "engines": {
601 | "node": ">=4"
602 | }
603 | },
604 | "node_modules/character-entities": {
605 | "version": "1.2.4",
606 | "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
607 | "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
608 | "funding": {
609 | "type": "github",
610 | "url": "https://github.com/sponsors/wooorm"
611 | }
612 | },
613 | "node_modules/character-entities-legacy": {
614 | "version": "1.1.4",
615 | "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
616 | "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
617 | "funding": {
618 | "type": "github",
619 | "url": "https://github.com/sponsors/wooorm"
620 | }
621 | },
622 | "node_modules/character-reference-invalid": {
623 | "version": "1.1.4",
624 | "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
625 | "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
626 | "funding": {
627 | "type": "github",
628 | "url": "https://github.com/sponsors/wooorm"
629 | }
630 | },
631 | "node_modules/color-convert": {
632 | "version": "1.9.3",
633 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
634 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
635 | "dev": true,
636 | "peer": true,
637 | "dependencies": {
638 | "color-name": "1.1.3"
639 | }
640 | },
641 | "node_modules/color-name": {
642 | "version": "1.1.3",
643 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
644 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
645 | "dev": true,
646 | "peer": true
647 | },
648 | "node_modules/colorette": {
649 | "version": "1.4.0",
650 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
651 | "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
652 | "dev": true,
653 | "peer": true
654 | },
655 | "node_modules/comma-separated-tokens": {
656 | "version": "1.0.8",
657 | "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
658 | "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
659 | "funding": {
660 | "type": "github",
661 | "url": "https://github.com/sponsors/wooorm"
662 | }
663 | },
664 | "node_modules/convert-source-map": {
665 | "version": "1.8.0",
666 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
667 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
668 | "dev": true,
669 | "peer": true,
670 | "dependencies": {
671 | "safe-buffer": "~5.1.1"
672 | }
673 | },
674 | "node_modules/debug": {
675 | "version": "4.3.2",
676 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
677 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
678 | "dev": true,
679 | "peer": true,
680 | "dependencies": {
681 | "ms": "2.1.2"
682 | },
683 | "engines": {
684 | "node": ">=6.0"
685 | },
686 | "peerDependenciesMeta": {
687 | "supports-color": {
688 | "optional": true
689 | }
690 | }
691 | },
692 | "node_modules/electron-to-chromium": {
693 | "version": "1.3.839",
694 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.839.tgz",
695 | "integrity": "sha512-0O7uPs9LJNjQ/U5mW78qW8gXv9H6Ba3DHZ5/yt8aBsvomOWDkV3MddT7enUYvLQEUVOURjWmgJJWVZ3K98tIwQ==",
696 | "dev": true,
697 | "peer": true
698 | },
699 | "node_modules/escalade": {
700 | "version": "3.1.1",
701 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
702 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
703 | "dev": true,
704 | "peer": true,
705 | "engines": {
706 | "node": ">=6"
707 | }
708 | },
709 | "node_modules/escape-string-regexp": {
710 | "version": "1.0.5",
711 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
712 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
713 | "dev": true,
714 | "peer": true,
715 | "engines": {
716 | "node": ">=0.8.0"
717 | }
718 | },
719 | "node_modules/fault": {
720 | "version": "1.0.4",
721 | "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
722 | "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
723 | "dependencies": {
724 | "format": "^0.2.0"
725 | },
726 | "funding": {
727 | "type": "github",
728 | "url": "https://github.com/sponsors/wooorm"
729 | }
730 | },
731 | "node_modules/format": {
732 | "version": "0.2.2",
733 | "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
734 | "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=",
735 | "engines": {
736 | "node": ">=0.4.x"
737 | }
738 | },
739 | "node_modules/gensync": {
740 | "version": "1.0.0-beta.2",
741 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
742 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
743 | "dev": true,
744 | "peer": true,
745 | "engines": {
746 | "node": ">=6.9.0"
747 | }
748 | },
749 | "node_modules/globals": {
750 | "version": "11.12.0",
751 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
752 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
753 | "dev": true,
754 | "peer": true,
755 | "engines": {
756 | "node": ">=4"
757 | }
758 | },
759 | "node_modules/has-flag": {
760 | "version": "3.0.0",
761 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
762 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
763 | "dev": true,
764 | "peer": true,
765 | "engines": {
766 | "node": ">=4"
767 | }
768 | },
769 | "node_modules/hast-util-parse-selector": {
770 | "version": "2.2.5",
771 | "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
772 | "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
773 | "funding": {
774 | "type": "opencollective",
775 | "url": "https://opencollective.com/unified"
776 | }
777 | },
778 | "node_modules/hastscript": {
779 | "version": "6.0.0",
780 | "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
781 | "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
782 | "dependencies": {
783 | "@types/hast": "^2.0.0",
784 | "comma-separated-tokens": "^1.0.0",
785 | "hast-util-parse-selector": "^2.0.0",
786 | "property-information": "^5.0.0",
787 | "space-separated-tokens": "^1.0.0"
788 | },
789 | "funding": {
790 | "type": "opencollective",
791 | "url": "https://opencollective.com/unified"
792 | }
793 | },
794 | "node_modules/highlight.js": {
795 | "version": "10.7.3",
796 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
797 | "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
798 | "engines": {
799 | "node": "*"
800 | }
801 | },
802 | "node_modules/is-alphabetical": {
803 | "version": "1.0.4",
804 | "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
805 | "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
806 | "funding": {
807 | "type": "github",
808 | "url": "https://github.com/sponsors/wooorm"
809 | }
810 | },
811 | "node_modules/is-alphanumerical": {
812 | "version": "1.0.4",
813 | "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
814 | "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
815 | "dependencies": {
816 | "is-alphabetical": "^1.0.0",
817 | "is-decimal": "^1.0.0"
818 | },
819 | "funding": {
820 | "type": "github",
821 | "url": "https://github.com/sponsors/wooorm"
822 | }
823 | },
824 | "node_modules/is-decimal": {
825 | "version": "1.0.4",
826 | "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
827 | "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
828 | "funding": {
829 | "type": "github",
830 | "url": "https://github.com/sponsors/wooorm"
831 | }
832 | },
833 | "node_modules/is-hexadecimal": {
834 | "version": "1.0.4",
835 | "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
836 | "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
837 | "funding": {
838 | "type": "github",
839 | "url": "https://github.com/sponsors/wooorm"
840 | }
841 | },
842 | "node_modules/js-tokens": {
843 | "version": "4.0.0",
844 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
845 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
846 | "dev": true,
847 | "peer": true
848 | },
849 | "node_modules/jsesc": {
850 | "version": "2.5.2",
851 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
852 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
853 | "dev": true,
854 | "peer": true,
855 | "bin": {
856 | "jsesc": "bin/jsesc"
857 | },
858 | "engines": {
859 | "node": ">=4"
860 | }
861 | },
862 | "node_modules/json5": {
863 | "version": "2.2.0",
864 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
865 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
866 | "dev": true,
867 | "peer": true,
868 | "dependencies": {
869 | "minimist": "^1.2.5"
870 | },
871 | "bin": {
872 | "json5": "lib/cli.js"
873 | },
874 | "engines": {
875 | "node": ">=6"
876 | }
877 | },
878 | "node_modules/lowlight": {
879 | "version": "1.20.0",
880 | "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
881 | "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
882 | "dependencies": {
883 | "fault": "^1.0.0",
884 | "highlight.js": "~10.7.0"
885 | },
886 | "funding": {
887 | "type": "github",
888 | "url": "https://github.com/sponsors/wooorm"
889 | }
890 | },
891 | "node_modules/minimist": {
892 | "version": "1.2.5",
893 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
894 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
895 | "dev": true,
896 | "peer": true
897 | },
898 | "node_modules/ms": {
899 | "version": "2.1.2",
900 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
901 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
902 | "dev": true,
903 | "peer": true
904 | },
905 | "node_modules/node-releases": {
906 | "version": "1.1.75",
907 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz",
908 | "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==",
909 | "dev": true,
910 | "peer": true
911 | },
912 | "node_modules/parse-entities": {
913 | "version": "2.0.0",
914 | "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
915 | "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
916 | "dependencies": {
917 | "character-entities": "^1.0.0",
918 | "character-entities-legacy": "^1.0.0",
919 | "character-reference-invalid": "^1.0.0",
920 | "is-alphanumerical": "^1.0.0",
921 | "is-decimal": "^1.0.0",
922 | "is-hexadecimal": "^1.0.0"
923 | },
924 | "funding": {
925 | "type": "github",
926 | "url": "https://github.com/sponsors/wooorm"
927 | }
928 | },
929 | "node_modules/prismjs": {
930 | "version": "1.25.0",
931 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz",
932 | "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg=="
933 | },
934 | "node_modules/property-information": {
935 | "version": "5.6.0",
936 | "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
937 | "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
938 | "dependencies": {
939 | "xtend": "^4.0.0"
940 | },
941 | "funding": {
942 | "type": "github",
943 | "url": "https://github.com/sponsors/wooorm"
944 | }
945 | },
946 | "node_modules/react": {
947 | "resolved": "../node_modules/react",
948 | "link": true
949 | },
950 | "node_modules/react-dom": {
951 | "resolved": "../node_modules/react-dom",
952 | "link": true
953 | },
954 | "node_modules/react-full-page-scroller": {
955 | "resolved": "..",
956 | "link": true
957 | },
958 | "node_modules/react-scripts": {
959 | "resolved": "../node_modules/react-scripts",
960 | "link": true
961 | },
962 | "node_modules/react-syntax-highlighter": {
963 | "version": "15.4.4",
964 | "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.4.tgz",
965 | "integrity": "sha512-PsOFHNTzkb3OroXdoR897eKN5EZ6grht1iM+f1lJSq7/L0YVnkJaNVwC3wEUYPOAmeyl5xyer1DjL6MrumO6Zw==",
966 | "dependencies": {
967 | "@babel/runtime": "^7.3.1",
968 | "highlight.js": "^10.4.1",
969 | "lowlight": "^1.17.0",
970 | "prismjs": "^1.22.0",
971 | "refractor": "^3.2.0"
972 | },
973 | "peerDependencies": {
974 | "react": ">= 0.14.0"
975 | }
976 | },
977 | "node_modules/refractor": {
978 | "version": "3.4.0",
979 | "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.4.0.tgz",
980 | "integrity": "sha512-dBeD02lC5eytm9Gld2Mx0cMcnR+zhSnsTfPpWqFaMgUMJfC9A6bcN3Br/NaXrnBJcuxnLFR90k1jrkaSyV8umg==",
981 | "dependencies": {
982 | "hastscript": "^6.0.0",
983 | "parse-entities": "^2.0.0",
984 | "prismjs": "~1.24.0"
985 | },
986 | "funding": {
987 | "type": "github",
988 | "url": "https://github.com/sponsors/wooorm"
989 | }
990 | },
991 | "node_modules/refractor/node_modules/prismjs": {
992 | "version": "1.24.1",
993 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz",
994 | "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow=="
995 | },
996 | "node_modules/regenerator-runtime": {
997 | "version": "0.13.9",
998 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
999 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
1000 | },
1001 | "node_modules/safe-buffer": {
1002 | "version": "5.1.2",
1003 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1004 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1005 | "dev": true,
1006 | "peer": true
1007 | },
1008 | "node_modules/semver": {
1009 | "version": "6.3.0",
1010 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1011 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1012 | "dev": true,
1013 | "peer": true,
1014 | "bin": {
1015 | "semver": "bin/semver.js"
1016 | }
1017 | },
1018 | "node_modules/source-map": {
1019 | "version": "0.5.7",
1020 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1021 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1022 | "dev": true,
1023 | "peer": true,
1024 | "engines": {
1025 | "node": ">=0.10.0"
1026 | }
1027 | },
1028 | "node_modules/space-separated-tokens": {
1029 | "version": "1.1.5",
1030 | "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
1031 | "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
1032 | "funding": {
1033 | "type": "github",
1034 | "url": "https://github.com/sponsors/wooorm"
1035 | }
1036 | },
1037 | "node_modules/supports-color": {
1038 | "version": "5.5.0",
1039 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1040 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1041 | "dev": true,
1042 | "peer": true,
1043 | "dependencies": {
1044 | "has-flag": "^3.0.0"
1045 | },
1046 | "engines": {
1047 | "node": ">=4"
1048 | }
1049 | },
1050 | "node_modules/to-fast-properties": {
1051 | "version": "2.0.0",
1052 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1053 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
1054 | "dev": true,
1055 | "peer": true,
1056 | "engines": {
1057 | "node": ">=4"
1058 | }
1059 | },
1060 | "node_modules/xtend": {
1061 | "version": "4.0.2",
1062 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1063 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1064 | "engines": {
1065 | "node": ">=0.4"
1066 | }
1067 | }
1068 | },
1069 | "dependencies": {
1070 | "@babel/code-frame": {
1071 | "version": "7.14.5",
1072 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
1073 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
1074 | "dev": true,
1075 | "peer": true,
1076 | "requires": {
1077 | "@babel/highlight": "^7.14.5"
1078 | }
1079 | },
1080 | "@babel/compat-data": {
1081 | "version": "7.15.0",
1082 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
1083 | "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
1084 | "dev": true,
1085 | "peer": true
1086 | },
1087 | "@babel/core": {
1088 | "version": "7.15.5",
1089 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz",
1090 | "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==",
1091 | "dev": true,
1092 | "peer": true,
1093 | "requires": {
1094 | "@babel/code-frame": "^7.14.5",
1095 | "@babel/generator": "^7.15.4",
1096 | "@babel/helper-compilation-targets": "^7.15.4",
1097 | "@babel/helper-module-transforms": "^7.15.4",
1098 | "@babel/helpers": "^7.15.4",
1099 | "@babel/parser": "^7.15.5",
1100 | "@babel/template": "^7.15.4",
1101 | "@babel/traverse": "^7.15.4",
1102 | "@babel/types": "^7.15.4",
1103 | "convert-source-map": "^1.7.0",
1104 | "debug": "^4.1.0",
1105 | "gensync": "^1.0.0-beta.2",
1106 | "json5": "^2.1.2",
1107 | "semver": "^6.3.0",
1108 | "source-map": "^0.5.0"
1109 | }
1110 | },
1111 | "@babel/generator": {
1112 | "version": "7.15.4",
1113 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
1114 | "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
1115 | "dev": true,
1116 | "peer": true,
1117 | "requires": {
1118 | "@babel/types": "^7.15.4",
1119 | "jsesc": "^2.5.1",
1120 | "source-map": "^0.5.0"
1121 | }
1122 | },
1123 | "@babel/helper-compilation-targets": {
1124 | "version": "7.15.4",
1125 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz",
1126 | "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
1127 | "dev": true,
1128 | "peer": true,
1129 | "requires": {
1130 | "@babel/compat-data": "^7.15.0",
1131 | "@babel/helper-validator-option": "^7.14.5",
1132 | "browserslist": "^4.16.6",
1133 | "semver": "^6.3.0"
1134 | }
1135 | },
1136 | "@babel/helper-function-name": {
1137 | "version": "7.15.4",
1138 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
1139 | "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
1140 | "dev": true,
1141 | "peer": true,
1142 | "requires": {
1143 | "@babel/helper-get-function-arity": "^7.15.4",
1144 | "@babel/template": "^7.15.4",
1145 | "@babel/types": "^7.15.4"
1146 | }
1147 | },
1148 | "@babel/helper-get-function-arity": {
1149 | "version": "7.15.4",
1150 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
1151 | "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
1152 | "dev": true,
1153 | "peer": true,
1154 | "requires": {
1155 | "@babel/types": "^7.15.4"
1156 | }
1157 | },
1158 | "@babel/helper-hoist-variables": {
1159 | "version": "7.15.4",
1160 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
1161 | "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
1162 | "dev": true,
1163 | "peer": true,
1164 | "requires": {
1165 | "@babel/types": "^7.15.4"
1166 | }
1167 | },
1168 | "@babel/helper-member-expression-to-functions": {
1169 | "version": "7.15.4",
1170 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz",
1171 | "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
1172 | "dev": true,
1173 | "peer": true,
1174 | "requires": {
1175 | "@babel/types": "^7.15.4"
1176 | }
1177 | },
1178 | "@babel/helper-module-imports": {
1179 | "version": "7.15.4",
1180 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz",
1181 | "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
1182 | "dev": true,
1183 | "peer": true,
1184 | "requires": {
1185 | "@babel/types": "^7.15.4"
1186 | }
1187 | },
1188 | "@babel/helper-module-transforms": {
1189 | "version": "7.15.4",
1190 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
1191 | "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
1192 | "dev": true,
1193 | "peer": true,
1194 | "requires": {
1195 | "@babel/helper-module-imports": "^7.15.4",
1196 | "@babel/helper-replace-supers": "^7.15.4",
1197 | "@babel/helper-simple-access": "^7.15.4",
1198 | "@babel/helper-split-export-declaration": "^7.15.4",
1199 | "@babel/helper-validator-identifier": "^7.14.9",
1200 | "@babel/template": "^7.15.4",
1201 | "@babel/traverse": "^7.15.4",
1202 | "@babel/types": "^7.15.4"
1203 | }
1204 | },
1205 | "@babel/helper-optimise-call-expression": {
1206 | "version": "7.15.4",
1207 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
1208 | "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
1209 | "dev": true,
1210 | "peer": true,
1211 | "requires": {
1212 | "@babel/types": "^7.15.4"
1213 | }
1214 | },
1215 | "@babel/helper-plugin-utils": {
1216 | "version": "7.14.5",
1217 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
1218 | "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
1219 | "dev": true
1220 | },
1221 | "@babel/helper-replace-supers": {
1222 | "version": "7.15.4",
1223 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz",
1224 | "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
1225 | "dev": true,
1226 | "peer": true,
1227 | "requires": {
1228 | "@babel/helper-member-expression-to-functions": "^7.15.4",
1229 | "@babel/helper-optimise-call-expression": "^7.15.4",
1230 | "@babel/traverse": "^7.15.4",
1231 | "@babel/types": "^7.15.4"
1232 | }
1233 | },
1234 | "@babel/helper-simple-access": {
1235 | "version": "7.15.4",
1236 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz",
1237 | "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
1238 | "dev": true,
1239 | "peer": true,
1240 | "requires": {
1241 | "@babel/types": "^7.15.4"
1242 | }
1243 | },
1244 | "@babel/helper-split-export-declaration": {
1245 | "version": "7.15.4",
1246 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
1247 | "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
1248 | "dev": true,
1249 | "peer": true,
1250 | "requires": {
1251 | "@babel/types": "^7.15.4"
1252 | }
1253 | },
1254 | "@babel/helper-validator-identifier": {
1255 | "version": "7.14.9",
1256 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
1257 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
1258 | "dev": true,
1259 | "peer": true
1260 | },
1261 | "@babel/helper-validator-option": {
1262 | "version": "7.14.5",
1263 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
1264 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
1265 | "dev": true,
1266 | "peer": true
1267 | },
1268 | "@babel/helpers": {
1269 | "version": "7.15.4",
1270 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz",
1271 | "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
1272 | "dev": true,
1273 | "peer": true,
1274 | "requires": {
1275 | "@babel/template": "^7.15.4",
1276 | "@babel/traverse": "^7.15.4",
1277 | "@babel/types": "^7.15.4"
1278 | }
1279 | },
1280 | "@babel/highlight": {
1281 | "version": "7.14.5",
1282 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
1283 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
1284 | "dev": true,
1285 | "peer": true,
1286 | "requires": {
1287 | "@babel/helper-validator-identifier": "^7.14.5",
1288 | "chalk": "^2.0.0",
1289 | "js-tokens": "^4.0.0"
1290 | }
1291 | },
1292 | "@babel/parser": {
1293 | "version": "7.15.6",
1294 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz",
1295 | "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==",
1296 | "dev": true,
1297 | "peer": true
1298 | },
1299 | "@babel/plugin-syntax-object-rest-spread": {
1300 | "version": "7.8.3",
1301 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
1302 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
1303 | "dev": true,
1304 | "requires": {
1305 | "@babel/helper-plugin-utils": "^7.8.0"
1306 | }
1307 | },
1308 | "@babel/runtime": {
1309 | "version": "7.15.4",
1310 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
1311 | "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
1312 | "requires": {
1313 | "regenerator-runtime": "^0.13.4"
1314 | }
1315 | },
1316 | "@babel/template": {
1317 | "version": "7.15.4",
1318 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
1319 | "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
1320 | "dev": true,
1321 | "peer": true,
1322 | "requires": {
1323 | "@babel/code-frame": "^7.14.5",
1324 | "@babel/parser": "^7.15.4",
1325 | "@babel/types": "^7.15.4"
1326 | }
1327 | },
1328 | "@babel/traverse": {
1329 | "version": "7.15.4",
1330 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
1331 | "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
1332 | "dev": true,
1333 | "peer": true,
1334 | "requires": {
1335 | "@babel/code-frame": "^7.14.5",
1336 | "@babel/generator": "^7.15.4",
1337 | "@babel/helper-function-name": "^7.15.4",
1338 | "@babel/helper-hoist-variables": "^7.15.4",
1339 | "@babel/helper-split-export-declaration": "^7.15.4",
1340 | "@babel/parser": "^7.15.4",
1341 | "@babel/types": "^7.15.4",
1342 | "debug": "^4.1.0",
1343 | "globals": "^11.1.0"
1344 | }
1345 | },
1346 | "@babel/types": {
1347 | "version": "7.15.6",
1348 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
1349 | "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
1350 | "dev": true,
1351 | "peer": true,
1352 | "requires": {
1353 | "@babel/helper-validator-identifier": "^7.14.9",
1354 | "to-fast-properties": "^2.0.0"
1355 | }
1356 | },
1357 | "@types/hast": {
1358 | "version": "2.3.4",
1359 | "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
1360 | "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
1361 | "requires": {
1362 | "@types/unist": "*"
1363 | }
1364 | },
1365 | "@types/unist": {
1366 | "version": "2.0.6",
1367 | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
1368 | "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
1369 | },
1370 | "ansi-styles": {
1371 | "version": "3.2.1",
1372 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1373 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1374 | "dev": true,
1375 | "peer": true,
1376 | "requires": {
1377 | "color-convert": "^1.9.0"
1378 | }
1379 | },
1380 | "browserslist": {
1381 | "version": "4.17.0",
1382 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz",
1383 | "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==",
1384 | "dev": true,
1385 | "peer": true,
1386 | "requires": {
1387 | "caniuse-lite": "^1.0.30001254",
1388 | "colorette": "^1.3.0",
1389 | "electron-to-chromium": "^1.3.830",
1390 | "escalade": "^3.1.1",
1391 | "node-releases": "^1.1.75"
1392 | }
1393 | },
1394 | "caniuse-lite": {
1395 | "version": "1.0.30001257",
1396 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz",
1397 | "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==",
1398 | "dev": true,
1399 | "peer": true
1400 | },
1401 | "chalk": {
1402 | "version": "2.4.2",
1403 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1404 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1405 | "dev": true,
1406 | "peer": true,
1407 | "requires": {
1408 | "ansi-styles": "^3.2.1",
1409 | "escape-string-regexp": "^1.0.5",
1410 | "supports-color": "^5.3.0"
1411 | }
1412 | },
1413 | "character-entities": {
1414 | "version": "1.2.4",
1415 | "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
1416 | "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="
1417 | },
1418 | "character-entities-legacy": {
1419 | "version": "1.1.4",
1420 | "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
1421 | "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
1422 | },
1423 | "character-reference-invalid": {
1424 | "version": "1.1.4",
1425 | "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
1426 | "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
1427 | },
1428 | "color-convert": {
1429 | "version": "1.9.3",
1430 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1431 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1432 | "dev": true,
1433 | "peer": true,
1434 | "requires": {
1435 | "color-name": "1.1.3"
1436 | }
1437 | },
1438 | "color-name": {
1439 | "version": "1.1.3",
1440 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1441 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
1442 | "dev": true,
1443 | "peer": true
1444 | },
1445 | "colorette": {
1446 | "version": "1.4.0",
1447 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
1448 | "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
1449 | "dev": true,
1450 | "peer": true
1451 | },
1452 | "comma-separated-tokens": {
1453 | "version": "1.0.8",
1454 | "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
1455 | "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
1456 | },
1457 | "convert-source-map": {
1458 | "version": "1.8.0",
1459 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
1460 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
1461 | "dev": true,
1462 | "peer": true,
1463 | "requires": {
1464 | "safe-buffer": "~5.1.1"
1465 | }
1466 | },
1467 | "debug": {
1468 | "version": "4.3.2",
1469 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
1470 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
1471 | "dev": true,
1472 | "peer": true,
1473 | "requires": {
1474 | "ms": "2.1.2"
1475 | }
1476 | },
1477 | "electron-to-chromium": {
1478 | "version": "1.3.839",
1479 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.839.tgz",
1480 | "integrity": "sha512-0O7uPs9LJNjQ/U5mW78qW8gXv9H6Ba3DHZ5/yt8aBsvomOWDkV3MddT7enUYvLQEUVOURjWmgJJWVZ3K98tIwQ==",
1481 | "dev": true,
1482 | "peer": true
1483 | },
1484 | "escalade": {
1485 | "version": "3.1.1",
1486 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1487 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1488 | "dev": true,
1489 | "peer": true
1490 | },
1491 | "escape-string-regexp": {
1492 | "version": "1.0.5",
1493 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1494 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1495 | "dev": true,
1496 | "peer": true
1497 | },
1498 | "fault": {
1499 | "version": "1.0.4",
1500 | "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
1501 | "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
1502 | "requires": {
1503 | "format": "^0.2.0"
1504 | }
1505 | },
1506 | "format": {
1507 | "version": "0.2.2",
1508 | "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
1509 | "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
1510 | },
1511 | "gensync": {
1512 | "version": "1.0.0-beta.2",
1513 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1514 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1515 | "dev": true,
1516 | "peer": true
1517 | },
1518 | "globals": {
1519 | "version": "11.12.0",
1520 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1521 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1522 | "dev": true,
1523 | "peer": true
1524 | },
1525 | "has-flag": {
1526 | "version": "3.0.0",
1527 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1528 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1529 | "dev": true,
1530 | "peer": true
1531 | },
1532 | "hast-util-parse-selector": {
1533 | "version": "2.2.5",
1534 | "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
1535 | "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ=="
1536 | },
1537 | "hastscript": {
1538 | "version": "6.0.0",
1539 | "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
1540 | "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
1541 | "requires": {
1542 | "@types/hast": "^2.0.0",
1543 | "comma-separated-tokens": "^1.0.0",
1544 | "hast-util-parse-selector": "^2.0.0",
1545 | "property-information": "^5.0.0",
1546 | "space-separated-tokens": "^1.0.0"
1547 | }
1548 | },
1549 | "highlight.js": {
1550 | "version": "10.7.3",
1551 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
1552 | "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="
1553 | },
1554 | "is-alphabetical": {
1555 | "version": "1.0.4",
1556 | "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
1557 | "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
1558 | },
1559 | "is-alphanumerical": {
1560 | "version": "1.0.4",
1561 | "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
1562 | "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
1563 | "requires": {
1564 | "is-alphabetical": "^1.0.0",
1565 | "is-decimal": "^1.0.0"
1566 | }
1567 | },
1568 | "is-decimal": {
1569 | "version": "1.0.4",
1570 | "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
1571 | "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="
1572 | },
1573 | "is-hexadecimal": {
1574 | "version": "1.0.4",
1575 | "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
1576 | "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
1577 | },
1578 | "js-tokens": {
1579 | "version": "4.0.0",
1580 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1581 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1582 | "dev": true,
1583 | "peer": true
1584 | },
1585 | "jsesc": {
1586 | "version": "2.5.2",
1587 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1588 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1589 | "dev": true,
1590 | "peer": true
1591 | },
1592 | "json5": {
1593 | "version": "2.2.0",
1594 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
1595 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
1596 | "dev": true,
1597 | "peer": true,
1598 | "requires": {
1599 | "minimist": "^1.2.5"
1600 | }
1601 | },
1602 | "lowlight": {
1603 | "version": "1.20.0",
1604 | "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
1605 | "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
1606 | "requires": {
1607 | "fault": "^1.0.0",
1608 | "highlight.js": "~10.7.0"
1609 | }
1610 | },
1611 | "minimist": {
1612 | "version": "1.2.5",
1613 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1614 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
1615 | "dev": true,
1616 | "peer": true
1617 | },
1618 | "ms": {
1619 | "version": "2.1.2",
1620 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1621 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1622 | "dev": true,
1623 | "peer": true
1624 | },
1625 | "node-releases": {
1626 | "version": "1.1.75",
1627 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz",
1628 | "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==",
1629 | "dev": true,
1630 | "peer": true
1631 | },
1632 | "parse-entities": {
1633 | "version": "2.0.0",
1634 | "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
1635 | "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
1636 | "requires": {
1637 | "character-entities": "^1.0.0",
1638 | "character-entities-legacy": "^1.0.0",
1639 | "character-reference-invalid": "^1.0.0",
1640 | "is-alphanumerical": "^1.0.0",
1641 | "is-decimal": "^1.0.0",
1642 | "is-hexadecimal": "^1.0.0"
1643 | }
1644 | },
1645 | "prismjs": {
1646 | "version": "1.25.0",
1647 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz",
1648 | "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg=="
1649 | },
1650 | "property-information": {
1651 | "version": "5.6.0",
1652 | "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
1653 | "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
1654 | "requires": {
1655 | "xtend": "^4.0.0"
1656 | }
1657 | },
1658 | "react": {
1659 | "version": "file:../node_modules/react",
1660 | "requires": {
1661 | "loose-envify": "^1.1.0",
1662 | "object-assign": "^4.1.1",
1663 | "prop-types": "^15.6.2"
1664 | }
1665 | },
1666 | "react-dom": {
1667 | "version": "file:../node_modules/react-dom",
1668 | "requires": {
1669 | "loose-envify": "^1.1.0",
1670 | "object-assign": "^4.1.1",
1671 | "prop-types": "^15.6.2",
1672 | "scheduler": "^0.19.1"
1673 | }
1674 | },
1675 | "react-full-page-scroller": {
1676 | "version": "file:..",
1677 | "requires": {
1678 | "babel-eslint": "^10.0.3",
1679 | "cross-env": "^7.0.2",
1680 | "eslint": "^6.8.0",
1681 | "eslint-config-prettier": "^6.7.0",
1682 | "eslint-config-standard": "^14.1.0",
1683 | "eslint-config-standard-react": "^9.2.0",
1684 | "eslint-plugin-import": "^2.18.2",
1685 | "eslint-plugin-node": "^11.0.0",
1686 | "eslint-plugin-prettier": "^3.1.1",
1687 | "eslint-plugin-promise": "^4.2.1",
1688 | "eslint-plugin-react": "^7.17.0",
1689 | "eslint-plugin-standard": "^4.0.1",
1690 | "gh-pages": "^2.2.0",
1691 | "microbundle-crl": "^0.13.10",
1692 | "npm-run-all": "^4.1.5",
1693 | "prettier": "^2.0.4",
1694 | "prop-types": "^15.7.2",
1695 | "react": "^16.13.1",
1696 | "react-dom": "^16.13.1",
1697 | "react-scripts": "^3.4.1"
1698 | },
1699 | "dependencies": {
1700 | "react": {
1701 | "version": "16.14.0",
1702 | "requires": {
1703 | "loose-envify": "^1.1.0",
1704 | "object-assign": "^4.1.1",
1705 | "prop-types": "^15.6.2"
1706 | }
1707 | },
1708 | "react-dom": {
1709 | "version": "16.14.0",
1710 | "requires": {
1711 | "loose-envify": "^1.1.0",
1712 | "object-assign": "^4.1.1",
1713 | "prop-types": "^15.6.2",
1714 | "scheduler": "^0.19.1"
1715 | }
1716 | },
1717 | "react-scripts": {
1718 | "version": "3.4.4",
1719 | "requires": {
1720 | "@babel/core": "7.9.0",
1721 | "@svgr/webpack": "4.3.3",
1722 | "@typescript-eslint/eslint-plugin": "^2.10.0",
1723 | "@typescript-eslint/parser": "^2.10.0",
1724 | "babel-eslint": "10.1.0",
1725 | "babel-jest": "^24.9.0",
1726 | "babel-loader": "8.1.0",
1727 | "babel-plugin-named-asset-import": "^0.3.6",
1728 | "babel-preset-react-app": "^9.1.2",
1729 | "camelcase": "^5.3.1",
1730 | "case-sensitive-paths-webpack-plugin": "2.3.0",
1731 | "css-loader": "3.4.2",
1732 | "dotenv": "8.2.0",
1733 | "dotenv-expand": "5.1.0",
1734 | "eslint": "^6.6.0",
1735 | "eslint-config-react-app": "^5.2.1",
1736 | "eslint-loader": "3.0.3",
1737 | "eslint-plugin-flowtype": "4.6.0",
1738 | "eslint-plugin-import": "2.20.1",
1739 | "eslint-plugin-jsx-a11y": "6.2.3",
1740 | "eslint-plugin-react": "7.19.0",
1741 | "eslint-plugin-react-hooks": "^1.6.1",
1742 | "file-loader": "4.3.0",
1743 | "fs-extra": "^8.1.0",
1744 | "fsevents": "2.1.2",
1745 | "html-webpack-plugin": "4.0.0-beta.11",
1746 | "identity-obj-proxy": "3.0.0",
1747 | "jest": "24.9.0",
1748 | "jest-environment-jsdom-fourteen": "1.0.1",
1749 | "jest-resolve": "24.9.0",
1750 | "jest-watch-typeahead": "0.4.2",
1751 | "mini-css-extract-plugin": "0.9.0",
1752 | "optimize-css-assets-webpack-plugin": "5.0.3",
1753 | "pnp-webpack-plugin": "1.6.4",
1754 | "postcss-flexbugs-fixes": "4.1.0",
1755 | "postcss-loader": "3.0.0",
1756 | "postcss-normalize": "8.0.1",
1757 | "postcss-preset-env": "6.7.0",
1758 | "postcss-safe-parser": "4.0.1",
1759 | "react-app-polyfill": "^1.0.6",
1760 | "react-dev-utils": "^10.2.1",
1761 | "resolve": "1.15.0",
1762 | "resolve-url-loader": "3.1.2",
1763 | "sass-loader": "8.0.2",
1764 | "semver": "6.3.0",
1765 | "style-loader": "0.23.1",
1766 | "terser-webpack-plugin": "2.3.8",
1767 | "ts-pnp": "1.1.6",
1768 | "url-loader": "2.3.0",
1769 | "webpack": "4.42.0",
1770 | "webpack-dev-server": "3.11.0",
1771 | "webpack-manifest-plugin": "2.2.0",
1772 | "workbox-webpack-plugin": "4.3.1"
1773 | }
1774 | }
1775 | }
1776 | },
1777 | "react-scripts": {
1778 | "version": "file:../node_modules/react-scripts",
1779 | "requires": {
1780 | "@babel/core": "7.9.0",
1781 | "@svgr/webpack": "4.3.3",
1782 | "@typescript-eslint/eslint-plugin": "^2.10.0",
1783 | "@typescript-eslint/parser": "^2.10.0",
1784 | "babel-eslint": "10.1.0",
1785 | "babel-jest": "^24.9.0",
1786 | "babel-loader": "8.1.0",
1787 | "babel-plugin-named-asset-import": "^0.3.6",
1788 | "babel-preset-react-app": "^9.1.2",
1789 | "camelcase": "^5.3.1",
1790 | "case-sensitive-paths-webpack-plugin": "2.3.0",
1791 | "css-loader": "3.4.2",
1792 | "dotenv": "8.2.0",
1793 | "dotenv-expand": "5.1.0",
1794 | "eslint": "^6.6.0",
1795 | "eslint-config-react-app": "^5.2.1",
1796 | "eslint-loader": "3.0.3",
1797 | "eslint-plugin-flowtype": "4.6.0",
1798 | "eslint-plugin-import": "2.20.1",
1799 | "eslint-plugin-jsx-a11y": "6.2.3",
1800 | "eslint-plugin-react": "7.19.0",
1801 | "eslint-plugin-react-hooks": "^1.6.1",
1802 | "file-loader": "4.3.0",
1803 | "fs-extra": "^8.1.0",
1804 | "fsevents": "2.1.2",
1805 | "html-webpack-plugin": "4.0.0-beta.11",
1806 | "identity-obj-proxy": "3.0.0",
1807 | "jest": "24.9.0",
1808 | "jest-environment-jsdom-fourteen": "1.0.1",
1809 | "jest-resolve": "24.9.0",
1810 | "jest-watch-typeahead": "0.4.2",
1811 | "mini-css-extract-plugin": "0.9.0",
1812 | "optimize-css-assets-webpack-plugin": "5.0.3",
1813 | "pnp-webpack-plugin": "1.6.4",
1814 | "postcss-flexbugs-fixes": "4.1.0",
1815 | "postcss-loader": "3.0.0",
1816 | "postcss-normalize": "8.0.1",
1817 | "postcss-preset-env": "6.7.0",
1818 | "postcss-safe-parser": "4.0.1",
1819 | "react-app-polyfill": "^1.0.6",
1820 | "react-dev-utils": "^10.2.1",
1821 | "resolve": "1.15.0",
1822 | "resolve-url-loader": "3.1.2",
1823 | "sass-loader": "8.0.2",
1824 | "semver": "6.3.0",
1825 | "style-loader": "0.23.1",
1826 | "terser-webpack-plugin": "2.3.8",
1827 | "ts-pnp": "1.1.6",
1828 | "url-loader": "2.3.0",
1829 | "webpack": "4.42.0",
1830 | "webpack-dev-server": "3.11.0",
1831 | "webpack-manifest-plugin": "2.2.0",
1832 | "workbox-webpack-plugin": "4.3.1"
1833 | }
1834 | },
1835 | "react-syntax-highlighter": {
1836 | "version": "15.4.4",
1837 | "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.4.tgz",
1838 | "integrity": "sha512-PsOFHNTzkb3OroXdoR897eKN5EZ6grht1iM+f1lJSq7/L0YVnkJaNVwC3wEUYPOAmeyl5xyer1DjL6MrumO6Zw==",
1839 | "requires": {
1840 | "@babel/runtime": "^7.3.1",
1841 | "highlight.js": "^10.4.1",
1842 | "lowlight": "^1.17.0",
1843 | "prismjs": "^1.22.0",
1844 | "refractor": "^3.2.0"
1845 | }
1846 | },
1847 | "refractor": {
1848 | "version": "3.4.0",
1849 | "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.4.0.tgz",
1850 | "integrity": "sha512-dBeD02lC5eytm9Gld2Mx0cMcnR+zhSnsTfPpWqFaMgUMJfC9A6bcN3Br/NaXrnBJcuxnLFR90k1jrkaSyV8umg==",
1851 | "requires": {
1852 | "hastscript": "^6.0.0",
1853 | "parse-entities": "^2.0.0",
1854 | "prismjs": "~1.24.0"
1855 | },
1856 | "dependencies": {
1857 | "prismjs": {
1858 | "version": "1.24.1",
1859 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz",
1860 | "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow=="
1861 | }
1862 | }
1863 | },
1864 | "regenerator-runtime": {
1865 | "version": "0.13.9",
1866 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
1867 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
1868 | },
1869 | "safe-buffer": {
1870 | "version": "5.1.2",
1871 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1872 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1873 | "dev": true,
1874 | "peer": true
1875 | },
1876 | "semver": {
1877 | "version": "6.3.0",
1878 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1879 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1880 | "dev": true,
1881 | "peer": true
1882 | },
1883 | "source-map": {
1884 | "version": "0.5.7",
1885 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1886 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1887 | "dev": true,
1888 | "peer": true
1889 | },
1890 | "space-separated-tokens": {
1891 | "version": "1.1.5",
1892 | "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
1893 | "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
1894 | },
1895 | "supports-color": {
1896 | "version": "5.5.0",
1897 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1898 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1899 | "dev": true,
1900 | "peer": true,
1901 | "requires": {
1902 | "has-flag": "^3.0.0"
1903 | }
1904 | },
1905 | "to-fast-properties": {
1906 | "version": "2.0.0",
1907 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1908 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
1909 | "dev": true,
1910 | "peer": true
1911 | },
1912 | "xtend": {
1913 | "version": "4.0.2",
1914 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1915 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
1916 | }
1917 | }
1918 | }
1919 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-full-page-scroller-example",
3 | "homepage": ".",
4 | "version": "0.0.0",
5 | "private": true,
6 | "scripts": {
7 | "start": "node ../node_modules/react-scripts/bin/react-scripts.js start",
8 | "build": "node ../node_modules/react-scripts/bin/react-scripts.js build",
9 | "test": "node ../node_modules/react-scripts/bin/react-scripts.js test",
10 | "eject": "node ../node_modules/react-scripts/bin/react-scripts.js eject"
11 | },
12 | "dependencies": {
13 | "react": "file:../node_modules/react",
14 | "react-dom": "file:../node_modules/react-dom",
15 | "react-full-page-scroller": "file:..",
16 | "react-scripts": "file:../node_modules/react-scripts",
17 | "react-syntax-highlighter": "^15.4.4"
18 | },
19 | "devDependencies": {
20 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3"
21 | },
22 | "eslintConfig": {
23 | "extends": "react-app"
24 | },
25 | "browserslist": [
26 | ">0.2%",
27 | "not dead",
28 | "not ie <= 11",
29 | "not op_mini all"
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/example/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ibrahim-ih/react-full-page-scroller/4ccf918594dc8b7d268079d55f4a83a9eaa0cab4/example/public/favicon.ico
--------------------------------------------------------------------------------
/example/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
16 |
17 |
18 |
27 | react-full-page-scroller
28 |
29 |
30 |
31 |
34 |
35 |
36 |
37 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "react-full-page-scroller",
3 | "name": "react-full-page-scroller",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "start_url": ".",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/example/src/1200px-React-icon.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ibrahim-ih/react-full-page-scroller/4ccf918594dc8b7d268079d55f4a83a9eaa0cab4/example/src/1200px-React-icon.svg.png
--------------------------------------------------------------------------------
/example/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | import MyComponent from 'react-full-page-scroller'
4 | import logo from './1200px-React-icon.svg.png'
5 | import { dark } from 'react-syntax-highlighter/dist/esm/styles/prism';
6 | import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
7 |
8 | const App = () => {
9 | const nav = [
10 | {
11 | id: 1,
12 | title: 'Title 1',
13 | className: 'page-nav-button',
14 | style: { width: '100%' }
15 | },
16 | {
17 | id: 2,
18 | title: 'Title 2',
19 | className: 'page-nav-button',
20 | style: { width: '100%' }
21 | },
22 | {
23 | id: 3,
24 | title: 'Title 3',
25 | className: 'page-nav-button',
26 | style: { width: '100%' }
27 | }
28 | ]
29 | const indicatorStyle = {
30 | height: '8px',
31 | width: '8px',
32 | margin: '10px',
33 | borderRadius: '4px',
34 | backgroundColor: 'white',
35 | transition: 'width 500ms ease'
36 | }
37 | const indicatorStyleActive = { width: '20px' }
38 |
39 | const codeString ="import React, { Component } from 'react'\n" +
40 | "\n" +
41 | "import MyComponent from 'react-full-page-scroller'\n" +
42 | "import 'react-full-page-scroller/dist/index.css'\n" +
43 | "\n" +
44 | "class Example extends Component {\n" +
45 | " render() {\n" +
46 | " return (\n" +
47 | " \n" +
48 | " \n" +
49 | "
1
\n" +
50 | " \n" +
51 | " \n" +
52 | "
2
\n" +
53 | " \n" +
54 | " \n" +
55 | "
3
\n" +
56 | " \n" +
57 | " \n" +
58 | " )\n" +
59 | " }\n" +
60 | "}"
61 |
62 | return (
63 |
68 |
76 |

77 |
React Full Page Scroller
78 |
79 |
80 |
88 |
USAGE
89 |
90 |
91 | {codeString}
92 |
93 |
94 |
95 |
103 |
Section 3
104 |
105 |
106 | )
107 | }
108 |
109 | export default App
110 |
--------------------------------------------------------------------------------
/example/src/App.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom'
3 | import App from './App'
4 |
5 | it('renders without crashing', () => {
6 | const div = document.createElement('div')
7 | ReactDOM.render(, div)
8 | ReactDOM.unmountComponentAtNode(div)
9 | })
10 |
--------------------------------------------------------------------------------
/example/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | scroll-behavior: smooth;
4 | }
5 |
6 | .page-scroller-info {
7 | position: fixed;
8 | z-index: 99;
9 | display: flex;
10 | }
11 |
12 | .info-block {
13 | display: flex;
14 | flex-direction: column;
15 | margin: 10px;
16 | }
17 |
18 | .info-block p {
19 | margin: 0;
20 | }
21 |
22 | .page {
23 | width: 50vw;
24 | display: flex;
25 | align-items: center;
26 | justify-content: center;
27 | }
28 |
29 | .page-number {
30 | font-size: 300%;
31 | color: #f5f0e1;
32 | }
33 |
34 | .page-nav {
35 | height: 50px;
36 | position: fixed;
37 | display: flex;
38 | align-self: flex-end;
39 | align-items: center;
40 | justify-content: flex-end;
41 | }
42 |
43 | .page-nav-button {
44 | padding: 10px;
45 | margin: 10px;
46 | color: white;
47 | border-bottom: 2px solid white;
48 | cursor: pointer;
49 | }
50 | .bg-blue {
51 | background-color: #1e3d59;
52 | }
53 | .bg-red {
54 | background-color: #ffc13b;
55 | }
56 | .bg-green {
57 | background-color: #ff6e40;
58 | }
59 |
--------------------------------------------------------------------------------
/example/src/index.js:
--------------------------------------------------------------------------------
1 | import './index.css'
2 |
3 | import React from 'react'
4 | import ReactDOM from 'react-dom'
5 | import App from './App'
6 |
7 | ReactDOM.render(, document.getElementById('root'))
8 |
--------------------------------------------------------------------------------
/example/src/react-full-page-scroller.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ibrahim-ih/react-full-page-scroller/4ccf918594dc8b7d268079d55f4a83a9eaa0cab4/example/src/react-full-page-scroller.gif
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-full-page-scroller",
3 | "version": "0.1.6",
4 | "description": "A react module for full page scroll",
5 | "author": "Ibrahim Haouari",
6 | "license": "MIT",
7 | "publishConfig": {
8 | "registry": "https://npm.pkg.github.com/ibrahim-ih"
9 | },
10 | "repository": "git://github.com/ibrahim-ih/react-full-page-scroller.git",
11 | "main": "dist/index.js",
12 | "module": "dist/index.modern.js",
13 | "source": "src/index.js",
14 | "engines": {
15 | "node": ">=10"
16 | },
17 | "scripts": {
18 | "build": "microbundle-crl --no-compress --format modern,cjs",
19 | "start": "microbundle-crl watch --no-compress --format modern,cjs",
20 | "prepare": "run-s build",
21 | "test": "run-s test:unit test:lint test:build",
22 | "test:build": "run-s build",
23 | "test:lint": "eslint .",
24 | "test:unit": "cross-env CI=1 react-scripts test --env=jsdom",
25 | "test:watch": "react-scripts test --env=jsdom",
26 | "predeploy": "cd example && npm install && npm run build",
27 | "deploy": "gh-pages -d example/build"
28 | },
29 | "peerDependencies": {
30 | "react": "^16.0.0"
31 | },
32 | "devDependencies": {
33 | "babel-eslint": "^10.0.3",
34 | "cross-env": "^7.0.2",
35 | "eslint": "^6.8.0",
36 | "eslint-config-prettier": "^6.7.0",
37 | "eslint-config-standard": "^14.1.0",
38 | "eslint-config-standard-react": "^9.2.0",
39 | "eslint-plugin-import": "^2.18.2",
40 | "eslint-plugin-node": "^11.0.0",
41 | "eslint-plugin-prettier": "^3.1.1",
42 | "eslint-plugin-promise": "^4.2.1",
43 | "eslint-plugin-react": "^7.17.0",
44 | "eslint-plugin-standard": "^4.0.1",
45 | "gh-pages": "^2.2.0",
46 | "microbundle-crl": "^0.13.10",
47 | "npm-run-all": "^4.1.5",
48 | "prettier": "^2.0.4",
49 | "prop-types": "^15.7.2",
50 | "react": "^16.13.1",
51 | "react-dom": "^16.13.1",
52 | "react-scripts": "^3.4.1"
53 | },
54 | "files": [
55 | "dist"
56 | ],
57 | "keywords": [
58 | "react",
59 | "reactjs",
60 | "ssr",
61 | "javascript"
62 | ]
63 | }
64 |
--------------------------------------------------------------------------------
/src/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "jest": true
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/src/Page.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const Page = (props) => {
4 | const { style, children: parent } = { ...props }
5 | const { height, width, ...cleanedStyle } = { ...style }
6 | const pageStyle = {
7 | height: '100vh',
8 | width: '100vw',
9 | ...cleanedStyle
10 | }
11 | console.log(parent.type)
12 | console.log(parent)
13 | const {
14 | props: { children }
15 | } = parent
16 |
17 | return (
18 |
22 | {children}
23 |
24 | )
25 | }
26 | export default Page
27 |
--------------------------------------------------------------------------------
/src/PageIndicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PageIndicatorButton from './PageIndicatorButton'
3 | import PropTypes from 'prop-types'
4 |
5 | const PageIndicator = (props) => {
6 | const {
7 | pageCount,
8 | activePage,
9 | goToPage,
10 | style,
11 | indicatorStyle,
12 | indicatorStyleActive
13 | } = props
14 | const renderIndicators = () => {
15 | const count = pageCount
16 | const indicators = []
17 | for (let i = 0; i < count; i++) {
18 | const active = i === activePage
19 | indicators.push(
20 |
28 | )
29 | }
30 |
31 | return indicators
32 | }
33 |
34 | const pageIndicatorStyle = {
35 | ...style,
36 | height: '100vh',
37 | position: 'fixed',
38 | display: 'flex',
39 | flexDirection: 'column',
40 | justifyContent: 'center'
41 | }
42 |
43 | return {renderIndicators()}
44 | }
45 |
46 | PageIndicatorButton.propTypes = {
47 | goToPage: PropTypes.func,
48 | pageCount: PropTypes.number,
49 | activePage: PropTypes.number,
50 | style: PropTypes.object
51 | }
52 |
53 | PageIndicatorButton.defaultProps = {
54 | goToPage: () => {},
55 | pageCount: 1,
56 | activePage: 1,
57 | style: {}
58 | }
59 |
60 | export default PageIndicator
61 |
--------------------------------------------------------------------------------
/src/PageIndicatorButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 |
4 | const PageIndicatorButton = (props) => {
5 | const {
6 | goToPage,
7 | pageIndex,
8 | active,
9 | indicatorStyle,
10 | indicatorStyleActive
11 | } = props
12 |
13 | const [style, setStyle] = React.useState({})
14 |
15 | React.useMemo(() => {
16 | let result = indicatorStyle
17 | if (active) {
18 | result = { ...indicatorStyle, ...indicatorStyleActive }
19 | }
20 | setStyle(result)
21 | }, [indicatorStyle, indicatorStyleActive])
22 |
23 | return goToPage(pageIndex)} />
24 | }
25 |
26 | PageIndicatorButton.propTypes = {
27 | goToPage: PropTypes.func,
28 | pageIndex: PropTypes.number,
29 | active: PropTypes.bool,
30 | indicatorStyle: PropTypes.object,
31 | indicatorStyleActive: PropTypes.object
32 | }
33 | PageIndicatorButton.defaultProps = {
34 | pageIndex: 1,
35 | active: false,
36 | indicatorStyle: {
37 | height: '8px',
38 | width: '8px',
39 | margin: '10px',
40 | borderRadius: '4px',
41 | backgroundColor: 'white',
42 | transition: 'width 500ms ease'
43 | },
44 | indicatorStyleActive: { width: '20px' }
45 | }
46 |
47 | export default PageIndicatorButton
48 |
--------------------------------------------------------------------------------
/src/PageNav.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 |
4 | const PageNav = (props) => {
5 | const { goToPage, navButtons } = props
6 | const renderButtons = () => {
7 | const buttons = []
8 | navButtons.map((buttonInfo, i) => {
9 | buttons.push(
10 |
goToPage(buttonInfo.index)}
13 | style={buttonInfo.style}
14 | key={i}
15 | >
16 | {buttonInfo.title}
17 |
18 | )
19 | })
20 |
21 | return buttons
22 | }
23 | return
{renderButtons()}
24 | }
25 |
26 | PageNav.propTypes = {
27 | navButtons: PropTypes.array,
28 | goToPage: PropTypes.func
29 | }
30 |
31 | PageNav.defaultProps = {
32 | navButtons: [],
33 | goToPage: () => {}
34 | }
35 |
36 | export default PageNav
37 |
--------------------------------------------------------------------------------
/src/PageScroller.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PageNav from './PageNav'
3 | import Page from './Page'
4 | import PageIndicator from './PageIndicator'
5 | import { getValidChildren } from './helper'
6 |
7 | export default class PageScroller extends React.Component {
8 | constructor(props) {
9 | super(props)
10 |
11 | this.state = {
12 | scrollPos: 0,
13 | pageIndex: 0,
14 | scrollAgain: true,
15 | children: null
16 | }
17 |
18 | this.pages = 0
19 | this.scrollLocker = () => {}
20 | }
21 |
22 | componentDidMount = () => {
23 | const { children: childrenProp } = this.props
24 | this.setState({ children: getValidChildren(childrenProp) })
25 | window.addEventListener('scroll', this.handleScroll)
26 | }
27 |
28 | componentWillUnmount = () => {
29 | window.removeEventListener('scroll', this.handleScroll)
30 | }
31 |
32 | handleScroll = () => {
33 | const scrollPos = this.state.scrollPos
34 | const pageIndex = this.state.pageIndex
35 | const winHeight = window.innerHeight
36 |
37 | if (this.state.scrollAgain) {
38 | if (document.body.getBoundingClientRect().top > scrollPos) {
39 | // handle scroll up
40 | if (pageIndex - 1 >= 0) {
41 | // pageIndex--;
42 | this.scroll(winHeight, pageIndex - 1)
43 | }
44 | } else {
45 | // handle scroll down
46 | if (pageIndex + 1 <= this.pages - 1) {
47 | // pageIndex++;
48 | this.scroll(winHeight, pageIndex + 1)
49 | }
50 | }
51 | } else {
52 | // scroll to current position if scrolling is disabled
53 | window.scrollTo(0, pageIndex * winHeight)
54 | }
55 | }
56 |
57 | scroll = (winHeight, pageIndex) => {
58 | window.scrollTo(0, winHeight * pageIndex)
59 |
60 | this.scrollLocker = setTimeout(() => {
61 | this.setState({ scrollAgain: true })
62 | }, 1000)
63 |
64 | this.setState({
65 | scrollPos: document.body.getBoundingClientRect().top,
66 | pageIndex: pageIndex,
67 | scrollAgain: false
68 | })
69 | }
70 |
71 | goToPage = (index) => {
72 | this.scroll(window.innerHeight, index)
73 | }
74 |
75 | renderChildren = () => {
76 | const childElements = []
77 | let pageIndicator
78 | let pageNav
79 | const navButtons = []
80 | const indicatorArray = []
81 | let pageCount = 0
82 |
83 | const { children } = this.state
84 | if (children && children.length > 0) {
85 | React.Children.map(children, (child, i) => {
86 | if (child.type === Page) {
87 | if (child.props.pageNav && child.props.pageNav.length > 0) {
88 | const { title, className, style } = child.props.pageNav[pageCount]
89 | if (title) {
90 | navButtons.push({
91 | index: pageCount,
92 | title: title,
93 | className: className || null,
94 | style: style || {}
95 | })
96 | }
97 | }
98 |
99 | pageCount++
100 | childElements.push(child)
101 | } else if (child.type === PageIndicator) {
102 | if (child.props.indicatorStyle || child.props.indicatorStyleActive) {
103 | const { indicatorStyle, indicatorStyleActive } = child.props
104 | indicatorArray.push({
105 | indicatorStyle: indicatorStyle,
106 | indicatorStyleActive: indicatorStyleActive
107 | })
108 | }
109 | pageIndicator = child
110 | } else if (child.type === PageNav) {
111 | pageNav = child
112 | }
113 | })
114 | }
115 |
116 | this.pages = pageCount
117 |
118 | if (pageIndicator) {
119 | childElements.push(
120 | React.cloneElement(pageIndicator, {
121 | pageCount: this.pages,
122 | activePage: this.state.pageIndex,
123 | goToPage: this.goToPage,
124 | indicatorArray: indicatorArray
125 | })
126 | )
127 | }
128 |
129 | if (pageNav) {
130 | childElements.push(
131 | React.cloneElement(pageNav, {
132 | goToPage: this.goToPage,
133 | navButtons: navButtons
134 | })
135 | )
136 | }
137 |
138 | return childElements
139 | }
140 |
141 | render() {
142 | return
{this.renderChildren()}
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/src/helper.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | export const getValidChildren = (children) => {
4 | return React.Children.toArray(children).filter((child) =>
5 | React.isValidElement(child)
6 | )
7 | }
8 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PageNav from './PageNav'
3 | import PageScroller from './PageScroller'
4 | import PageIndicator from './PageIndicator'
5 | import Page from './Page'
6 | import PropTypes from 'prop-types'
7 |
8 | export const FullPage = (props) => {
9 | const { pageNav, indicatorStyle, indicatorStyleActive, children } = props
10 | if (typeof window !== 'undefined') {
11 | return (
12 |
13 | {pageNav && pageNav.length > 0 && }
14 | {indicatorStyle && (
15 |
19 | )}
20 | {React.Children.toArray(children).map((child, id) => {
21 | return (
22 |
23 | {child}
24 |
25 | )
26 | })}
27 |
28 | )
29 | } else {
30 | return null
31 | }
32 | }
33 |
34 | FullPage.propTypes = {
35 | children: PropTypes.node.isRequired,
36 | indicatorStyle: PropTypes.object,
37 | pageNav: PropTypes.array
38 | }
39 |
40 | FullPage.defaultProps = {
41 | indicator: null,
42 | pageNav: null
43 | }
44 |
45 | export default FullPage
46 |
--------------------------------------------------------------------------------
/src/index.test.js:
--------------------------------------------------------------------------------
1 | import { ExampleComponent } from '.'
2 |
3 | describe('ExampleComponent', () => {
4 | it('is truthy', () => {
5 | expect(ExampleComponent).toBeTruthy()
6 | })
7 | })
8 |
--------------------------------------------------------------------------------