@materialui-reactjs/admin 1.0.4

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.
Files changed (131) hide show
  1. package/README.md +453 -0
  2. package/dist/assets/css/SpinnerLoader.css +1 -0
  3. package/dist/assets/css/form.css +1 -0
  4. package/dist/assets/css/index.css +1 -0
  5. package/dist/assets/css/meta.css +1 -0
  6. package/dist/chunks/Common-C_ZhT4L6.js +217 -0
  7. package/dist/chunks/Env-DRXhvUcb.js +16 -0
  8. package/dist/chunks/HeaderUpdate-lrSYWsKp.js +474 -0
  9. package/dist/chunks/SortableItem-B4-Zsso3.js +31 -0
  10. package/dist/chunks/SpinnerLoader-h8RDIarB.js +21 -0
  11. package/dist/chunks/UDragFile-CAiSfTsp.js +92 -0
  12. package/dist/chunks/Validator-DjZz2bJs.js +203 -0
  13. package/dist/chunks/echarts-CRmndsxC.js +322 -0
  14. package/dist/chunks/form-C8gzkYMW.js +45843 -0
  15. package/dist/chunks/loader-BUiOnhOH.js +1 -0
  16. package/dist/chunks/meta-k8MmuQjS.js +758 -0
  17. package/dist/chunks/sidebar-Dj4Xr9du.js +84 -0
  18. package/dist/chunks/single-DyPwG6ZR.js +1082 -0
  19. package/dist/chunks/top-navbar-FBw88y_o.js +78 -0
  20. package/dist/components/echarts/BarChart.d.ts +11 -0
  21. package/dist/components/echarts/LineChart.d.ts +10 -0
  22. package/dist/components/echarts/MultiBarChart.d.ts +14 -0
  23. package/dist/components/echarts/MultiLineChart.d.ts +14 -0
  24. package/dist/components/echarts/PieChart.d.ts +12 -0
  25. package/dist/components/echarts/index.d.ts +5 -0
  26. package/dist/components/echarts/index.js +2 -0
  27. package/dist/components/form/AdvancedMultiSelect.d.ts +16 -0
  28. package/dist/components/form/AsxhUImages.d.ts +15 -0
  29. package/dist/components/form/BoxAddRow.d.ts +26 -0
  30. package/dist/components/form/CheckTreeBox.d.ts +18 -0
  31. package/dist/components/form/CusForm.d.ts +105 -0
  32. package/dist/components/form/DateInput.d.ts +14 -0
  33. package/dist/components/form/DateTimeInput.d.ts +11 -0
  34. package/dist/components/form/Editor.d.ts +12 -0
  35. package/dist/components/form/EfFile.d.ts +15 -0
  36. package/dist/components/form/EfImage.d.ts +15 -0
  37. package/dist/components/form/EfImages.d.ts +14 -0
  38. package/dist/components/form/PImage.d.ts +15 -0
  39. package/dist/components/form/SelectAddRowBox.d.ts +17 -0
  40. package/dist/components/form/SelectAddRowBoxAdvanced.d.ts +16 -0
  41. package/dist/components/form/SelectBox.d.ts +32 -0
  42. package/dist/components/form/UDragFile.d.ts +13 -0
  43. package/dist/components/form/UFile.d.ts +15 -0
  44. package/dist/components/form/UFiles.d.ts +15 -0
  45. package/dist/components/form/UImages.d.ts +15 -0
  46. package/dist/components/form/index.d.ts +19 -0
  47. package/dist/components/form/index.js +3 -0
  48. package/dist/components/loader/SpinnerLoader.d.ts +8 -0
  49. package/dist/components/loader/index.d.ts +1 -0
  50. package/dist/components/loader/index.js +3 -0
  51. package/dist/components/meta/BtnGroup.d.ts +8 -0
  52. package/dist/components/meta/CardTable.d.ts +37 -0
  53. package/dist/components/meta/CusTooltip.d.ts +7 -0
  54. package/dist/components/meta/ElfinderModal.d.ts +10 -0
  55. package/dist/components/meta/Error403.d.ts +8 -0
  56. package/dist/components/meta/Error404.d.ts +8 -0
  57. package/dist/components/meta/Head.d.ts +1 -0
  58. package/dist/components/meta/HeaderDetail.d.ts +9 -0
  59. package/dist/components/meta/HeaderIndex.d.ts +17 -0
  60. package/dist/components/meta/HeaderUpdate.d.ts +9 -0
  61. package/dist/components/meta/ModalForm.d.ts +18 -0
  62. package/dist/components/meta/Navtabs.d.ts +12 -0
  63. package/dist/components/meta/PDFEmbed.d.ts +11 -0
  64. package/dist/components/meta/Pagination.d.ts +7 -0
  65. package/dist/components/meta/Pdfviewer.d.ts +0 -0
  66. package/dist/components/meta/ScrollTable.d.ts +16 -0
  67. package/dist/components/meta/SearchBox.d.ts +9 -0
  68. package/dist/components/meta/SortableItem.d.ts +1 -0
  69. package/dist/components/meta/index.d.ts +17 -0
  70. package/dist/components/meta/index.js +4 -0
  71. package/dist/components/sidebar/Sidebar.d.ts +3 -0
  72. package/dist/components/sidebar/Sidebar.types.d.ts +25 -0
  73. package/dist/components/sidebar/Sidebar.utils.d.ts +2 -0
  74. package/dist/components/sidebar/SidebarItem.d.ts +10 -0
  75. package/dist/components/sidebar/index.d.ts +2 -0
  76. package/dist/components/sidebar/index.js +2 -0
  77. package/dist/components/single/Detail.d.ts +25 -0
  78. package/dist/components/single/Fields.d.ts +31 -0
  79. package/dist/components/single/Import.d.ts +24 -0
  80. package/dist/components/single/List.d.ts +44 -0
  81. package/dist/components/single/Update.d.ts +33 -0
  82. package/dist/components/single/UpdateDetail.d.ts +7 -0
  83. package/dist/components/single/UpdateTableDetail.d.ts +18 -0
  84. package/dist/components/single/index.d.ts +7 -0
  85. package/dist/components/single/index.js +2 -0
  86. package/dist/components/top-navbar/TopNavbar.d.ts +6 -0
  87. package/dist/components/top-navbar/index.d.ts +1 -0
  88. package/dist/components/top-navbar/index.js +2 -0
  89. package/dist/fontawesome/css/all.css +8 -0
  90. package/dist/fontawesome/css/all.min.css +1 -0
  91. package/dist/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  92. package/dist/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  93. package/dist/fontawesome/webfonts/fa-duotone-900.ttf +0 -0
  94. package/dist/fontawesome/webfonts/fa-duotone-900.woff2 +0 -0
  95. package/dist/fontawesome/webfonts/fa-light-300.ttf +0 -0
  96. package/dist/fontawesome/webfonts/fa-light-300.woff2 +0 -0
  97. package/dist/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  98. package/dist/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  99. package/dist/fontawesome/webfonts/fa-sharp-light-300.ttf +0 -0
  100. package/dist/fontawesome/webfonts/fa-sharp-light-300.woff2 +0 -0
  101. package/dist/fontawesome/webfonts/fa-sharp-regular-400.ttf +0 -0
  102. package/dist/fontawesome/webfonts/fa-sharp-regular-400.woff2 +0 -0
  103. package/dist/fontawesome/webfonts/fa-sharp-solid-900.ttf +0 -0
  104. package/dist/fontawesome/webfonts/fa-sharp-solid-900.woff2 +0 -0
  105. package/dist/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  106. package/dist/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  107. package/dist/fontawesome/webfonts/fa-thin-100.ttf +0 -0
  108. package/dist/fontawesome/webfonts/fa-thin-100.woff2 +0 -0
  109. package/dist/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
  110. package/dist/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
  111. package/dist/hook/detail.d.ts +14 -0
  112. package/dist/hook/detail.js +12 -0
  113. package/dist/hook/fields.d.ts +14 -0
  114. package/dist/hook/fields.js +12 -0
  115. package/dist/hook/import.d.ts +15 -0
  116. package/dist/hook/import.js +0 -0
  117. package/dist/hook/index.d.ts +61 -0
  118. package/dist/hook/index.js +41 -0
  119. package/dist/hook/update.d.ts +24 -0
  120. package/dist/hook/update.js +29 -0
  121. package/dist/index.d.ts +7 -0
  122. package/dist/index.js +11 -0
  123. package/dist/utils/Common.d.ts +136 -0
  124. package/dist/utils/CusRoute.d.ts +7 -0
  125. package/dist/utils/Env.d.ts +2 -0
  126. package/dist/utils/Group.d.ts +1 -0
  127. package/dist/utils/Validator.d.ts +53 -0
  128. package/dist/utils/index.d.ts +5 -0
  129. package/dist/utils/index.js +671 -0
  130. package/package.json +171 -0
  131. package/scripts/postinstall.cjs +80 -0
