127 | ```
128 |
129 | ## How it works
130 |
131 | The script registers a `MutationObserver` that activates when the grid or one of its children adds or loses a class or element. That means there's no need to remove the animations before removing the grid, everything should be cleaned up automatically.
132 | It uses the FLIP animation technique to smoothly update the grid, applying a counter transform to the children of each item so that they do not appear distorted while the transition occurs.
133 |
134 | It should work on container elements without CSS grid applied as well, but was developed and tested with CSS grid in mind.
135 |
136 | ## Usage with Frameworks
137 |
138 | The `animate-css-grid` library can easily be used with frameworks like React or Vue.
139 |
140 | Check out the [React example](https://codepen.io/aholachek/pen/mxwvmV) or the [Vue example](https://codepen.io/sustained/pen/Rwbdgob) on Codepen!
141 |
--------------------------------------------------------------------------------
/demo/index.css:
--------------------------------------------------------------------------------
1 | /* layout */
2 |
3 | .grid {
4 | display: grid;
5 | grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
6 | grid-template-rows: minmax(15rem, 1fr);
7 | grid-auto-rows: 1fr;
8 | grid-gap: 1rem;
9 | grid-auto-flow: dense;
10 | }
11 |
12 | .grid--full {
13 | grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
14 | grid-template-rows: minmax(19rem, 1fr);
15 | }
16 |
17 | /* styling */
18 |
19 | .card--hidden {
20 | display: none !important;
21 | }
22 |
23 | .card--expanded {
24 | grid-column: span 2;
25 | grid-row: span 2;
26 | }
27 |
28 | .card {
29 | cursor: pointer;
30 | display: flex;
31 | justify-content: center;
32 | align-items: center;
33 | padding: 1rem;
34 | overflow: hidden;
35 | }
36 |
37 | .card > div {
38 | display: flex;
39 | flex-direction: column;
40 | justify-content: center;
41 | align-items: center;
42 | }
43 |
44 | .card__avatar {
45 | height: 6rem;
46 | width: 6rem;
47 | border-radius: 100%;
48 | background-color: hsla(0, 0%, 0%, 0.2);
49 | margin-bottom: 1rem;
50 | }
51 |
52 | .card__title {
53 | height: 1rem;
54 | width: 7rem;
55 | background-color: hsla(0, 0%, 0%, 0.6);
56 | margin-bottom: 1rem;
57 | }
58 |
59 | .card__description {
60 | height: 2rem;
61 | width: 11rem;
62 | background-color: hsla(0, 0%, 0%, 0.2);
63 | }
64 |
65 | .card--1 {
66 | background-color: #366f6e;
67 | }
68 |
69 | .card--2 {
70 | background-color: #79ac91;
71 | }
72 |
73 | .card--3 {
74 | background-color: #e2b060;
75 | }
76 |
77 | .card--4 {
78 | background-color: #e86448;
79 | }
80 |
81 | .card--5 {
82 | background-color: #dc5263;
83 | }
84 |
85 | body {
86 | background-color: #191919;
87 | color: lightgray;
88 | font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
89 | "Roboto", "Helvetica Neue", Arial, sans-serif;
90 | min-height: 200vh;
91 | }
92 |
93 | .mb-4 {
94 | margin-bottom: 1rem;
95 | }
96 |
97 | .p-4 {
98 | padding: 1rem;
99 | }
100 |
101 | button {
102 | padding: 0.5rem;
103 | }
104 |
105 | /* for the accordion */
106 |
107 | .subjects {
108 | margin-top: 5rem;
109 | display: grid;
110 | grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr));
111 | height: 100vh;
112 | }
113 |
114 | .subject {
115 | padding: 2rem;
116 | overflow: hidden;
117 | color: #191919;
118 | }
119 |
120 | .subject__content {
121 | display: none;
122 | }
123 |
124 | .subject:first-of-type {
125 | background-color: #366f6e;
126 | }
127 |
128 | .subject:nth-of-type(2) {
129 | background-color: #79ac91;
130 | }
131 |
132 | .subject:nth-of-type(3) {
133 | background-color: #e2b060;
134 | }
135 |
136 | .subject:nth-of-type(4) {
137 | background-color: #e86448;
138 | }
139 |
140 | .subject:nth-of-type(5) {
141 | background-color: #dc5263;
142 | }
143 |
144 | .subject--active {
145 | grid-column-end: span 3;
146 | }
147 |
148 | .subject--active .subject__content {
149 | display: block;
150 | }
151 |
152 | /* changes test */
153 |
154 | .grid-children-change {
155 | display: grid;
156 | grid-template-columns: repeat(3, minmax(min-content, 200px));
157 | grid-auto-rows: fit-content(600px);
158 | grid-gap: 1rem;
159 | grid-auto-flow: dense;
160 | justify-content: center;
161 | }
162 |
163 | .card__inner {
164 | background-color: hsla(0, 0%, 0%, 0.6);
165 | /* transition: width 0.5s, height 0.5s; */
166 | }
167 |
168 | .card__inner--1 {
169 | width: 50px;
170 | height: 120px;
171 | }
172 |
173 | .card__inner--2 {
174 | width: 130px;
175 | height: 10px;
176 | }
177 | .card__inner--3 {
178 | width: 220px;
179 | height: 80px;
180 | }
181 |
182 | /* ==========================================================================
183 | nested grid
184 | ========================================================================== */
185 |
186 | .nested-grid {
187 | display: grid;
188 | grid-auto-flow: dense;
189 | grid-gap: 0.5rem;
190 | grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
191 | grid-template-rows: repeat(auto-fit, minmax(2rem, 1fr));
192 | }
193 |
194 | .scroll-example {
195 | width: 500px;
196 | overflow-x: scroll;
197 | display: flex;
198 | }
199 |
200 | .scroll-example div {
201 | margin-right: 1rem;
202 | display: flex;
203 | justify-content: center;
204 | align-items: center;
205 | height: 8rem;
206 | flex: 0 0 100px;
207 | }
208 |
209 | .small {
210 | background-color: orange;
211 | }
212 |
213 | .big {
214 | background-color: blue;
215 | }
216 |
--------------------------------------------------------------------------------
/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
animate-css-grid example
9 |
10 |
11 |
12 |
13 |
14 |
26 |
27 |
28 |
click a card to expand it
29 |
toggle grid size
30 |
add a card
31 |
remove animations
32 |
33 |
34 |
35 |
36 |
37 |
38 |
45 |
52 |
59 |
66 |
73 |
80 |
87 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | Title One
103 |
104 |
105 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Velit, sequi quas porro blanditiis distinctio consequatur minima
106 | optio vero eaque autem. Odit enim totam rem officia quae iste placeat labore similique?
107 |
108 |
109 |
110 |
111 |
112 |
113 | Title Two
114 |
115 |
116 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Velit, sequi quas porro blanditiis distinctio consequatur minima
117 | optio vero eaque autem. Odit enim totam rem officia quae iste placeat labore similique?
118 |
119 |
120 |
121 |
122 |
123 |
124 | Title Three
125 |
126 |
127 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Velit, sequi quas porro blanditiis distinctio consequatur minima
128 | optio vero eaque autem. Odit enim totam rem officia quae iste placeat labore similique?
129 |
130 |
131 |
132 |
133 |
134 |
135 | Title Four
136 |
137 |
138 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Velit, sequi quas porro blanditiis distinctio consequatur minima
139 | optio vero eaque autem. Odit enim totam rem officia quae iste placeat labore similique?
140 |
141 |
142 |
143 |
144 |
145 |
146 | Title Five
147 |
148 |
149 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Velit, sequi quas porro blanditiis distinctio consequatur minima
150 | optio vero eaque autem. Odit enim totam rem officia quae iste placeat labore similique?
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
161 |
162 |
163 |
164 |
169 |
174 |
179 |
184 |
189 |
194 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
click a card to hide it
206 |
toggle grid size
207 |
add a card
208 |
show all hidden buttons
209 |
210 |
211 |
212 |
213 |
214 |
215 |
222 |
229 |
236 |
243 |
250 |
257 |
264 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
--------------------------------------------------------------------------------
/demo/index.js:
--------------------------------------------------------------------------------
1 | import { wrapGrid } from '../dist/main';
2 |
3 | const grid = document.querySelector('.grid');
4 |
5 | document
6 | .querySelector('.js-toggle-grid')
7 | .addEventListener('click', () => grid.classList.toggle('grid--full'));
8 |
9 | document.querySelector('.js-add-card').addEventListener('click', () => {
10 | const randomNumber = Math.floor(Math.random() * 5) + 1;
11 | grid.insertAdjacentHTML(
12 | 'beforeend',
13 | `
14 |
21 | `
22 | );
23 | });
24 |
25 | grid.addEventListener('click', ev => {
26 | let target = ev.target;
27 | while (target.tagName !== 'HTML') {
28 | if (target.classList.contains('card')) {
29 | target.classList.toggle('card--expanded');
30 | return;
31 | }
32 | target = target.parentElement;
33 | }
34 | });
35 |
36 | const { unwrapGrid: uwg } = wrapGrid(grid, {
37 | easing: 'backOut',
38 | onStart: els =>
39 | els.forEach(el => {
40 | console.log('foo');
41 | el.classList.add('big');
42 | }),
43 | onEnd: els => els.forEach(el => el.classList.add('small')),
44 | });
45 |
46 | uwg();
47 | console.log('unwrapped');
48 |
49 | const { unwrapGrid } = wrapGrid(grid, {
50 | easing: 'backOut',
51 | onStart: els =>
52 | els.forEach(el => {
53 | console.log('onstart');
54 | el.classList.add('big');
55 | }),
56 | onEnd: els => {
57 | els.forEach(el => el.classList.add('small'));
58 | console.log('onend');
59 | },
60 | });
61 |
62 | document
63 | .querySelector('.js-remove-listener')
64 | .addEventListener('click', unwrapGrid);
65 |
66 | // // ========================================================
67 | // // accordion test
68 | // // ========================================================
69 |
70 | const subjects = document.querySelector('.subjects');
71 |
72 | // animate the grid
73 | const { unwrapGridSubjects } = wrapGrid(subjects, { easing: 'linear' });
74 |
75 | // add a click handler
76 | subjects.addEventListener('click', ev => {
77 | [...document.querySelectorAll('.subject')].forEach(el =>
78 | el.classList.remove('subject--active')
79 | );
80 | let target = ev.target;
81 | while (target.tagName !== 'HTML') {
82 | if (target.classList.contains('subject')) {
83 | target.classList.toggle('subject--active');
84 | return;
85 | }
86 | target = target.parentElement;
87 | }
88 | });
89 |
90 | // ========================================================
91 | // children change
92 | // ========================================================
93 |
94 | const changeGrid = document.querySelector('.grid-children-change');
95 | const { unwrapChangeGrid, forceGridAnimation } = wrapGrid(changeGrid);
96 |
97 | const updateContents = () => {
98 | [...changeGrid.querySelectorAll('.card')].forEach(el => {
99 | const width = Math.random() * 300;
100 | const height = Math.random() * 200;
101 | const inner = el.querySelector('.card__inner');
102 | inner.style.width = `${width}px`;
103 | inner.style.height = `${height}px`;
104 | });
105 | forceGridAnimation();
106 | };
107 |
108 | setInterval(updateContents, 2000);
109 |
110 | // ========================================================
111 | // nested grid
112 | // ========================================================
113 |
114 | const addCard = container => i => {
115 | const randomNumber = Math.floor(Math.random() * 5) + 1;
116 | container.insertAdjacentHTML(
117 | 'beforeend',
118 | `
119 |
122 | `
123 | );
124 | };
125 |
126 | const nestedGrid = document.querySelector('.nested-grid');
127 | [...Array(400).keys()].forEach(addCard(nestedGrid));
128 |
129 | wrapGrid(nestedGrid, { duration: 300 });
130 |
131 | nestedGrid.addEventListener('click', ev => {
132 | let target = ev.target;
133 | while (target.tagName !== 'HTML') {
134 | if (target.classList.contains('card')) {
135 | target.classList.toggle('card--expanded');
136 | return;
137 | }
138 | target = target.parentElement;
139 | }
140 | });
141 |
142 | // ========================================================
143 | // hidden cards grid
144 | // ========================================================
145 |
146 | const hiddenCardGrid = document.querySelector('.hidden-cards-grid');
147 |
148 | document
149 | .querySelector('.js-toggle-grid')
150 | .addEventListener('click', () =>
151 | hiddenCardGrid.classList.toggle('grid--full')
152 | );
153 |
154 | document.querySelector('.js-hide-button').addEventListener('click', () => {
155 | [...hiddenCardGrid.querySelectorAll('.card')].forEach(el =>
156 | el.classList.remove('card--hidden')
157 | );
158 | });
159 |
160 | document.querySelector('.js-add-card').addEventListener('click', () => {
161 | const randomNumber = Math.floor(Math.random() * 5) + 1;
162 | hiddenCardGrid.insertAdjacentHTML(
163 | 'beforeend',
164 | `
165 |
172 | `
173 | );
174 | });
175 |
176 | hiddenCardGrid.addEventListener('click', ev => {
177 | let target = ev.target;
178 | while (target.tagName !== 'HTML') {
179 | if (target.classList.contains('card')) {
180 | target.classList.toggle('card--hidden');
181 | return;
182 | }
183 | target = target.parentElement;
184 | }
185 | });
186 |
187 | wrapGrid(hiddenCardGrid, { stagger: 20, easing: 'backOut', duration: 10000 });
188 |
189 | // scroll test
190 |
191 | const scrollTest = document.querySelector('.scroll-example');
192 | scrollTest.addEventListener('click', () => {
193 | const children = scrollTest.children;
194 | const reversed = [...children].reverse();
195 | scrollTest.innerHTML = '';
196 | reversed.forEach(c => {
197 | scrollTest.appendChild(c);
198 | });
199 | });
200 | wrapGrid(scrollTest, {
201 | duration: 2000,
202 | });
203 |
--------------------------------------------------------------------------------
/demo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "demo",
3 | "private": true,
4 | "source": "index.html"
5 | }
6 |
--------------------------------------------------------------------------------
/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | import { Easing } from "@popmotion/easing";
2 | interface PopmotionEasing {
3 | linear: Easing;
4 | easeIn: Easing;
5 | easeOut: Easing;
6 | easeInOut: Easing;
7 | circIn: Easing;
8 | circOut: Easing;
9 | circInOut: Easing;
10 | backIn: Easing;
11 | backOut: Easing;
12 | backInOut: Easing;
13 | anticipate: Easing;
14 | }
15 | interface WrapGridArguments {
16 | duration?: number;
17 | stagger?: number;
18 | easing?: keyof PopmotionEasing;
19 | onStart?: (animatedChildren: HTMLElement[]) => void;
20 | onEnd?: (animatedChildren: HTMLElement[]) => void;
21 | }
22 | export const wrapGrid: (container: HTMLElement, { duration, stagger, easing, onStart, onEnd, }?: WrapGridArguments) => {
23 | unwrapGrid: () => void;
24 | forceGridAnimation: () => void;
25 | };
26 |
27 | //# sourceMappingURL=index.d.ts.map
28 |
--------------------------------------------------------------------------------
/dist/index.d.ts.map:
--------------------------------------------------------------------------------
1 | {"mappings":";AAiCA;IACE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,eAAe,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACpD,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;CACnD;AC4CD,OAAO,MAAM,sBACA,WAAW,mDAOnB,iBAAiB;;;CA+OrB,CAAC","sources":["src/src/types.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,"/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n anticipate,\n backIn,\n backInOut,\n backOut,\n circIn,\n circInOut,\n circOut,\n easeIn,\n easeInOut,\n easeOut,\n linear,\n} from '@popmotion/easing';\nimport sync from 'framesync';\nimport throttle from 'lodash.throttle';\nimport { tween } from 'popmotion';\nimport {\n BoundingClientRect,\n CachedPositionData,\n ChildBoundingClientRect,\n Coords,\n ItemPosition,\n PopmotionEasing,\n WrapGridArguments,\n} from './types';\n\nconst popmotionEasing: PopmotionEasing = {\n anticipate,\n backIn,\n backInOut,\n backOut,\n circIn,\n circInOut,\n circOut,\n easeIn,\n easeInOut,\n easeOut,\n linear,\n};\n\nconst DATASET_KEY = 'animateGridId';\n\n// in order to account for scroll, (which we're not listening for)\n// always cache the item's position relative\n// to the top and left of the grid container\nconst getGridAwareBoundingClientRect = (\n gridBoundingClientRect: BoundingClientRect,\n el: HTMLElement\n): BoundingClientRect => {\n const { top, left, width, height } = el.getBoundingClientRect();\n const rect = { top, left, width, height };\n rect.top -= gridBoundingClientRect.top;\n rect.left -= gridBoundingClientRect.left;\n // if an element is display:none it will return top: 0 and left:0\n // rather than saying it's still in the containing element\n // so we need to use Math.max to make sure the coordinates stay\n // within the container\n rect.top = Math.max(rect.top, 0);\n rect.left = Math.max(rect.left, 0);\n return rect;\n};\n\n// the function used during the tweening\nconst applyCoordTransform = (\n el: HTMLElement,\n { translateX, translateY, scaleX, scaleY }: Coords,\n { immediate }: { immediate?: boolean } = {}\n): void => {\n const isFinished =\n translateX === 0 && translateY === 0 && scaleX === 1 && scaleY === 1;\n const styleEl = () => {\n el.style.transform = isFinished\n ? ''\n : `translateX(${translateX}px) translateY(${translateY}px) scaleX(${scaleX}) scaleY(${scaleY})`;\n };\n if (immediate) {\n styleEl();\n } else {\n sync.render(styleEl);\n }\n const firstChild = el.children[0] as HTMLElement;\n if (firstChild) {\n const styleChild = () => {\n firstChild.style.transform = isFinished\n ? ''\n : `scaleX(${1 / scaleX}) scaleY(${1 / scaleY})`;\n };\n if (immediate) {\n styleChild();\n } else {\n sync.render(styleChild);\n }\n }\n};\n\n// return a function that take a reference to a grid dom node and optional config\nexport const wrapGrid = (\n container: HTMLElement,\n {\n duration = 250,\n stagger = 0,\n easing = 'easeInOut',\n onStart = () => { },\n onEnd = () => { },\n }: WrapGridArguments = {}\n) => {\n if (!popmotionEasing[easing]) {\n throw new Error(`${easing} is not a valid easing name`);\n }\n\n let mutationsDisabled = false;\n\n const disableMutationsWhileFunctionRuns = (func: () => void) => {\n mutationsDisabled = true;\n func();\n setTimeout(() => {\n mutationsDisabled = false;\n }, 0);\n };\n\n // all cached position data, and in-progress tween data, is stored here\n const cachedPositionData: CachedPositionData = {};\n // initially and after every transition, record element positions\n const recordPositions = (\n elements: HTMLCollectionOf
| HTMLElement[]\n ) => {\n const gridBoundingClientRect = container.getBoundingClientRect();\n Array.from(elements).forEach(el => {\n if (typeof el.getBoundingClientRect !== 'function') {\n return;\n }\n if (!el.dataset[DATASET_KEY]) {\n const newId = `${Math.random()}`;\n el.dataset[DATASET_KEY] = newId;\n }\n const animateGridId = el.dataset[DATASET_KEY] as string;\n\n if (!cachedPositionData[animateGridId]) {\n cachedPositionData[animateGridId] = {} as ItemPosition;\n }\n\n const rect = getGridAwareBoundingClientRect(gridBoundingClientRect, el);\n cachedPositionData[animateGridId].rect = rect;\n cachedPositionData[\n animateGridId\n ].gridBoundingClientRect = gridBoundingClientRect;\n });\n };\n recordPositions(container.children as HTMLCollectionOf);\n\n const throttledResizeListener = throttle(() => {\n const bodyElement = document.querySelector('body');\n const containerIsNoLongerInPage =\n bodyElement && !bodyElement.contains(container);\n if (!container || containerIsNoLongerInPage) {\n window.removeEventListener('resize', throttledResizeListener);\n }\n recordPositions(container.children as HTMLCollectionOf);\n }, 250);\n window.addEventListener('resize', throttledResizeListener);\n\n const throttledScrollListener = throttle(() => {\n recordPositions(container.children as HTMLCollectionOf);\n }, 20);\n container.addEventListener('scroll', throttledScrollListener);\n\n const mutationCallback = (\n mutationsList: MutationRecord[] | 'forceGridAnimation'\n ) => {\n if (mutationsList !== 'forceGridAnimation') {\n // check if we care about the mutation\n const relevantMutationHappened = mutationsList.filter(\n (m: MutationRecord) =>\n m.attributeName === 'class' ||\n m.addedNodes.length ||\n m.removedNodes.length\n ).length;\n if (!relevantMutationHappened) {\n return;\n }\n if (mutationsDisabled) return;\n }\n const gridBoundingClientRect = container.getBoundingClientRect();\n const childrenElements = Array.from(container.children) as HTMLElement[];\n // stop current transitions and remove transforms on transitioning elements\n childrenElements\n .filter(el => {\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n if (itemPosition && itemPosition.stopTween) {\n itemPosition.stopTween();\n delete itemPosition.stopTween;\n return true;\n }\n })\n .forEach(el => {\n el.style.transform = '';\n const firstChild = el.children[0] as HTMLElement;\n if (firstChild) {\n firstChild.style.transform = '';\n }\n });\n const animatedGridChildren = childrenElements\n .map(el => ({\n childCoords: {} as ChildBoundingClientRect,\n el,\n boundingClientRect: getGridAwareBoundingClientRect(\n gridBoundingClientRect,\n el\n ),\n }))\n .filter(({ el, boundingClientRect }) => {\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n // don't animate the initial appearance of elements,\n // just cache their position so they can be animated later\n if (!itemPosition) {\n recordPositions([el]);\n return false;\n } else if (\n boundingClientRect.top === itemPosition.rect.top &&\n boundingClientRect.left === itemPosition.rect.left &&\n boundingClientRect.width === itemPosition.rect.width &&\n boundingClientRect.height === itemPosition.rect.height\n ) {\n // if it hasn't moved, dont animate it\n return false;\n }\n return true;\n });\n\n // having more than one child in the animated item is not supported\n animatedGridChildren.forEach(({ el }) => {\n if (Array.from(el.children).length > 1) {\n throw new Error(\n 'Make sure every grid item has a single container element surrounding its children'\n );\n }\n });\n\n if (!animatedGridChildren.length) {\n return;\n }\n\n const animatedElements = animatedGridChildren.map(({ el }) => el);\n disableMutationsWhileFunctionRuns(() => onStart(animatedElements));\n\n const completionPromises: Array> = [];\n\n animatedGridChildren\n // do this measurement first so as not to cause layout thrashing\n .map(data => {\n const firstChild = data.el.children[0] as HTMLElement;\n // different transform origins give different effects. \"50% 50%\" is default\n if (firstChild) {\n data.childCoords = getGridAwareBoundingClientRect(\n gridBoundingClientRect,\n firstChild\n );\n }\n return data;\n })\n .forEach(\n (\n {\n el,\n boundingClientRect: { top, left, width, height },\n childCoords: { top: childTop, left: childLeft },\n },\n i\n ) => {\n const firstChild = el.children[0] as HTMLElement;\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n const coords: Coords = {\n scaleX: itemPosition.rect.width / width,\n scaleY: itemPosition.rect.height / height,\n translateX: itemPosition.rect.left - left,\n translateY: itemPosition.rect.top - top,\n };\n\n el.style.transformOrigin = '0 0';\n if (firstChild && childLeft === left && childTop === top) {\n firstChild.style.transformOrigin = '0 0';\n }\n\n let cachedResolve: () => void;\n\n const completionPromise = new Promise(resolve => {\n cachedResolve = resolve as () => void;\n });\n\n completionPromises.push(completionPromise);\n\n applyCoordTransform(el, coords, { immediate: true });\n // now start the animation\n const startAnimation = () => {\n const { stop } = tween({\n from: coords,\n to: { translateX: 0, translateY: 0, scaleX: 1, scaleY: 1 },\n duration,\n ease: popmotionEasing[easing],\n }).start({\n update: (transforms: Coords) => {\n applyCoordTransform(el, transforms);\n // this helps prevent layout thrashing\n sync.postRender(() => recordPositions([el]));\n },\n complete: cachedResolve,\n });\n itemPosition.stopTween = stop;\n };\n\n if (typeof stagger !== 'number') {\n startAnimation();\n } else {\n const timeoutId = setTimeout(() => {\n sync.update(startAnimation);\n }, stagger * i);\n itemPosition.stopTween = () => clearTimeout(timeoutId);\n }\n }\n );\n\n Promise.all(completionPromises).then(() => {\n onEnd(animatedElements);\n });\n };\n\n const observer = new MutationObserver(mutationCallback);\n observer.observe(container, {\n childList: true,\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n });\n const unwrapGrid = () => {\n window.removeEventListener('resize', throttledResizeListener);\n container.removeEventListener('scroll', throttledScrollListener);\n observer.disconnect();\n };\n const forceGridAnimation = () => mutationCallback('forceGridAnimation');\n return { unwrapGrid, forceGridAnimation };\n};\n"],"names":[],"version":3,"file":"index.d.ts.map"}
--------------------------------------------------------------------------------
/dist/main.js:
--------------------------------------------------------------------------------
1 | var $8zHUo$popmotioneasing = require("@popmotion/easing");
2 | var $8zHUo$framesync = require("framesync");
3 | var $8zHUo$lodashthrottle = require("lodash.throttle");
4 | var $8zHUo$popmotion = require("popmotion");
5 |
6 | function $parcel$interopDefault(a) {
7 | return a && a.__esModule ? a.default : a;
8 | }
9 | function $parcel$export(e, n, v, s) {
10 | Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
11 | }
12 |
13 | $parcel$export(module.exports, "wrapGrid", () => $882b6d93070905b3$export$cfa74da6327324bf);
14 | /* eslint-disable @typescript-eslint/no-empty-function */
15 |
16 |
17 |
18 | const $882b6d93070905b3$var$popmotionEasing = {
19 | anticipate: $8zHUo$popmotioneasing.anticipate,
20 | backIn: $8zHUo$popmotioneasing.backIn,
21 | backInOut: $8zHUo$popmotioneasing.backInOut,
22 | backOut: $8zHUo$popmotioneasing.backOut,
23 | circIn: $8zHUo$popmotioneasing.circIn,
24 | circInOut: $8zHUo$popmotioneasing.circInOut,
25 | circOut: $8zHUo$popmotioneasing.circOut,
26 | easeIn: $8zHUo$popmotioneasing.easeIn,
27 | easeInOut: $8zHUo$popmotioneasing.easeInOut,
28 | easeOut: $8zHUo$popmotioneasing.easeOut,
29 | linear: $8zHUo$popmotioneasing.linear
30 | };
31 | const $882b6d93070905b3$var$DATASET_KEY = "animateGridId";
32 | // in order to account for scroll, (which we're not listening for)
33 | // always cache the item's position relative
34 | // to the top and left of the grid container
35 | const $882b6d93070905b3$var$getGridAwareBoundingClientRect = (gridBoundingClientRect, el)=>{
36 | const { top: top , left: left , width: width , height: height } = el.getBoundingClientRect();
37 | const rect = {
38 | top: top,
39 | left: left,
40 | width: width,
41 | height: height
42 | };
43 | rect.top -= gridBoundingClientRect.top;
44 | rect.left -= gridBoundingClientRect.left;
45 | // if an element is display:none it will return top: 0 and left:0
46 | // rather than saying it's still in the containing element
47 | // so we need to use Math.max to make sure the coordinates stay
48 | // within the container
49 | rect.top = Math.max(rect.top, 0);
50 | rect.left = Math.max(rect.left, 0);
51 | return rect;
52 | };
53 | // the function used during the tweening
54 | const $882b6d93070905b3$var$applyCoordTransform = (el, { translateX: translateX , translateY: translateY , scaleX: scaleX , scaleY: scaleY }, { immediate: immediate } = {})=>{
55 | const isFinished = translateX === 0 && translateY === 0 && scaleX === 1 && scaleY === 1;
56 | const styleEl = ()=>{
57 | el.style.transform = isFinished ? "" : `translateX(${translateX}px) translateY(${translateY}px) scaleX(${scaleX}) scaleY(${scaleY})`;
58 | };
59 | if (immediate) styleEl();
60 | else (0, ($parcel$interopDefault($8zHUo$framesync))).render(styleEl);
61 | const firstChild = el.children[0];
62 | if (firstChild) {
63 | const styleChild = ()=>{
64 | firstChild.style.transform = isFinished ? "" : `scaleX(${1 / scaleX}) scaleY(${1 / scaleY})`;
65 | };
66 | if (immediate) styleChild();
67 | else (0, ($parcel$interopDefault($8zHUo$framesync))).render(styleChild);
68 | }
69 | };
70 | const $882b6d93070905b3$export$cfa74da6327324bf = (container, { duration: duration = 250 , stagger: stagger = 0 , easing: easing = "easeInOut" , onStart: onStart = ()=>{} , onEnd: onEnd = ()=>{} } = {})=>{
71 | if (!$882b6d93070905b3$var$popmotionEasing[easing]) throw new Error(`${easing} is not a valid easing name`);
72 | let mutationsDisabled = false;
73 | const disableMutationsWhileFunctionRuns = (func)=>{
74 | mutationsDisabled = true;
75 | func();
76 | setTimeout(()=>{
77 | mutationsDisabled = false;
78 | }, 0);
79 | };
80 | // all cached position data, and in-progress tween data, is stored here
81 | const cachedPositionData = {};
82 | // initially and after every transition, record element positions
83 | const recordPositions = (elements)=>{
84 | const gridBoundingClientRect = container.getBoundingClientRect();
85 | Array.from(elements).forEach((el)=>{
86 | if (typeof el.getBoundingClientRect !== "function") return;
87 | if (!el.dataset[$882b6d93070905b3$var$DATASET_KEY]) {
88 | const newId = `${Math.random()}`;
89 | el.dataset[$882b6d93070905b3$var$DATASET_KEY] = newId;
90 | }
91 | const animateGridId = el.dataset[$882b6d93070905b3$var$DATASET_KEY];
92 | if (!cachedPositionData[animateGridId]) cachedPositionData[animateGridId] = {};
93 | const rect = $882b6d93070905b3$var$getGridAwareBoundingClientRect(gridBoundingClientRect, el);
94 | cachedPositionData[animateGridId].rect = rect;
95 | cachedPositionData[animateGridId].gridBoundingClientRect = gridBoundingClientRect;
96 | });
97 | };
98 | recordPositions(container.children);
99 | const throttledResizeListener = (0, ($parcel$interopDefault($8zHUo$lodashthrottle)))(()=>{
100 | const bodyElement = document.querySelector("body");
101 | const containerIsNoLongerInPage = bodyElement && !bodyElement.contains(container);
102 | if (!container || containerIsNoLongerInPage) window.removeEventListener("resize", throttledResizeListener);
103 | recordPositions(container.children);
104 | }, 250);
105 | window.addEventListener("resize", throttledResizeListener);
106 | const throttledScrollListener = (0, ($parcel$interopDefault($8zHUo$lodashthrottle)))(()=>{
107 | recordPositions(container.children);
108 | }, 20);
109 | container.addEventListener("scroll", throttledScrollListener);
110 | const mutationCallback = (mutationsList)=>{
111 | if (mutationsList !== "forceGridAnimation") {
112 | // check if we care about the mutation
113 | const relevantMutationHappened = mutationsList.filter((m)=>m.attributeName === "class" || m.addedNodes.length || m.removedNodes.length).length;
114 | if (!relevantMutationHappened) return;
115 | if (mutationsDisabled) return;
116 | }
117 | const gridBoundingClientRect = container.getBoundingClientRect();
118 | const childrenElements = Array.from(container.children);
119 | // stop current transitions and remove transforms on transitioning elements
120 | childrenElements.filter((el)=>{
121 | const itemPosition = cachedPositionData[el.dataset[$882b6d93070905b3$var$DATASET_KEY]];
122 | if (itemPosition && itemPosition.stopTween) {
123 | itemPosition.stopTween();
124 | delete itemPosition.stopTween;
125 | return true;
126 | }
127 | }).forEach((el)=>{
128 | el.style.transform = "";
129 | const firstChild = el.children[0];
130 | if (firstChild) firstChild.style.transform = "";
131 | });
132 | const animatedGridChildren = childrenElements.map((el)=>({
133 | childCoords: {},
134 | el: el,
135 | boundingClientRect: $882b6d93070905b3$var$getGridAwareBoundingClientRect(gridBoundingClientRect, el)
136 | })).filter(({ el: el , boundingClientRect: boundingClientRect })=>{
137 | const itemPosition = cachedPositionData[el.dataset[$882b6d93070905b3$var$DATASET_KEY]];
138 | // don't animate the initial appearance of elements,
139 | // just cache their position so they can be animated later
140 | if (!itemPosition) {
141 | recordPositions([
142 | el
143 | ]);
144 | return false;
145 | } else if (boundingClientRect.top === itemPosition.rect.top && boundingClientRect.left === itemPosition.rect.left && boundingClientRect.width === itemPosition.rect.width && boundingClientRect.height === itemPosition.rect.height) // if it hasn't moved, dont animate it
146 | return false;
147 | return true;
148 | });
149 | // having more than one child in the animated item is not supported
150 | animatedGridChildren.forEach(({ el: el })=>{
151 | if (Array.from(el.children).length > 1) throw new Error("Make sure every grid item has a single container element surrounding its children");
152 | });
153 | if (!animatedGridChildren.length) return;
154 | const animatedElements = animatedGridChildren.map(({ el: el })=>el);
155 | disableMutationsWhileFunctionRuns(()=>onStart(animatedElements));
156 | const completionPromises = [];
157 | animatedGridChildren// do this measurement first so as not to cause layout thrashing
158 | .map((data)=>{
159 | const firstChild = data.el.children[0];
160 | // different transform origins give different effects. "50% 50%" is default
161 | if (firstChild) data.childCoords = $882b6d93070905b3$var$getGridAwareBoundingClientRect(gridBoundingClientRect, firstChild);
162 | return data;
163 | }).forEach(({ el: el , boundingClientRect: { top: top , left: left , width: width , height: height } , childCoords: { top: childTop , left: childLeft } }, i)=>{
164 | const firstChild = el.children[0];
165 | const itemPosition = cachedPositionData[el.dataset[$882b6d93070905b3$var$DATASET_KEY]];
166 | const coords = {
167 | scaleX: itemPosition.rect.width / width,
168 | scaleY: itemPosition.rect.height / height,
169 | translateX: itemPosition.rect.left - left,
170 | translateY: itemPosition.rect.top - top
171 | };
172 | el.style.transformOrigin = "0 0";
173 | if (firstChild && childLeft === left && childTop === top) firstChild.style.transformOrigin = "0 0";
174 | let cachedResolve;
175 | const completionPromise = new Promise((resolve)=>{
176 | cachedResolve = resolve;
177 | });
178 | completionPromises.push(completionPromise);
179 | $882b6d93070905b3$var$applyCoordTransform(el, coords, {
180 | immediate: true
181 | });
182 | // now start the animation
183 | const startAnimation = ()=>{
184 | const { stop: stop } = (0, $8zHUo$popmotion.tween)({
185 | from: coords,
186 | to: {
187 | translateX: 0,
188 | translateY: 0,
189 | scaleX: 1,
190 | scaleY: 1
191 | },
192 | duration: duration,
193 | ease: $882b6d93070905b3$var$popmotionEasing[easing]
194 | }).start({
195 | update: (transforms)=>{
196 | $882b6d93070905b3$var$applyCoordTransform(el, transforms);
197 | // this helps prevent layout thrashing
198 | (0, ($parcel$interopDefault($8zHUo$framesync))).postRender(()=>recordPositions([
199 | el
200 | ]));
201 | },
202 | complete: cachedResolve
203 | });
204 | itemPosition.stopTween = stop;
205 | };
206 | if (typeof stagger !== "number") startAnimation();
207 | else {
208 | const timeoutId = setTimeout(()=>{
209 | (0, ($parcel$interopDefault($8zHUo$framesync))).update(startAnimation);
210 | }, stagger * i);
211 | itemPosition.stopTween = ()=>clearTimeout(timeoutId);
212 | }
213 | });
214 | Promise.all(completionPromises).then(()=>{
215 | onEnd(animatedElements);
216 | });
217 | };
218 | const observer = new MutationObserver(mutationCallback);
219 | observer.observe(container, {
220 | childList: true,
221 | attributes: true,
222 | subtree: true,
223 | attributeFilter: [
224 | "class"
225 | ]
226 | });
227 | const unwrapGrid = ()=>{
228 | window.removeEventListener("resize", throttledResizeListener);
229 | container.removeEventListener("scroll", throttledScrollListener);
230 | observer.disconnect();
231 | };
232 | const forceGridAnimation = ()=>mutationCallback("forceGridAnimation");
233 | return {
234 | unwrapGrid: unwrapGrid,
235 | forceGridAnimation: forceGridAnimation
236 | };
237 | };
238 |
239 |
240 | //# sourceMappingURL=main.js.map
241 |
--------------------------------------------------------------------------------
/dist/main.js.map:
--------------------------------------------------------------------------------
1 | {"mappings":"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","sources":["src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n anticipate,\n backIn,\n backInOut,\n backOut,\n circIn,\n circInOut,\n circOut,\n easeIn,\n easeInOut,\n easeOut,\n linear,\n} from '@popmotion/easing';\nimport sync from 'framesync';\nimport throttle from 'lodash.throttle';\nimport { tween } from 'popmotion';\nimport {\n BoundingClientRect,\n CachedPositionData,\n ChildBoundingClientRect,\n Coords,\n ItemPosition,\n PopmotionEasing,\n WrapGridArguments,\n} from './types';\n\nconst popmotionEasing: PopmotionEasing = {\n anticipate,\n backIn,\n backInOut,\n backOut,\n circIn,\n circInOut,\n circOut,\n easeIn,\n easeInOut,\n easeOut,\n linear,\n};\n\nconst DATASET_KEY = 'animateGridId';\n\n// in order to account for scroll, (which we're not listening for)\n// always cache the item's position relative\n// to the top and left of the grid container\nconst getGridAwareBoundingClientRect = (\n gridBoundingClientRect: BoundingClientRect,\n el: HTMLElement\n): BoundingClientRect => {\n const { top, left, width, height } = el.getBoundingClientRect();\n const rect = { top, left, width, height };\n rect.top -= gridBoundingClientRect.top;\n rect.left -= gridBoundingClientRect.left;\n // if an element is display:none it will return top: 0 and left:0\n // rather than saying it's still in the containing element\n // so we need to use Math.max to make sure the coordinates stay\n // within the container\n rect.top = Math.max(rect.top, 0);\n rect.left = Math.max(rect.left, 0);\n return rect;\n};\n\n// the function used during the tweening\nconst applyCoordTransform = (\n el: HTMLElement,\n { translateX, translateY, scaleX, scaleY }: Coords,\n { immediate }: { immediate?: boolean } = {}\n): void => {\n const isFinished =\n translateX === 0 && translateY === 0 && scaleX === 1 && scaleY === 1;\n const styleEl = () => {\n el.style.transform = isFinished\n ? ''\n : `translateX(${translateX}px) translateY(${translateY}px) scaleX(${scaleX}) scaleY(${scaleY})`;\n };\n if (immediate) {\n styleEl();\n } else {\n sync.render(styleEl);\n }\n const firstChild = el.children[0] as HTMLElement;\n if (firstChild) {\n const styleChild = () => {\n firstChild.style.transform = isFinished\n ? ''\n : `scaleX(${1 / scaleX}) scaleY(${1 / scaleY})`;\n };\n if (immediate) {\n styleChild();\n } else {\n sync.render(styleChild);\n }\n }\n};\n\n// return a function that take a reference to a grid dom node and optional config\nexport const wrapGrid = (\n container: HTMLElement,\n {\n duration = 250,\n stagger = 0,\n easing = 'easeInOut',\n onStart = () => { },\n onEnd = () => { },\n }: WrapGridArguments = {}\n) => {\n if (!popmotionEasing[easing]) {\n throw new Error(`${easing} is not a valid easing name`);\n }\n\n let mutationsDisabled = false;\n\n const disableMutationsWhileFunctionRuns = (func: () => void) => {\n mutationsDisabled = true;\n func();\n setTimeout(() => {\n mutationsDisabled = false;\n }, 0);\n };\n\n // all cached position data, and in-progress tween data, is stored here\n const cachedPositionData: CachedPositionData = {};\n // initially and after every transition, record element positions\n const recordPositions = (\n elements: HTMLCollectionOf | HTMLElement[]\n ) => {\n const gridBoundingClientRect = container.getBoundingClientRect();\n Array.from(elements).forEach(el => {\n if (typeof el.getBoundingClientRect !== 'function') {\n return;\n }\n if (!el.dataset[DATASET_KEY]) {\n const newId = `${Math.random()}`;\n el.dataset[DATASET_KEY] = newId;\n }\n const animateGridId = el.dataset[DATASET_KEY] as string;\n\n if (!cachedPositionData[animateGridId]) {\n cachedPositionData[animateGridId] = {} as ItemPosition;\n }\n\n const rect = getGridAwareBoundingClientRect(gridBoundingClientRect, el);\n cachedPositionData[animateGridId].rect = rect;\n cachedPositionData[\n animateGridId\n ].gridBoundingClientRect = gridBoundingClientRect;\n });\n };\n recordPositions(container.children as HTMLCollectionOf);\n\n const throttledResizeListener = throttle(() => {\n const bodyElement = document.querySelector('body');\n const containerIsNoLongerInPage =\n bodyElement && !bodyElement.contains(container);\n if (!container || containerIsNoLongerInPage) {\n window.removeEventListener('resize', throttledResizeListener);\n }\n recordPositions(container.children as HTMLCollectionOf);\n }, 250);\n window.addEventListener('resize', throttledResizeListener);\n\n const throttledScrollListener = throttle(() => {\n recordPositions(container.children as HTMLCollectionOf);\n }, 20);\n container.addEventListener('scroll', throttledScrollListener);\n\n const mutationCallback = (\n mutationsList: MutationRecord[] | 'forceGridAnimation'\n ) => {\n if (mutationsList !== 'forceGridAnimation') {\n // check if we care about the mutation\n const relevantMutationHappened = mutationsList.filter(\n (m: MutationRecord) =>\n m.attributeName === 'class' ||\n m.addedNodes.length ||\n m.removedNodes.length\n ).length;\n if (!relevantMutationHappened) {\n return;\n }\n if (mutationsDisabled) return;\n }\n const gridBoundingClientRect = container.getBoundingClientRect();\n const childrenElements = Array.from(container.children) as HTMLElement[];\n // stop current transitions and remove transforms on transitioning elements\n childrenElements\n .filter(el => {\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n if (itemPosition && itemPosition.stopTween) {\n itemPosition.stopTween();\n delete itemPosition.stopTween;\n return true;\n }\n })\n .forEach(el => {\n el.style.transform = '';\n const firstChild = el.children[0] as HTMLElement;\n if (firstChild) {\n firstChild.style.transform = '';\n }\n });\n const animatedGridChildren = childrenElements\n .map(el => ({\n childCoords: {} as ChildBoundingClientRect,\n el,\n boundingClientRect: getGridAwareBoundingClientRect(\n gridBoundingClientRect,\n el\n ),\n }))\n .filter(({ el, boundingClientRect }) => {\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n // don't animate the initial appearance of elements,\n // just cache their position so they can be animated later\n if (!itemPosition) {\n recordPositions([el]);\n return false;\n } else if (\n boundingClientRect.top === itemPosition.rect.top &&\n boundingClientRect.left === itemPosition.rect.left &&\n boundingClientRect.width === itemPosition.rect.width &&\n boundingClientRect.height === itemPosition.rect.height\n ) {\n // if it hasn't moved, dont animate it\n return false;\n }\n return true;\n });\n\n // having more than one child in the animated item is not supported\n animatedGridChildren.forEach(({ el }) => {\n if (Array.from(el.children).length > 1) {\n throw new Error(\n 'Make sure every grid item has a single container element surrounding its children'\n );\n }\n });\n\n if (!animatedGridChildren.length) {\n return;\n }\n\n const animatedElements = animatedGridChildren.map(({ el }) => el);\n disableMutationsWhileFunctionRuns(() => onStart(animatedElements));\n\n const completionPromises: Array> = [];\n\n animatedGridChildren\n // do this measurement first so as not to cause layout thrashing\n .map(data => {\n const firstChild = data.el.children[0] as HTMLElement;\n // different transform origins give different effects. \"50% 50%\" is default\n if (firstChild) {\n data.childCoords = getGridAwareBoundingClientRect(\n gridBoundingClientRect,\n firstChild\n );\n }\n return data;\n })\n .forEach(\n (\n {\n el,\n boundingClientRect: { top, left, width, height },\n childCoords: { top: childTop, left: childLeft },\n },\n i\n ) => {\n const firstChild = el.children[0] as HTMLElement;\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n const coords: Coords = {\n scaleX: itemPosition.rect.width / width,\n scaleY: itemPosition.rect.height / height,\n translateX: itemPosition.rect.left - left,\n translateY: itemPosition.rect.top - top,\n };\n\n el.style.transformOrigin = '0 0';\n if (firstChild && childLeft === left && childTop === top) {\n firstChild.style.transformOrigin = '0 0';\n }\n\n let cachedResolve: () => void;\n\n const completionPromise = new Promise(resolve => {\n cachedResolve = resolve as () => void;\n });\n\n completionPromises.push(completionPromise);\n\n applyCoordTransform(el, coords, { immediate: true });\n // now start the animation\n const startAnimation = () => {\n const { stop } = tween({\n from: coords,\n to: { translateX: 0, translateY: 0, scaleX: 1, scaleY: 1 },\n duration,\n ease: popmotionEasing[easing],\n }).start({\n update: (transforms: Coords) => {\n applyCoordTransform(el, transforms);\n // this helps prevent layout thrashing\n sync.postRender(() => recordPositions([el]));\n },\n complete: cachedResolve,\n });\n itemPosition.stopTween = stop;\n };\n\n if (typeof stagger !== 'number') {\n startAnimation();\n } else {\n const timeoutId = setTimeout(() => {\n sync.update(startAnimation);\n }, stagger * i);\n itemPosition.stopTween = () => clearTimeout(timeoutId);\n }\n }\n );\n\n Promise.all(completionPromises).then(() => {\n onEnd(animatedElements);\n });\n };\n\n const observer = new MutationObserver(mutationCallback);\n observer.observe(container, {\n childList: true,\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n });\n const unwrapGrid = () => {\n window.removeEventListener('resize', throttledResizeListener);\n container.removeEventListener('scroll', throttledScrollListener);\n observer.disconnect();\n };\n const forceGridAnimation = () => mutationCallback('forceGridAnimation');\n return { unwrapGrid, forceGridAnimation };\n};\n"],"names":[],"version":3,"file":"main.js.map"}
--------------------------------------------------------------------------------
/dist/main.module.js:
--------------------------------------------------------------------------------
1 | import {anticipate as $hgUW1$anticipate, backIn as $hgUW1$backIn, backInOut as $hgUW1$backInOut, backOut as $hgUW1$backOut, circIn as $hgUW1$circIn, circInOut as $hgUW1$circInOut, circOut as $hgUW1$circOut, easeIn as $hgUW1$easeIn, easeInOut as $hgUW1$easeInOut, easeOut as $hgUW1$easeOut, linear as $hgUW1$linear} from "@popmotion/easing";
2 | import $hgUW1$framesync from "framesync";
3 | import $hgUW1$lodashthrottle from "lodash.throttle";
4 | import {tween as $hgUW1$tween} from "popmotion";
5 |
6 | /* eslint-disable @typescript-eslint/no-empty-function */
7 |
8 |
9 |
10 | const $149c1bd638913645$var$popmotionEasing = {
11 | anticipate: $hgUW1$anticipate,
12 | backIn: $hgUW1$backIn,
13 | backInOut: $hgUW1$backInOut,
14 | backOut: $hgUW1$backOut,
15 | circIn: $hgUW1$circIn,
16 | circInOut: $hgUW1$circInOut,
17 | circOut: $hgUW1$circOut,
18 | easeIn: $hgUW1$easeIn,
19 | easeInOut: $hgUW1$easeInOut,
20 | easeOut: $hgUW1$easeOut,
21 | linear: $hgUW1$linear
22 | };
23 | const $149c1bd638913645$var$DATASET_KEY = "animateGridId";
24 | // in order to account for scroll, (which we're not listening for)
25 | // always cache the item's position relative
26 | // to the top and left of the grid container
27 | const $149c1bd638913645$var$getGridAwareBoundingClientRect = (gridBoundingClientRect, el)=>{
28 | const { top: top , left: left , width: width , height: height } = el.getBoundingClientRect();
29 | const rect = {
30 | top: top,
31 | left: left,
32 | width: width,
33 | height: height
34 | };
35 | rect.top -= gridBoundingClientRect.top;
36 | rect.left -= gridBoundingClientRect.left;
37 | // if an element is display:none it will return top: 0 and left:0
38 | // rather than saying it's still in the containing element
39 | // so we need to use Math.max to make sure the coordinates stay
40 | // within the container
41 | rect.top = Math.max(rect.top, 0);
42 | rect.left = Math.max(rect.left, 0);
43 | return rect;
44 | };
45 | // the function used during the tweening
46 | const $149c1bd638913645$var$applyCoordTransform = (el, { translateX: translateX , translateY: translateY , scaleX: scaleX , scaleY: scaleY }, { immediate: immediate } = {})=>{
47 | const isFinished = translateX === 0 && translateY === 0 && scaleX === 1 && scaleY === 1;
48 | const styleEl = ()=>{
49 | el.style.transform = isFinished ? "" : `translateX(${translateX}px) translateY(${translateY}px) scaleX(${scaleX}) scaleY(${scaleY})`;
50 | };
51 | if (immediate) styleEl();
52 | else (0, $hgUW1$framesync).render(styleEl);
53 | const firstChild = el.children[0];
54 | if (firstChild) {
55 | const styleChild = ()=>{
56 | firstChild.style.transform = isFinished ? "" : `scaleX(${1 / scaleX}) scaleY(${1 / scaleY})`;
57 | };
58 | if (immediate) styleChild();
59 | else (0, $hgUW1$framesync).render(styleChild);
60 | }
61 | };
62 | const $149c1bd638913645$export$cfa74da6327324bf = (container, { duration: duration = 250 , stagger: stagger = 0 , easing: easing = "easeInOut" , onStart: onStart = ()=>{} , onEnd: onEnd = ()=>{} } = {})=>{
63 | if (!$149c1bd638913645$var$popmotionEasing[easing]) throw new Error(`${easing} is not a valid easing name`);
64 | let mutationsDisabled = false;
65 | const disableMutationsWhileFunctionRuns = (func)=>{
66 | mutationsDisabled = true;
67 | func();
68 | setTimeout(()=>{
69 | mutationsDisabled = false;
70 | }, 0);
71 | };
72 | // all cached position data, and in-progress tween data, is stored here
73 | const cachedPositionData = {};
74 | // initially and after every transition, record element positions
75 | const recordPositions = (elements)=>{
76 | const gridBoundingClientRect = container.getBoundingClientRect();
77 | Array.from(elements).forEach((el)=>{
78 | if (typeof el.getBoundingClientRect !== "function") return;
79 | if (!el.dataset[$149c1bd638913645$var$DATASET_KEY]) {
80 | const newId = `${Math.random()}`;
81 | el.dataset[$149c1bd638913645$var$DATASET_KEY] = newId;
82 | }
83 | const animateGridId = el.dataset[$149c1bd638913645$var$DATASET_KEY];
84 | if (!cachedPositionData[animateGridId]) cachedPositionData[animateGridId] = {};
85 | const rect = $149c1bd638913645$var$getGridAwareBoundingClientRect(gridBoundingClientRect, el);
86 | cachedPositionData[animateGridId].rect = rect;
87 | cachedPositionData[animateGridId].gridBoundingClientRect = gridBoundingClientRect;
88 | });
89 | };
90 | recordPositions(container.children);
91 | const throttledResizeListener = (0, $hgUW1$lodashthrottle)(()=>{
92 | const bodyElement = document.querySelector("body");
93 | const containerIsNoLongerInPage = bodyElement && !bodyElement.contains(container);
94 | if (!container || containerIsNoLongerInPage) window.removeEventListener("resize", throttledResizeListener);
95 | recordPositions(container.children);
96 | }, 250);
97 | window.addEventListener("resize", throttledResizeListener);
98 | const throttledScrollListener = (0, $hgUW1$lodashthrottle)(()=>{
99 | recordPositions(container.children);
100 | }, 20);
101 | container.addEventListener("scroll", throttledScrollListener);
102 | const mutationCallback = (mutationsList)=>{
103 | if (mutationsList !== "forceGridAnimation") {
104 | // check if we care about the mutation
105 | const relevantMutationHappened = mutationsList.filter((m)=>m.attributeName === "class" || m.addedNodes.length || m.removedNodes.length).length;
106 | if (!relevantMutationHappened) return;
107 | if (mutationsDisabled) return;
108 | }
109 | const gridBoundingClientRect = container.getBoundingClientRect();
110 | const childrenElements = Array.from(container.children);
111 | // stop current transitions and remove transforms on transitioning elements
112 | childrenElements.filter((el)=>{
113 | const itemPosition = cachedPositionData[el.dataset[$149c1bd638913645$var$DATASET_KEY]];
114 | if (itemPosition && itemPosition.stopTween) {
115 | itemPosition.stopTween();
116 | delete itemPosition.stopTween;
117 | return true;
118 | }
119 | }).forEach((el)=>{
120 | el.style.transform = "";
121 | const firstChild = el.children[0];
122 | if (firstChild) firstChild.style.transform = "";
123 | });
124 | const animatedGridChildren = childrenElements.map((el)=>({
125 | childCoords: {},
126 | el: el,
127 | boundingClientRect: $149c1bd638913645$var$getGridAwareBoundingClientRect(gridBoundingClientRect, el)
128 | })).filter(({ el: el , boundingClientRect: boundingClientRect })=>{
129 | const itemPosition = cachedPositionData[el.dataset[$149c1bd638913645$var$DATASET_KEY]];
130 | // don't animate the initial appearance of elements,
131 | // just cache their position so they can be animated later
132 | if (!itemPosition) {
133 | recordPositions([
134 | el
135 | ]);
136 | return false;
137 | } else if (boundingClientRect.top === itemPosition.rect.top && boundingClientRect.left === itemPosition.rect.left && boundingClientRect.width === itemPosition.rect.width && boundingClientRect.height === itemPosition.rect.height) // if it hasn't moved, dont animate it
138 | return false;
139 | return true;
140 | });
141 | // having more than one child in the animated item is not supported
142 | animatedGridChildren.forEach(({ el: el })=>{
143 | if (Array.from(el.children).length > 1) throw new Error("Make sure every grid item has a single container element surrounding its children");
144 | });
145 | if (!animatedGridChildren.length) return;
146 | const animatedElements = animatedGridChildren.map(({ el: el })=>el);
147 | disableMutationsWhileFunctionRuns(()=>onStart(animatedElements));
148 | const completionPromises = [];
149 | animatedGridChildren// do this measurement first so as not to cause layout thrashing
150 | .map((data)=>{
151 | const firstChild = data.el.children[0];
152 | // different transform origins give different effects. "50% 50%" is default
153 | if (firstChild) data.childCoords = $149c1bd638913645$var$getGridAwareBoundingClientRect(gridBoundingClientRect, firstChild);
154 | return data;
155 | }).forEach(({ el: el , boundingClientRect: { top: top , left: left , width: width , height: height } , childCoords: { top: childTop , left: childLeft } }, i)=>{
156 | const firstChild = el.children[0];
157 | const itemPosition = cachedPositionData[el.dataset[$149c1bd638913645$var$DATASET_KEY]];
158 | const coords = {
159 | scaleX: itemPosition.rect.width / width,
160 | scaleY: itemPosition.rect.height / height,
161 | translateX: itemPosition.rect.left - left,
162 | translateY: itemPosition.rect.top - top
163 | };
164 | el.style.transformOrigin = "0 0";
165 | if (firstChild && childLeft === left && childTop === top) firstChild.style.transformOrigin = "0 0";
166 | let cachedResolve;
167 | const completionPromise = new Promise((resolve)=>{
168 | cachedResolve = resolve;
169 | });
170 | completionPromises.push(completionPromise);
171 | $149c1bd638913645$var$applyCoordTransform(el, coords, {
172 | immediate: true
173 | });
174 | // now start the animation
175 | const startAnimation = ()=>{
176 | const { stop: stop } = (0, $hgUW1$tween)({
177 | from: coords,
178 | to: {
179 | translateX: 0,
180 | translateY: 0,
181 | scaleX: 1,
182 | scaleY: 1
183 | },
184 | duration: duration,
185 | ease: $149c1bd638913645$var$popmotionEasing[easing]
186 | }).start({
187 | update: (transforms)=>{
188 | $149c1bd638913645$var$applyCoordTransform(el, transforms);
189 | // this helps prevent layout thrashing
190 | (0, $hgUW1$framesync).postRender(()=>recordPositions([
191 | el
192 | ]));
193 | },
194 | complete: cachedResolve
195 | });
196 | itemPosition.stopTween = stop;
197 | };
198 | if (typeof stagger !== "number") startAnimation();
199 | else {
200 | const timeoutId = setTimeout(()=>{
201 | (0, $hgUW1$framesync).update(startAnimation);
202 | }, stagger * i);
203 | itemPosition.stopTween = ()=>clearTimeout(timeoutId);
204 | }
205 | });
206 | Promise.all(completionPromises).then(()=>{
207 | onEnd(animatedElements);
208 | });
209 | };
210 | const observer = new MutationObserver(mutationCallback);
211 | observer.observe(container, {
212 | childList: true,
213 | attributes: true,
214 | subtree: true,
215 | attributeFilter: [
216 | "class"
217 | ]
218 | });
219 | const unwrapGrid = ()=>{
220 | window.removeEventListener("resize", throttledResizeListener);
221 | container.removeEventListener("scroll", throttledScrollListener);
222 | observer.disconnect();
223 | };
224 | const forceGridAnimation = ()=>mutationCallback("forceGridAnimation");
225 | return {
226 | unwrapGrid: unwrapGrid,
227 | forceGridAnimation: forceGridAnimation
228 | };
229 | };
230 |
231 |
232 | export {$149c1bd638913645$export$cfa74da6327324bf as wrapGrid};
233 | //# sourceMappingURL=main.module.js.map
234 |
--------------------------------------------------------------------------------
/dist/main.module.js.map:
--------------------------------------------------------------------------------
1 | {"mappings":"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","sources":["src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n anticipate,\n backIn,\n backInOut,\n backOut,\n circIn,\n circInOut,\n circOut,\n easeIn,\n easeInOut,\n easeOut,\n linear,\n} from '@popmotion/easing';\nimport sync from 'framesync';\nimport throttle from 'lodash.throttle';\nimport { tween } from 'popmotion';\nimport {\n BoundingClientRect,\n CachedPositionData,\n ChildBoundingClientRect,\n Coords,\n ItemPosition,\n PopmotionEasing,\n WrapGridArguments,\n} from './types';\n\nconst popmotionEasing: PopmotionEasing = {\n anticipate,\n backIn,\n backInOut,\n backOut,\n circIn,\n circInOut,\n circOut,\n easeIn,\n easeInOut,\n easeOut,\n linear,\n};\n\nconst DATASET_KEY = 'animateGridId';\n\n// in order to account for scroll, (which we're not listening for)\n// always cache the item's position relative\n// to the top and left of the grid container\nconst getGridAwareBoundingClientRect = (\n gridBoundingClientRect: BoundingClientRect,\n el: HTMLElement\n): BoundingClientRect => {\n const { top, left, width, height } = el.getBoundingClientRect();\n const rect = { top, left, width, height };\n rect.top -= gridBoundingClientRect.top;\n rect.left -= gridBoundingClientRect.left;\n // if an element is display:none it will return top: 0 and left:0\n // rather than saying it's still in the containing element\n // so we need to use Math.max to make sure the coordinates stay\n // within the container\n rect.top = Math.max(rect.top, 0);\n rect.left = Math.max(rect.left, 0);\n return rect;\n};\n\n// the function used during the tweening\nconst applyCoordTransform = (\n el: HTMLElement,\n { translateX, translateY, scaleX, scaleY }: Coords,\n { immediate }: { immediate?: boolean } = {}\n): void => {\n const isFinished =\n translateX === 0 && translateY === 0 && scaleX === 1 && scaleY === 1;\n const styleEl = () => {\n el.style.transform = isFinished\n ? ''\n : `translateX(${translateX}px) translateY(${translateY}px) scaleX(${scaleX}) scaleY(${scaleY})`;\n };\n if (immediate) {\n styleEl();\n } else {\n sync.render(styleEl);\n }\n const firstChild = el.children[0] as HTMLElement;\n if (firstChild) {\n const styleChild = () => {\n firstChild.style.transform = isFinished\n ? ''\n : `scaleX(${1 / scaleX}) scaleY(${1 / scaleY})`;\n };\n if (immediate) {\n styleChild();\n } else {\n sync.render(styleChild);\n }\n }\n};\n\n// return a function that take a reference to a grid dom node and optional config\nexport const wrapGrid = (\n container: HTMLElement,\n {\n duration = 250,\n stagger = 0,\n easing = 'easeInOut',\n onStart = () => { },\n onEnd = () => { },\n }: WrapGridArguments = {}\n) => {\n if (!popmotionEasing[easing]) {\n throw new Error(`${easing} is not a valid easing name`);\n }\n\n let mutationsDisabled = false;\n\n const disableMutationsWhileFunctionRuns = (func: () => void) => {\n mutationsDisabled = true;\n func();\n setTimeout(() => {\n mutationsDisabled = false;\n }, 0);\n };\n\n // all cached position data, and in-progress tween data, is stored here\n const cachedPositionData: CachedPositionData = {};\n // initially and after every transition, record element positions\n const recordPositions = (\n elements: HTMLCollectionOf | HTMLElement[]\n ) => {\n const gridBoundingClientRect = container.getBoundingClientRect();\n Array.from(elements).forEach(el => {\n if (typeof el.getBoundingClientRect !== 'function') {\n return;\n }\n if (!el.dataset[DATASET_KEY]) {\n const newId = `${Math.random()}`;\n el.dataset[DATASET_KEY] = newId;\n }\n const animateGridId = el.dataset[DATASET_KEY] as string;\n\n if (!cachedPositionData[animateGridId]) {\n cachedPositionData[animateGridId] = {} as ItemPosition;\n }\n\n const rect = getGridAwareBoundingClientRect(gridBoundingClientRect, el);\n cachedPositionData[animateGridId].rect = rect;\n cachedPositionData[\n animateGridId\n ].gridBoundingClientRect = gridBoundingClientRect;\n });\n };\n recordPositions(container.children as HTMLCollectionOf);\n\n const throttledResizeListener = throttle(() => {\n const bodyElement = document.querySelector('body');\n const containerIsNoLongerInPage =\n bodyElement && !bodyElement.contains(container);\n if (!container || containerIsNoLongerInPage) {\n window.removeEventListener('resize', throttledResizeListener);\n }\n recordPositions(container.children as HTMLCollectionOf);\n }, 250);\n window.addEventListener('resize', throttledResizeListener);\n\n const throttledScrollListener = throttle(() => {\n recordPositions(container.children as HTMLCollectionOf);\n }, 20);\n container.addEventListener('scroll', throttledScrollListener);\n\n const mutationCallback = (\n mutationsList: MutationRecord[] | 'forceGridAnimation'\n ) => {\n if (mutationsList !== 'forceGridAnimation') {\n // check if we care about the mutation\n const relevantMutationHappened = mutationsList.filter(\n (m: MutationRecord) =>\n m.attributeName === 'class' ||\n m.addedNodes.length ||\n m.removedNodes.length\n ).length;\n if (!relevantMutationHappened) {\n return;\n }\n if (mutationsDisabled) return;\n }\n const gridBoundingClientRect = container.getBoundingClientRect();\n const childrenElements = Array.from(container.children) as HTMLElement[];\n // stop current transitions and remove transforms on transitioning elements\n childrenElements\n .filter(el => {\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n if (itemPosition && itemPosition.stopTween) {\n itemPosition.stopTween();\n delete itemPosition.stopTween;\n return true;\n }\n })\n .forEach(el => {\n el.style.transform = '';\n const firstChild = el.children[0] as HTMLElement;\n if (firstChild) {\n firstChild.style.transform = '';\n }\n });\n const animatedGridChildren = childrenElements\n .map(el => ({\n childCoords: {} as ChildBoundingClientRect,\n el,\n boundingClientRect: getGridAwareBoundingClientRect(\n gridBoundingClientRect,\n el\n ),\n }))\n .filter(({ el, boundingClientRect }) => {\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n // don't animate the initial appearance of elements,\n // just cache their position so they can be animated later\n if (!itemPosition) {\n recordPositions([el]);\n return false;\n } else if (\n boundingClientRect.top === itemPosition.rect.top &&\n boundingClientRect.left === itemPosition.rect.left &&\n boundingClientRect.width === itemPosition.rect.width &&\n boundingClientRect.height === itemPosition.rect.height\n ) {\n // if it hasn't moved, dont animate it\n return false;\n }\n return true;\n });\n\n // having more than one child in the animated item is not supported\n animatedGridChildren.forEach(({ el }) => {\n if (Array.from(el.children).length > 1) {\n throw new Error(\n 'Make sure every grid item has a single container element surrounding its children'\n );\n }\n });\n\n if (!animatedGridChildren.length) {\n return;\n }\n\n const animatedElements = animatedGridChildren.map(({ el }) => el);\n disableMutationsWhileFunctionRuns(() => onStart(animatedElements));\n\n const completionPromises: Array> = [];\n\n animatedGridChildren\n // do this measurement first so as not to cause layout thrashing\n .map(data => {\n const firstChild = data.el.children[0] as HTMLElement;\n // different transform origins give different effects. \"50% 50%\" is default\n if (firstChild) {\n data.childCoords = getGridAwareBoundingClientRect(\n gridBoundingClientRect,\n firstChild\n );\n }\n return data;\n })\n .forEach(\n (\n {\n el,\n boundingClientRect: { top, left, width, height },\n childCoords: { top: childTop, left: childLeft },\n },\n i\n ) => {\n const firstChild = el.children[0] as HTMLElement;\n const itemPosition =\n cachedPositionData[el.dataset[DATASET_KEY] as string];\n const coords: Coords = {\n scaleX: itemPosition.rect.width / width,\n scaleY: itemPosition.rect.height / height,\n translateX: itemPosition.rect.left - left,\n translateY: itemPosition.rect.top - top,\n };\n\n el.style.transformOrigin = '0 0';\n if (firstChild && childLeft === left && childTop === top) {\n firstChild.style.transformOrigin = '0 0';\n }\n\n let cachedResolve: () => void;\n\n const completionPromise = new Promise(resolve => {\n cachedResolve = resolve as () => void;\n });\n\n completionPromises.push(completionPromise);\n\n applyCoordTransform(el, coords, { immediate: true });\n // now start the animation\n const startAnimation = () => {\n const { stop } = tween({\n from: coords,\n to: { translateX: 0, translateY: 0, scaleX: 1, scaleY: 1 },\n duration,\n ease: popmotionEasing[easing],\n }).start({\n update: (transforms: Coords) => {\n applyCoordTransform(el, transforms);\n // this helps prevent layout thrashing\n sync.postRender(() => recordPositions([el]));\n },\n complete: cachedResolve,\n });\n itemPosition.stopTween = stop;\n };\n\n if (typeof stagger !== 'number') {\n startAnimation();\n } else {\n const timeoutId = setTimeout(() => {\n sync.update(startAnimation);\n }, stagger * i);\n itemPosition.stopTween = () => clearTimeout(timeoutId);\n }\n }\n );\n\n Promise.all(completionPromises).then(() => {\n onEnd(animatedElements);\n });\n };\n\n const observer = new MutationObserver(mutationCallback);\n observer.observe(container, {\n childList: true,\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n });\n const unwrapGrid = () => {\n window.removeEventListener('resize', throttledResizeListener);\n container.removeEventListener('scroll', throttledScrollListener);\n observer.disconnect();\n };\n const forceGridAnimation = () => mutationCallback('forceGridAnimation');\n return { unwrapGrid, forceGridAnimation };\n};\n"],"names":[],"version":3,"file":"main.module.js.map"}
--------------------------------------------------------------------------------
/examples/grid-column-optimized.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aholachek/animate-css-grid/599ee43edb1f001d7d5555d9086dee1a1b914252/examples/grid-column-optimized.gif
--------------------------------------------------------------------------------
/examples/grid-gap-optimized-1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aholachek/animate-css-grid/599ee43edb1f001d7d5555d9086dee1a1b914252/examples/grid-gap-optimized-1.gif
--------------------------------------------------------------------------------
/examples/grid-template-columns-optimized-1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aholachek/animate-css-grid/599ee43edb1f001d7d5555d9086dee1a1b914252/examples/grid-template-columns-optimized-1.gif
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "animate-css-grid",
3 | "version": "1.5.1",
4 | "source": "src/index.ts",
5 | "main": "dist/main.js",
6 | "module": "dist/main.module.js",
7 | "types": "dist/index.d.ts",
8 | "description": "Buttery smooth, easy transitions for CSS grid",
9 | "homepage": "https://github.com/aholachek/animate-css-grid",
10 | "files": [
11 | "/dist"
12 | ],
13 | "keywords": [
14 | "css",
15 | "grid",
16 | "animation",
17 | "transition",
18 | "mutation-observer",
19 | "layout"
20 | ],
21 | "sideEffects": false,
22 | "scripts": {
23 | "watch": "parcel serve ./demo",
24 | "build": "parcel build ./src/index.ts",
25 | "prepublishOnly": "yarn run build",
26 | "check-types": "tsc",
27 | "preversion": "npm run check-types"
28 | },
29 | "author": "Alex Holachek",
30 | "license": "MIT",
31 | "repository": {
32 | "type": "git",
33 | "url": "https://github.com/aholachek/animate-css-grid"
34 | },
35 | "bugs": "https://github.com/aholachek/animate-css-grid/issues",
36 | "devDependencies": {
37 | "@parcel/packager-ts": "2.8.3",
38 | "@parcel/transformer-typescript-types": "^2.8.3",
39 | "@typescript-eslint/eslint-plugin": "^5.54.0",
40 | "@typescript-eslint/parser": "^5.54.0",
41 | "eslint": "^8.35.0",
42 | "parcel": "^2.8.3",
43 | "typescript": "4.9.5"
44 | },
45 | "dependencies": {
46 | "@popmotion/easing": "^1.0.2",
47 | "@types/lodash.throttle": "^4.1.7",
48 | "framesync": "^6.1.2",
49 | "lodash.throttle": "^4.1.1",
50 | "popmotion": "^8.7.6"
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-empty-function */
2 | import {
3 | anticipate,
4 | backIn,
5 | backInOut,
6 | backOut,
7 | circIn,
8 | circInOut,
9 | circOut,
10 | easeIn,
11 | easeInOut,
12 | easeOut,
13 | linear,
14 | } from '@popmotion/easing';
15 | import sync from 'framesync';
16 | import throttle from 'lodash.throttle';
17 | import { tween } from 'popmotion';
18 | import {
19 | BoundingClientRect,
20 | CachedPositionData,
21 | ChildBoundingClientRect,
22 | Coords,
23 | ItemPosition,
24 | PopmotionEasing,
25 | WrapGridArguments,
26 | } from './types';
27 |
28 | const popmotionEasing: PopmotionEasing = {
29 | anticipate,
30 | backIn,
31 | backInOut,
32 | backOut,
33 | circIn,
34 | circInOut,
35 | circOut,
36 | easeIn,
37 | easeInOut,
38 | easeOut,
39 | linear,
40 | };
41 |
42 | const DATASET_KEY = 'animateGridId';
43 |
44 | // in order to account for scroll, (which we're not listening for)
45 | // always cache the item's position relative
46 | // to the top and left of the grid container
47 | const getGridAwareBoundingClientRect = (
48 | gridBoundingClientRect: BoundingClientRect,
49 | el: HTMLElement
50 | ): BoundingClientRect => {
51 | const { top, left, width, height } = el.getBoundingClientRect();
52 | const rect = { top, left, width, height };
53 | rect.top -= gridBoundingClientRect.top;
54 | rect.left -= gridBoundingClientRect.left;
55 | // if an element is display:none it will return top: 0 and left:0
56 | // rather than saying it's still in the containing element
57 | // so we need to use Math.max to make sure the coordinates stay
58 | // within the container
59 | rect.top = Math.max(rect.top, 0);
60 | rect.left = Math.max(rect.left, 0);
61 | return rect;
62 | };
63 |
64 | // the function used during the tweening
65 | const applyCoordTransform = (
66 | el: HTMLElement,
67 | { translateX, translateY, scaleX, scaleY }: Coords,
68 | { immediate }: { immediate?: boolean } = {}
69 | ): void => {
70 | const isFinished =
71 | translateX === 0 && translateY === 0 && scaleX === 1 && scaleY === 1;
72 | const styleEl = () => {
73 | el.style.transform = isFinished
74 | ? ''
75 | : `translateX(${translateX}px) translateY(${translateY}px) scaleX(${scaleX}) scaleY(${scaleY})`;
76 | };
77 | if (immediate) {
78 | styleEl();
79 | } else {
80 | sync.render(styleEl);
81 | }
82 | const firstChild = el.children[0] as HTMLElement;
83 | if (firstChild) {
84 | const styleChild = () => {
85 | firstChild.style.transform = isFinished
86 | ? ''
87 | : `scaleX(${1 / scaleX}) scaleY(${1 / scaleY})`;
88 | };
89 | if (immediate) {
90 | styleChild();
91 | } else {
92 | sync.render(styleChild);
93 | }
94 | }
95 | };
96 |
97 | // return a function that take a reference to a grid dom node and optional config
98 | export const wrapGrid = (
99 | container: HTMLElement,
100 | {
101 | duration = 250,
102 | stagger = 0,
103 | easing = 'easeInOut',
104 | onStart = () => { },
105 | onEnd = () => { },
106 | }: WrapGridArguments = {}
107 | ) => {
108 | if (!popmotionEasing[easing]) {
109 | throw new Error(`${easing} is not a valid easing name`);
110 | }
111 |
112 | let mutationsDisabled = false;
113 |
114 | const disableMutationsWhileFunctionRuns = (func: () => void) => {
115 | mutationsDisabled = true;
116 | func();
117 | setTimeout(() => {
118 | mutationsDisabled = false;
119 | }, 0);
120 | };
121 |
122 | // all cached position data, and in-progress tween data, is stored here
123 | const cachedPositionData: CachedPositionData = {};
124 | // initially and after every transition, record element positions
125 | const recordPositions = (
126 | elements: HTMLCollectionOf | HTMLElement[]
127 | ) => {
128 | const gridBoundingClientRect = container.getBoundingClientRect();
129 | Array.from(elements).forEach(el => {
130 | if (typeof el.getBoundingClientRect !== 'function') {
131 | return;
132 | }
133 | if (!el.dataset[DATASET_KEY]) {
134 | const newId = `${Math.random()}`;
135 | el.dataset[DATASET_KEY] = newId;
136 | }
137 | const animateGridId = el.dataset[DATASET_KEY] as string;
138 |
139 | if (!cachedPositionData[animateGridId]) {
140 | cachedPositionData[animateGridId] = {} as ItemPosition;
141 | }
142 |
143 | const rect = getGridAwareBoundingClientRect(gridBoundingClientRect, el);
144 | cachedPositionData[animateGridId].rect = rect;
145 | cachedPositionData[
146 | animateGridId
147 | ].gridBoundingClientRect = gridBoundingClientRect;
148 | });
149 | };
150 | recordPositions(container.children as HTMLCollectionOf);
151 |
152 | const throttledResizeListener = throttle(() => {
153 | const bodyElement = document.querySelector('body');
154 | const containerIsNoLongerInPage =
155 | bodyElement && !bodyElement.contains(container);
156 | if (!container || containerIsNoLongerInPage) {
157 | window.removeEventListener('resize', throttledResizeListener);
158 | }
159 | recordPositions(container.children as HTMLCollectionOf);
160 | }, 250);
161 | window.addEventListener('resize', throttledResizeListener);
162 |
163 | const throttledScrollListener = throttle(() => {
164 | recordPositions(container.children as HTMLCollectionOf);
165 | }, 20);
166 | container.addEventListener('scroll', throttledScrollListener);
167 |
168 | const mutationCallback = (
169 | mutationsList: MutationRecord[] | 'forceGridAnimation'
170 | ) => {
171 | if (mutationsList !== 'forceGridAnimation') {
172 | // check if we care about the mutation
173 | const relevantMutationHappened = mutationsList.filter(
174 | (m: MutationRecord) =>
175 | m.attributeName === 'class' ||
176 | m.addedNodes.length ||
177 | m.removedNodes.length
178 | ).length;
179 | if (!relevantMutationHappened) {
180 | return;
181 | }
182 | if (mutationsDisabled) return;
183 | }
184 | const gridBoundingClientRect = container.getBoundingClientRect();
185 | const childrenElements = Array.from(container.children) as HTMLElement[];
186 | // stop current transitions and remove transforms on transitioning elements
187 | childrenElements
188 | .filter(el => {
189 | const itemPosition =
190 | cachedPositionData[el.dataset[DATASET_KEY] as string];
191 | if (itemPosition && itemPosition.stopTween) {
192 | itemPosition.stopTween();
193 | delete itemPosition.stopTween;
194 | return true;
195 | }
196 | })
197 | .forEach(el => {
198 | el.style.transform = '';
199 | const firstChild = el.children[0] as HTMLElement;
200 | if (firstChild) {
201 | firstChild.style.transform = '';
202 | }
203 | });
204 | const animatedGridChildren = childrenElements
205 | .map(el => ({
206 | childCoords: {} as ChildBoundingClientRect,
207 | el,
208 | boundingClientRect: getGridAwareBoundingClientRect(
209 | gridBoundingClientRect,
210 | el
211 | ),
212 | }))
213 | .filter(({ el, boundingClientRect }) => {
214 | const itemPosition =
215 | cachedPositionData[el.dataset[DATASET_KEY] as string];
216 | // don't animate the initial appearance of elements,
217 | // just cache their position so they can be animated later
218 | if (!itemPosition) {
219 | recordPositions([el]);
220 | return false;
221 | } else if (
222 | boundingClientRect.top === itemPosition.rect.top &&
223 | boundingClientRect.left === itemPosition.rect.left &&
224 | boundingClientRect.width === itemPosition.rect.width &&
225 | boundingClientRect.height === itemPosition.rect.height
226 | ) {
227 | // if it hasn't moved, dont animate it
228 | return false;
229 | }
230 | return true;
231 | });
232 |
233 | // having more than one child in the animated item is not supported
234 | animatedGridChildren.forEach(({ el }) => {
235 | if (Array.from(el.children).length > 1) {
236 | throw new Error(
237 | 'Make sure every grid item has a single container element surrounding its children'
238 | );
239 | }
240 | });
241 |
242 | if (!animatedGridChildren.length) {
243 | return;
244 | }
245 |
246 | const animatedElements = animatedGridChildren.map(({ el }) => el);
247 | disableMutationsWhileFunctionRuns(() => onStart(animatedElements));
248 |
249 | const completionPromises: Array> = [];
250 |
251 | animatedGridChildren
252 | // do this measurement first so as not to cause layout thrashing
253 | .map(data => {
254 | const firstChild = data.el.children[0] as HTMLElement;
255 | // different transform origins give different effects. "50% 50%" is default
256 | if (firstChild) {
257 | data.childCoords = getGridAwareBoundingClientRect(
258 | gridBoundingClientRect,
259 | firstChild
260 | );
261 | }
262 | return data;
263 | })
264 | .forEach(
265 | (
266 | {
267 | el,
268 | boundingClientRect: { top, left, width, height },
269 | childCoords: { top: childTop, left: childLeft },
270 | },
271 | i
272 | ) => {
273 | const firstChild = el.children[0] as HTMLElement;
274 | const itemPosition =
275 | cachedPositionData[el.dataset[DATASET_KEY] as string];
276 | const coords: Coords = {
277 | scaleX: itemPosition.rect.width / width,
278 | scaleY: itemPosition.rect.height / height,
279 | translateX: itemPosition.rect.left - left,
280 | translateY: itemPosition.rect.top - top,
281 | };
282 |
283 | el.style.transformOrigin = '0 0';
284 | if (firstChild && childLeft === left && childTop === top) {
285 | firstChild.style.transformOrigin = '0 0';
286 | }
287 |
288 | let cachedResolve: () => void;
289 |
290 | const completionPromise = new Promise(resolve => {
291 | cachedResolve = resolve as () => void;
292 | });
293 |
294 | completionPromises.push(completionPromise);
295 |
296 | applyCoordTransform(el, coords, { immediate: true });
297 | // now start the animation
298 | const startAnimation = () => {
299 | const { stop } = tween({
300 | from: coords,
301 | to: { translateX: 0, translateY: 0, scaleX: 1, scaleY: 1 },
302 | duration,
303 | ease: popmotionEasing[easing],
304 | }).start({
305 | update: (transforms: Coords) => {
306 | applyCoordTransform(el, transforms);
307 | // this helps prevent layout thrashing
308 | sync.postRender(() => recordPositions([el]));
309 | },
310 | complete: cachedResolve,
311 | });
312 | itemPosition.stopTween = stop;
313 | };
314 |
315 | if (typeof stagger !== 'number') {
316 | startAnimation();
317 | } else {
318 | const timeoutId = setTimeout(() => {
319 | sync.update(startAnimation);
320 | }, stagger * i);
321 | itemPosition.stopTween = () => clearTimeout(timeoutId);
322 | }
323 | }
324 | );
325 |
326 | Promise.all(completionPromises).then(() => {
327 | onEnd(animatedElements);
328 | });
329 | };
330 |
331 | const observer = new MutationObserver(mutationCallback);
332 | observer.observe(container, {
333 | childList: true,
334 | attributes: true,
335 | subtree: true,
336 | attributeFilter: ['class'],
337 | });
338 | const unwrapGrid = () => {
339 | window.removeEventListener('resize', throttledResizeListener);
340 | container.removeEventListener('scroll', throttledScrollListener);
341 | observer.disconnect();
342 | };
343 | const forceGridAnimation = () => mutationCallback('forceGridAnimation');
344 | return { unwrapGrid, forceGridAnimation };
345 | };
346 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | import { Easing } from '@popmotion/easing';
2 |
3 | export interface Coords {
4 | translateX: number;
5 | translateY: number;
6 | scaleX: number;
7 | scaleY: number;
8 | // required to work with popmotion "from" key
9 | [key: string]: number;
10 | }
11 |
12 | export interface BoundingClientRect {
13 | top: number;
14 | left: number;
15 | width: number;
16 | height: number;
17 | }
18 |
19 | export interface ChildBoundingClientRect {
20 | top?: number;
21 | left?: number;
22 | }
23 |
24 | export interface ItemPosition {
25 | rect: BoundingClientRect;
26 | gridBoundingClientRect: BoundingClientRect;
27 | stopTween?: () => void;
28 | }
29 |
30 | export interface CachedPositionData {
31 | [key: string]: ItemPosition;
32 | }
33 |
34 | export interface PopmotionEasing {
35 | linear: Easing;
36 | easeIn: Easing;
37 | easeOut: Easing;
38 | easeInOut: Easing;
39 | circIn: Easing;
40 | circOut: Easing;
41 | circInOut: Easing;
42 | backIn: Easing;
43 | backOut: Easing;
44 | backInOut: Easing;
45 | anticipate: Easing;
46 | }
47 |
48 | export interface WrapGridArguments {
49 | duration?: number;
50 | stagger?: number;
51 | easing?: keyof PopmotionEasing;
52 | onStart?: (animatedChildren: HTMLElement[]) => void;
53 | onEnd?: (animatedChildren: HTMLElement[]) => void;
54 | }
55 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "ESNext",
4 | "target": "es5",
5 | "lib": ["es2015", "dom"],
6 | "moduleResolution": "node",
7 | "allowJs": false,
8 | "outDir": "dist",
9 | "emitDeclarationOnly": true,
10 | "declaration": true,
11 | "strict": true,
12 | "esModuleInterop": true,
13 | "noEmitOnError": true,
14 | },
15 | "include": ["src"]
16 | }
17 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0":
6 | version "7.18.6"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
8 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
9 | dependencies:
10 | "@babel/highlight" "^7.18.6"
11 |
12 | "@babel/helper-validator-identifier@^7.18.6":
13 | version "7.19.1"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
15 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
16 |
17 | "@babel/highlight@^7.18.6":
18 | version "7.18.6"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
20 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.18.6"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@eslint/eslintrc@^2.0.0":
27 | version "2.0.0"
28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff"
29 | integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==
30 | dependencies:
31 | ajv "^6.12.4"
32 | debug "^4.3.2"
33 | espree "^9.4.0"
34 | globals "^13.19.0"
35 | ignore "^5.2.0"
36 | import-fresh "^3.2.1"
37 | js-yaml "^4.1.0"
38 | minimatch "^3.1.2"
39 | strip-json-comments "^3.1.1"
40 |
41 | "@eslint/js@8.35.0":
42 | version "8.35.0"
43 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7"
44 | integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==
45 |
46 | "@humanwhocodes/config-array@^0.11.8":
47 | version "0.11.8"
48 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
49 | integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
50 | dependencies:
51 | "@humanwhocodes/object-schema" "^1.2.1"
52 | debug "^4.1.1"
53 | minimatch "^3.0.5"
54 |
55 | "@humanwhocodes/module-importer@^1.0.1":
56 | version "1.0.1"
57 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
58 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
59 |
60 | "@humanwhocodes/object-schema@^1.2.1":
61 | version "1.2.1"
62 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
63 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
64 |
65 | "@jridgewell/gen-mapping@^0.3.0":
66 | version "0.3.2"
67 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
68 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
69 | dependencies:
70 | "@jridgewell/set-array" "^1.0.1"
71 | "@jridgewell/sourcemap-codec" "^1.4.10"
72 | "@jridgewell/trace-mapping" "^0.3.9"
73 |
74 | "@jridgewell/resolve-uri@3.1.0":
75 | version "3.1.0"
76 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
77 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
78 |
79 | "@jridgewell/set-array@^1.0.1":
80 | version "1.1.2"
81 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
82 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
83 |
84 | "@jridgewell/source-map@^0.3.2":
85 | version "0.3.2"
86 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
87 | integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
88 | dependencies:
89 | "@jridgewell/gen-mapping" "^0.3.0"
90 | "@jridgewell/trace-mapping" "^0.3.9"
91 |
92 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
93 | version "1.4.14"
94 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
95 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
96 |
97 | "@jridgewell/trace-mapping@^0.3.9":
98 | version "0.3.17"
99 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
100 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
101 | dependencies:
102 | "@jridgewell/resolve-uri" "3.1.0"
103 | "@jridgewell/sourcemap-codec" "1.4.14"
104 |
105 | "@lezer/common@^0.15.0", "@lezer/common@^0.15.7":
106 | version "0.15.12"
107 | resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9"
108 | integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==
109 |
110 | "@lezer/lr@^0.15.4":
111 | version "0.15.8"
112 | resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21"
113 | integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==
114 | dependencies:
115 | "@lezer/common" "^0.15.0"
116 |
117 | "@lmdb/lmdb-darwin-arm64@2.5.2":
118 | version "2.5.2"
119 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz#bc66fa43286b5c082e8fee0eacc17995806b6fbe"
120 | integrity sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==
121 |
122 | "@lmdb/lmdb-darwin-x64@2.5.2":
123 | version "2.5.2"
124 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz#89d8390041bce6bab24a82a20392be22faf54ffc"
125 | integrity sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==
126 |
127 | "@lmdb/lmdb-linux-arm64@2.5.2":
128 | version "2.5.2"
129 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz#14fe4c96c2bb1285f93797f45915fa35ee047268"
130 | integrity sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==
131 |
132 | "@lmdb/lmdb-linux-arm@2.5.2":
133 | version "2.5.2"
134 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz#05bde4573ab10cf21827339fe687148f2590cfa1"
135 | integrity sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==
136 |
137 | "@lmdb/lmdb-linux-x64@2.5.2":
138 | version "2.5.2"
139 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz#d2f85afd857d2c33d2caa5b057944574edafcfee"
140 | integrity sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==
141 |
142 | "@lmdb/lmdb-win32-x64@2.5.2":
143 | version "2.5.2"
144 | resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5"
145 | integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==
146 |
147 | "@mischnic/json-sourcemap@^0.1.0":
148 | version "0.1.0"
149 | resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507"
150 | integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==
151 | dependencies:
152 | "@lezer/common" "^0.15.7"
153 | "@lezer/lr" "^0.15.4"
154 | json5 "^2.2.1"
155 |
156 | "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2":
157 | version "3.0.2"
158 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38"
159 | integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==
160 |
161 | "@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2":
162 | version "3.0.2"
163 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3"
164 | integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==
165 |
166 | "@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2":
167 | version "3.0.2"
168 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367"
169 | integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==
170 |
171 | "@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2":
172 | version "3.0.2"
173 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399"
174 | integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==
175 |
176 | "@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2":
177 | version "3.0.2"
178 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f"
179 | integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==
180 |
181 | "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2":
182 | version "3.0.2"
183 | resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407"
184 | integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==
185 |
186 | "@nodelib/fs.scandir@2.1.5":
187 | version "2.1.5"
188 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
189 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
190 | dependencies:
191 | "@nodelib/fs.stat" "2.0.5"
192 | run-parallel "^1.1.9"
193 |
194 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
195 | version "2.0.5"
196 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
197 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
198 |
199 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
200 | version "1.2.8"
201 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
202 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
203 | dependencies:
204 | "@nodelib/fs.scandir" "2.1.5"
205 | fastq "^1.6.0"
206 |
207 | "@parcel/bundler-default@2.8.3":
208 | version "2.8.3"
209 | resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.8.3.tgz#d64739dbc2dbd59d6629861bf77a8083aced5229"
210 | integrity sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==
211 | dependencies:
212 | "@parcel/diagnostic" "2.8.3"
213 | "@parcel/graph" "2.8.3"
214 | "@parcel/hash" "2.8.3"
215 | "@parcel/plugin" "2.8.3"
216 | "@parcel/utils" "2.8.3"
217 | nullthrows "^1.1.1"
218 |
219 | "@parcel/cache@2.8.3":
220 | version "2.8.3"
221 | resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.8.3.tgz#169e130cf59913c0ed9fadce1a450e68f710e16f"
222 | integrity sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==
223 | dependencies:
224 | "@parcel/fs" "2.8.3"
225 | "@parcel/logger" "2.8.3"
226 | "@parcel/utils" "2.8.3"
227 | lmdb "2.5.2"
228 |
229 | "@parcel/codeframe@2.8.3":
230 | version "2.8.3"
231 | resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.8.3.tgz#84fb529ef70def7f5bc64f6c59b18d24826f5fcc"
232 | integrity sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==
233 | dependencies:
234 | chalk "^4.1.0"
235 |
236 | "@parcel/compressor-raw@2.8.3":
237 | version "2.8.3"
238 | resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz#301753df8c6de967553149639e8a4179b88f0c95"
239 | integrity sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==
240 | dependencies:
241 | "@parcel/plugin" "2.8.3"
242 |
243 | "@parcel/config-default@2.8.3":
244 | version "2.8.3"
245 | resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.8.3.tgz#9a43486e7c702e96c68052c37b79098d7240e35b"
246 | integrity sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==
247 | dependencies:
248 | "@parcel/bundler-default" "2.8.3"
249 | "@parcel/compressor-raw" "2.8.3"
250 | "@parcel/namer-default" "2.8.3"
251 | "@parcel/optimizer-css" "2.8.3"
252 | "@parcel/optimizer-htmlnano" "2.8.3"
253 | "@parcel/optimizer-image" "2.8.3"
254 | "@parcel/optimizer-svgo" "2.8.3"
255 | "@parcel/optimizer-terser" "2.8.3"
256 | "@parcel/packager-css" "2.8.3"
257 | "@parcel/packager-html" "2.8.3"
258 | "@parcel/packager-js" "2.8.3"
259 | "@parcel/packager-raw" "2.8.3"
260 | "@parcel/packager-svg" "2.8.3"
261 | "@parcel/reporter-dev-server" "2.8.3"
262 | "@parcel/resolver-default" "2.8.3"
263 | "@parcel/runtime-browser-hmr" "2.8.3"
264 | "@parcel/runtime-js" "2.8.3"
265 | "@parcel/runtime-react-refresh" "2.8.3"
266 | "@parcel/runtime-service-worker" "2.8.3"
267 | "@parcel/transformer-babel" "2.8.3"
268 | "@parcel/transformer-css" "2.8.3"
269 | "@parcel/transformer-html" "2.8.3"
270 | "@parcel/transformer-image" "2.8.3"
271 | "@parcel/transformer-js" "2.8.3"
272 | "@parcel/transformer-json" "2.8.3"
273 | "@parcel/transformer-postcss" "2.8.3"
274 | "@parcel/transformer-posthtml" "2.8.3"
275 | "@parcel/transformer-raw" "2.8.3"
276 | "@parcel/transformer-react-refresh-wrap" "2.8.3"
277 | "@parcel/transformer-svg" "2.8.3"
278 |
279 | "@parcel/core@2.8.3":
280 | version "2.8.3"
281 | resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.8.3.tgz#22a69f36095d53736ab10bf42697d9aa5f4e382b"
282 | integrity sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==
283 | dependencies:
284 | "@mischnic/json-sourcemap" "^0.1.0"
285 | "@parcel/cache" "2.8.3"
286 | "@parcel/diagnostic" "2.8.3"
287 | "@parcel/events" "2.8.3"
288 | "@parcel/fs" "2.8.3"
289 | "@parcel/graph" "2.8.3"
290 | "@parcel/hash" "2.8.3"
291 | "@parcel/logger" "2.8.3"
292 | "@parcel/package-manager" "2.8.3"
293 | "@parcel/plugin" "2.8.3"
294 | "@parcel/source-map" "^2.1.1"
295 | "@parcel/types" "2.8.3"
296 | "@parcel/utils" "2.8.3"
297 | "@parcel/workers" "2.8.3"
298 | abortcontroller-polyfill "^1.1.9"
299 | base-x "^3.0.8"
300 | browserslist "^4.6.6"
301 | clone "^2.1.1"
302 | dotenv "^7.0.0"
303 | dotenv-expand "^5.1.0"
304 | json5 "^2.2.0"
305 | msgpackr "^1.5.4"
306 | nullthrows "^1.1.1"
307 | semver "^5.7.1"
308 |
309 | "@parcel/diagnostic@2.8.3":
310 | version "2.8.3"
311 | resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.8.3.tgz#d560276d5d2804b48beafa1feaf3fc6b2ac5e39d"
312 | integrity sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==
313 | dependencies:
314 | "@mischnic/json-sourcemap" "^0.1.0"
315 | nullthrows "^1.1.1"
316 |
317 | "@parcel/events@2.8.3":
318 | version "2.8.3"
319 | resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.8.3.tgz#205f8d874e6ecc2cbdb941bf8d54bae669e571af"
320 | integrity sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==
321 |
322 | "@parcel/fs-search@2.8.3":
323 | version "2.8.3"
324 | resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.8.3.tgz#1c7d812c110b808758f44c56e61dfffdb09e9451"
325 | integrity sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==
326 | dependencies:
327 | detect-libc "^1.0.3"
328 |
329 | "@parcel/fs@2.8.3":
330 | version "2.8.3"
331 | resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.8.3.tgz#80536afe877fc8a2bd26be5576b9ba27bb4c5754"
332 | integrity sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==
333 | dependencies:
334 | "@parcel/fs-search" "2.8.3"
335 | "@parcel/types" "2.8.3"
336 | "@parcel/utils" "2.8.3"
337 | "@parcel/watcher" "^2.0.7"
338 | "@parcel/workers" "2.8.3"
339 |
340 | "@parcel/graph@2.8.3":
341 | version "2.8.3"
342 | resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.8.3.tgz#00ffe8ec032e74fee57199e54529f1da7322571d"
343 | integrity sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==
344 | dependencies:
345 | nullthrows "^1.1.1"
346 |
347 | "@parcel/hash@2.8.3":
348 | version "2.8.3"
349 | resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.8.3.tgz#bc2499a27395169616cad2a99e19e69b9098f6e9"
350 | integrity sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==
351 | dependencies:
352 | detect-libc "^1.0.3"
353 | xxhash-wasm "^0.4.2"
354 |
355 | "@parcel/logger@2.8.3":
356 | version "2.8.3"
357 | resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.8.3.tgz#e14e4debafb3ca9e87c07c06780f9afc38b2712c"
358 | integrity sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==
359 | dependencies:
360 | "@parcel/diagnostic" "2.8.3"
361 | "@parcel/events" "2.8.3"
362 |
363 | "@parcel/markdown-ansi@2.8.3":
364 | version "2.8.3"
365 | resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz#1337d421bb1133ad178f386a8e1b746631bba4a1"
366 | integrity sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==
367 | dependencies:
368 | chalk "^4.1.0"
369 |
370 | "@parcel/namer-default@2.8.3":
371 | version "2.8.3"
372 | resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.8.3.tgz#5304bee74beb4b9c1880781bdbe35be0656372f4"
373 | integrity sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==
374 | dependencies:
375 | "@parcel/diagnostic" "2.8.3"
376 | "@parcel/plugin" "2.8.3"
377 | nullthrows "^1.1.1"
378 |
379 | "@parcel/node-resolver-core@2.8.3":
380 | version "2.8.3"
381 | resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz#581df074a27646400b3fed9da95297b616a7db8f"
382 | integrity sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==
383 | dependencies:
384 | "@parcel/diagnostic" "2.8.3"
385 | "@parcel/utils" "2.8.3"
386 | nullthrows "^1.1.1"
387 | semver "^5.7.1"
388 |
389 | "@parcel/optimizer-css@2.8.3":
390 | version "2.8.3"
391 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.8.3.tgz#420a333f4b78f7ff15e69217dfed34421b1143ee"
392 | integrity sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==
393 | dependencies:
394 | "@parcel/diagnostic" "2.8.3"
395 | "@parcel/plugin" "2.8.3"
396 | "@parcel/source-map" "^2.1.1"
397 | "@parcel/utils" "2.8.3"
398 | browserslist "^4.6.6"
399 | lightningcss "^1.16.1"
400 | nullthrows "^1.1.1"
401 |
402 | "@parcel/optimizer-htmlnano@2.8.3":
403 | version "2.8.3"
404 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.3.tgz#a71ab6f0f24160ef9f573266064438eff65e96d0"
405 | integrity sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==
406 | dependencies:
407 | "@parcel/plugin" "2.8.3"
408 | htmlnano "^2.0.0"
409 | nullthrows "^1.1.1"
410 | posthtml "^0.16.5"
411 | svgo "^2.4.0"
412 |
413 | "@parcel/optimizer-image@2.8.3":
414 | version "2.8.3"
415 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.8.3.tgz#ea49b4245b4f7d60b38c7585c6311fb21d341baa"
416 | integrity sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==
417 | dependencies:
418 | "@parcel/diagnostic" "2.8.3"
419 | "@parcel/plugin" "2.8.3"
420 | "@parcel/utils" "2.8.3"
421 | "@parcel/workers" "2.8.3"
422 | detect-libc "^1.0.3"
423 |
424 | "@parcel/optimizer-svgo@2.8.3":
425 | version "2.8.3"
426 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.3.tgz#04da4efec6b623679539a84961bff6998034ba8a"
427 | integrity sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==
428 | dependencies:
429 | "@parcel/diagnostic" "2.8.3"
430 | "@parcel/plugin" "2.8.3"
431 | "@parcel/utils" "2.8.3"
432 | svgo "^2.4.0"
433 |
434 | "@parcel/optimizer-terser@2.8.3":
435 | version "2.8.3"
436 | resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz#3a06d98d09386a1a0ae1be85376a8739bfba9618"
437 | integrity sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==
438 | dependencies:
439 | "@parcel/diagnostic" "2.8.3"
440 | "@parcel/plugin" "2.8.3"
441 | "@parcel/source-map" "^2.1.1"
442 | "@parcel/utils" "2.8.3"
443 | nullthrows "^1.1.1"
444 | terser "^5.2.0"
445 |
446 | "@parcel/package-manager@2.8.3":
447 | version "2.8.3"
448 | resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.8.3.tgz#ddd0d62feae3cf0fb6cc0537791b3a16296ad458"
449 | integrity sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==
450 | dependencies:
451 | "@parcel/diagnostic" "2.8.3"
452 | "@parcel/fs" "2.8.3"
453 | "@parcel/logger" "2.8.3"
454 | "@parcel/types" "2.8.3"
455 | "@parcel/utils" "2.8.3"
456 | "@parcel/workers" "2.8.3"
457 | semver "^5.7.1"
458 |
459 | "@parcel/packager-css@2.8.3":
460 | version "2.8.3"
461 | resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.8.3.tgz#0eff34268cb4f5dfb53c1bbca85f5567aeb1835a"
462 | integrity sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==
463 | dependencies:
464 | "@parcel/plugin" "2.8.3"
465 | "@parcel/source-map" "^2.1.1"
466 | "@parcel/utils" "2.8.3"
467 | nullthrows "^1.1.1"
468 |
469 | "@parcel/packager-html@2.8.3":
470 | version "2.8.3"
471 | resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.8.3.tgz#f9263b891aa4dd46c6e2fa2b07025a482132fff1"
472 | integrity sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==
473 | dependencies:
474 | "@parcel/plugin" "2.8.3"
475 | "@parcel/types" "2.8.3"
476 | "@parcel/utils" "2.8.3"
477 | nullthrows "^1.1.1"
478 | posthtml "^0.16.5"
479 |
480 | "@parcel/packager-js@2.8.3":
481 | version "2.8.3"
482 | resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.8.3.tgz#3ed11565915d73d12192b6901c75a6b820e4a83a"
483 | integrity sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==
484 | dependencies:
485 | "@parcel/diagnostic" "2.8.3"
486 | "@parcel/hash" "2.8.3"
487 | "@parcel/plugin" "2.8.3"
488 | "@parcel/source-map" "^2.1.1"
489 | "@parcel/utils" "2.8.3"
490 | globals "^13.2.0"
491 | nullthrows "^1.1.1"
492 |
493 | "@parcel/packager-raw@2.8.3":
494 | version "2.8.3"
495 | resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.8.3.tgz#bdec826df991e186cb58691cc45d12ad5c06676e"
496 | integrity sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==
497 | dependencies:
498 | "@parcel/plugin" "2.8.3"
499 |
500 | "@parcel/packager-svg@2.8.3":
501 | version "2.8.3"
502 | resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.8.3.tgz#7233315296001c531cb55ca96b5f2ef672343630"
503 | integrity sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==
504 | dependencies:
505 | "@parcel/plugin" "2.8.3"
506 | "@parcel/types" "2.8.3"
507 | "@parcel/utils" "2.8.3"
508 | posthtml "^0.16.4"
509 |
510 | "@parcel/packager-ts@2.8.3":
511 | version "2.8.3"
512 | resolved "https://registry.yarnpkg.com/@parcel/packager-ts/-/packager-ts-2.8.3.tgz#49884b52e1a91c8265831fab4e8cf3a247fe69ca"
513 | integrity sha512-8JooYHjKntHnQywLT7LAnfoGiAQ1fUu0N2DtuM0PxpgQqYJ4KE9TZS+SZq7hpe24cZkD0A4A+1kBlYAyvuanrg==
514 | dependencies:
515 | "@parcel/plugin" "2.8.3"
516 |
517 | "@parcel/plugin@2.8.3":
518 | version "2.8.3"
519 | resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.8.3.tgz#7bb30a5775eaa6473c27f002a0a3ee7308d6d669"
520 | integrity sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==
521 | dependencies:
522 | "@parcel/types" "2.8.3"
523 |
524 | "@parcel/reporter-cli@2.8.3":
525 | version "2.8.3"
526 | resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.8.3.tgz#12a4743b51b8fe6837f53c20e01bbf1f7336e8e4"
527 | integrity sha512-3sJkS6tFFzgIOz3u3IpD/RsmRxvOKKiQHOTkiiqRt1l44mMDGKS7zANRnJYsQzdCsgwc9SOP30XFgJwtoVlMbw==
528 | dependencies:
529 | "@parcel/plugin" "2.8.3"
530 | "@parcel/types" "2.8.3"
531 | "@parcel/utils" "2.8.3"
532 | chalk "^4.1.0"
533 | term-size "^2.2.1"
534 |
535 | "@parcel/reporter-dev-server@2.8.3":
536 | version "2.8.3"
537 | resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz#a0daa5cc015642684cea561f4e0e7116bbffdc1c"
538 | integrity sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==
539 | dependencies:
540 | "@parcel/plugin" "2.8.3"
541 | "@parcel/utils" "2.8.3"
542 |
543 | "@parcel/resolver-default@2.8.3":
544 | version "2.8.3"
545 | resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.8.3.tgz#5ae41e537ae4a793c1abb47f094482b9e2ac3535"
546 | integrity sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==
547 | dependencies:
548 | "@parcel/node-resolver-core" "2.8.3"
549 | "@parcel/plugin" "2.8.3"
550 |
551 | "@parcel/runtime-browser-hmr@2.8.3":
552 | version "2.8.3"
553 | resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.3.tgz#1fa74e1fbd1030b0a920c58afa3a9eb7dc4bcd1e"
554 | integrity sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==
555 | dependencies:
556 | "@parcel/plugin" "2.8.3"
557 | "@parcel/utils" "2.8.3"
558 |
559 | "@parcel/runtime-js@2.8.3":
560 | version "2.8.3"
561 | resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.8.3.tgz#0baa4c8fbf77eabce05d01ccc186614968ffc0cd"
562 | integrity sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==
563 | dependencies:
564 | "@parcel/plugin" "2.8.3"
565 | "@parcel/utils" "2.8.3"
566 | nullthrows "^1.1.1"
567 |
568 | "@parcel/runtime-react-refresh@2.8.3":
569 | version "2.8.3"
570 | resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.3.tgz#381a942fb81e8f5ac6c7e0ee1b91dbf34763c3f8"
571 | integrity sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==
572 | dependencies:
573 | "@parcel/plugin" "2.8.3"
574 | "@parcel/utils" "2.8.3"
575 | react-error-overlay "6.0.9"
576 | react-refresh "^0.9.0"
577 |
578 | "@parcel/runtime-service-worker@2.8.3":
579 | version "2.8.3"
580 | resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.3.tgz#54d92da9ff1dfbd27db0e84164a22fa59e99b348"
581 | integrity sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==
582 | dependencies:
583 | "@parcel/plugin" "2.8.3"
584 | "@parcel/utils" "2.8.3"
585 | nullthrows "^1.1.1"
586 |
587 | "@parcel/source-map@^2.1.1":
588 | version "2.1.1"
589 | resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782"
590 | integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==
591 | dependencies:
592 | detect-libc "^1.0.3"
593 |
594 | "@parcel/transformer-babel@2.8.3":
595 | version "2.8.3"
596 | resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.8.3.tgz#286bc6cb9afe4c0259f0b28e0f2f47322a24b130"
597 | integrity sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==
598 | dependencies:
599 | "@parcel/diagnostic" "2.8.3"
600 | "@parcel/plugin" "2.8.3"
601 | "@parcel/source-map" "^2.1.1"
602 | "@parcel/utils" "2.8.3"
603 | browserslist "^4.6.6"
604 | json5 "^2.2.0"
605 | nullthrows "^1.1.1"
606 | semver "^5.7.0"
607 |
608 | "@parcel/transformer-css@2.8.3":
609 | version "2.8.3"
610 | resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.8.3.tgz#d6c44100204e73841ad8e0f90472172ea8b9120c"
611 | integrity sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==
612 | dependencies:
613 | "@parcel/diagnostic" "2.8.3"
614 | "@parcel/plugin" "2.8.3"
615 | "@parcel/source-map" "^2.1.1"
616 | "@parcel/utils" "2.8.3"
617 | browserslist "^4.6.6"
618 | lightningcss "^1.16.1"
619 | nullthrows "^1.1.1"
620 |
621 | "@parcel/transformer-html@2.8.3":
622 | version "2.8.3"
623 | resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.8.3.tgz#5c68b28ee6b8c7a13b8aee87f7957ad3227bd83f"
624 | integrity sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==
625 | dependencies:
626 | "@parcel/diagnostic" "2.8.3"
627 | "@parcel/hash" "2.8.3"
628 | "@parcel/plugin" "2.8.3"
629 | nullthrows "^1.1.1"
630 | posthtml "^0.16.5"
631 | posthtml-parser "^0.10.1"
632 | posthtml-render "^3.0.0"
633 | semver "^5.7.1"
634 | srcset "4"
635 |
636 | "@parcel/transformer-image@2.8.3":
637 | version "2.8.3"
638 | resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.8.3.tgz#73805b2bfc3c8919d7737544e5f8be39e3f303fe"
639 | integrity sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==
640 | dependencies:
641 | "@parcel/plugin" "2.8.3"
642 | "@parcel/utils" "2.8.3"
643 | "@parcel/workers" "2.8.3"
644 | nullthrows "^1.1.1"
645 |
646 | "@parcel/transformer-js@2.8.3":
647 | version "2.8.3"
648 | resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.8.3.tgz#fe400df428394d1e7fe5afb6dea5c7c858e44f03"
649 | integrity sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==
650 | dependencies:
651 | "@parcel/diagnostic" "2.8.3"
652 | "@parcel/plugin" "2.8.3"
653 | "@parcel/source-map" "^2.1.1"
654 | "@parcel/utils" "2.8.3"
655 | "@parcel/workers" "2.8.3"
656 | "@swc/helpers" "^0.4.12"
657 | browserslist "^4.6.6"
658 | detect-libc "^1.0.3"
659 | nullthrows "^1.1.1"
660 | regenerator-runtime "^0.13.7"
661 | semver "^5.7.1"
662 |
663 | "@parcel/transformer-json@2.8.3":
664 | version "2.8.3"
665 | resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.8.3.tgz#25deb3a5138cc70a83269fc5d39d564609354d36"
666 | integrity sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==
667 | dependencies:
668 | "@parcel/plugin" "2.8.3"
669 | json5 "^2.2.0"
670 |
671 | "@parcel/transformer-postcss@2.8.3":
672 | version "2.8.3"
673 | resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.8.3.tgz#df4fdc1c90893823445f2a8eb8e2bdd0349ccc58"
674 | integrity sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==
675 | dependencies:
676 | "@parcel/diagnostic" "2.8.3"
677 | "@parcel/hash" "2.8.3"
678 | "@parcel/plugin" "2.8.3"
679 | "@parcel/utils" "2.8.3"
680 | clone "^2.1.1"
681 | nullthrows "^1.1.1"
682 | postcss-value-parser "^4.2.0"
683 | semver "^5.7.1"
684 |
685 | "@parcel/transformer-posthtml@2.8.3":
686 | version "2.8.3"
687 | resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.3.tgz#7c3912a5a631cb26485f6464e0d6eeabb6f1e718"
688 | integrity sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==
689 | dependencies:
690 | "@parcel/plugin" "2.8.3"
691 | "@parcel/utils" "2.8.3"
692 | nullthrows "^1.1.1"
693 | posthtml "^0.16.5"
694 | posthtml-parser "^0.10.1"
695 | posthtml-render "^3.0.0"
696 | semver "^5.7.1"
697 |
698 | "@parcel/transformer-raw@2.8.3":
699 | version "2.8.3"
700 | resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.8.3.tgz#3a22213fe18a5f83fd78889cb49f06e059cfead7"
701 | integrity sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==
702 | dependencies:
703 | "@parcel/plugin" "2.8.3"
704 |
705 | "@parcel/transformer-react-refresh-wrap@2.8.3":
706 | version "2.8.3"
707 | resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.3.tgz#8b0392638405dd470a886002229f7889d5464822"
708 | integrity sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==
709 | dependencies:
710 | "@parcel/plugin" "2.8.3"
711 | "@parcel/utils" "2.8.3"
712 | react-refresh "^0.9.0"
713 |
714 | "@parcel/transformer-svg@2.8.3":
715 | version "2.8.3"
716 | resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.8.3.tgz#4df959cba4ebf45d7aaddd540f752e6e84df38b2"
717 | integrity sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==
718 | dependencies:
719 | "@parcel/diagnostic" "2.8.3"
720 | "@parcel/hash" "2.8.3"
721 | "@parcel/plugin" "2.8.3"
722 | nullthrows "^1.1.1"
723 | posthtml "^0.16.5"
724 | posthtml-parser "^0.10.1"
725 | posthtml-render "^3.0.0"
726 | semver "^5.7.1"
727 |
728 | "@parcel/transformer-typescript-types@^2.8.3":
729 | version "2.8.3"
730 | resolved "https://registry.yarnpkg.com/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.8.3.tgz#55415a9b4f3bc859b675b502d23180e5e4f67719"
731 | integrity sha512-zjsJsgecjw4X1nt5R7A61uWwzwCce0usKKPqnE5tQpYtF4FfK5X69r0l5JLovlyaT2uwoe+hvhu2AELA0kKRQA==
732 | dependencies:
733 | "@parcel/diagnostic" "2.8.3"
734 | "@parcel/plugin" "2.8.3"
735 | "@parcel/source-map" "^2.1.1"
736 | "@parcel/ts-utils" "2.8.3"
737 | "@parcel/utils" "2.8.3"
738 | nullthrows "^1.1.1"
739 |
740 | "@parcel/ts-utils@2.8.3":
741 | version "2.8.3"
742 | resolved "https://registry.yarnpkg.com/@parcel/ts-utils/-/ts-utils-2.8.3.tgz#f3590ca033c061779dc35ff3d14af2860ed106ac"
743 | integrity sha512-4HMt9B9LF2pDFvSKGImho48tlCvCUl7ly1ZMXvQdmEq2i0yoS81tDsmxX3yly/RVUVeUCGAj1JRuuy1lw5zw1A==
744 | dependencies:
745 | nullthrows "^1.1.1"
746 |
747 | "@parcel/types@2.8.3":
748 | version "2.8.3"
749 | resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.8.3.tgz#3306bc5391b6913bd619914894b8cd84a24b30fa"
750 | integrity sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==
751 | dependencies:
752 | "@parcel/cache" "2.8.3"
753 | "@parcel/diagnostic" "2.8.3"
754 | "@parcel/fs" "2.8.3"
755 | "@parcel/package-manager" "2.8.3"
756 | "@parcel/source-map" "^2.1.1"
757 | "@parcel/workers" "2.8.3"
758 | utility-types "^3.10.0"
759 |
760 | "@parcel/utils@2.8.3":
761 | version "2.8.3"
762 | resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.8.3.tgz#0d56c9e8e22c119590a5e044a0e01031965da40e"
763 | integrity sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==
764 | dependencies:
765 | "@parcel/codeframe" "2.8.3"
766 | "@parcel/diagnostic" "2.8.3"
767 | "@parcel/hash" "2.8.3"
768 | "@parcel/logger" "2.8.3"
769 | "@parcel/markdown-ansi" "2.8.3"
770 | "@parcel/source-map" "^2.1.1"
771 | chalk "^4.1.0"
772 |
773 | "@parcel/watcher@^2.0.7":
774 | version "2.1.0"
775 | resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.1.0.tgz#5f32969362db4893922c526a842d8af7a8538545"
776 | integrity sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==
777 | dependencies:
778 | is-glob "^4.0.3"
779 | micromatch "^4.0.5"
780 | node-addon-api "^3.2.1"
781 | node-gyp-build "^4.3.0"
782 |
783 | "@parcel/workers@2.8.3":
784 | version "2.8.3"
785 | resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.8.3.tgz#255450ccf4db234082407e4ddda5fd575f08c235"
786 | integrity sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==
787 | dependencies:
788 | "@parcel/diagnostic" "2.8.3"
789 | "@parcel/logger" "2.8.3"
790 | "@parcel/types" "2.8.3"
791 | "@parcel/utils" "2.8.3"
792 | chrome-trace-event "^1.0.2"
793 | nullthrows "^1.1.1"
794 |
795 | "@popmotion/easing@^1.0.1", "@popmotion/easing@^1.0.2":
796 | version "1.0.2"
797 | resolved "https://registry.yarnpkg.com/@popmotion/easing/-/easing-1.0.2.tgz#17d925c45b4bf44189e5a38038d149df42d8c0b4"
798 | integrity sha512-IkdW0TNmRnWTeWI7aGQIVDbKXPWHVEYdGgd5ZR4SH/Ty/61p63jCjrPxX1XrR7IGkl08bjhJROStD7j+RKgoIw==
799 |
800 | "@popmotion/popcorn@^0.4.4":
801 | version "0.4.4"
802 | resolved "https://registry.yarnpkg.com/@popmotion/popcorn/-/popcorn-0.4.4.tgz#a5f906fccdff84526e3fcb892712d7d8a98d6adc"
803 | integrity sha512-jYO/8319fKoNLMlY4ZJPiPu8Ea8occYwRZhxpaNn/kZsK4QG2E7XFlXZMJBsTWDw7I1i0uaqyC4zn1nwEezLzg==
804 | dependencies:
805 | "@popmotion/easing" "^1.0.1"
806 | framesync "^4.0.1"
807 | hey-listen "^1.0.8"
808 | style-value-types "^3.1.7"
809 | tslib "^1.10.0"
810 |
811 | "@swc/helpers@^0.4.12":
812 | version "0.4.14"
813 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
814 | integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==
815 | dependencies:
816 | tslib "^2.4.0"
817 |
818 | "@trysound/sax@0.2.0":
819 | version "0.2.0"
820 | resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
821 | integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
822 |
823 | "@types/json-schema@^7.0.9":
824 | version "7.0.11"
825 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
826 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
827 |
828 | "@types/lodash.throttle@^4.1.7":
829 | version "4.1.7"
830 | resolved "https://registry.yarnpkg.com/@types/lodash.throttle/-/lodash.throttle-4.1.7.tgz#4ef379eb4f778068022310ef166625f420b6ba58"
831 | integrity sha512-znwGDpjCHQ4FpLLx19w4OXDqq8+OvREa05H89obtSyXyOFKL3dDjCslsmfBz0T2FU8dmf5Wx1QvogbINiGIu9g==
832 | dependencies:
833 | "@types/lodash" "*"
834 |
835 | "@types/lodash@*":
836 | version "4.14.191"
837 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
838 | integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
839 |
840 | "@types/parse-json@^4.0.0":
841 | version "4.0.0"
842 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
843 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
844 |
845 | "@types/semver@^7.3.12":
846 | version "7.3.13"
847 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
848 | integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
849 |
850 | "@typescript-eslint/eslint-plugin@^5.54.0":
851 | version "5.54.0"
852 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz#2c821ad81b2c786d142279a8292090f77d1881f4"
853 | integrity sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==
854 | dependencies:
855 | "@typescript-eslint/scope-manager" "5.54.0"
856 | "@typescript-eslint/type-utils" "5.54.0"
857 | "@typescript-eslint/utils" "5.54.0"
858 | debug "^4.3.4"
859 | grapheme-splitter "^1.0.4"
860 | ignore "^5.2.0"
861 | natural-compare-lite "^1.4.0"
862 | regexpp "^3.2.0"
863 | semver "^7.3.7"
864 | tsutils "^3.21.0"
865 |
866 | "@typescript-eslint/parser@^5.54.0":
867 | version "5.54.0"
868 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.54.0.tgz#def186eb1b1dbd0439df0dacc44fb6d8d5c417fe"
869 | integrity sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==
870 | dependencies:
871 | "@typescript-eslint/scope-manager" "5.54.0"
872 | "@typescript-eslint/types" "5.54.0"
873 | "@typescript-eslint/typescript-estree" "5.54.0"
874 | debug "^4.3.4"
875 |
876 | "@typescript-eslint/scope-manager@5.54.0":
877 | version "5.54.0"
878 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz#74b28ac9a3fc8166f04e806c957adb8c1fd00536"
879 | integrity sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==
880 | dependencies:
881 | "@typescript-eslint/types" "5.54.0"
882 | "@typescript-eslint/visitor-keys" "5.54.0"
883 |
884 | "@typescript-eslint/type-utils@5.54.0":
885 | version "5.54.0"
886 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz#390717216eb61393a0cad2995da154b613ba7b26"
887 | integrity sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==
888 | dependencies:
889 | "@typescript-eslint/typescript-estree" "5.54.0"
890 | "@typescript-eslint/utils" "5.54.0"
891 | debug "^4.3.4"
892 | tsutils "^3.21.0"
893 |
894 | "@typescript-eslint/types@5.54.0":
895 | version "5.54.0"
896 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.0.tgz#7d519df01f50739254d89378e0dcac504cab2740"
897 | integrity sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==
898 |
899 | "@typescript-eslint/typescript-estree@5.54.0":
900 | version "5.54.0"
901 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz#f6f3440cabee8a43a0b25fa498213ebb61fdfe99"
902 | integrity sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==
903 | dependencies:
904 | "@typescript-eslint/types" "5.54.0"
905 | "@typescript-eslint/visitor-keys" "5.54.0"
906 | debug "^4.3.4"
907 | globby "^11.1.0"
908 | is-glob "^4.0.3"
909 | semver "^7.3.7"
910 | tsutils "^3.21.0"
911 |
912 | "@typescript-eslint/utils@5.54.0":
913 | version "5.54.0"
914 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.0.tgz#3db758aae078be7b54b8ea8ea4537ff6cd3fbc21"
915 | integrity sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==
916 | dependencies:
917 | "@types/json-schema" "^7.0.9"
918 | "@types/semver" "^7.3.12"
919 | "@typescript-eslint/scope-manager" "5.54.0"
920 | "@typescript-eslint/types" "5.54.0"
921 | "@typescript-eslint/typescript-estree" "5.54.0"
922 | eslint-scope "^5.1.1"
923 | eslint-utils "^3.0.0"
924 | semver "^7.3.7"
925 |
926 | "@typescript-eslint/visitor-keys@5.54.0":
927 | version "5.54.0"
928 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz#846878afbf0cd67c19cfa8d75947383d4490db8f"
929 | integrity sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==
930 | dependencies:
931 | "@typescript-eslint/types" "5.54.0"
932 | eslint-visitor-keys "^3.3.0"
933 |
934 | abortcontroller-polyfill@^1.1.9:
935 | version "1.7.5"
936 | resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed"
937 | integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==
938 |
939 | acorn-jsx@^5.3.2:
940 | version "5.3.2"
941 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
942 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
943 |
944 | acorn@^8.5.0, acorn@^8.8.0:
945 | version "8.8.2"
946 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
947 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
948 |
949 | ajv@^6.10.0, ajv@^6.12.4:
950 | version "6.12.6"
951 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
952 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
953 | dependencies:
954 | fast-deep-equal "^3.1.1"
955 | fast-json-stable-stringify "^2.0.0"
956 | json-schema-traverse "^0.4.1"
957 | uri-js "^4.2.2"
958 |
959 | ansi-regex@^5.0.1:
960 | version "5.0.1"
961 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
962 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
963 |
964 | ansi-styles@^3.2.1:
965 | version "3.2.1"
966 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
967 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
968 | dependencies:
969 | color-convert "^1.9.0"
970 |
971 | ansi-styles@^4.1.0:
972 | version "4.3.0"
973 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
974 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
975 | dependencies:
976 | color-convert "^2.0.1"
977 |
978 | argparse@^2.0.1:
979 | version "2.0.1"
980 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
981 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
982 |
983 | array-union@^2.1.0:
984 | version "2.1.0"
985 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
986 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
987 |
988 | balanced-match@^1.0.0:
989 | version "1.0.2"
990 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
991 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
992 |
993 | base-x@^3.0.8:
994 | version "3.0.9"
995 | resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
996 | integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
997 | dependencies:
998 | safe-buffer "^5.0.1"
999 |
1000 | boolbase@^1.0.0:
1001 | version "1.0.0"
1002 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
1003 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
1004 |
1005 | brace-expansion@^1.1.7:
1006 | version "1.1.11"
1007 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
1008 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
1009 | dependencies:
1010 | balanced-match "^1.0.0"
1011 | concat-map "0.0.1"
1012 |
1013 | braces@^3.0.2:
1014 | version "3.0.2"
1015 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
1016 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
1017 | dependencies:
1018 | fill-range "^7.0.1"
1019 |
1020 | browserslist@^4.6.6:
1021 | version "4.21.5"
1022 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
1023 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
1024 | dependencies:
1025 | caniuse-lite "^1.0.30001449"
1026 | electron-to-chromium "^1.4.284"
1027 | node-releases "^2.0.8"
1028 | update-browserslist-db "^1.0.10"
1029 |
1030 | buffer-from@^1.0.0:
1031 | version "1.1.2"
1032 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
1033 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
1034 |
1035 | callsites@^3.0.0:
1036 | version "3.1.0"
1037 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
1038 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
1039 |
1040 | caniuse-lite@^1.0.30001449:
1041 | version "1.0.30001458"
1042 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz#871e35866b4654a7d25eccca86864f411825540c"
1043 | integrity sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==
1044 |
1045 | chalk@^2.0.0:
1046 | version "2.4.2"
1047 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1048 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1049 | dependencies:
1050 | ansi-styles "^3.2.1"
1051 | escape-string-regexp "^1.0.5"
1052 | supports-color "^5.3.0"
1053 |
1054 | chalk@^4.0.0, chalk@^4.1.0:
1055 | version "4.1.2"
1056 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
1057 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
1058 | dependencies:
1059 | ansi-styles "^4.1.0"
1060 | supports-color "^7.1.0"
1061 |
1062 | chrome-trace-event@^1.0.2:
1063 | version "1.0.3"
1064 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
1065 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
1066 |
1067 | clone@^2.1.1:
1068 | version "2.1.2"
1069 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
1070 | integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
1071 |
1072 | color-convert@^1.9.0:
1073 | version "1.9.3"
1074 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1075 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1076 | dependencies:
1077 | color-name "1.1.3"
1078 |
1079 | color-convert@^2.0.1:
1080 | version "2.0.1"
1081 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
1082 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
1083 | dependencies:
1084 | color-name "~1.1.4"
1085 |
1086 | color-name@1.1.3:
1087 | version "1.1.3"
1088 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1089 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
1090 |
1091 | color-name@~1.1.4:
1092 | version "1.1.4"
1093 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1094 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1095 |
1096 | commander@^2.20.0:
1097 | version "2.20.3"
1098 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1099 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1100 |
1101 | commander@^7.0.0, commander@^7.2.0:
1102 | version "7.2.0"
1103 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
1104 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
1105 |
1106 | concat-map@0.0.1:
1107 | version "0.0.1"
1108 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1109 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
1110 |
1111 | cosmiconfig@^7.0.1:
1112 | version "7.1.0"
1113 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
1114 | integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
1115 | dependencies:
1116 | "@types/parse-json" "^4.0.0"
1117 | import-fresh "^3.2.1"
1118 | parse-json "^5.0.0"
1119 | path-type "^4.0.0"
1120 | yaml "^1.10.0"
1121 |
1122 | cross-spawn@^7.0.2:
1123 | version "7.0.3"
1124 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1125 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1126 | dependencies:
1127 | path-key "^3.1.0"
1128 | shebang-command "^2.0.0"
1129 | which "^2.0.1"
1130 |
1131 | css-select@^4.1.3:
1132 | version "4.3.0"
1133 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b"
1134 | integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
1135 | dependencies:
1136 | boolbase "^1.0.0"
1137 | css-what "^6.0.1"
1138 | domhandler "^4.3.1"
1139 | domutils "^2.8.0"
1140 | nth-check "^2.0.1"
1141 |
1142 | css-tree@^1.1.2, css-tree@^1.1.3:
1143 | version "1.1.3"
1144 | resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
1145 | integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
1146 | dependencies:
1147 | mdn-data "2.0.14"
1148 | source-map "^0.6.1"
1149 |
1150 | css-what@^6.0.1:
1151 | version "6.1.0"
1152 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
1153 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
1154 |
1155 | csso@^4.2.0:
1156 | version "4.2.0"
1157 | resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
1158 | integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
1159 | dependencies:
1160 | css-tree "^1.1.2"
1161 |
1162 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
1163 | version "4.3.4"
1164 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
1165 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
1166 | dependencies:
1167 | ms "2.1.2"
1168 |
1169 | deep-is@^0.1.3:
1170 | version "0.1.4"
1171 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
1172 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
1173 |
1174 | detect-libc@^1.0.3:
1175 | version "1.0.3"
1176 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
1177 | integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
1178 |
1179 | dir-glob@^3.0.1:
1180 | version "3.0.1"
1181 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
1182 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
1183 | dependencies:
1184 | path-type "^4.0.0"
1185 |
1186 | doctrine@^3.0.0:
1187 | version "3.0.0"
1188 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
1189 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
1190 | dependencies:
1191 | esutils "^2.0.2"
1192 |
1193 | dom-serializer@^1.0.1:
1194 | version "1.4.1"
1195 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
1196 | integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
1197 | dependencies:
1198 | domelementtype "^2.0.1"
1199 | domhandler "^4.2.0"
1200 | entities "^2.0.0"
1201 |
1202 | domelementtype@^2.0.1, domelementtype@^2.2.0:
1203 | version "2.3.0"
1204 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
1205 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
1206 |
1207 | domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1:
1208 | version "4.3.1"
1209 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
1210 | integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
1211 | dependencies:
1212 | domelementtype "^2.2.0"
1213 |
1214 | domutils@^2.8.0:
1215 | version "2.8.0"
1216 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
1217 | integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
1218 | dependencies:
1219 | dom-serializer "^1.0.1"
1220 | domelementtype "^2.2.0"
1221 | domhandler "^4.2.0"
1222 |
1223 | dotenv-expand@^5.1.0:
1224 | version "5.1.0"
1225 | resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
1226 | integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
1227 |
1228 | dotenv@^7.0.0:
1229 | version "7.0.0"
1230 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
1231 | integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==
1232 |
1233 | electron-to-chromium@^1.4.284:
1234 | version "1.4.315"
1235 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.315.tgz#b60a6676b3a1db332cfc8919118344aa06b9ac99"
1236 | integrity sha512-ndBQYz3Eyy3rASjjQ9poMJGoAlsZ/aZnq6GBsGL4w/4sWIAwiUHVSsMuADbxa8WJw7pZ0oxLpGbtoDt4vRTdCg==
1237 |
1238 | entities@^2.0.0:
1239 | version "2.2.0"
1240 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
1241 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
1242 |
1243 | entities@^3.0.1:
1244 | version "3.0.1"
1245 | resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
1246 | integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
1247 |
1248 | error-ex@^1.3.1:
1249 | version "1.3.2"
1250 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1251 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1252 | dependencies:
1253 | is-arrayish "^0.2.1"
1254 |
1255 | escalade@^3.1.1:
1256 | version "3.1.1"
1257 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
1258 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
1259 |
1260 | escape-string-regexp@^1.0.5:
1261 | version "1.0.5"
1262 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1263 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
1264 |
1265 | escape-string-regexp@^4.0.0:
1266 | version "4.0.0"
1267 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
1268 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
1269 |
1270 | eslint-scope@^5.1.1:
1271 | version "5.1.1"
1272 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
1273 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
1274 | dependencies:
1275 | esrecurse "^4.3.0"
1276 | estraverse "^4.1.1"
1277 |
1278 | eslint-scope@^7.1.1:
1279 | version "7.1.1"
1280 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
1281 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
1282 | dependencies:
1283 | esrecurse "^4.3.0"
1284 | estraverse "^5.2.0"
1285 |
1286 | eslint-utils@^3.0.0:
1287 | version "3.0.0"
1288 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
1289 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
1290 | dependencies:
1291 | eslint-visitor-keys "^2.0.0"
1292 |
1293 | eslint-visitor-keys@^2.0.0:
1294 | version "2.1.0"
1295 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
1296 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
1297 |
1298 | eslint-visitor-keys@^3.3.0:
1299 | version "3.3.0"
1300 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
1301 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
1302 |
1303 | eslint@^8.35.0:
1304 | version "8.35.0"
1305 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323"
1306 | integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==
1307 | dependencies:
1308 | "@eslint/eslintrc" "^2.0.0"
1309 | "@eslint/js" "8.35.0"
1310 | "@humanwhocodes/config-array" "^0.11.8"
1311 | "@humanwhocodes/module-importer" "^1.0.1"
1312 | "@nodelib/fs.walk" "^1.2.8"
1313 | ajv "^6.10.0"
1314 | chalk "^4.0.0"
1315 | cross-spawn "^7.0.2"
1316 | debug "^4.3.2"
1317 | doctrine "^3.0.0"
1318 | escape-string-regexp "^4.0.0"
1319 | eslint-scope "^7.1.1"
1320 | eslint-utils "^3.0.0"
1321 | eslint-visitor-keys "^3.3.0"
1322 | espree "^9.4.0"
1323 | esquery "^1.4.2"
1324 | esutils "^2.0.2"
1325 | fast-deep-equal "^3.1.3"
1326 | file-entry-cache "^6.0.1"
1327 | find-up "^5.0.0"
1328 | glob-parent "^6.0.2"
1329 | globals "^13.19.0"
1330 | grapheme-splitter "^1.0.4"
1331 | ignore "^5.2.0"
1332 | import-fresh "^3.0.0"
1333 | imurmurhash "^0.1.4"
1334 | is-glob "^4.0.0"
1335 | is-path-inside "^3.0.3"
1336 | js-sdsl "^4.1.4"
1337 | js-yaml "^4.1.0"
1338 | json-stable-stringify-without-jsonify "^1.0.1"
1339 | levn "^0.4.1"
1340 | lodash.merge "^4.6.2"
1341 | minimatch "^3.1.2"
1342 | natural-compare "^1.4.0"
1343 | optionator "^0.9.1"
1344 | regexpp "^3.2.0"
1345 | strip-ansi "^6.0.1"
1346 | strip-json-comments "^3.1.0"
1347 | text-table "^0.2.0"
1348 |
1349 | espree@^9.4.0:
1350 | version "9.4.1"
1351 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd"
1352 | integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
1353 | dependencies:
1354 | acorn "^8.8.0"
1355 | acorn-jsx "^5.3.2"
1356 | eslint-visitor-keys "^3.3.0"
1357 |
1358 | esquery@^1.4.2:
1359 | version "1.5.0"
1360 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
1361 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
1362 | dependencies:
1363 | estraverse "^5.1.0"
1364 |
1365 | esrecurse@^4.3.0:
1366 | version "4.3.0"
1367 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1368 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1369 | dependencies:
1370 | estraverse "^5.2.0"
1371 |
1372 | estraverse@^4.1.1:
1373 | version "4.3.0"
1374 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
1375 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
1376 |
1377 | estraverse@^5.1.0, estraverse@^5.2.0:
1378 | version "5.3.0"
1379 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
1380 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
1381 |
1382 | esutils@^2.0.2:
1383 | version "2.0.3"
1384 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1385 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1386 |
1387 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
1388 | version "3.1.3"
1389 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1390 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1391 |
1392 | fast-glob@^3.2.9:
1393 | version "3.2.12"
1394 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
1395 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
1396 | dependencies:
1397 | "@nodelib/fs.stat" "^2.0.2"
1398 | "@nodelib/fs.walk" "^1.2.3"
1399 | glob-parent "^5.1.2"
1400 | merge2 "^1.3.0"
1401 | micromatch "^4.0.4"
1402 |
1403 | fast-json-stable-stringify@^2.0.0:
1404 | version "2.1.0"
1405 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1406 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1407 |
1408 | fast-levenshtein@^2.0.6:
1409 | version "2.0.6"
1410 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1411 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
1412 |
1413 | fastq@^1.6.0:
1414 | version "1.15.0"
1415 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
1416 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
1417 | dependencies:
1418 | reusify "^1.0.4"
1419 |
1420 | file-entry-cache@^6.0.1:
1421 | version "6.0.1"
1422 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
1423 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
1424 | dependencies:
1425 | flat-cache "^3.0.4"
1426 |
1427 | fill-range@^7.0.1:
1428 | version "7.0.1"
1429 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1430 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1431 | dependencies:
1432 | to-regex-range "^5.0.1"
1433 |
1434 | find-up@^5.0.0:
1435 | version "5.0.0"
1436 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
1437 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
1438 | dependencies:
1439 | locate-path "^6.0.0"
1440 | path-exists "^4.0.0"
1441 |
1442 | flat-cache@^3.0.4:
1443 | version "3.0.4"
1444 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
1445 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
1446 | dependencies:
1447 | flatted "^3.1.0"
1448 | rimraf "^3.0.2"
1449 |
1450 | flatted@^3.1.0:
1451 | version "3.2.7"
1452 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
1453 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
1454 |
1455 | framesync@^4.0.0, framesync@^4.0.1:
1456 | version "4.1.0"
1457 | resolved "https://registry.yarnpkg.com/framesync/-/framesync-4.1.0.tgz#69a8db3ca432dc70d6a76ba882684a1497ef068a"
1458 | integrity sha512-MmgZ4wCoeVxNbx2xp5hN/zPDCbLSKiDt4BbbslK7j/pM2lg5S0vhTNv1v8BCVb99JPIo6hXBFdwzU7Q4qcAaoQ==
1459 | dependencies:
1460 | hey-listen "^1.0.5"
1461 |
1462 | framesync@^6.1.2:
1463 | version "6.1.2"
1464 | resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.1.2.tgz#755eff2fb5b8f3b4d2b266dd18121b300aefea27"
1465 | integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==
1466 | dependencies:
1467 | tslib "2.4.0"
1468 |
1469 | fs.realpath@^1.0.0:
1470 | version "1.0.0"
1471 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1472 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1473 |
1474 | get-port@^4.2.0:
1475 | version "4.2.0"
1476 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119"
1477 | integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==
1478 |
1479 | glob-parent@^5.1.2:
1480 | version "5.1.2"
1481 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1482 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1483 | dependencies:
1484 | is-glob "^4.0.1"
1485 |
1486 | glob-parent@^6.0.2:
1487 | version "6.0.2"
1488 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
1489 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
1490 | dependencies:
1491 | is-glob "^4.0.3"
1492 |
1493 | glob@^7.1.3:
1494 | version "7.2.3"
1495 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
1496 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1497 | dependencies:
1498 | fs.realpath "^1.0.0"
1499 | inflight "^1.0.4"
1500 | inherits "2"
1501 | minimatch "^3.1.1"
1502 | once "^1.3.0"
1503 | path-is-absolute "^1.0.0"
1504 |
1505 | globals@^13.19.0, globals@^13.2.0:
1506 | version "13.20.0"
1507 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
1508 | integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
1509 | dependencies:
1510 | type-fest "^0.20.2"
1511 |
1512 | globby@^11.1.0:
1513 | version "11.1.0"
1514 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
1515 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
1516 | dependencies:
1517 | array-union "^2.1.0"
1518 | dir-glob "^3.0.1"
1519 | fast-glob "^3.2.9"
1520 | ignore "^5.2.0"
1521 | merge2 "^1.4.1"
1522 | slash "^3.0.0"
1523 |
1524 | grapheme-splitter@^1.0.4:
1525 | version "1.0.4"
1526 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
1527 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
1528 |
1529 | has-flag@^3.0.0:
1530 | version "3.0.0"
1531 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1532 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
1533 |
1534 | has-flag@^4.0.0:
1535 | version "4.0.0"
1536 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1537 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1538 |
1539 | hey-listen@^1.0.5, hey-listen@^1.0.8:
1540 | version "1.0.8"
1541 | resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68"
1542 | integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==
1543 |
1544 | htmlnano@^2.0.0:
1545 | version "2.0.3"
1546 | resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.3.tgz#50ee639ed63357d4a6c01309f52a35892e4edc2e"
1547 | integrity sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==
1548 | dependencies:
1549 | cosmiconfig "^7.0.1"
1550 | posthtml "^0.16.5"
1551 | timsort "^0.3.0"
1552 |
1553 | htmlparser2@^7.1.1:
1554 | version "7.2.0"
1555 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
1556 | integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
1557 | dependencies:
1558 | domelementtype "^2.0.1"
1559 | domhandler "^4.2.2"
1560 | domutils "^2.8.0"
1561 | entities "^3.0.1"
1562 |
1563 | ignore@^5.2.0:
1564 | version "5.2.4"
1565 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
1566 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
1567 |
1568 | import-fresh@^3.0.0, import-fresh@^3.2.1:
1569 | version "3.3.0"
1570 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
1571 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
1572 | dependencies:
1573 | parent-module "^1.0.0"
1574 | resolve-from "^4.0.0"
1575 |
1576 | imurmurhash@^0.1.4:
1577 | version "0.1.4"
1578 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1579 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
1580 |
1581 | inflight@^1.0.4:
1582 | version "1.0.6"
1583 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1584 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
1585 | dependencies:
1586 | once "^1.3.0"
1587 | wrappy "1"
1588 |
1589 | inherits@2:
1590 | version "2.0.4"
1591 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1592 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1593 |
1594 | is-arrayish@^0.2.1:
1595 | version "0.2.1"
1596 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1597 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
1598 |
1599 | is-extglob@^2.1.1:
1600 | version "2.1.1"
1601 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1602 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1603 |
1604 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
1605 | version "4.0.3"
1606 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1607 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1608 | dependencies:
1609 | is-extglob "^2.1.1"
1610 |
1611 | is-json@^2.0.1:
1612 | version "2.0.1"
1613 | resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff"
1614 | integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==
1615 |
1616 | is-number@^7.0.0:
1617 | version "7.0.0"
1618 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1619 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1620 |
1621 | is-path-inside@^3.0.3:
1622 | version "3.0.3"
1623 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
1624 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
1625 |
1626 | isexe@^2.0.0:
1627 | version "2.0.0"
1628 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1629 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1630 |
1631 | js-sdsl@^4.1.4:
1632 | version "4.3.0"
1633 | resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711"
1634 | integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==
1635 |
1636 | js-tokens@^4.0.0:
1637 | version "4.0.0"
1638 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1639 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1640 |
1641 | js-yaml@^4.1.0:
1642 | version "4.1.0"
1643 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1644 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1645 | dependencies:
1646 | argparse "^2.0.1"
1647 |
1648 | json-parse-even-better-errors@^2.3.0:
1649 | version "2.3.1"
1650 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
1651 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
1652 |
1653 | json-schema-traverse@^0.4.1:
1654 | version "0.4.1"
1655 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1656 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1657 |
1658 | json-stable-stringify-without-jsonify@^1.0.1:
1659 | version "1.0.1"
1660 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1661 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
1662 |
1663 | json5@^2.2.0, json5@^2.2.1:
1664 | version "2.2.3"
1665 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
1666 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
1667 |
1668 | levn@^0.4.1:
1669 | version "0.4.1"
1670 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
1671 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
1672 | dependencies:
1673 | prelude-ls "^1.2.1"
1674 | type-check "~0.4.0"
1675 |
1676 | lightningcss-darwin-arm64@1.19.0:
1677 | version "1.19.0"
1678 | resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz#56ab071e932f845dbb7667f44f5b78441175a343"
1679 | integrity sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==
1680 |
1681 | lightningcss-darwin-x64@1.19.0:
1682 | version "1.19.0"
1683 | resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz#c867308b88859ba61a2c46c82b1ca52ff73a1bd0"
1684 | integrity sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==
1685 |
1686 | lightningcss-linux-arm-gnueabihf@1.19.0:
1687 | version "1.19.0"
1688 | resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz#0f921dc45f2e5c3aea70fab98844ac0e5f2f81be"
1689 | integrity sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==
1690 |
1691 | lightningcss-linux-arm64-gnu@1.19.0:
1692 | version "1.19.0"
1693 | resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz#027f9df9c7f4ffa127c37a71726245a5794d7ba2"
1694 | integrity sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==
1695 |
1696 | lightningcss-linux-arm64-musl@1.19.0:
1697 | version "1.19.0"
1698 | resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz#85ea987da868524eac6db94f8e1eaa23d0b688a3"
1699 | integrity sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==
1700 |
1701 | lightningcss-linux-x64-gnu@1.19.0:
1702 | version "1.19.0"
1703 | resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz#02bec89579ab4153dccc0def755d1fd9e3ee7f3c"
1704 | integrity sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==
1705 |
1706 | lightningcss-linux-x64-musl@1.19.0:
1707 | version "1.19.0"
1708 | resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz#e36a5df8193ae961d22974635e4c100a1823bb8c"
1709 | integrity sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==
1710 |
1711 | lightningcss-win32-x64-msvc@1.19.0:
1712 | version "1.19.0"
1713 | resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz#0854dbd153035eca1396e2227c708ad43655a61c"
1714 | integrity sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==
1715 |
1716 | lightningcss@^1.16.1:
1717 | version "1.19.0"
1718 | resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.19.0.tgz#fbbad0975de66252e38d96b5bdd2a62f2dd0ffbf"
1719 | integrity sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==
1720 | dependencies:
1721 | detect-libc "^1.0.3"
1722 | optionalDependencies:
1723 | lightningcss-darwin-arm64 "1.19.0"
1724 | lightningcss-darwin-x64 "1.19.0"
1725 | lightningcss-linux-arm-gnueabihf "1.19.0"
1726 | lightningcss-linux-arm64-gnu "1.19.0"
1727 | lightningcss-linux-arm64-musl "1.19.0"
1728 | lightningcss-linux-x64-gnu "1.19.0"
1729 | lightningcss-linux-x64-musl "1.19.0"
1730 | lightningcss-win32-x64-msvc "1.19.0"
1731 |
1732 | lines-and-columns@^1.1.6:
1733 | version "1.2.4"
1734 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
1735 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
1736 |
1737 | lmdb@2.5.2:
1738 | version "2.5.2"
1739 | resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1"
1740 | integrity sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==
1741 | dependencies:
1742 | msgpackr "^1.5.4"
1743 | node-addon-api "^4.3.0"
1744 | node-gyp-build-optional-packages "5.0.3"
1745 | ordered-binary "^1.2.4"
1746 | weak-lru-cache "^1.2.2"
1747 | optionalDependencies:
1748 | "@lmdb/lmdb-darwin-arm64" "2.5.2"
1749 | "@lmdb/lmdb-darwin-x64" "2.5.2"
1750 | "@lmdb/lmdb-linux-arm" "2.5.2"
1751 | "@lmdb/lmdb-linux-arm64" "2.5.2"
1752 | "@lmdb/lmdb-linux-x64" "2.5.2"
1753 | "@lmdb/lmdb-win32-x64" "2.5.2"
1754 |
1755 | locate-path@^6.0.0:
1756 | version "6.0.0"
1757 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1758 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1759 | dependencies:
1760 | p-locate "^5.0.0"
1761 |
1762 | lodash.merge@^4.6.2:
1763 | version "4.6.2"
1764 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
1765 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1766 |
1767 | lodash.throttle@^4.1.1:
1768 | version "4.1.1"
1769 | resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
1770 | integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
1771 |
1772 | lru-cache@^6.0.0:
1773 | version "6.0.0"
1774 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1775 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1776 | dependencies:
1777 | yallist "^4.0.0"
1778 |
1779 | mdn-data@2.0.14:
1780 | version "2.0.14"
1781 | resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
1782 | integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
1783 |
1784 | merge2@^1.3.0, merge2@^1.4.1:
1785 | version "1.4.1"
1786 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
1787 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1788 |
1789 | micromatch@^4.0.4, micromatch@^4.0.5:
1790 | version "4.0.5"
1791 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
1792 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
1793 | dependencies:
1794 | braces "^3.0.2"
1795 | picomatch "^2.3.1"
1796 |
1797 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
1798 | version "3.1.2"
1799 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1800 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1801 | dependencies:
1802 | brace-expansion "^1.1.7"
1803 |
1804 | ms@2.1.2:
1805 | version "2.1.2"
1806 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1807 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1808 |
1809 | msgpackr-extract@^3.0.1:
1810 | version "3.0.2"
1811 | resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d"
1812 | integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==
1813 | dependencies:
1814 | node-gyp-build-optional-packages "5.0.7"
1815 | optionalDependencies:
1816 | "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2"
1817 | "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2"
1818 | "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2"
1819 | "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2"
1820 | "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2"
1821 | "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2"
1822 |
1823 | msgpackr@^1.5.4:
1824 | version "1.8.4"
1825 | resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.8.4.tgz#5d6b10eb4937f324381a382a95aef6ebd18fcc1f"
1826 | integrity sha512-BE3hD3PqV7jsNaV022uq0jMW+ZVc32wSYyQmwAoJUc+vPtCeyro2MOtAW61Fd9ZKNySM6y913E9fBY0mG+hKXg==
1827 | optionalDependencies:
1828 | msgpackr-extract "^3.0.1"
1829 |
1830 | natural-compare-lite@^1.4.0:
1831 | version "1.4.0"
1832 | resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
1833 | integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
1834 |
1835 | natural-compare@^1.4.0:
1836 | version "1.4.0"
1837 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1838 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
1839 |
1840 | node-addon-api@^3.2.1:
1841 | version "3.2.1"
1842 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
1843 | integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
1844 |
1845 | node-addon-api@^4.3.0:
1846 | version "4.3.0"
1847 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
1848 | integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
1849 |
1850 | node-gyp-build-optional-packages@5.0.3:
1851 | version "5.0.3"
1852 | resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17"
1853 | integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==
1854 |
1855 | node-gyp-build-optional-packages@5.0.7:
1856 | version "5.0.7"
1857 | resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3"
1858 | integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==
1859 |
1860 | node-gyp-build@^4.3.0:
1861 | version "4.6.0"
1862 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
1863 | integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
1864 |
1865 | node-releases@^2.0.8:
1866 | version "2.0.10"
1867 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
1868 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
1869 |
1870 | nth-check@^2.0.1:
1871 | version "2.1.1"
1872 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
1873 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
1874 | dependencies:
1875 | boolbase "^1.0.0"
1876 |
1877 | nullthrows@^1.1.1:
1878 | version "1.1.1"
1879 | resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1"
1880 | integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==
1881 |
1882 | once@^1.3.0:
1883 | version "1.4.0"
1884 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1885 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1886 | dependencies:
1887 | wrappy "1"
1888 |
1889 | optionator@^0.9.1:
1890 | version "0.9.1"
1891 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
1892 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
1893 | dependencies:
1894 | deep-is "^0.1.3"
1895 | fast-levenshtein "^2.0.6"
1896 | levn "^0.4.1"
1897 | prelude-ls "^1.2.1"
1898 | type-check "^0.4.0"
1899 | word-wrap "^1.2.3"
1900 |
1901 | ordered-binary@^1.2.4:
1902 | version "1.4.0"
1903 | resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389"
1904 | integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==
1905 |
1906 | p-limit@^3.0.2:
1907 | version "3.1.0"
1908 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1909 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1910 | dependencies:
1911 | yocto-queue "^0.1.0"
1912 |
1913 | p-locate@^5.0.0:
1914 | version "5.0.0"
1915 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1916 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1917 | dependencies:
1918 | p-limit "^3.0.2"
1919 |
1920 | parcel@^2.8.3:
1921 | version "2.8.3"
1922 | resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.8.3.tgz#1ff71d7317274fd367379bc7310a52c6b75d30c2"
1923 | integrity sha512-5rMBpbNE72g6jZvkdR5gS2nyhwIXaJy8i65osOqs/+5b7zgf3eMKgjSsDrv6bhz3gzifsba6MBJiZdBckl+vnA==
1924 | dependencies:
1925 | "@parcel/config-default" "2.8.3"
1926 | "@parcel/core" "2.8.3"
1927 | "@parcel/diagnostic" "2.8.3"
1928 | "@parcel/events" "2.8.3"
1929 | "@parcel/fs" "2.8.3"
1930 | "@parcel/logger" "2.8.3"
1931 | "@parcel/package-manager" "2.8.3"
1932 | "@parcel/reporter-cli" "2.8.3"
1933 | "@parcel/reporter-dev-server" "2.8.3"
1934 | "@parcel/utils" "2.8.3"
1935 | chalk "^4.1.0"
1936 | commander "^7.0.0"
1937 | get-port "^4.2.0"
1938 | v8-compile-cache "^2.0.0"
1939 |
1940 | parent-module@^1.0.0:
1941 | version "1.0.1"
1942 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1943 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1944 | dependencies:
1945 | callsites "^3.0.0"
1946 |
1947 | parse-json@^5.0.0:
1948 | version "5.2.0"
1949 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
1950 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
1951 | dependencies:
1952 | "@babel/code-frame" "^7.0.0"
1953 | error-ex "^1.3.1"
1954 | json-parse-even-better-errors "^2.3.0"
1955 | lines-and-columns "^1.1.6"
1956 |
1957 | path-exists@^4.0.0:
1958 | version "4.0.0"
1959 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1960 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1961 |
1962 | path-is-absolute@^1.0.0:
1963 | version "1.0.1"
1964 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1965 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1966 |
1967 | path-key@^3.1.0:
1968 | version "3.1.1"
1969 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1970 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1971 |
1972 | path-type@^4.0.0:
1973 | version "4.0.0"
1974 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
1975 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1976 |
1977 | picocolors@^1.0.0:
1978 | version "1.0.0"
1979 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1980 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1981 |
1982 | picomatch@^2.3.1:
1983 | version "2.3.1"
1984 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1985 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1986 |
1987 | popmotion@^8.7.6:
1988 | version "8.7.6"
1989 | resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-8.7.6.tgz#0f6aa461bdcbcdbf24cb70afb054e91cb39eccb3"
1990 | integrity sha512-gzU0mRAik8FIEOP4Nk5yqYptJIvHLoq/IRU+rANmKjDZ7tynAivYQ9cIJAxVaoS9h0zfXvN0cFBAg93ncmHHkA==
1991 | dependencies:
1992 | "@popmotion/easing" "^1.0.1"
1993 | "@popmotion/popcorn" "^0.4.4"
1994 | framesync "^4.0.0"
1995 | hey-listen "^1.0.5"
1996 | style-value-types "^3.1.7"
1997 | stylefire "^7.0.1"
1998 | tslib "^1.10.0"
1999 |
2000 | postcss-value-parser@^4.2.0:
2001 | version "4.2.0"
2002 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
2003 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
2004 |
2005 | posthtml-parser@^0.10.1:
2006 | version "0.10.2"
2007 | resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573"
2008 | integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==
2009 | dependencies:
2010 | htmlparser2 "^7.1.1"
2011 |
2012 | posthtml-parser@^0.11.0:
2013 | version "0.11.0"
2014 | resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a"
2015 | integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==
2016 | dependencies:
2017 | htmlparser2 "^7.1.1"
2018 |
2019 | posthtml-render@^3.0.0:
2020 | version "3.0.0"
2021 | resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205"
2022 | integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==
2023 | dependencies:
2024 | is-json "^2.0.1"
2025 |
2026 | posthtml@^0.16.4, posthtml@^0.16.5:
2027 | version "0.16.6"
2028 | resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59"
2029 | integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==
2030 | dependencies:
2031 | posthtml-parser "^0.11.0"
2032 | posthtml-render "^3.0.0"
2033 |
2034 | prelude-ls@^1.2.1:
2035 | version "1.2.1"
2036 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
2037 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
2038 |
2039 | punycode@^2.1.0:
2040 | version "2.3.0"
2041 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
2042 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
2043 |
2044 | queue-microtask@^1.2.2:
2045 | version "1.2.3"
2046 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
2047 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
2048 |
2049 | react-error-overlay@6.0.9:
2050 | version "6.0.9"
2051 | resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
2052 | integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
2053 |
2054 | react-refresh@^0.9.0:
2055 | version "0.9.0"
2056 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf"
2057 | integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==
2058 |
2059 | regenerator-runtime@^0.13.7:
2060 | version "0.13.11"
2061 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
2062 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
2063 |
2064 | regexpp@^3.2.0:
2065 | version "3.2.0"
2066 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
2067 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
2068 |
2069 | resolve-from@^4.0.0:
2070 | version "4.0.0"
2071 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
2072 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
2073 |
2074 | reusify@^1.0.4:
2075 | version "1.0.4"
2076 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
2077 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
2078 |
2079 | rimraf@^3.0.2:
2080 | version "3.0.2"
2081 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
2082 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
2083 | dependencies:
2084 | glob "^7.1.3"
2085 |
2086 | run-parallel@^1.1.9:
2087 | version "1.2.0"
2088 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
2089 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
2090 | dependencies:
2091 | queue-microtask "^1.2.2"
2092 |
2093 | safe-buffer@^5.0.1:
2094 | version "5.2.1"
2095 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2096 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2097 |
2098 | semver@^5.7.0, semver@^5.7.1:
2099 | version "5.7.1"
2100 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
2101 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
2102 |
2103 | semver@^7.3.7:
2104 | version "7.3.8"
2105 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
2106 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
2107 | dependencies:
2108 | lru-cache "^6.0.0"
2109 |
2110 | shebang-command@^2.0.0:
2111 | version "2.0.0"
2112 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2113 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2114 | dependencies:
2115 | shebang-regex "^3.0.0"
2116 |
2117 | shebang-regex@^3.0.0:
2118 | version "3.0.0"
2119 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2120 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2121 |
2122 | slash@^3.0.0:
2123 | version "3.0.0"
2124 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
2125 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
2126 |
2127 | source-map-support@~0.5.20:
2128 | version "0.5.21"
2129 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
2130 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
2131 | dependencies:
2132 | buffer-from "^1.0.0"
2133 | source-map "^0.6.0"
2134 |
2135 | source-map@^0.6.0, source-map@^0.6.1:
2136 | version "0.6.1"
2137 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2138 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2139 |
2140 | srcset@4:
2141 | version "4.0.0"
2142 | resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4"
2143 | integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
2144 |
2145 | stable@^0.1.8:
2146 | version "0.1.8"
2147 | resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
2148 | integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
2149 |
2150 | strip-ansi@^6.0.1:
2151 | version "6.0.1"
2152 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2153 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2154 | dependencies:
2155 | ansi-regex "^5.0.1"
2156 |
2157 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
2158 | version "3.1.1"
2159 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2160 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2161 |
2162 | style-value-types@^3.1.7:
2163 | version "3.2.0"
2164 | resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-3.2.0.tgz#eb89cab1340823fa7876f3e289d29d99c92111bb"
2165 | integrity sha512-ih0mGsrYYmVvdDi++/66O6BaQPRPRMQHoZevNNdMMcPlP/cH28Rnfsqf1UEba/Bwfuw9T8BmIMwbGdzsPwQKrQ==
2166 | dependencies:
2167 | hey-listen "^1.0.8"
2168 | tslib "^1.10.0"
2169 |
2170 | stylefire@^7.0.1:
2171 | version "7.0.3"
2172 | resolved "https://registry.yarnpkg.com/stylefire/-/stylefire-7.0.3.tgz#9120ecbb084111788e0ddaa04074799750f20d1d"
2173 | integrity sha512-Q0l7NSeFz/OkX+o6/7Zg3VZxSAZeQzQpYomWmIpOehFM/rJNMSLVX5fgg6Q48ut2ETNKwdhm97mPNU643EBCoQ==
2174 | dependencies:
2175 | "@popmotion/popcorn" "^0.4.4"
2176 | framesync "^4.0.0"
2177 | hey-listen "^1.0.8"
2178 | style-value-types "^3.1.7"
2179 | tslib "^1.10.0"
2180 |
2181 | supports-color@^5.3.0:
2182 | version "5.5.0"
2183 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2184 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2185 | dependencies:
2186 | has-flag "^3.0.0"
2187 |
2188 | supports-color@^7.1.0:
2189 | version "7.2.0"
2190 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2191 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2192 | dependencies:
2193 | has-flag "^4.0.0"
2194 |
2195 | svgo@^2.4.0:
2196 | version "2.8.0"
2197 | resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
2198 | integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
2199 | dependencies:
2200 | "@trysound/sax" "0.2.0"
2201 | commander "^7.2.0"
2202 | css-select "^4.1.3"
2203 | css-tree "^1.1.3"
2204 | csso "^4.2.0"
2205 | picocolors "^1.0.0"
2206 | stable "^0.1.8"
2207 |
2208 | term-size@^2.2.1:
2209 | version "2.2.1"
2210 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
2211 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
2212 |
2213 | terser@^5.2.0:
2214 | version "5.16.5"
2215 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a"
2216 | integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==
2217 | dependencies:
2218 | "@jridgewell/source-map" "^0.3.2"
2219 | acorn "^8.5.0"
2220 | commander "^2.20.0"
2221 | source-map-support "~0.5.20"
2222 |
2223 | text-table@^0.2.0:
2224 | version "0.2.0"
2225 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
2226 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
2227 |
2228 | timsort@^0.3.0:
2229 | version "0.3.0"
2230 | resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
2231 | integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
2232 |
2233 | to-regex-range@^5.0.1:
2234 | version "5.0.1"
2235 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2236 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2237 | dependencies:
2238 | is-number "^7.0.0"
2239 |
2240 | tslib@2.4.0:
2241 | version "2.4.0"
2242 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
2243 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
2244 |
2245 | tslib@^1.10.0, tslib@^1.8.1:
2246 | version "1.14.1"
2247 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
2248 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
2249 |
2250 | tslib@^2.4.0:
2251 | version "2.5.0"
2252 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
2253 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
2254 |
2255 | tsutils@^3.21.0:
2256 | version "3.21.0"
2257 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
2258 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
2259 | dependencies:
2260 | tslib "^1.8.1"
2261 |
2262 | type-check@^0.4.0, type-check@~0.4.0:
2263 | version "0.4.0"
2264 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
2265 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
2266 | dependencies:
2267 | prelude-ls "^1.2.1"
2268 |
2269 | type-fest@^0.20.2:
2270 | version "0.20.2"
2271 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
2272 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
2273 |
2274 | typescript@4.9.5:
2275 | version "4.9.5"
2276 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
2277 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
2278 |
2279 | update-browserslist-db@^1.0.10:
2280 | version "1.0.10"
2281 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
2282 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
2283 | dependencies:
2284 | escalade "^3.1.1"
2285 | picocolors "^1.0.0"
2286 |
2287 | uri-js@^4.2.2:
2288 | version "4.4.1"
2289 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2290 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2291 | dependencies:
2292 | punycode "^2.1.0"
2293 |
2294 | utility-types@^3.10.0:
2295 | version "3.10.0"
2296 | resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b"
2297 | integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
2298 |
2299 | v8-compile-cache@^2.0.0:
2300 | version "2.3.0"
2301 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
2302 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
2303 |
2304 | weak-lru-cache@^1.2.2:
2305 | version "1.2.2"
2306 | resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19"
2307 | integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==
2308 |
2309 | which@^2.0.1:
2310 | version "2.0.2"
2311 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2312 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2313 | dependencies:
2314 | isexe "^2.0.0"
2315 |
2316 | word-wrap@^1.2.3:
2317 | version "1.2.3"
2318 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
2319 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
2320 |
2321 | wrappy@1:
2322 | version "1.0.2"
2323 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2324 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
2325 |
2326 | xxhash-wasm@^0.4.2:
2327 | version "0.4.2"
2328 | resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79"
2329 | integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==
2330 |
2331 | yallist@^4.0.0:
2332 | version "4.0.0"
2333 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
2334 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
2335 |
2336 | yaml@^1.10.0:
2337 | version "1.10.2"
2338 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
2339 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
2340 |
2341 | yocto-queue@^0.1.0:
2342 | version "0.1.0"
2343 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2344 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2345 |
--------------------------------------------------------------------------------