├── .eslintrc.js
├── .gitignore
├── .nvmrc
├── README.md
├── as-nav-for.js
├── bower.json
├── package-lock.json
├── package.json
├── sandbox
├── as-nav-for.html
├── group-cells.html
└── wrap-around.html
└── test
├── group-cells.js
├── group-main.js
├── index.html
└── test-as-nav-for.js
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 |
3 | module.exports = {
4 | plugins: [ 'metafizzy' ],
5 | extends: 'plugin:metafizzy/browser',
6 | env: {
7 | browser: true,
8 | commonjs: true,
9 | },
10 | parserOptions: {
11 | ecmaVersion: 2018,
12 | },
13 | globals: {
14 | Flickity: 'readonly',
15 | QUnit: 'readonly',
16 | },
17 | rules: {
18 | 'prefer-object-spread': 'error',
19 | },
20 | ignorePatterns: [ 'bower_components' ],
21 | };
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | bower_components/
2 | node_modules/
3 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 16
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Flickity asNavFor
2 |
3 | Enables `asNavFor` option for [Flickity](https://flickity.metafizzy.co/), where one gallery is navigation or another.
4 |
5 | + Clicking the nav gallery will select the content gallery
6 | + Selecting the content gallery will sync to the nav gallery
7 |
8 | ``` html
9 |
10 | ...
11 |
12 |
13 | ...
14 |
15 | ```
16 |
17 | ``` js
18 | // options
19 | asNavFor: '.gallery-a'
20 | // set as a selector string
21 |
22 | asNavFor: document.querySelector('.gallery-a')
23 | // set as an element
24 | ```
25 |
26 | ## Install
27 |
28 | Add `as-nav-for.js` to your scripts, after including Flickity.
29 |
30 | ### Download
31 |
32 | + [as-nav-for.js](https://unpkg.com/flickity-as-nav-for@3/as-nav-for.js)
33 |
34 | ### CDN
35 |
36 | ``` html
37 |
38 | ```
39 |
40 | ### Package managers
41 |
42 | npm: `npm install flickity-as-nav-for`
43 |
44 | Yarn: `yarn add flickity-as-nav-for`
45 |
46 | ## Usage
47 |
48 | ### jQuery
49 |
50 | ``` js
51 | $('.gallery-a').flickity();
52 | $('.gallery-b').flickity({
53 | asNavFor: '.gallery-a'
54 | });
55 | ```
56 |
57 | ### Vanilla JS
58 |
59 | ``` js
60 | var flktyA = new Flickity('.gallery-a');
61 | var flktyB = new Flickity( '.gallery-b', {
62 | asNavFor: '.gallery-a'
63 | });
64 | ```
65 |
66 | ### HTML
67 |
68 | ``` html
69 |
70 | ...
71 |
72 |
74 | ...
75 |
76 | ```
77 |
78 | ## Install
79 |
80 | Bower: `bower install flickity-as-nav-for --save`
81 |
82 | npm: `npm install flickity-as-nav-for`
83 |
84 | ### Webpack
85 |
86 | ``` js
87 | const Flickity = require('flickity');
88 | require('flickity-as-nav-for');
89 |
90 | var flktyA = new Flickity('.gallery-a');
91 | var flktyB = new Flickity( '.gallery-b', {
92 | asNavFor: '.gallery-a'
93 | });
94 | ```
95 |
96 | ---
97 |
98 | MIT license
99 |
100 | By [Metafizzy](https://metafizzy.co)
101 |
--------------------------------------------------------------------------------
/as-nav-for.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Flickity asNavFor v3.0.0
3 | * enable asNavFor for Flickity
4 | */
5 |
6 | ( function( window, factory ) {
7 | // universal module definition
8 | if ( typeof module == 'object' && module.exports ) {
9 | // CommonJS
10 | module.exports = factory(
11 | require('flickity'),
12 | require('fizzy-ui-utils'),
13 | );
14 | } else {
15 | // browser global
16 | window.Flickity = factory(
17 | window.Flickity,
18 | window.fizzyUIUtils,
19 | );
20 | }
21 |
22 | }( window, function factory( Flickity, utils ) {
23 |
24 | // -------------------------- asNavFor prototype -------------------------- //
25 |
26 | // Flickity.defaults.asNavFor = null;
27 |
28 | Flickity.create.asNavFor = function() {
29 | this.on( 'activate', this.activateAsNavFor );
30 | this.on( 'deactivate', this.deactivateAsNavFor );
31 | this.on( 'destroy', this.destroyAsNavFor );
32 |
33 | let asNavForOption = this.options.asNavFor;
34 | if ( !asNavForOption ) return;
35 |
36 | // HACK do async, give time for other flickity to be initalized
37 | setTimeout( () => {
38 | this.setNavCompanion( asNavForOption );
39 | } );
40 | };
41 |
42 | let proto = Flickity.prototype;
43 |
44 | proto.setNavCompanion = function( elem ) {
45 | elem = utils.getQueryElement( elem );
46 | let companion = Flickity.data( elem );
47 | // stop if no companion or companion is self
48 | if ( !companion || companion === this ) return;
49 |
50 | this.navCompanion = companion;
51 | // companion select
52 | this.onNavCompanionSelect = () => {
53 | this.navCompanionSelect();
54 | };
55 | companion.on( 'select', this.onNavCompanionSelect );
56 | // click
57 | this.on( 'staticClick', this.onNavStaticClick );
58 |
59 | this.navCompanionSelect( true );
60 | };
61 |
62 | proto.navCompanionSelect = function( isInstant ) {
63 | // wait for companion & selectedCells first. #8
64 | let companionCells = this.navCompanion && this.navCompanion.selectedCells;
65 | if ( !companionCells ) return;
66 |
67 | // select slide that matches first cell of slide
68 | let selectedCell = companionCells[0];
69 | let firstIndex = this.navCompanion.cells.indexOf( selectedCell );
70 | let lastIndex = firstIndex + companionCells.length - 1;
71 | let selectIndex = Math.floor( lerp( firstIndex, lastIndex,
72 | this.navCompanion.cellAlign ) );
73 | this.selectCell( selectIndex, false, isInstant );
74 | // set nav selected class
75 | this.removeNavSelectedElements();
76 | // stop if companion has more cells than this one
77 | if ( selectIndex >= this.cells.length ) return;
78 |
79 | let selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );
80 | this.navSelectedElements = selectedCells.map( ( cell ) => cell.element );
81 | this.changeNavSelectedClass('add');
82 | };
83 |
84 | function lerp( a, b, t ) {
85 | return ( b - a ) * t + a;
86 | }
87 |
88 | proto.changeNavSelectedClass = function( method ) {
89 | this.navSelectedElements.forEach( function( navElem ) {
90 | navElem.classList[ method ]('is-nav-selected');
91 | } );
92 | };
93 |
94 | proto.activateAsNavFor = function() {
95 | this.navCompanionSelect( true );
96 | };
97 |
98 | proto.removeNavSelectedElements = function() {
99 | if ( !this.navSelectedElements ) return;
100 |
101 | this.changeNavSelectedClass('remove');
102 | delete this.navSelectedElements;
103 | };
104 |
105 | proto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {
106 | if ( typeof cellIndex == 'number' ) {
107 | this.navCompanion.selectCell( cellIndex );
108 | }
109 | };
110 |
111 | proto.deactivateAsNavFor = function() {
112 | this.removeNavSelectedElements();
113 | };
114 |
115 | proto.destroyAsNavFor = function() {
116 | if ( !this.navCompanion ) return;
117 |
118 | this.navCompanion.off( 'select', this.onNavCompanionSelect );
119 | this.off( 'staticClick', this.onNavStaticClick );
120 | delete this.navCompanion;
121 | };
122 |
123 | // ----- ----- //
124 |
125 | return Flickity;
126 |
127 | } ) );
128 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flickity-as-nav-for",
3 | "description": "Enable asForNav for Flickity",
4 | "main": "as-nav-for.js",
5 | "dependencies": {
6 | "flickity": "^3.0.0",
7 | "fizzy-ui-utils": "^3.0.0"
8 | },
9 | "devDependencies": {
10 | },
11 | "authors": [
12 | "David DeSandro"
13 | ],
14 | "keywords": [
15 | "flickity"
16 | ],
17 | "license": "MIT",
18 | "homepage": "https://github.com/metafizzy/flickity-as-nav-for",
19 | "ignore": [
20 | "**/.*",
21 | "node_modules",
22 | "bower_components",
23 | "test",
24 | "tests",
25 | "package.json",
26 | "sandbox"
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flickity-as-nav-for",
3 | "version": "3.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "flickity-as-nav-for",
9 | "version": "3.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "fizzy-ui-utils": "^3.0.0"
13 | },
14 | "devDependencies": {
15 | "eslint": "^8.10.0",
16 | "eslint-plugin-metafizzy": "^2.0.1",
17 | "qunit": "^2.18.0"
18 | },
19 | "peerDependencies": {
20 | "flickity": "^3.0.0"
21 | }
22 | },
23 | "node_modules/@eslint/eslintrc": {
24 | "version": "1.2.0",
25 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz",
26 | "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==",
27 | "dev": true,
28 | "dependencies": {
29 | "ajv": "^6.12.4",
30 | "debug": "^4.3.2",
31 | "espree": "^9.3.1",
32 | "globals": "^13.9.0",
33 | "ignore": "^4.0.6",
34 | "import-fresh": "^3.2.1",
35 | "js-yaml": "^4.1.0",
36 | "minimatch": "^3.0.4",
37 | "strip-json-comments": "^3.1.1"
38 | },
39 | "engines": {
40 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
41 | }
42 | },
43 | "node_modules/@eslint/eslintrc/node_modules/ignore": {
44 | "version": "4.0.6",
45 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
46 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
47 | "dev": true,
48 | "engines": {
49 | "node": ">= 4"
50 | }
51 | },
52 | "node_modules/@humanwhocodes/config-array": {
53 | "version": "0.9.5",
54 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
55 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
56 | "dev": true,
57 | "dependencies": {
58 | "@humanwhocodes/object-schema": "^1.2.1",
59 | "debug": "^4.1.1",
60 | "minimatch": "^3.0.4"
61 | },
62 | "engines": {
63 | "node": ">=10.10.0"
64 | }
65 | },
66 | "node_modules/@humanwhocodes/object-schema": {
67 | "version": "1.2.1",
68 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
69 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
70 | "dev": true
71 | },
72 | "node_modules/acorn": {
73 | "version": "8.7.0",
74 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
75 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
76 | "dev": true,
77 | "bin": {
78 | "acorn": "bin/acorn"
79 | },
80 | "engines": {
81 | "node": ">=0.4.0"
82 | }
83 | },
84 | "node_modules/acorn-jsx": {
85 | "version": "5.3.2",
86 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
87 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
88 | "dev": true,
89 | "peerDependencies": {
90 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
91 | }
92 | },
93 | "node_modules/ajv": {
94 | "version": "6.12.6",
95 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
96 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
97 | "dev": true,
98 | "dependencies": {
99 | "fast-deep-equal": "^3.1.1",
100 | "fast-json-stable-stringify": "^2.0.0",
101 | "json-schema-traverse": "^0.4.1",
102 | "uri-js": "^4.2.2"
103 | },
104 | "funding": {
105 | "type": "github",
106 | "url": "https://github.com/sponsors/epoberezkin"
107 | }
108 | },
109 | "node_modules/ansi-regex": {
110 | "version": "5.0.1",
111 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
112 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
113 | "dev": true,
114 | "engines": {
115 | "node": ">=8"
116 | }
117 | },
118 | "node_modules/ansi-styles": {
119 | "version": "4.3.0",
120 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
121 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
122 | "dev": true,
123 | "dependencies": {
124 | "color-convert": "^2.0.1"
125 | },
126 | "engines": {
127 | "node": ">=8"
128 | },
129 | "funding": {
130 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
131 | }
132 | },
133 | "node_modules/argparse": {
134 | "version": "2.0.1",
135 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
136 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
137 | "dev": true
138 | },
139 | "node_modules/balanced-match": {
140 | "version": "1.0.2",
141 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
142 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
143 | "dev": true
144 | },
145 | "node_modules/brace-expansion": {
146 | "version": "1.1.11",
147 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
148 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
149 | "dev": true,
150 | "dependencies": {
151 | "balanced-match": "^1.0.0",
152 | "concat-map": "0.0.1"
153 | }
154 | },
155 | "node_modules/callsites": {
156 | "version": "3.1.0",
157 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
158 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
159 | "dev": true,
160 | "engines": {
161 | "node": ">=6"
162 | }
163 | },
164 | "node_modules/chalk": {
165 | "version": "4.1.2",
166 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
167 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
168 | "dev": true,
169 | "dependencies": {
170 | "ansi-styles": "^4.1.0",
171 | "supports-color": "^7.1.0"
172 | },
173 | "engines": {
174 | "node": ">=10"
175 | },
176 | "funding": {
177 | "url": "https://github.com/chalk/chalk?sponsor=1"
178 | }
179 | },
180 | "node_modules/color-convert": {
181 | "version": "2.0.1",
182 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
183 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
184 | "dev": true,
185 | "dependencies": {
186 | "color-name": "~1.1.4"
187 | },
188 | "engines": {
189 | "node": ">=7.0.0"
190 | }
191 | },
192 | "node_modules/color-name": {
193 | "version": "1.1.4",
194 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
195 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
196 | "dev": true
197 | },
198 | "node_modules/commander": {
199 | "version": "7.2.0",
200 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
201 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
202 | "dev": true,
203 | "engines": {
204 | "node": ">= 10"
205 | }
206 | },
207 | "node_modules/concat-map": {
208 | "version": "0.0.1",
209 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
210 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
211 | "dev": true
212 | },
213 | "node_modules/cross-spawn": {
214 | "version": "7.0.3",
215 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
216 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
217 | "dev": true,
218 | "dependencies": {
219 | "path-key": "^3.1.0",
220 | "shebang-command": "^2.0.0",
221 | "which": "^2.0.1"
222 | },
223 | "engines": {
224 | "node": ">= 8"
225 | }
226 | },
227 | "node_modules/debug": {
228 | "version": "4.3.3",
229 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
230 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
231 | "dev": true,
232 | "dependencies": {
233 | "ms": "2.1.2"
234 | },
235 | "engines": {
236 | "node": ">=6.0"
237 | },
238 | "peerDependenciesMeta": {
239 | "supports-color": {
240 | "optional": true
241 | }
242 | }
243 | },
244 | "node_modules/deep-is": {
245 | "version": "0.1.4",
246 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
247 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
248 | "dev": true
249 | },
250 | "node_modules/doctrine": {
251 | "version": "3.0.0",
252 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
253 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
254 | "dev": true,
255 | "dependencies": {
256 | "esutils": "^2.0.2"
257 | },
258 | "engines": {
259 | "node": ">=6.0.0"
260 | }
261 | },
262 | "node_modules/escape-string-regexp": {
263 | "version": "4.0.0",
264 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
265 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
266 | "dev": true,
267 | "engines": {
268 | "node": ">=10"
269 | },
270 | "funding": {
271 | "url": "https://github.com/sponsors/sindresorhus"
272 | }
273 | },
274 | "node_modules/eslint": {
275 | "version": "8.10.0",
276 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz",
277 | "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==",
278 | "dev": true,
279 | "dependencies": {
280 | "@eslint/eslintrc": "^1.2.0",
281 | "@humanwhocodes/config-array": "^0.9.2",
282 | "ajv": "^6.10.0",
283 | "chalk": "^4.0.0",
284 | "cross-spawn": "^7.0.2",
285 | "debug": "^4.3.2",
286 | "doctrine": "^3.0.0",
287 | "escape-string-regexp": "^4.0.0",
288 | "eslint-scope": "^7.1.1",
289 | "eslint-utils": "^3.0.0",
290 | "eslint-visitor-keys": "^3.3.0",
291 | "espree": "^9.3.1",
292 | "esquery": "^1.4.0",
293 | "esutils": "^2.0.2",
294 | "fast-deep-equal": "^3.1.3",
295 | "file-entry-cache": "^6.0.1",
296 | "functional-red-black-tree": "^1.0.1",
297 | "glob-parent": "^6.0.1",
298 | "globals": "^13.6.0",
299 | "ignore": "^5.2.0",
300 | "import-fresh": "^3.0.0",
301 | "imurmurhash": "^0.1.4",
302 | "is-glob": "^4.0.0",
303 | "js-yaml": "^4.1.0",
304 | "json-stable-stringify-without-jsonify": "^1.0.1",
305 | "levn": "^0.4.1",
306 | "lodash.merge": "^4.6.2",
307 | "minimatch": "^3.0.4",
308 | "natural-compare": "^1.4.0",
309 | "optionator": "^0.9.1",
310 | "regexpp": "^3.2.0",
311 | "strip-ansi": "^6.0.1",
312 | "strip-json-comments": "^3.1.0",
313 | "text-table": "^0.2.0",
314 | "v8-compile-cache": "^2.0.3"
315 | },
316 | "bin": {
317 | "eslint": "bin/eslint.js"
318 | },
319 | "engines": {
320 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
321 | },
322 | "funding": {
323 | "url": "https://opencollective.com/eslint"
324 | }
325 | },
326 | "node_modules/eslint-plugin-metafizzy": {
327 | "version": "2.0.1",
328 | "resolved": "https://registry.npmjs.org/eslint-plugin-metafizzy/-/eslint-plugin-metafizzy-2.0.1.tgz",
329 | "integrity": "sha512-Xo0yL+y4WgEnn23sk6SSaizEzDmqdi2ZzWO5Bitzgzv/nY7G/qVPrffkLVZKE3RZzfLoFmlVwfctJXFojsU/5g==",
330 | "dev": true,
331 | "peerDependencies": {
332 | "eslint": ">=6.8.0 <9.0.0"
333 | }
334 | },
335 | "node_modules/eslint-scope": {
336 | "version": "7.1.1",
337 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
338 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
339 | "dev": true,
340 | "dependencies": {
341 | "esrecurse": "^4.3.0",
342 | "estraverse": "^5.2.0"
343 | },
344 | "engines": {
345 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
346 | }
347 | },
348 | "node_modules/eslint-utils": {
349 | "version": "3.0.0",
350 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
351 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
352 | "dev": true,
353 | "dependencies": {
354 | "eslint-visitor-keys": "^2.0.0"
355 | },
356 | "engines": {
357 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
358 | },
359 | "funding": {
360 | "url": "https://github.com/sponsors/mysticatea"
361 | },
362 | "peerDependencies": {
363 | "eslint": ">=5"
364 | }
365 | },
366 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
367 | "version": "2.1.0",
368 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
369 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
370 | "dev": true,
371 | "engines": {
372 | "node": ">=10"
373 | }
374 | },
375 | "node_modules/eslint-visitor-keys": {
376 | "version": "3.3.0",
377 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
378 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
379 | "dev": true,
380 | "engines": {
381 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
382 | }
383 | },
384 | "node_modules/espree": {
385 | "version": "9.3.1",
386 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
387 | "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
388 | "dev": true,
389 | "dependencies": {
390 | "acorn": "^8.7.0",
391 | "acorn-jsx": "^5.3.1",
392 | "eslint-visitor-keys": "^3.3.0"
393 | },
394 | "engines": {
395 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
396 | }
397 | },
398 | "node_modules/esquery": {
399 | "version": "1.4.0",
400 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
401 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
402 | "dev": true,
403 | "dependencies": {
404 | "estraverse": "^5.1.0"
405 | },
406 | "engines": {
407 | "node": ">=0.10"
408 | }
409 | },
410 | "node_modules/esrecurse": {
411 | "version": "4.3.0",
412 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
413 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
414 | "dev": true,
415 | "dependencies": {
416 | "estraverse": "^5.2.0"
417 | },
418 | "engines": {
419 | "node": ">=4.0"
420 | }
421 | },
422 | "node_modules/estraverse": {
423 | "version": "5.3.0",
424 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
425 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
426 | "dev": true,
427 | "engines": {
428 | "node": ">=4.0"
429 | }
430 | },
431 | "node_modules/esutils": {
432 | "version": "2.0.3",
433 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
434 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
435 | "dev": true,
436 | "engines": {
437 | "node": ">=0.10.0"
438 | }
439 | },
440 | "node_modules/ev-emitter": {
441 | "version": "2.1.2",
442 | "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-2.1.2.tgz",
443 | "integrity": "sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==",
444 | "peer": true
445 | },
446 | "node_modules/fast-deep-equal": {
447 | "version": "3.1.3",
448 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
449 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
450 | "dev": true
451 | },
452 | "node_modules/fast-json-stable-stringify": {
453 | "version": "2.1.0",
454 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
455 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
456 | "dev": true
457 | },
458 | "node_modules/fast-levenshtein": {
459 | "version": "2.0.6",
460 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
461 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
462 | "dev": true
463 | },
464 | "node_modules/file-entry-cache": {
465 | "version": "6.0.1",
466 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
467 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
468 | "dev": true,
469 | "dependencies": {
470 | "flat-cache": "^3.0.4"
471 | },
472 | "engines": {
473 | "node": "^10.12.0 || >=12.0.0"
474 | }
475 | },
476 | "node_modules/fizzy-ui-utils": {
477 | "version": "3.0.0",
478 | "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-3.0.0.tgz",
479 | "integrity": "sha512-uJj38QFQiJ/KCio5tiZhwAjIbTXSIgzBCKdKVbaYfLS053F6z23Nb0o1ZoO9gnxOQWN7BCc35jsvrCtAq3gY9g=="
480 | },
481 | "node_modules/flat-cache": {
482 | "version": "3.0.4",
483 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
484 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
485 | "dev": true,
486 | "dependencies": {
487 | "flatted": "^3.1.0",
488 | "rimraf": "^3.0.2"
489 | },
490 | "engines": {
491 | "node": "^10.12.0 || >=12.0.0"
492 | }
493 | },
494 | "node_modules/flatted": {
495 | "version": "3.2.5",
496 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
497 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
498 | "dev": true
499 | },
500 | "node_modules/flickity": {
501 | "version": "3.0.0",
502 | "resolved": "https://registry.npmjs.org/flickity/-/flickity-3.0.0.tgz",
503 | "integrity": "sha512-Xw4znhglA2LVSmka0yKmzb4+fLwXm13TuKmdG1HbUoZZL95J1ZMr4hAA3w69s+Z6q/c6CyBDM25JVwMqgF3rOg==",
504 | "peer": true,
505 | "dependencies": {
506 | "ev-emitter": "^2.1.2",
507 | "fizzy-ui-utils": "^3.0.0",
508 | "get-size": "^3.0.0",
509 | "imagesloaded": "^5.0.0",
510 | "unidragger": "^3.0.0"
511 | }
512 | },
513 | "node_modules/fs.realpath": {
514 | "version": "1.0.0",
515 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
516 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
517 | "dev": true
518 | },
519 | "node_modules/functional-red-black-tree": {
520 | "version": "1.0.1",
521 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
522 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
523 | "dev": true
524 | },
525 | "node_modules/get-size": {
526 | "version": "3.0.0",
527 | "resolved": "https://registry.npmjs.org/get-size/-/get-size-3.0.0.tgz",
528 | "integrity": "sha512-Y8aiXLq4leR7807UY0yuKEwif5s3kbVp1nTv+i4jBeoUzByTLKkLWu/HorS6/pB+7gsB0o7OTogC8AoOOeT0Hw==",
529 | "peer": true
530 | },
531 | "node_modules/glob": {
532 | "version": "7.2.0",
533 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
534 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
535 | "dev": true,
536 | "dependencies": {
537 | "fs.realpath": "^1.0.0",
538 | "inflight": "^1.0.4",
539 | "inherits": "2",
540 | "minimatch": "^3.0.4",
541 | "once": "^1.3.0",
542 | "path-is-absolute": "^1.0.0"
543 | },
544 | "engines": {
545 | "node": "*"
546 | },
547 | "funding": {
548 | "url": "https://github.com/sponsors/isaacs"
549 | }
550 | },
551 | "node_modules/glob-parent": {
552 | "version": "6.0.2",
553 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
554 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
555 | "dev": true,
556 | "dependencies": {
557 | "is-glob": "^4.0.3"
558 | },
559 | "engines": {
560 | "node": ">=10.13.0"
561 | }
562 | },
563 | "node_modules/globals": {
564 | "version": "13.12.1",
565 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
566 | "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
567 | "dev": true,
568 | "dependencies": {
569 | "type-fest": "^0.20.2"
570 | },
571 | "engines": {
572 | "node": ">=8"
573 | },
574 | "funding": {
575 | "url": "https://github.com/sponsors/sindresorhus"
576 | }
577 | },
578 | "node_modules/globalyzer": {
579 | "version": "0.1.0",
580 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
581 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
582 | "dev": true
583 | },
584 | "node_modules/globrex": {
585 | "version": "0.1.2",
586 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
587 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
588 | "dev": true
589 | },
590 | "node_modules/has-flag": {
591 | "version": "4.0.0",
592 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
593 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
594 | "dev": true,
595 | "engines": {
596 | "node": ">=8"
597 | }
598 | },
599 | "node_modules/ignore": {
600 | "version": "5.2.0",
601 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
602 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
603 | "dev": true,
604 | "engines": {
605 | "node": ">= 4"
606 | }
607 | },
608 | "node_modules/imagesloaded": {
609 | "version": "5.0.0",
610 | "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-5.0.0.tgz",
611 | "integrity": "sha512-/0JGSubc1MTCoDKVmonLHgbifBWHdyLkun+R/151E1c5n79hiSxcd7cB7mPXFgojYu8xnRZv7GYxzKoxW8BetQ==",
612 | "peer": true,
613 | "dependencies": {
614 | "ev-emitter": "^2.1.2"
615 | }
616 | },
617 | "node_modules/import-fresh": {
618 | "version": "3.3.0",
619 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
620 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
621 | "dev": true,
622 | "dependencies": {
623 | "parent-module": "^1.0.0",
624 | "resolve-from": "^4.0.0"
625 | },
626 | "engines": {
627 | "node": ">=6"
628 | },
629 | "funding": {
630 | "url": "https://github.com/sponsors/sindresorhus"
631 | }
632 | },
633 | "node_modules/imurmurhash": {
634 | "version": "0.1.4",
635 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
636 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
637 | "dev": true,
638 | "engines": {
639 | "node": ">=0.8.19"
640 | }
641 | },
642 | "node_modules/inflight": {
643 | "version": "1.0.6",
644 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
645 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
646 | "dev": true,
647 | "dependencies": {
648 | "once": "^1.3.0",
649 | "wrappy": "1"
650 | }
651 | },
652 | "node_modules/inherits": {
653 | "version": "2.0.4",
654 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
655 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
656 | "dev": true
657 | },
658 | "node_modules/is-extglob": {
659 | "version": "2.1.1",
660 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
661 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
662 | "dev": true,
663 | "engines": {
664 | "node": ">=0.10.0"
665 | }
666 | },
667 | "node_modules/is-glob": {
668 | "version": "4.0.3",
669 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
670 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
671 | "dev": true,
672 | "dependencies": {
673 | "is-extglob": "^2.1.1"
674 | },
675 | "engines": {
676 | "node": ">=0.10.0"
677 | }
678 | },
679 | "node_modules/isexe": {
680 | "version": "2.0.0",
681 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
682 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
683 | "dev": true
684 | },
685 | "node_modules/js-yaml": {
686 | "version": "4.1.0",
687 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
688 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
689 | "dev": true,
690 | "dependencies": {
691 | "argparse": "^2.0.1"
692 | },
693 | "bin": {
694 | "js-yaml": "bin/js-yaml.js"
695 | }
696 | },
697 | "node_modules/json-schema-traverse": {
698 | "version": "0.4.1",
699 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
700 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
701 | "dev": true
702 | },
703 | "node_modules/json-stable-stringify-without-jsonify": {
704 | "version": "1.0.1",
705 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
706 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
707 | "dev": true
708 | },
709 | "node_modules/levn": {
710 | "version": "0.4.1",
711 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
712 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
713 | "dev": true,
714 | "dependencies": {
715 | "prelude-ls": "^1.2.1",
716 | "type-check": "~0.4.0"
717 | },
718 | "engines": {
719 | "node": ">= 0.8.0"
720 | }
721 | },
722 | "node_modules/lodash.merge": {
723 | "version": "4.6.2",
724 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
725 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
726 | "dev": true
727 | },
728 | "node_modules/minimatch": {
729 | "version": "3.1.2",
730 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
731 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
732 | "dev": true,
733 | "dependencies": {
734 | "brace-expansion": "^1.1.7"
735 | },
736 | "engines": {
737 | "node": "*"
738 | }
739 | },
740 | "node_modules/ms": {
741 | "version": "2.1.2",
742 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
743 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
744 | "dev": true
745 | },
746 | "node_modules/natural-compare": {
747 | "version": "1.4.0",
748 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
749 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
750 | "dev": true
751 | },
752 | "node_modules/node-watch": {
753 | "version": "0.7.3",
754 | "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz",
755 | "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==",
756 | "dev": true,
757 | "engines": {
758 | "node": ">=6"
759 | }
760 | },
761 | "node_modules/once": {
762 | "version": "1.4.0",
763 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
764 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
765 | "dev": true,
766 | "dependencies": {
767 | "wrappy": "1"
768 | }
769 | },
770 | "node_modules/optionator": {
771 | "version": "0.9.1",
772 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
773 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
774 | "dev": true,
775 | "dependencies": {
776 | "deep-is": "^0.1.3",
777 | "fast-levenshtein": "^2.0.6",
778 | "levn": "^0.4.1",
779 | "prelude-ls": "^1.2.1",
780 | "type-check": "^0.4.0",
781 | "word-wrap": "^1.2.3"
782 | },
783 | "engines": {
784 | "node": ">= 0.8.0"
785 | }
786 | },
787 | "node_modules/parent-module": {
788 | "version": "1.0.1",
789 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
790 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
791 | "dev": true,
792 | "dependencies": {
793 | "callsites": "^3.0.0"
794 | },
795 | "engines": {
796 | "node": ">=6"
797 | }
798 | },
799 | "node_modules/path-is-absolute": {
800 | "version": "1.0.1",
801 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
802 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
803 | "dev": true,
804 | "engines": {
805 | "node": ">=0.10.0"
806 | }
807 | },
808 | "node_modules/path-key": {
809 | "version": "3.1.1",
810 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
811 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
812 | "dev": true,
813 | "engines": {
814 | "node": ">=8"
815 | }
816 | },
817 | "node_modules/prelude-ls": {
818 | "version": "1.2.1",
819 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
820 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
821 | "dev": true,
822 | "engines": {
823 | "node": ">= 0.8.0"
824 | }
825 | },
826 | "node_modules/punycode": {
827 | "version": "2.1.1",
828 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
829 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
830 | "dev": true,
831 | "engines": {
832 | "node": ">=6"
833 | }
834 | },
835 | "node_modules/qunit": {
836 | "version": "2.18.0",
837 | "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.18.0.tgz",
838 | "integrity": "sha512-Xw/zUm5t1JY8SNErki/qtw4fCuaaOZL+bPloZU+0kto+fO8j1JV9MQWqXO4kATfhEyJohlsKZpfg1HF7GOkpXw==",
839 | "dev": true,
840 | "dependencies": {
841 | "commander": "7.2.0",
842 | "node-watch": "0.7.3",
843 | "tiny-glob": "0.2.9"
844 | },
845 | "bin": {
846 | "qunit": "bin/qunit.js"
847 | },
848 | "engines": {
849 | "node": ">=10"
850 | }
851 | },
852 | "node_modules/regexpp": {
853 | "version": "3.2.0",
854 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
855 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
856 | "dev": true,
857 | "engines": {
858 | "node": ">=8"
859 | },
860 | "funding": {
861 | "url": "https://github.com/sponsors/mysticatea"
862 | }
863 | },
864 | "node_modules/resolve-from": {
865 | "version": "4.0.0",
866 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
867 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
868 | "dev": true,
869 | "engines": {
870 | "node": ">=4"
871 | }
872 | },
873 | "node_modules/rimraf": {
874 | "version": "3.0.2",
875 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
876 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
877 | "dev": true,
878 | "dependencies": {
879 | "glob": "^7.1.3"
880 | },
881 | "bin": {
882 | "rimraf": "bin.js"
883 | },
884 | "funding": {
885 | "url": "https://github.com/sponsors/isaacs"
886 | }
887 | },
888 | "node_modules/shebang-command": {
889 | "version": "2.0.0",
890 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
891 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
892 | "dev": true,
893 | "dependencies": {
894 | "shebang-regex": "^3.0.0"
895 | },
896 | "engines": {
897 | "node": ">=8"
898 | }
899 | },
900 | "node_modules/shebang-regex": {
901 | "version": "3.0.0",
902 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
903 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
904 | "dev": true,
905 | "engines": {
906 | "node": ">=8"
907 | }
908 | },
909 | "node_modules/strip-ansi": {
910 | "version": "6.0.1",
911 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
912 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
913 | "dev": true,
914 | "dependencies": {
915 | "ansi-regex": "^5.0.1"
916 | },
917 | "engines": {
918 | "node": ">=8"
919 | }
920 | },
921 | "node_modules/strip-json-comments": {
922 | "version": "3.1.1",
923 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
924 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
925 | "dev": true,
926 | "engines": {
927 | "node": ">=8"
928 | },
929 | "funding": {
930 | "url": "https://github.com/sponsors/sindresorhus"
931 | }
932 | },
933 | "node_modules/supports-color": {
934 | "version": "7.2.0",
935 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
936 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
937 | "dev": true,
938 | "dependencies": {
939 | "has-flag": "^4.0.0"
940 | },
941 | "engines": {
942 | "node": ">=8"
943 | }
944 | },
945 | "node_modules/text-table": {
946 | "version": "0.2.0",
947 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
948 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
949 | "dev": true
950 | },
951 | "node_modules/tiny-glob": {
952 | "version": "0.2.9",
953 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
954 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
955 | "dev": true,
956 | "dependencies": {
957 | "globalyzer": "0.1.0",
958 | "globrex": "^0.1.2"
959 | }
960 | },
961 | "node_modules/type-check": {
962 | "version": "0.4.0",
963 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
964 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
965 | "dev": true,
966 | "dependencies": {
967 | "prelude-ls": "^1.2.1"
968 | },
969 | "engines": {
970 | "node": ">= 0.8.0"
971 | }
972 | },
973 | "node_modules/type-fest": {
974 | "version": "0.20.2",
975 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
976 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
977 | "dev": true,
978 | "engines": {
979 | "node": ">=10"
980 | },
981 | "funding": {
982 | "url": "https://github.com/sponsors/sindresorhus"
983 | }
984 | },
985 | "node_modules/unidragger": {
986 | "version": "3.0.1",
987 | "resolved": "https://registry.npmjs.org/unidragger/-/unidragger-3.0.1.tgz",
988 | "integrity": "sha512-RngbGSwBFmqGBWjkaH+yB677uzR95blSQyxq6hYbrQCejH3Mx1nm8DVOuh3M9k2fQyTstWUG5qlgCnNqV/9jVw==",
989 | "peer": true,
990 | "dependencies": {
991 | "ev-emitter": "^2.0.0"
992 | }
993 | },
994 | "node_modules/uri-js": {
995 | "version": "4.4.1",
996 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
997 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
998 | "dev": true,
999 | "dependencies": {
1000 | "punycode": "^2.1.0"
1001 | }
1002 | },
1003 | "node_modules/v8-compile-cache": {
1004 | "version": "2.3.0",
1005 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
1006 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
1007 | "dev": true
1008 | },
1009 | "node_modules/which": {
1010 | "version": "2.0.2",
1011 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1012 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1013 | "dev": true,
1014 | "dependencies": {
1015 | "isexe": "^2.0.0"
1016 | },
1017 | "bin": {
1018 | "node-which": "bin/node-which"
1019 | },
1020 | "engines": {
1021 | "node": ">= 8"
1022 | }
1023 | },
1024 | "node_modules/word-wrap": {
1025 | "version": "1.2.3",
1026 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1027 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1028 | "dev": true,
1029 | "engines": {
1030 | "node": ">=0.10.0"
1031 | }
1032 | },
1033 | "node_modules/wrappy": {
1034 | "version": "1.0.2",
1035 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1036 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1037 | "dev": true
1038 | }
1039 | },
1040 | "dependencies": {
1041 | "@eslint/eslintrc": {
1042 | "version": "1.2.0",
1043 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz",
1044 | "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==",
1045 | "dev": true,
1046 | "requires": {
1047 | "ajv": "^6.12.4",
1048 | "debug": "^4.3.2",
1049 | "espree": "^9.3.1",
1050 | "globals": "^13.9.0",
1051 | "ignore": "^4.0.6",
1052 | "import-fresh": "^3.2.1",
1053 | "js-yaml": "^4.1.0",
1054 | "minimatch": "^3.0.4",
1055 | "strip-json-comments": "^3.1.1"
1056 | },
1057 | "dependencies": {
1058 | "ignore": {
1059 | "version": "4.0.6",
1060 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1061 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1062 | "dev": true
1063 | }
1064 | }
1065 | },
1066 | "@humanwhocodes/config-array": {
1067 | "version": "0.9.5",
1068 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
1069 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
1070 | "dev": true,
1071 | "requires": {
1072 | "@humanwhocodes/object-schema": "^1.2.1",
1073 | "debug": "^4.1.1",
1074 | "minimatch": "^3.0.4"
1075 | }
1076 | },
1077 | "@humanwhocodes/object-schema": {
1078 | "version": "1.2.1",
1079 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
1080 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
1081 | "dev": true
1082 | },
1083 | "acorn": {
1084 | "version": "8.7.0",
1085 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
1086 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
1087 | "dev": true
1088 | },
1089 | "acorn-jsx": {
1090 | "version": "5.3.2",
1091 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1092 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1093 | "dev": true,
1094 | "requires": {}
1095 | },
1096 | "ajv": {
1097 | "version": "6.12.6",
1098 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1099 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1100 | "dev": true,
1101 | "requires": {
1102 | "fast-deep-equal": "^3.1.1",
1103 | "fast-json-stable-stringify": "^2.0.0",
1104 | "json-schema-traverse": "^0.4.1",
1105 | "uri-js": "^4.2.2"
1106 | }
1107 | },
1108 | "ansi-regex": {
1109 | "version": "5.0.1",
1110 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1111 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1112 | "dev": true
1113 | },
1114 | "ansi-styles": {
1115 | "version": "4.3.0",
1116 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1117 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1118 | "dev": true,
1119 | "requires": {
1120 | "color-convert": "^2.0.1"
1121 | }
1122 | },
1123 | "argparse": {
1124 | "version": "2.0.1",
1125 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1126 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1127 | "dev": true
1128 | },
1129 | "balanced-match": {
1130 | "version": "1.0.2",
1131 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1132 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1133 | "dev": true
1134 | },
1135 | "brace-expansion": {
1136 | "version": "1.1.11",
1137 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1138 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1139 | "dev": true,
1140 | "requires": {
1141 | "balanced-match": "^1.0.0",
1142 | "concat-map": "0.0.1"
1143 | }
1144 | },
1145 | "callsites": {
1146 | "version": "3.1.0",
1147 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1148 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1149 | "dev": true
1150 | },
1151 | "chalk": {
1152 | "version": "4.1.2",
1153 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1154 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1155 | "dev": true,
1156 | "requires": {
1157 | "ansi-styles": "^4.1.0",
1158 | "supports-color": "^7.1.0"
1159 | }
1160 | },
1161 | "color-convert": {
1162 | "version": "2.0.1",
1163 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1164 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1165 | "dev": true,
1166 | "requires": {
1167 | "color-name": "~1.1.4"
1168 | }
1169 | },
1170 | "color-name": {
1171 | "version": "1.1.4",
1172 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1173 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1174 | "dev": true
1175 | },
1176 | "commander": {
1177 | "version": "7.2.0",
1178 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
1179 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
1180 | "dev": true
1181 | },
1182 | "concat-map": {
1183 | "version": "0.0.1",
1184 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1185 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1186 | "dev": true
1187 | },
1188 | "cross-spawn": {
1189 | "version": "7.0.3",
1190 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1191 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1192 | "dev": true,
1193 | "requires": {
1194 | "path-key": "^3.1.0",
1195 | "shebang-command": "^2.0.0",
1196 | "which": "^2.0.1"
1197 | }
1198 | },
1199 | "debug": {
1200 | "version": "4.3.3",
1201 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
1202 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
1203 | "dev": true,
1204 | "requires": {
1205 | "ms": "2.1.2"
1206 | }
1207 | },
1208 | "deep-is": {
1209 | "version": "0.1.4",
1210 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1211 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1212 | "dev": true
1213 | },
1214 | "doctrine": {
1215 | "version": "3.0.0",
1216 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1217 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1218 | "dev": true,
1219 | "requires": {
1220 | "esutils": "^2.0.2"
1221 | }
1222 | },
1223 | "escape-string-regexp": {
1224 | "version": "4.0.0",
1225 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1226 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1227 | "dev": true
1228 | },
1229 | "eslint": {
1230 | "version": "8.10.0",
1231 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz",
1232 | "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==",
1233 | "dev": true,
1234 | "requires": {
1235 | "@eslint/eslintrc": "^1.2.0",
1236 | "@humanwhocodes/config-array": "^0.9.2",
1237 | "ajv": "^6.10.0",
1238 | "chalk": "^4.0.0",
1239 | "cross-spawn": "^7.0.2",
1240 | "debug": "^4.3.2",
1241 | "doctrine": "^3.0.0",
1242 | "escape-string-regexp": "^4.0.0",
1243 | "eslint-scope": "^7.1.1",
1244 | "eslint-utils": "^3.0.0",
1245 | "eslint-visitor-keys": "^3.3.0",
1246 | "espree": "^9.3.1",
1247 | "esquery": "^1.4.0",
1248 | "esutils": "^2.0.2",
1249 | "fast-deep-equal": "^3.1.3",
1250 | "file-entry-cache": "^6.0.1",
1251 | "functional-red-black-tree": "^1.0.1",
1252 | "glob-parent": "^6.0.1",
1253 | "globals": "^13.6.0",
1254 | "ignore": "^5.2.0",
1255 | "import-fresh": "^3.0.0",
1256 | "imurmurhash": "^0.1.4",
1257 | "is-glob": "^4.0.0",
1258 | "js-yaml": "^4.1.0",
1259 | "json-stable-stringify-without-jsonify": "^1.0.1",
1260 | "levn": "^0.4.1",
1261 | "lodash.merge": "^4.6.2",
1262 | "minimatch": "^3.0.4",
1263 | "natural-compare": "^1.4.0",
1264 | "optionator": "^0.9.1",
1265 | "regexpp": "^3.2.0",
1266 | "strip-ansi": "^6.0.1",
1267 | "strip-json-comments": "^3.1.0",
1268 | "text-table": "^0.2.0",
1269 | "v8-compile-cache": "^2.0.3"
1270 | }
1271 | },
1272 | "eslint-plugin-metafizzy": {
1273 | "version": "2.0.1",
1274 | "resolved": "https://registry.npmjs.org/eslint-plugin-metafizzy/-/eslint-plugin-metafizzy-2.0.1.tgz",
1275 | "integrity": "sha512-Xo0yL+y4WgEnn23sk6SSaizEzDmqdi2ZzWO5Bitzgzv/nY7G/qVPrffkLVZKE3RZzfLoFmlVwfctJXFojsU/5g==",
1276 | "dev": true,
1277 | "requires": {}
1278 | },
1279 | "eslint-scope": {
1280 | "version": "7.1.1",
1281 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
1282 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
1283 | "dev": true,
1284 | "requires": {
1285 | "esrecurse": "^4.3.0",
1286 | "estraverse": "^5.2.0"
1287 | }
1288 | },
1289 | "eslint-utils": {
1290 | "version": "3.0.0",
1291 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
1292 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
1293 | "dev": true,
1294 | "requires": {
1295 | "eslint-visitor-keys": "^2.0.0"
1296 | },
1297 | "dependencies": {
1298 | "eslint-visitor-keys": {
1299 | "version": "2.1.0",
1300 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
1301 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
1302 | "dev": true
1303 | }
1304 | }
1305 | },
1306 | "eslint-visitor-keys": {
1307 | "version": "3.3.0",
1308 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
1309 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
1310 | "dev": true
1311 | },
1312 | "espree": {
1313 | "version": "9.3.1",
1314 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
1315 | "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
1316 | "dev": true,
1317 | "requires": {
1318 | "acorn": "^8.7.0",
1319 | "acorn-jsx": "^5.3.1",
1320 | "eslint-visitor-keys": "^3.3.0"
1321 | }
1322 | },
1323 | "esquery": {
1324 | "version": "1.4.0",
1325 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
1326 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
1327 | "dev": true,
1328 | "requires": {
1329 | "estraverse": "^5.1.0"
1330 | }
1331 | },
1332 | "esrecurse": {
1333 | "version": "4.3.0",
1334 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1335 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1336 | "dev": true,
1337 | "requires": {
1338 | "estraverse": "^5.2.0"
1339 | }
1340 | },
1341 | "estraverse": {
1342 | "version": "5.3.0",
1343 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1344 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1345 | "dev": true
1346 | },
1347 | "esutils": {
1348 | "version": "2.0.3",
1349 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1350 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1351 | "dev": true
1352 | },
1353 | "ev-emitter": {
1354 | "version": "2.1.2",
1355 | "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-2.1.2.tgz",
1356 | "integrity": "sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==",
1357 | "peer": true
1358 | },
1359 | "fast-deep-equal": {
1360 | "version": "3.1.3",
1361 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1362 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1363 | "dev": true
1364 | },
1365 | "fast-json-stable-stringify": {
1366 | "version": "2.1.0",
1367 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1368 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1369 | "dev": true
1370 | },
1371 | "fast-levenshtein": {
1372 | "version": "2.0.6",
1373 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1374 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1375 | "dev": true
1376 | },
1377 | "file-entry-cache": {
1378 | "version": "6.0.1",
1379 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1380 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1381 | "dev": true,
1382 | "requires": {
1383 | "flat-cache": "^3.0.4"
1384 | }
1385 | },
1386 | "fizzy-ui-utils": {
1387 | "version": "3.0.0",
1388 | "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-3.0.0.tgz",
1389 | "integrity": "sha512-uJj38QFQiJ/KCio5tiZhwAjIbTXSIgzBCKdKVbaYfLS053F6z23Nb0o1ZoO9gnxOQWN7BCc35jsvrCtAq3gY9g=="
1390 | },
1391 | "flat-cache": {
1392 | "version": "3.0.4",
1393 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1394 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1395 | "dev": true,
1396 | "requires": {
1397 | "flatted": "^3.1.0",
1398 | "rimraf": "^3.0.2"
1399 | }
1400 | },
1401 | "flatted": {
1402 | "version": "3.2.5",
1403 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
1404 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
1405 | "dev": true
1406 | },
1407 | "flickity": {
1408 | "version": "3.0.0",
1409 | "resolved": "https://registry.npmjs.org/flickity/-/flickity-3.0.0.tgz",
1410 | "integrity": "sha512-Xw4znhglA2LVSmka0yKmzb4+fLwXm13TuKmdG1HbUoZZL95J1ZMr4hAA3w69s+Z6q/c6CyBDM25JVwMqgF3rOg==",
1411 | "peer": true,
1412 | "requires": {
1413 | "ev-emitter": "^2.1.2",
1414 | "fizzy-ui-utils": "^3.0.0",
1415 | "get-size": "^3.0.0",
1416 | "imagesloaded": "^5.0.0",
1417 | "unidragger": "^3.0.0"
1418 | }
1419 | },
1420 | "fs.realpath": {
1421 | "version": "1.0.0",
1422 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1423 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1424 | "dev": true
1425 | },
1426 | "functional-red-black-tree": {
1427 | "version": "1.0.1",
1428 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1429 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1430 | "dev": true
1431 | },
1432 | "get-size": {
1433 | "version": "3.0.0",
1434 | "resolved": "https://registry.npmjs.org/get-size/-/get-size-3.0.0.tgz",
1435 | "integrity": "sha512-Y8aiXLq4leR7807UY0yuKEwif5s3kbVp1nTv+i4jBeoUzByTLKkLWu/HorS6/pB+7gsB0o7OTogC8AoOOeT0Hw==",
1436 | "peer": true
1437 | },
1438 | "glob": {
1439 | "version": "7.2.0",
1440 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1441 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1442 | "dev": true,
1443 | "requires": {
1444 | "fs.realpath": "^1.0.0",
1445 | "inflight": "^1.0.4",
1446 | "inherits": "2",
1447 | "minimatch": "^3.0.4",
1448 | "once": "^1.3.0",
1449 | "path-is-absolute": "^1.0.0"
1450 | }
1451 | },
1452 | "glob-parent": {
1453 | "version": "6.0.2",
1454 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1455 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1456 | "dev": true,
1457 | "requires": {
1458 | "is-glob": "^4.0.3"
1459 | }
1460 | },
1461 | "globals": {
1462 | "version": "13.12.1",
1463 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
1464 | "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
1465 | "dev": true,
1466 | "requires": {
1467 | "type-fest": "^0.20.2"
1468 | }
1469 | },
1470 | "globalyzer": {
1471 | "version": "0.1.0",
1472 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
1473 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
1474 | "dev": true
1475 | },
1476 | "globrex": {
1477 | "version": "0.1.2",
1478 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
1479 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
1480 | "dev": true
1481 | },
1482 | "has-flag": {
1483 | "version": "4.0.0",
1484 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1485 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1486 | "dev": true
1487 | },
1488 | "ignore": {
1489 | "version": "5.2.0",
1490 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
1491 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
1492 | "dev": true
1493 | },
1494 | "imagesloaded": {
1495 | "version": "5.0.0",
1496 | "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-5.0.0.tgz",
1497 | "integrity": "sha512-/0JGSubc1MTCoDKVmonLHgbifBWHdyLkun+R/151E1c5n79hiSxcd7cB7mPXFgojYu8xnRZv7GYxzKoxW8BetQ==",
1498 | "peer": true,
1499 | "requires": {
1500 | "ev-emitter": "^2.1.2"
1501 | }
1502 | },
1503 | "import-fresh": {
1504 | "version": "3.3.0",
1505 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1506 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1507 | "dev": true,
1508 | "requires": {
1509 | "parent-module": "^1.0.0",
1510 | "resolve-from": "^4.0.0"
1511 | }
1512 | },
1513 | "imurmurhash": {
1514 | "version": "0.1.4",
1515 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1516 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1517 | "dev": true
1518 | },
1519 | "inflight": {
1520 | "version": "1.0.6",
1521 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1522 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1523 | "dev": true,
1524 | "requires": {
1525 | "once": "^1.3.0",
1526 | "wrappy": "1"
1527 | }
1528 | },
1529 | "inherits": {
1530 | "version": "2.0.4",
1531 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1532 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1533 | "dev": true
1534 | },
1535 | "is-extglob": {
1536 | "version": "2.1.1",
1537 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1538 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1539 | "dev": true
1540 | },
1541 | "is-glob": {
1542 | "version": "4.0.3",
1543 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1544 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1545 | "dev": true,
1546 | "requires": {
1547 | "is-extglob": "^2.1.1"
1548 | }
1549 | },
1550 | "isexe": {
1551 | "version": "2.0.0",
1552 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1553 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1554 | "dev": true
1555 | },
1556 | "js-yaml": {
1557 | "version": "4.1.0",
1558 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
1559 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1560 | "dev": true,
1561 | "requires": {
1562 | "argparse": "^2.0.1"
1563 | }
1564 | },
1565 | "json-schema-traverse": {
1566 | "version": "0.4.1",
1567 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1568 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1569 | "dev": true
1570 | },
1571 | "json-stable-stringify-without-jsonify": {
1572 | "version": "1.0.1",
1573 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1574 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1575 | "dev": true
1576 | },
1577 | "levn": {
1578 | "version": "0.4.1",
1579 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1580 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1581 | "dev": true,
1582 | "requires": {
1583 | "prelude-ls": "^1.2.1",
1584 | "type-check": "~0.4.0"
1585 | }
1586 | },
1587 | "lodash.merge": {
1588 | "version": "4.6.2",
1589 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1590 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1591 | "dev": true
1592 | },
1593 | "minimatch": {
1594 | "version": "3.1.2",
1595 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1596 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1597 | "dev": true,
1598 | "requires": {
1599 | "brace-expansion": "^1.1.7"
1600 | }
1601 | },
1602 | "ms": {
1603 | "version": "2.1.2",
1604 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1605 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1606 | "dev": true
1607 | },
1608 | "natural-compare": {
1609 | "version": "1.4.0",
1610 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1611 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1612 | "dev": true
1613 | },
1614 | "node-watch": {
1615 | "version": "0.7.3",
1616 | "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz",
1617 | "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==",
1618 | "dev": true
1619 | },
1620 | "once": {
1621 | "version": "1.4.0",
1622 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1623 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1624 | "dev": true,
1625 | "requires": {
1626 | "wrappy": "1"
1627 | }
1628 | },
1629 | "optionator": {
1630 | "version": "0.9.1",
1631 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
1632 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
1633 | "dev": true,
1634 | "requires": {
1635 | "deep-is": "^0.1.3",
1636 | "fast-levenshtein": "^2.0.6",
1637 | "levn": "^0.4.1",
1638 | "prelude-ls": "^1.2.1",
1639 | "type-check": "^0.4.0",
1640 | "word-wrap": "^1.2.3"
1641 | }
1642 | },
1643 | "parent-module": {
1644 | "version": "1.0.1",
1645 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1646 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1647 | "dev": true,
1648 | "requires": {
1649 | "callsites": "^3.0.0"
1650 | }
1651 | },
1652 | "path-is-absolute": {
1653 | "version": "1.0.1",
1654 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1655 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1656 | "dev": true
1657 | },
1658 | "path-key": {
1659 | "version": "3.1.1",
1660 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1661 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1662 | "dev": true
1663 | },
1664 | "prelude-ls": {
1665 | "version": "1.2.1",
1666 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1667 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1668 | "dev": true
1669 | },
1670 | "punycode": {
1671 | "version": "2.1.1",
1672 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1673 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1674 | "dev": true
1675 | },
1676 | "qunit": {
1677 | "version": "2.18.0",
1678 | "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.18.0.tgz",
1679 | "integrity": "sha512-Xw/zUm5t1JY8SNErki/qtw4fCuaaOZL+bPloZU+0kto+fO8j1JV9MQWqXO4kATfhEyJohlsKZpfg1HF7GOkpXw==",
1680 | "dev": true,
1681 | "requires": {
1682 | "commander": "7.2.0",
1683 | "node-watch": "0.7.3",
1684 | "tiny-glob": "0.2.9"
1685 | }
1686 | },
1687 | "regexpp": {
1688 | "version": "3.2.0",
1689 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
1690 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
1691 | "dev": true
1692 | },
1693 | "resolve-from": {
1694 | "version": "4.0.0",
1695 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1696 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1697 | "dev": true
1698 | },
1699 | "rimraf": {
1700 | "version": "3.0.2",
1701 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1702 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1703 | "dev": true,
1704 | "requires": {
1705 | "glob": "^7.1.3"
1706 | }
1707 | },
1708 | "shebang-command": {
1709 | "version": "2.0.0",
1710 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1711 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1712 | "dev": true,
1713 | "requires": {
1714 | "shebang-regex": "^3.0.0"
1715 | }
1716 | },
1717 | "shebang-regex": {
1718 | "version": "3.0.0",
1719 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1720 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1721 | "dev": true
1722 | },
1723 | "strip-ansi": {
1724 | "version": "6.0.1",
1725 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1726 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1727 | "dev": true,
1728 | "requires": {
1729 | "ansi-regex": "^5.0.1"
1730 | }
1731 | },
1732 | "strip-json-comments": {
1733 | "version": "3.1.1",
1734 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1735 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1736 | "dev": true
1737 | },
1738 | "supports-color": {
1739 | "version": "7.2.0",
1740 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1741 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1742 | "dev": true,
1743 | "requires": {
1744 | "has-flag": "^4.0.0"
1745 | }
1746 | },
1747 | "text-table": {
1748 | "version": "0.2.0",
1749 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1750 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1751 | "dev": true
1752 | },
1753 | "tiny-glob": {
1754 | "version": "0.2.9",
1755 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
1756 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
1757 | "dev": true,
1758 | "requires": {
1759 | "globalyzer": "0.1.0",
1760 | "globrex": "^0.1.2"
1761 | }
1762 | },
1763 | "type-check": {
1764 | "version": "0.4.0",
1765 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1766 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1767 | "dev": true,
1768 | "requires": {
1769 | "prelude-ls": "^1.2.1"
1770 | }
1771 | },
1772 | "type-fest": {
1773 | "version": "0.20.2",
1774 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
1775 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
1776 | "dev": true
1777 | },
1778 | "unidragger": {
1779 | "version": "3.0.1",
1780 | "resolved": "https://registry.npmjs.org/unidragger/-/unidragger-3.0.1.tgz",
1781 | "integrity": "sha512-RngbGSwBFmqGBWjkaH+yB677uzR95blSQyxq6hYbrQCejH3Mx1nm8DVOuh3M9k2fQyTstWUG5qlgCnNqV/9jVw==",
1782 | "peer": true,
1783 | "requires": {
1784 | "ev-emitter": "^2.0.0"
1785 | }
1786 | },
1787 | "uri-js": {
1788 | "version": "4.4.1",
1789 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1790 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1791 | "dev": true,
1792 | "requires": {
1793 | "punycode": "^2.1.0"
1794 | }
1795 | },
1796 | "v8-compile-cache": {
1797 | "version": "2.3.0",
1798 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
1799 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
1800 | "dev": true
1801 | },
1802 | "which": {
1803 | "version": "2.0.2",
1804 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1805 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1806 | "dev": true,
1807 | "requires": {
1808 | "isexe": "^2.0.0"
1809 | }
1810 | },
1811 | "word-wrap": {
1812 | "version": "1.2.3",
1813 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1814 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1815 | "dev": true
1816 | },
1817 | "wrappy": {
1818 | "version": "1.0.2",
1819 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1820 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1821 | "dev": true
1822 | }
1823 | }
1824 | }
1825 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flickity-as-nav-for",
3 | "version": "3.0.0",
4 | "description": "Enable asNavFor for Flickity",
5 | "main": "as-nav-for.js",
6 | "dependencies": {
7 | "fizzy-ui-utils": "^3.0.0"
8 | },
9 | "peerDependencies": {
10 | "flickity": "^3.0.0"
11 | },
12 | "devDependencies": {
13 | "eslint": "^8.10.0",
14 | "eslint-plugin-metafizzy": "^2.0.1",
15 | "qunit": "^2.18.0"
16 | },
17 | "scripts": {
18 | "test": "npm run lint",
19 | "lint": "npx eslint ."
20 | },
21 | "repository": {
22 | "type": "git",
23 | "url": "git://github.com/desandro/flickity-as-nav-for.git"
24 | },
25 | "keywords": [
26 | "flickity",
27 | "browser",
28 | "DOM"
29 | ],
30 | "author": "David DeSandro",
31 | "license": "MIT",
32 | "bugs": {
33 | "url": "https://github.com/desandro/flickity-as-nav-for/issues"
34 | },
35 | "homepage": "https://github.com/desandro/flickity-as-nav-for",
36 | "directories": {
37 | "test": "test"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/sandbox/as-nav-for.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | asNavFor
8 |
9 |
10 |
45 |
46 |
47 |
48 |
49 | asNavFor
50 |
51 |
52 |
1
53 |
2
54 |
3
55 |
4
56 |
5
57 |
6
58 |
7
59 |
8
60 |
9
61 |
62 |
63 |
65 |
1
66 |
2
67 |
3
68 |
4
69 |
5
70 |
6
71 |
7
72 |
8
73 |
9
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/sandbox/group-cells.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | groupCells
8 |
9 |
10 |
42 |
43 |
44 |
45 |
46 | groupCells
47 |
48 | Nav grouped
49 |
50 |
52 |
1
53 |
2
54 |
3
55 |
4
56 |
5
57 |
6
58 |
7
59 |
8
60 |
9
61 |
62 |
63 |
65 |
1
66 |
2
67 |
3
68 |
4
69 |
5
70 |
6
71 |
7
72 |
8
73 |
9
74 |
75 |
76 |
77 | main grouped
78 |
79 |
81 |
1
82 |
2
83 |
3
84 |
4
85 |
5
86 |
6
87 |
7
88 |
8
89 |
9
90 |
10
91 |
11
92 |
93 |
94 |
96 |
1
97 |
2
98 |
3
99 |
4
100 |
5
101 |
6
102 |
7
103 |
8
104 |
9
105 |
10
106 |
11
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
--------------------------------------------------------------------------------
/sandbox/wrap-around.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | asNavFor + wrapAround
8 |
9 |
10 |
49 |
50 |
51 |
52 |
53 | 0
54 |
55 |
56 |
1
57 |
2
58 |
3
59 |
4
60 |
5
61 |
6
62 |
7
63 |
8
64 |
9
65 |
66 |
67 |
69 |
1
70 |
2
71 |
3
72 |
4
73 |
5
74 |
6
75 |
7
76 |
8
77 |
9
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/test/group-cells.js:
--------------------------------------------------------------------------------
1 | QUnit.test( 'groupCells', function( assert ) {
2 |
3 | let carousel = document.querySelector('.carousel--group-cells');
4 | let flkty = new Flickity( carousel );
5 |
6 | let navCarousel = document.querySelector('.carousel--group-cells-nav');
7 | let navFlkty = new Flickity( navCarousel, {
8 | groupCells: true,
9 | asNavFor: '.carousel--group-cells',
10 | } );
11 |
12 | let navCellElems = navCarousel.querySelectorAll('.cell');
13 |
14 | // getting navCompanion is async
15 | let done = assert.async();
16 |
17 | function checkSelectedClass( index, bool ) {
18 | let hasClass = navCellElems[ index ].classList.contains('is-nav-selected');
19 | let message = `cell ${index} ${bool ? 'has' : 'does not have'} selected class`;
20 | assert.equal( hasClass, bool, message );
21 | }
22 |
23 | setTimeout( function() {
24 | checkSelectedClass( 0, true );
25 | // stay in group
26 | flkty.next();
27 | assert.equal( navFlkty.selectedIndex, 0, 'still at 0' );
28 | checkSelectedClass( 1, true );
29 | checkSelectedClass( 0, false );
30 | // new group
31 | flkty.select( 3 );
32 | assert.equal( navFlkty.selectedIndex, 1, 'nav at 1' );
33 | checkSelectedClass( 3, true );
34 | checkSelectedClass( 1, false );
35 | // click
36 | // fake trigger staticClick event
37 | navFlkty.staticClick({
38 | target: navCellElems[7],
39 | });
40 | assert.equal( flkty.selectedIndex, 7, 'staticClick selects carousel' );
41 | assert.equal( navFlkty.selectedIndex, 2, 'staticClick selects nav' );
42 | // deactivate
43 | navFlkty.deactivate();
44 | assert.ok( !navCarousel.querySelector('.is-nav-selected'),
45 | 'no is-nav-selected after deactivate' );
46 | // re-activate
47 | flkty.select( 4 );
48 | navFlkty.activate();
49 | assert.equal( navFlkty.selectedIndex, 1,
50 | 'nav carousel reactivated at correct selectedIndex' );
51 | checkSelectedClass( 4, true );
52 |
53 | done();
54 | } );
55 |
56 | } );
57 |
--------------------------------------------------------------------------------
/test/group-main.js:
--------------------------------------------------------------------------------
1 | QUnit.test( 'groupCells main', function( assert ) {
2 |
3 | let carousel = document.querySelector('.carousel--group-main');
4 | let flkty = new Flickity( carousel, {
5 | groupCells: true,
6 | } );
7 |
8 | let navCarousel = document.querySelector('.carousel--group-main-nav');
9 | let navFlkty = new Flickity( navCarousel, {
10 | asNavFor: '.carousel--group-main',
11 | } );
12 |
13 | let navCellElems = navCarousel.querySelectorAll('.cell');
14 |
15 | // getting navCompanion is async
16 | let done = assert.async();
17 |
18 | function checkSelectedClass( index, bool ) {
19 | let hasClass = navCellElems[ index ].classList.contains('is-nav-selected');
20 | let message = `cell ${index} ${bool ? 'has' : 'does not have'} selected class`;
21 | assert.equal( hasClass, bool, message );
22 | }
23 |
24 | function checkSelectedClasses( indexes, bool ) {
25 | indexes.forEach( function( index ) {
26 | checkSelectedClass( index, bool );
27 | } );
28 | }
29 |
30 | setTimeout( function() {
31 | assert.equal( navFlkty.selectedIndex, 1, 'init nav at 1' );
32 | checkSelectedClasses( [ 0, 1, 2 ], true );
33 | // new group
34 | flkty.next();
35 | assert.equal( navFlkty.selectedIndex, 4, 'nav at 4, main at 3' );
36 | checkSelectedClasses( [ 3, 4, 5 ], true );
37 | checkSelectedClasses( [ 0, 1, 2 ], false );
38 | // click
39 | // fake trigger staticClick event
40 | navFlkty.staticClick({
41 | target: navCellElems[2],
42 | });
43 | assert.equal( flkty.selectedIndex, 0, 'staticClick selects carousel' );
44 | assert.equal( navFlkty.selectedIndex, 1, 'staticClick selects nav, center cell' );
45 | // deactivate
46 | navFlkty.deactivate();
47 | assert.ok( !navCarousel.querySelector('.is-nav-selected'),
48 | 'no is-nav-selected after deactivate' );
49 | // re-activate
50 | flkty.select( 2 );
51 | navFlkty.activate();
52 | assert.equal( navFlkty.selectedIndex, 6,
53 | 'nav carousel reactivated at correct selectedIndex' );
54 | checkSelectedClasses( [ 6, 7 ], true );
55 |
56 | done();
57 | } );
58 |
59 | } );
60 |
--------------------------------------------------------------------------------
/test/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Flickity asNavFor tests
8 |
9 |
10 |
11 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | asNavFor
76 |
77 |
1
78 |
2
79 |
3
80 |
4
81 |
5
82 |
6
83 |
84 |
85 |
86 |
1
87 |
2
88 |
3
89 |
4
90 |
5
91 |
6
92 |
93 |
94 | groupCells
95 |
96 |
97 |
1
98 |
2
99 |
3
100 |
4
101 |
5
102 |
6
103 |
7
104 |
8
105 |
106 |
107 |
108 |
1
109 |
2
110 |
3
111 |
4
112 |
5
113 |
6
114 |
7
115 |
8
116 |
117 |
118 | groupCells main
119 |
120 |
121 |
1
122 |
2
123 |
3
124 |
4
125 |
5
126 |
6
127 |
7
128 |
8
129 |
130 |
131 |
132 |
1
133 |
2
134 |
3
135 |
4
136 |
5
137 |
6
138 |
7
139 |
8
140 |
141 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/test/test-as-nav-for.js:
--------------------------------------------------------------------------------
1 | QUnit.test( 'asNavFor', function( assert ) {
2 |
3 | let carouselB = document.querySelector('#carousel-b');
4 | let flktyB = new Flickity( carouselB, {
5 | asNavFor: '#carousel-a',
6 | } );
7 | let bCellElements = carouselB.querySelectorAll('.cell');
8 |
9 | let flktyA = new Flickity('#carousel-a');
10 |
11 | // getting navCompanion is async
12 | let done = assert.async();
13 |
14 | function containsNavSelectedClass( index ) {
15 | return bCellElements[ index ].classList.contains('is-nav-selected');
16 | }
17 |
18 | setTimeout( function() {
19 | assert.ok( containsNavSelectedClass( 0 ),
20 | 'first cell element has nav selected class' );
21 |
22 | flktyA.next();
23 | assert.equal( flktyB.selectedIndex, 1, 'A.next() syncs to B' );
24 | assert.ok( containsNavSelectedClass( 1 ), '2nd cell element has nav selected class' );
25 | assert.ok( !containsNavSelectedClass( 0 ),
26 | '1st cell element does not have nav selected class' );
27 | flktyA.previous();
28 | assert.equal( flktyB.selectedIndex, 0, 'A.previous() syncs to B' );
29 | flktyA.select( 3 );
30 | assert.equal( flktyB.selectedIndex, 3, 'A.select() syncs to B' );
31 | assert.ok( containsNavSelectedClass( 3 ),
32 | 'fourth cell element has nav selected class' );
33 | assert.ok( !containsNavSelectedClass( 0 ),
34 | '1st cell element does not have nav selected class' );
35 | // click
36 | // fake trigger staticClick event
37 | flktyB.staticClick({
38 | target: bCellElements[2],
39 | });
40 | assert.equal( flktyA.selectedIndex, 2, 'B.staticClick selects A' );
41 | assert.equal( flktyB.selectedIndex, 2, 'B.staticClick selects B' );
42 | assert.ok( containsNavSelectedClass( 2 ),
43 | 'third cell element has nav selected class' );
44 | assert.ok( !containsNavSelectedClass( 3 ),
45 | '4th cell element does not have nav selected class' );
46 |
47 | flktyB.deactivate();
48 | assert.ok( !carouselB.querySelector('.is-nav-selected'),
49 | 'no is-nav-selected after deactivate' );
50 |
51 | flktyB.activate();
52 | assert.equal( flktyB.selectedIndex, 2, 'B reactivated with selectedIndex' );
53 | assert.ok( containsNavSelectedClass( 2 ),
54 | 'third cell element has nav selected class' );
55 |
56 | done();
57 | } );
58 |
59 | } );
60 |
--------------------------------------------------------------------------------