package/README.md ADDED
@@ -0,0 +1,453 @@
1
+ # @materialui-reactjs/admin
2
+
3
+ A React component and utility library for building modern admin applications, including admin dashboards, CRUD interfaces, data tables, forms, charts, navigation, and reusable layouts.
4
+
5
+ The package provides multiple subpath exports so applications can import only the feature groups they need. It is designed to provide a consistent and reusable architecture for React-based admin systems.
6
+
7
+ ## Features
8
+
9
+ * Reusable admin dashboard components
10
+ * CRUD components for list, detail, update, and import workflows
11
+ * Form components for common and advanced input scenarios
12
+ * File and image upload components
13
+ * Data tables, pagination, search, tabs, and modal components
14
+ * Sidebar and top navigation components
15
+ * ECharts-based chart components
16
+ * Loading and spinner components
17
+ * API and data-handling helpers
18
+ * Environment configuration utilities
19
+ * Routing and validation helpers
20
+ * Drag-and-drop and sortable components
21
+ * CKEditor integration
22
+ * React Select integration
23
+ * MUI Date and Time Picker integration
24
+ * Redux Toolkit integration
25
+ * Bootstrap and MUI based UI components
26
+
27
+ ## Package Structure
28
+
29
+ The package exposes different feature groups through subpath exports:
30
+
31
+ | Import Path | Description |
32
+ | -------------------------------------- | -------------------------------------------------------------------------- |
33
+ | `@materialui-reactjs/admin` | Main exports for commonly used components |
34
+ | `@materialui-reactjs/admin/form` | Form fields, form builders, and upload components |
35
+ | `@materialui-reactjs/admin/hook` | Hooks and helpers for list, detail, update, and import workflows |
36
+ | `@materialui-reactjs/admin/utils` | API, routing, environment, validation, and utility helpers |
37
+ | `@materialui-reactjs/admin/meta` | Tables, tabs, pagination, modals, headers, search, and other UI components |
38
+ | `@materialui-reactjs/admin/sidebar` | Sidebar navigation |
39
+ | `@materialui-reactjs/admin/single` | Single-resource CRUD components |
40
+ | `@materialui-reactjs/admin/top-navbar` | Top navigation |
41
+ | `@materialui-reactjs/admin/echarts` | ECharts components |
42
+ | `@materialui-reactjs/admin/loader` | Loading and spinner components |
43
+
44
+ ## Main Components
45
+
46
+ ### Form Components
47
+
48
+ The `form` package provides reusable components for building complex admin forms.
49
+
50
+ * `AdvancedMultiSelect`
51
+ * `AsxhUImages`
52
+ * `BoxAddRow`
53
+ * `CheckTreeBox`
54
+ * `CusForm`
55
+ * `DateInput`
56
+ * `DateTimeInput`
57
+ * `Editor`
58
+ * `EfFile`
59
+ * `EfImage`
60
+ * `EfImages`
61
+ * `PImage`
62
+ * `SelectAddRowBox`
63
+ * `SelectAddRowBoxAdvanced`
64
+ * `SelectBox`
65
+ * `UDragFile`
66
+ * `UFile`
67
+ * `UFiles`
68
+ * `UImages`
69
+
70
+ These components support:
71
+
72
+ * Standard form inputs
73
+ * Select and multi-select fields
74
+ * Tree-based selection
75
+ * Date and time inputs
76
+ * Rich text editing
77
+ * File uploads
78
+ * Image uploads
79
+ * Dynamic form rows
80
+ * Drag-and-drop file handling
81
+
82
+ ### Meta UI Components
83
+
84
+ The `meta` package contains reusable UI components for admin pages.
85
+
86
+ * `BtnGroup`
87
+ * `CardTable`
88
+ * `CusTooltip`
89
+ * `ElfinderModal`
90
+ * `Error403`
91
+ * `Error404`
92
+ * `Head`
93
+ * `HeaderDetail`
94
+ * `HeaderIndex`
95
+ * `HeaderUpdate`
96
+ * `ModalForm`
97
+ * `Navtabs`
98
+ * `Pagination`
99
+ * `PDFEmbed`
100
+ * `ScrollTable`
101
+ * `SearchBox`
102
+ * `SortableItem`
103
+
104
+ These components can be used to build:
105
+
106
+ * Index pages
107
+ * Detail pages
108
+ * Update pages
109
+ * Data tables
110
+ * Search interfaces
111
+ * Pagination
112
+ * Navigation tabs
113
+ * Modal forms
114
+ * Page headers
115
+ * Error pages
116
+ * Scrollable tables
117
+
118
+ ### Single-Page CRUD Components
119
+
120
+ The `single` package provides reusable components for building CRUD pages around a single resource.
121
+
122
+ * `List`
123
+ * `Detail`
124
+ * `Update`
125
+ * `UpdateDetail`
126
+ * `UpdateTableDetail`
127
+ * `Import`
128
+ * `Fields`
129
+
130
+ A typical resource can be structured as:
131
+
132
+ ```text
133
+ Resource
134
+ ├── List
135
+ ├── Detail
136
+ ├── Update
137
+ └── Import
138
+ ```
139
+
140
+ This structure is useful for applications that use a consistent CRUD architecture across multiple resources.
141
+
142
+ ### Layout Components
143
+
144
+ #### Sidebar
145
+
146
+ The sidebar package provides navigation components for admin dashboards.
147
+
148
+ ```ts
149
+ import { Sidebar } from "@materialui-reactjs/admin/sidebar";
150
+ ```
151
+
152
+ It also exports:
153
+
154
+ * `MenuItem`
155
+ * `SidebarProps`
156
+
157
+ #### Top Navbar
158
+
159
+ The top navigation component provides the main navigation header for an admin application.
160
+
161
+ ```ts
162
+ import { TopNavbar } from "@materialui-reactjs/admin/top-navbar";
163
+ ```
164
+
165
+ ### ECharts Components
166
+
167
+ The `echarts` package provides reusable chart components based on ECharts.
168
+
169
+ * `BarChart`
170
+ * `LineChart`
171
+ * `MultiBarChart`
172
+ * `MultiLineChart`
173
+ * `PieChart`
174
+
175
+ Example:
176
+
177
+ ```tsx
178
+ import { BarChart } from "@materialui-reactjs/admin/echarts";
179
+
180
+ export default function DashboardChart() {
181
+ return <BarChart />;
182
+ }
183
+ ```
184
+
185
+ ### Loader
186
+
187
+ The `loader` package provides loading indicators.
188
+
189
+ * `SpinnerLoader`
190
+
191
+ Example:
192
+
193
+ ```tsx
194
+ import { SpinnerLoader } from "@materialui-reactjs/admin/loader";
195
+
196
+ export default function Loading() {
197
+ return <SpinnerLoader />;
198
+ }
199
+ ```
200
+
201
+ ## Hooks
202
+
203
+ The `hook` package provides reusable helpers for common admin data workflows.
204
+
205
+ Available helpers include:
206
+
207
+ * `fetchHookData`
208
+ * `handleHookClickPage`
209
+ * `handleHookSeachForm`
210
+ * `handleHookChange`
211
+ * `convertQueryToSort`
212
+ * `convertSortToQuery`
213
+
214
+ These helpers can be used to standardize:
215
+
216
+ * API data loading
217
+ * Pagination
218
+ * Search
219
+ * Sorting
220
+ * Form changes
221
+ * List/detail/update workflows
222
+
223
+ Example:
224
+
225
+ ```ts
226
+ import {
227
+ fetchHookData,
228
+ handleHookClickPage,
229
+ handleHookChange,
230
+ } from "@materialui-reactjs/admin/hook";
231
+ ```
232
+
233
+ ## Utilities
234
+
235
+ The `utils` package provides common utilities for admin applications.
236
+
237
+ Available utilities include:
238
+
239
+ * `callFetchApi`
240
+ * `callFetchApiToken`
241
+ * `createQueryString`
242
+ * `loadEnv`
243
+ * `getEnv`
244
+ * `CusRoute`
245
+
246
+ Example:
247
+
248
+ ```ts
249
+ import {
250
+ callFetchApi,
251
+ callFetchApiToken,
252
+ createQueryString,
253
+ } from "@materialui-reactjs/admin/utils";
254
+ ```
255
+
256
+ ## Installation
257
+
258
+ Install the package using npm:
259
+
260
+ ```bash
261
+ npm install @materialui-reactjs/admin
262
+ ```
263
+
264
+ Or using yarn:
265
+
266
+ ```bash
267
+ yarn add @materialui-reactjs/admin
268
+ ```
269
+
270
+ Or using pnpm:
271
+
272
+ ```bash
273
+ pnpm add @materialui-reactjs/admin
274
+ ```
275
+
276
+ ## Basic Usage
277
+
278
+ Components can be imported directly from their corresponding subpath.
279
+
280
+ ```tsx
281
+ import { Sidebar } from "@materialui-reactjs/admin/sidebar";
282
+ import { TopNavbar } from "@materialui-reactjs/admin/top-navbar";
283
+ import { CardTable } from "@materialui-reactjs/admin/meta";
284
+ import { CusForm } from "@materialui-reactjs/admin/form";
285
+
286
+ export default function AdminLayout() {
287
+ return (
288
+ <>
289
+ <TopNavbar />
290
+ <Sidebar />
291
+ <CardTable />
292
+ <CusForm />
293
+ </>
294
+ );
295
+ }
296
+ ```
297
+
298
+ ## Import by Feature Group
299
+
300
+ ### Form
301
+
302
+ ```tsx
303
+ import {
304
+ CusForm,
305
+ DateInput,
306
+ DateTimeInput,
307
+ SelectBox,
308
+ } from "@materialui-reactjs/admin/form";
309
+ ```
310
+
311
+ ### Meta
312
+
313
+ ```tsx
314
+ import {
315
+ CardTable,
316
+ Pagination,
317
+ SearchBox,
318
+ ModalForm,
319
+ } from "@materialui-reactjs/admin/meta";
320
+ ```
321
+
322
+ ### Sidebar
323
+
324
+ ```tsx
325
+ import { Sidebar } from "@materialui-reactjs/admin/sidebar";
326
+ ```
327
+
328
+ ### Top Navbar
329
+
330
+ ```tsx
331
+ import { TopNavbar } from "@materialui-reactjs/admin/top-navbar";
332
+ ```
333
+
334
+ ### ECharts
335
+
336
+ ```tsx
337
+ import {
338
+ BarChart,
339
+ LineChart,
340
+ PieChart,
341
+ } from "@materialui-reactjs/admin/echarts";
342
+ ```
343
+
344
+ ### Loader
345
+
346
+ ```tsx
347
+ import { SpinnerLoader } from "@materialui-reactjs/admin/loader";
348
+ ```
349
+
350
+ ### Utilities
351
+
352
+ ```tsx
353
+ import {
354
+ callFetchApi,
355
+ callFetchApiToken,
356
+ loadEnv,
357
+ getEnv,
358
+ } from "@materialui-reactjs/admin/utils";
359
+ ```
360
+
361
+ ## Styles and CSS
362
+
363
+ The package provides CSS files for its components.
364
+
365
+ Import the main stylesheet:
366
+
367
+ ```ts
368
+ import "@materialui-reactjs/admin/style.css";
369
+ ```
370
+
371
+ Some component groups may also import their own internal CSS automatically.
372
+
373
+ Make sure your application's build configuration supports CSS imports from npm packages.
374
+
375
+ ## Dependencies
376
+
377
+ This package is built with and integrates with the following libraries.
378
+
379
+ ### UI and Styling
380
+
381
+ | Package | Purpose |
382
+ | --------------------- | --------------------------------------------- |
383
+ | `@mui/material` | Material UI components and UI system |
384
+ | `@mui/x-date-pickers` | Date and time picker components for MUI |
385
+ | `@emotion/react` | Emotion styling engine |
386
+ | `@emotion/styled` | Styled components powered by Emotion |
387
+ | `bootstrap` | CSS framework and responsive layout utilities |
388
+
389
+ ### React and State Management
390
+
391
+ | Package | Purpose |
392
+ | -------------------- | ------------------------------- |
393
+ | `react` | Core React library |
394
+ | `react-dom` | React DOM rendering |
395
+ | `@reduxjs/toolkit` | Redux state management |
396
+ | `react-redux` | React bindings for Redux |
397
+ | `react-router-dom` | Client-side routing |
398
+ | `react-helmet-async` | Managing document head metadata |
399
+
400
+ ### Form and Editor
401
+
402
+ | Package | Purpose |
403
+ | --------------------------- | ---------------------------------- |
404
+ | `@ckeditor/ckeditor5-react` | CKEditor React integration |
405
+ | `react-select` | Select and multi-select components |
406
+ | `date-fns` | Date manipulation and formatting |
407
+ | `decimal.js` | Precise decimal calculations |
408
+
409
+ ### Drag and Drop / Sorting
410
+
411
+ | Package | Purpose |
412
+ | -------------------- | ------------------------------------ |
413
+ | `@dnd-kit/sortable` | Sortable drag-and-drop functionality |
414
+ | `@dnd-kit/utilities` | Utilities for dnd-kit |
415
+ | `@hello-pangea/dnd` | Drag-and-drop components for React |
416
+ | `react-sortablejs` | React integration for SortableJS |
417
+ | `sortablejs` | Drag-and-drop sorting engine |
418
+
419
+ ### Charts
420
+
421
+ | Package | Purpose |
422
+ | ------------------- | -------------------------------------- |
423
+ | `echarts` | Charting and data visualization engine |
424
+ | `echarts-for-react` | React wrapper for ECharts |
425
+
426
+ ### Utilities and Notifications
427
+
428
+ | Package | Purpose |
429
+ | --------------------------- | ---------------------------------------------------- |
430
+ | `jquery` | DOM manipulation and third-party library integration |
431
+ | `sweetalert2` | Alerts, confirmations, and notifications |
432
+ | `sweetalert2-react-content` | React integration for SweetAlert2 |
433
+
434
+ ## Requirements
435
+
436
+ The package is designed for modern React applications.
437
+
438
+ Current core versions include:
439
+
440
+ * React `19.2.x`
441
+ * React DOM `19.2.x`
442
+ * React Router `7.x`
443
+ * MUI `9.x`
444
+ * MUI X Date Pickers `9.x`
445
+ * Redux Toolkit `2.x`
446
+ * Bootstrap `5.x`
447
+ * ECharts `6.x`
448
+
449
+ For the exact versions used by a particular release, check the package's `package.json`.
450
+
451
+ ## License
452
+
453
+ MIT
@@ -0,0 +1 @@
1
+ .boxSpinner{z-index:10000;background-color:#fff;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;border-radius:.5rem!important}body>.boxSpinner{z-index:10000;height:100vh;position:fixed}.spinner{text-align:center;width:200px;height:100px}.spinner>div{background-color:var(--bs-primary);width:15px;height:100%;margin:0 1px;animation:1.2s ease-in-out infinite stretchDelay;display:inline-block}.spinner-sm .spinner{width:100px;height:50px}.spinner-sm .spinner>div{width:8px;height:100%}.spinner-xs .spinner{width:75px;height:37.5px}.spinner-xs .spinner>div{width:6px;height:100%}.spinner .rect2{animation-delay:-1.1s}.spinner .rect3{animation-delay:-1s}.spinner .rect4{animation-delay:-.9s}.spinner .rect5{animation-delay:-.8s}.spinner .rect6{animation-delay:-.7s}.spinner .rect7{animation-delay:-.6s}@-webkit-keyframes stretchDelay{0%,40%,to{-webkit-transform:scaleY(.4)}20%{-webkit-transform:scaleY(1)}}@keyframes stretchDelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}