robot-toast 2.1.9 → 2.2.0
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.
- package/LICENSE +21 -0
- package/README.md +31 -6
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +38 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +38 -37
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pratham2703005
|
|
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
|
@@ -79,12 +79,12 @@ toast.error("Something went wrong");
|
|
|
79
79
|
|
|
80
80
|
## Features at a Glance
|
|
81
81
|
|
|
82
|
-
| Robots | Layout | Styling
|
|
83
|
-
| ----------------------- | ------------------ |
|
|
84
|
-
| 16 built-in variants | 6 position options | 3 themes
|
|
85
|
-
| Tree-shakeable imports | Auto-queuing | Custom inline styles
|
|
86
|
-
| Custom images (SVG/PNG) | Progress bar |
|
|
87
|
-
| Custom image paths | Multi-toast queue | CSS overrides
|
|
82
|
+
| Robots | Layout | Styling | Behavior |
|
|
83
|
+
| ----------------------- | ------------------ | ------------------------------ | --------------------- |
|
|
84
|
+
| 16 built-in variants | 6 position options | 3 themes | Fully draggable |
|
|
85
|
+
| Tree-shakeable imports | Auto-queuing | Custom inline styles | Typewriter effect |
|
|
86
|
+
| Custom images (SVG/PNG) | Progress bar | Tailwind-friendly `className` | Promise helpers |
|
|
87
|
+
| Custom image paths | Multi-toast queue | CSS overrides | React hook included |
|
|
88
88
|
|
|
89
89
|
---
|
|
90
90
|
|
|
@@ -118,7 +118,9 @@ toast({
|
|
|
118
118
|
// Robot & Styling
|
|
119
119
|
robotVariant: wave | base | success | error | '...' | 'default' | '/path.svg',
|
|
120
120
|
nearScreen: true,
|
|
121
|
+
className: 'bg-emerald-600 text-white rounded-2xl shadow-lg',
|
|
121
122
|
style: { background: '...', color: '...' },
|
|
123
|
+
className: 'bg-emerald-600 text-white',
|
|
122
124
|
|
|
123
125
|
// Timing & Behavior
|
|
124
126
|
autoClose: 5000 | false,
|
|
@@ -253,6 +255,29 @@ toast({
|
|
|
253
255
|
});
|
|
254
256
|
```
|
|
255
257
|
|
|
258
|
+
### Tailwind and `className`
|
|
259
|
+
|
|
260
|
+
`className` is applied to the toast message container, so you can use your own
|
|
261
|
+
utility classes for surface styling without replacing the toast layout,
|
|
262
|
+
animation, buttons, or progress behavior.
|
|
263
|
+
|
|
264
|
+
When your `className` or inline `style` sets surface properties such as
|
|
265
|
+
`background` or `color`, those user-defined values win over the built-in theme
|
|
266
|
+
surface colors. That makes utilities like `bg-*`, `text-*`, `rounded-*`, and
|
|
267
|
+
`shadow-*` work predictably.
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
toast({
|
|
271
|
+
message: "Build finished",
|
|
272
|
+
theme: "dark",
|
|
273
|
+
className:
|
|
274
|
+
"bg-slate-950 text-slate-50 rounded-2xl border border-slate-700 shadow-2xl",
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Use `className` when your app stylesheet or Tailwind tokens should drive the
|
|
279
|
+
toast appearance, and use `style` when you need runtime-calculated values.
|
|
280
|
+
|
|
256
281
|
### Accessibility
|
|
257
282
|
|
|
258
283
|
- `error` / `warning` toasts: `role="alert"` + `aria-live="assertive"`
|
package/dist/index.d.mts
CHANGED
|
@@ -75,6 +75,11 @@ interface RobotToastOptions {
|
|
|
75
75
|
* This takes precedence over className for conflicting properties.
|
|
76
76
|
*/
|
|
77
77
|
style?: Record<string, string | number>;
|
|
78
|
+
/**
|
|
79
|
+
* Optional CSS class(es) applied to the toast message container.
|
|
80
|
+
* Useful for Tailwind/utility class styling.
|
|
81
|
+
*/
|
|
82
|
+
className?: string;
|
|
78
83
|
/** Typing speed in ms per character. 0 = instant. Default: 30 */
|
|
79
84
|
typeSpeed?: number;
|
|
80
85
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -75,6 +75,11 @@ interface RobotToastOptions {
|
|
|
75
75
|
* This takes precedence over className for conflicting properties.
|
|
76
76
|
*/
|
|
77
77
|
style?: Record<string, string | number>;
|
|
78
|
+
/**
|
|
79
|
+
* Optional CSS class(es) applied to the toast message container.
|
|
80
|
+
* Useful for Tailwind/utility class styling.
|
|
81
|
+
*/
|
|
82
|
+
className?: string;
|
|
78
83
|
/** Typing speed in ms per character. 0 = instant. Default: 30 */
|
|
79
84
|
typeSpeed?: number;
|
|
80
85
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var u=class u{constructor(){typeof document>"u"||u.injected||(u.injected=true,this.injectCSS());}injectCSS(){let t="robot-toast-styles";if(document.getElementById(t))return;let o=`
|
|
2
2
|
/* RobotToast v2 - CSS Styles */
|
|
3
3
|
|
|
4
4
|
/* \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 */
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
/* MESSAGE BOX - Toast content container */
|
|
125
125
|
/* \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 */
|
|
126
126
|
|
|
127
|
-
.robot-toast-message {
|
|
127
|
+
:where(.robot-toast-message) {
|
|
128
128
|
position: relative;
|
|
129
129
|
width: fit-content;
|
|
130
130
|
min-width: 120px;
|
|
@@ -158,74 +158,74 @@
|
|
|
158
158
|
display: none;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
.robot-toast-message.robot-toast-theme-light {
|
|
161
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface) {
|
|
162
162
|
background: #ffffff;
|
|
163
163
|
color: #333333;
|
|
164
164
|
border: 1px solid #e0e0e0;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
.robot-toast-message.robot-toast-theme-dark {
|
|
167
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface) {
|
|
168
168
|
background: #2d2d2d;
|
|
169
169
|
color: #f0f0f0;
|
|
170
170
|
border: 1px solid #444444;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
.robot-toast-message.robot-toast-theme-colored {
|
|
173
|
+
.robot-toast-message:where(.robot-toast-theme-colored):not(.robot-toast-custom-surface) {
|
|
174
174
|
color: #ffffff;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
/* Type-specific colors for colored theme */
|
|
178
|
-
.robot-toast-message.robot-toast-theme-colored.robot-toast-type-default {
|
|
178
|
+
.robot-toast-message:where(.robot-toast-theme-colored):not(.robot-toast-custom-surface).robot-toast-type-default {
|
|
179
179
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
.robot-toast-message.robot-toast-theme-colored.robot-toast-type-info {
|
|
182
|
+
.robot-toast-message:where(.robot-toast-theme-colored):not(.robot-toast-custom-surface).robot-toast-type-info {
|
|
183
183
|
background: linear-gradient(135deg, #2193b0 0%, #6dd5ed 100%);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
.robot-toast-message.robot-toast-theme-colored.robot-toast-type-success {
|
|
186
|
+
.robot-toast-message:where(.robot-toast-theme-colored):not(.robot-toast-custom-surface).robot-toast-type-success {
|
|
187
187
|
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
.robot-toast-message.robot-toast-theme-colored.robot-toast-type-warning {
|
|
190
|
+
.robot-toast-message:where(.robot-toast-theme-colored):not(.robot-toast-custom-surface).robot-toast-type-warning {
|
|
191
191
|
background: linear-gradient(135deg, #fb6e3b 0%, #f5a623 100%);
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
.robot-toast-message.robot-toast-theme-colored.robot-toast-type-error {
|
|
194
|
+
.robot-toast-message:where(.robot-toast-theme-colored):not(.robot-toast-custom-surface).robot-toast-type-error {
|
|
195
195
|
background: linear-gradient(135deg, #eb3349 0%, #f45c43 100%);
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
/* Light theme type-specific colors */
|
|
199
|
-
.robot-toast-message.robot-toast-theme-light.robot-toast-type-info {
|
|
199
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-info {
|
|
200
200
|
border-left: 4px solid #2193b0;
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
.robot-toast-message.robot-toast-theme-light.robot-toast-type-success {
|
|
203
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-success {
|
|
204
204
|
border-left: 4px solid #11998e;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
-
.robot-toast-message.robot-toast-theme-light.robot-toast-type-warning {
|
|
207
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-warning {
|
|
208
208
|
border-left: 4px solid #fb6e3b;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
.robot-toast-message.robot-toast-theme-light.robot-toast-type-error {
|
|
211
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-error {
|
|
212
212
|
border-left: 4px solid #eb3349;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
/* Dark theme type-specific colors */
|
|
216
|
-
.robot-toast-message.robot-toast-theme-dark.robot-toast-type-info {
|
|
216
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-info {
|
|
217
217
|
border-left: 4px solid #6dd5ed;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
.robot-toast-message.robot-toast-theme-dark.robot-toast-type-success {
|
|
220
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-success {
|
|
221
221
|
border-left: 4px solid #38ef7d;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
.robot-toast-message.robot-toast-theme-dark.robot-toast-type-warning {
|
|
224
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-warning {
|
|
225
225
|
border-left: 4px solid #f5a623;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
.robot-toast-message.robot-toast-theme-dark.robot-toast-type-error {
|
|
228
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-error {
|
|
229
229
|
border-left: 4px solid #f45c43;
|
|
230
230
|
}
|
|
231
231
|
|
|
@@ -412,40 +412,40 @@
|
|
|
412
412
|
}
|
|
413
413
|
|
|
414
414
|
/* Dark theme \u2014 inverted neutral */
|
|
415
|
-
.robot-toast-message.robot-toast-theme-dark .robot-toast-btn {
|
|
415
|
+
.robot-toast-message:where(.robot-toast-theme-dark) .robot-toast-btn {
|
|
416
416
|
color: #a1a1aa;
|
|
417
417
|
border-color: #3f3f46;
|
|
418
418
|
}
|
|
419
|
-
.robot-toast-message.robot-toast-theme-dark .robot-toast-btn:hover {
|
|
419
|
+
.robot-toast-message:where(.robot-toast-theme-dark) .robot-toast-btn:hover {
|
|
420
420
|
background: #27272a;
|
|
421
421
|
color: #fafafa;
|
|
422
422
|
}
|
|
423
|
-
.robot-toast-message.robot-toast-theme-dark .robot-toast-row[data-count="1"]:only-child .robot-toast-btn {
|
|
423
|
+
.robot-toast-message:where(.robot-toast-theme-dark) .robot-toast-row[data-count="1"]:only-child .robot-toast-btn {
|
|
424
424
|
background: #fafafa;
|
|
425
425
|
color: #18181b;
|
|
426
426
|
border-color: #fafafa;
|
|
427
427
|
}
|
|
428
|
-
.robot-toast-message.robot-toast-theme-dark .robot-toast-row[data-count="1"]:only-child .robot-toast-btn:hover {
|
|
428
|
+
.robot-toast-message:where(.robot-toast-theme-dark) .robot-toast-row[data-count="1"]:only-child .robot-toast-btn:hover {
|
|
429
429
|
background: #e4e4e7;
|
|
430
430
|
border-color: #e4e4e7;
|
|
431
431
|
color: #18181b;
|
|
432
432
|
}
|
|
433
433
|
|
|
434
434
|
/* Colored theme \u2014 translucent whites keep contrast on any gradient */
|
|
435
|
-
.robot-toast-message.robot-toast-theme-colored .robot-toast-btn {
|
|
435
|
+
.robot-toast-message:where(.robot-toast-theme-colored) .robot-toast-btn {
|
|
436
436
|
color: rgba(255, 255, 255, 0.9);
|
|
437
437
|
border-color: rgba(255, 255, 255, 0.35);
|
|
438
438
|
}
|
|
439
|
-
.robot-toast-message.robot-toast-theme-colored .robot-toast-btn:hover {
|
|
439
|
+
.robot-toast-message:where(.robot-toast-theme-colored) .robot-toast-btn:hover {
|
|
440
440
|
background: rgba(255, 255, 255, 0.15);
|
|
441
441
|
color: #fff;
|
|
442
442
|
}
|
|
443
|
-
.robot-toast-message.robot-toast-theme-colored .robot-toast-row[data-count="1"]:only-child .robot-toast-btn {
|
|
443
|
+
.robot-toast-message:where(.robot-toast-theme-colored) .robot-toast-row[data-count="1"]:only-child .robot-toast-btn {
|
|
444
444
|
background: rgba(255, 255, 255, 0.95);
|
|
445
445
|
color: #18181b;
|
|
446
446
|
border-color: transparent;
|
|
447
447
|
}
|
|
448
|
-
.robot-toast-message.robot-toast-theme-colored .robot-toast-row[data-count="1"]:only-child .robot-toast-btn:hover {
|
|
448
|
+
.robot-toast-message:where(.robot-toast-theme-colored) .robot-toast-row[data-count="1"]:only-child .robot-toast-btn:hover {
|
|
449
449
|
background: #fff;
|
|
450
450
|
color: #18181b;
|
|
451
451
|
}
|
|
@@ -462,7 +462,7 @@
|
|
|
462
462
|
overflow: hidden;
|
|
463
463
|
}
|
|
464
464
|
|
|
465
|
-
.robot-toast-message.robot-toast-theme-dark .robot-toast-progress-container {
|
|
465
|
+
.robot-toast-message:where(.robot-toast-theme-dark) .robot-toast-progress-container {
|
|
466
466
|
background: rgba(255, 255, 255, 0.15);
|
|
467
467
|
}
|
|
468
468
|
|
|
@@ -473,16 +473,17 @@
|
|
|
473
473
|
transform: scaleX(1); /* \u2190 starts full */
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
.robot-toast-theme-light.robot-toast-type-success .robot-toast-progress-bar { background: #11998e; }
|
|
477
|
-
.robot-toast-theme-light.robot-toast-type-error
|
|
478
|
-
.robot-toast-theme-light.robot-toast-type-warning .robot-toast-progress-bar { background: #fb6e3b; }
|
|
479
|
-
.robot-toast-theme-light.robot-toast-type-info
|
|
476
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-success .robot-toast-progress-bar { background: #11998e; }
|
|
477
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-error .robot-toast-progress-bar { background: #eb3349; }
|
|
478
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-warning .robot-toast-progress-bar { background: #fb6e3b; }
|
|
479
|
+
.robot-toast-message:where(.robot-toast-theme-light):not(.robot-toast-custom-surface).robot-toast-type-info .robot-toast-progress-bar { background: #2193b0; }
|
|
480
480
|
|
|
481
481
|
/* Dark theme progress bar colors */
|
|
482
|
-
.robot-toast-theme-dark.robot-toast-type-success .robot-toast-progress-bar { background: #38ef7d; }
|
|
483
|
-
.robot-toast-theme-dark.robot-toast-type-error
|
|
484
|
-
.robot-toast-theme-dark.robot-toast-type-warning .robot-toast-progress-bar { background: #f5a623; }
|
|
485
|
-
.robot-toast-theme-dark.robot-toast-type-info
|
|
482
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-success .robot-toast-progress-bar { background: #38ef7d; }
|
|
483
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-error .robot-toast-progress-bar { background: #f45c43; }
|
|
484
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-warning .robot-toast-progress-bar { background: #f5a623; }
|
|
485
|
+
.robot-toast-message:where(.robot-toast-theme-dark):not(.robot-toast-custom-surface).robot-toast-type-info .robot-toast-progress-bar { background: #6dd5ed; }
|
|
486
|
+
|
|
486
487
|
|
|
487
488
|
|
|
488
489
|
.robot-toast-progress-bar.robot-toast-progress-auto {
|
|
@@ -779,7 +780,7 @@
|
|
|
779
780
|
max-width: calc(100vw - 40px - 20px - 8px);
|
|
780
781
|
}
|
|
781
782
|
}
|
|
782
|
-
`,e=document.createElement("style");e.id=t,e.textContent=o,document.head.appendChild(e);}};f.injected=false;var w=f,k=w;var E=1;function R(){return E++}var B=16;function L(a){let t=a.length;if(t===0)return [];if(t<=3)return [a.slice()];if(t===4)return [a.slice(0,2),a.slice(2)];let o=[],e=0;for(;t-e>4;)o.push(a.slice(e,e+3)),e+=3;return t-e===4?(o.push(a.slice(e,e+2)),o.push(a.slice(e+2))):o.push(a.slice(e)),o}var x=class{constructor(t,o,e){this.progressBar=null;this.timerStart=null;this.closeTimeout=null;this.isDragging=false;this.dragOffsetX=0;this.dragOffsetY=0;this.dragWidth=0;this.dragHeight=0;this.isHovered=false;this.isFocusLost=false;this.isClosed=false;this.cleanupFns=[];this.id=t,this.onRemove=e;let s={message:o.message,autoClose:o.autoClose??5e3,position:o.position??"bottom-right",type:o.type??"default",theme:o.theme??"light",style:o.style,typeSpeed:o.typeSpeed??30,robotVariant:o.robotVariant??"",hideProgressBar:o.hideProgressBar??false,pauseOnFocusLoss:o.pauseOnFocusLoss??true,draggable:o.draggable??true,nearScreen:o.nearScreen??true,pauseOnHover:o.pauseOnHover??true,rtl:o.rtl??false,transition:o.transition??"bounce",buttons:o.buttons,onOpen:o.onOpen,onClose:o.onClose};this.options=s;let r=s.position.includes("left"),i;s.nearScreen?i=r?"left":"right":i=r?"right":"left",this.currentRobotSide=i,this.autoCloseDuration=typeof s.autoClose=="number"?s.autoClose:s.autoClose?5e3:0,this.remainingTime=this.autoCloseDuration,this.wrapper=this.buildWrapper(),this.robotEl=this.buildRobot(),this.messageBox=this.buildMessageBox(),this.messageText=this.messageBox.querySelector(".robot-toast-text"),this.progressBar=this.messageBox.querySelector(".robot-toast-progress-bar"),s.message===""&&this.messageBox.classList.add("robot-toast-empty"),this.assembleLayout(),document.body.appendChild(this.wrapper),s.draggable&&this.initDrag(),s.pauseOnFocusLoss&&this.initFocusWatcher(),s.pauseOnHover&&this.initHoverWatcher(),requestAnimationFrame(()=>this.playEntrance());}close(){this.isClosed||(this.isClosed=true,this.cancelTimer(),this.cleanupFns.forEach(t=>t()),this.cleanupFns=[],this.playExit(()=>{this.wrapper.parentNode&&this.wrapper.parentNode.removeChild(this.wrapper),this.options.onClose?.(),this.onRemove(this.id);}));}shiftVertical(t){this.options.position.startsWith("bottom")?this.wrapper.style.bottom=`${t}px`:this.wrapper.style.top=`${t}px`;}getWrapperHeight(){return this.wrapper.getBoundingClientRect().height||90}buildWrapper(){let t=document.createElement("div"),o=["robot-toast-wrapper",`robot-toast-${this.options.position}`];this.options.rtl&&o.push("robot-toast-rtl"),t.className=o.join(" ");let e=this.options.type==="error"||this.options.type==="warning";return t.setAttribute("role",e?"alert":"status"),t.setAttribute("aria-live",e?"assertive":"polite"),t.setAttribute("aria-atomic","true"),t}resolveVariant(){let t=this.options.robotVariant;if(!t||t==="none")return "hidden";if(t==="default")return "default";let o=[".svg",".png",".jpg",".jpeg",".gif",".webp"];return t.startsWith("data:")||o.some(r=>t.toLowerCase().endsWith(r))?"image":"hidden"}buildRobot(){let t=document.createElement("div");t.className="robot-toast-robot";let o=this.resolveVariant();if(o==="hidden")return t.style.display="none",t;if(o==="default")return t.innerHTML=this.getBuiltinSVG(),t;let e=document.createElement("img");return e.src=this.options.robotVariant,e.alt="Robot",e.setAttribute("width","65"),e.setAttribute("height","70"),e.style.cssText="width:100%;height:100%;object-fit:contain;display:block;",e.onerror=()=>{t.innerHTML=this.getBuiltinSVG();},t.appendChild(e),t}buildMessageBox(){let t=document.createElement("div"),o=["robot-toast-message",`robot-toast-type-${this.options.type}`,`robot-toast-theme-${this.options.theme}`].filter(Boolean);t.className=o.join(" "),t.style.cursor=this.options.draggable?"grab":"default",this.options.style&&Object.entries(this.options.style).forEach(([l,m])=>{let d=l.replace(/-([a-z])/g,b=>b[1].toUpperCase());t.style[d]=m;});let e=document.createElement("div");e.className="robot-toast-body";let s=document.createElement("div");s.className="robot-toast-text",e.appendChild(s);let r=document.createElement("button");if(r.className="robot-toast-close",r.innerHTML='<svg viewBox="0 0 14 14" width="12" height="12" aria-hidden="true" focusable="false"><path d="M1 1 L13 13 M13 1 L1 13" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',r.title="Dismiss",r.type="button",r.setAttribute("aria-label","Dismiss notification"),r.addEventListener("click",l=>{l.stopPropagation(),this.close();}),e.appendChild(r),t.appendChild(e),this.options.buttons&&this.options.buttons.length>0){let l=document.createElement("div");l.className="robot-toast-footer",L(this.options.buttons).forEach(d=>{let b=document.createElement("div");b.className="robot-toast-row",b.setAttribute("data-count",String(d.length)),d.forEach(y=>b.appendChild(this.buildButton(y))),l.appendChild(b);}),t.appendChild(l);}let i=document.createElement("div");i.className="robot-toast-progress-container",this.options.hideProgressBar&&(i.style.display="none");let p=document.createElement("div");return p.className="robot-toast-progress-bar",i.appendChild(p),t.appendChild(i),t}buildButton(t){let o=document.createElement("button");return o.type="button",o.className=t.className?`robot-toast-btn ${t.className}`:"robot-toast-btn",o.textContent=t.label,t.style&&Object.entries(t.style).forEach(([e,s])=>{let r=e.replace(/-([a-z])/g,i=>i[1].toUpperCase());o.style[r]=s;}),o.addEventListener("click",e=>{e.stopPropagation();try{t.onClick(e);}catch(s){console.error("[robot-toast] button onClick threw:",s);}this.close();}),o}assembleLayout(){let{rtl:t}=this.options;this.wrapper.innerHTML="",(t?this.currentRobotSide==="right":this.currentRobotSide==="left")?(this.wrapper.appendChild(this.robotEl),this.wrapper.appendChild(this.messageBox)):(this.wrapper.appendChild(this.messageBox),this.wrapper.appendChild(this.robotEl));}playEntrance(){this.wrapper.classList.add("robot-toast-visible");let t=this.resolveVariant()==="hidden",o=this.options.message==="",e=()=>{if(o){this.options.onOpen?.(),this.afterTypingComplete();return}let s=this.options.transition==="bounce"?"message-enter":`message-enter-${this.options.transition}`;this.messageBox.classList.add(s);let r=()=>{this.messageBox.removeEventListener("animationend",r),this.messageBox.classList.remove(s),this.messageBox.style.opacity="1",this.messageBox.style.transform="none",this.options.onOpen?.(),this.startTyping();};this.messageBox.addEventListener("animationend",r,{once:true});};if(t)e();else {let s=this.currentRobotSide==="left"?"left":"right",r=this.options.transition!=="bounce"?`-${this.options.transition}`:"",i=`robot-enter-${s}${r}`;this.robotEl.classList.add(i);let p=()=>{this.robotEl.removeEventListener("animationend",p),this.robotEl.style.opacity="1",this.robotEl.classList.remove(i),this.robotEl.classList.add("robot-idle"),e();};this.robotEl.addEventListener("animationend",p,{once:true});}}playExit(t){let o=this.resolveVariant()==="hidden",e=this.options.message==="",s=()=>{if(this.messageBox.removeEventListener("animationend",s),o)this.wrapper.classList.remove("robot-toast-visible"),setTimeout(t,260);else {this.robotEl.classList.remove("robot-idle","robot-snap-left","robot-snap-right");let r=this.currentRobotSide==="left"?"left":"right",i=this.options.transition!=="bounce"?`-${this.options.transition}`:"",p=`robot-exit-${r}${i}`;this.robotEl.classList.add(p);let l=()=>{this.robotEl.removeEventListener("animationend",l),this.wrapper.classList.remove("robot-toast-visible"),setTimeout(t,260);};this.robotEl.addEventListener("animationend",l,{once:true});}};e?s():(this.messageBox.classList.add("message-exit"),this.messageBox.addEventListener("animationend",s,{once:true}));}startTyping(){let{message:t,typeSpeed:o}=this.options,e=this.messageText;if(o===0){e.textContent=t,this.afterTypingComplete();return}let s=0,r=true;this.cleanupFns.push(()=>{r=false;});let i=()=>{r&&(s<t.length?(e.textContent+=t.charAt(s++),setTimeout(i,o)):this.afterTypingComplete());};i();}afterTypingComplete(){this.autoCloseDuration>0&&!this.options.hideProgressBar&&this.progressBar&&(this.progressBar.style.animationDuration=`${this.autoCloseDuration}ms`,this.progressBar.offsetWidth,this.progressBar.classList.add("robot-toast-progress-auto"),(this.isHovered||this.isFocusLost)&&this.progressBar.classList.add("robot-toast-progress-paused")),!this.isHovered&&!this.isFocusLost&&this.startTimer();}startTimer(){this.autoCloseDuration<=0||this.remainingTime<=0||(this.timerStart=Date.now(),this.closeTimeout=setTimeout(()=>this.close(),this.remainingTime));}pauseTimer(){if(this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null,this.timerStart!==null)){let t=Date.now()-this.timerStart;this.remainingTime=Math.max(0,this.remainingTime-t),this.timerStart=null;}this.progressBar?.classList.add("robot-toast-progress-paused");}resumeTimer(){this.isHovered||this.isFocusLost||this.isDragging||(this.progressBar?.classList.remove("robot-toast-progress-paused"),this.startTimer());}cancelTimer(){this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null);}initHoverWatcher(){let t=()=>{this.isHovered=true,this.pauseTimer();},o=()=>{this.isHovered=false,this.resumeTimer();};this.wrapper.addEventListener("mouseenter",t),this.wrapper.addEventListener("mouseleave",o),this.cleanupFns.push(()=>{this.wrapper.removeEventListener("mouseenter",t),this.wrapper.removeEventListener("mouseleave",o);});}initFocusWatcher(){let t=()=>{this.isFocusLost=true,this.pauseTimer();},o=()=>{this.isFocusLost=false,this.resumeTimer();};window.addEventListener("blur",t),window.addEventListener("focus",o),this.cleanupFns.push(()=>{window.removeEventListener("blur",t),window.removeEventListener("focus",o);});}initDrag(){this.messageBox.style.cursor="grab";let t=s=>{if(s.target.closest(".robot-toast-close, .robot-toast-btn")||s.button!==void 0&&s.button!==0)return;s.preventDefault(),this.isDragging=true,this.pauseTimer();let r=this.wrapper.getBoundingClientRect();this.wrapper.classList.add("robot-toast-dragging"),this.wrapper.style.top=`${r.top}px`,this.wrapper.style.left=`${r.left}px`,this.wrapper.style.right="auto",this.wrapper.style.bottom="auto",this.wrapper.style.transform="none",this.dragWidth=r.width,this.dragHeight=r.height,this.dragOffsetX=s.clientX-r.left,this.dragOffsetY=s.clientY-r.top,this.messageBox.style.cursor="grabbing",this.wrapper.setPointerCapture(s.pointerId);},o=s=>{if(!this.isDragging)return;s.preventDefault();let r=window.innerWidth-this.dragWidth,i=window.innerHeight-this.dragHeight,p=Math.max(0,Math.min(s.clientX-this.dragOffsetX,r)),l=Math.max(0,Math.min(s.clientY-this.dragOffsetY,i));this.wrapper.style.left=`${p}px`,this.wrapper.style.top=`${l}px`;},e=s=>{if(!this.isDragging)return;this.isDragging=false,this.wrapper.classList.remove("robot-toast-dragging"),this.messageBox.style.cursor="grab";let r=this.wrapper.getBoundingClientRect(),i=r.top,p=r.left+r.width/2,l=window.innerWidth/2,m=p<l,d=this.options.nearScreen?m?"left":"right":m?"right":"left",b=m?20:window.innerWidth-this.dragWidth-20,y=Math.max(20,Math.min(i,window.innerHeight-this.dragHeight-20));if(this.wrapper.style.transition="left 0.45s cubic-bezier(0.34,1.56,0.64,1), top 0.4s cubic-bezier(0.34,1.56,0.64,1)",this.wrapper.style.left=`${b}px`,this.wrapper.style.top=`${y}px`,d!==this.currentRobotSide){this.currentRobotSide=d;let v=d==="left";this.robotEl.style.order=v?"0":"1",this.messageBox.style.order=v?"1":"0";let T=d==="left"?"robot-snap-left":"robot-snap-right";this.robotEl.classList.remove("robot-idle","robot-snap-left","robot-snap-right"),this.robotEl.classList.add(T),this.robotEl.addEventListener("animationend",()=>{this.robotEl.style.opacity="1",this.robotEl.classList.remove(T),this.robotEl.classList.add("robot-idle");},{once:true});}setTimeout(()=>{this.wrapper.style.transition="";},500),this.resumeTimer();};this.wrapper.addEventListener("pointerdown",t),this.wrapper.addEventListener("pointermove",o),this.wrapper.addEventListener("pointerup",e),this.wrapper.addEventListener("pointercancel",e),this.cleanupFns.push(()=>{this.wrapper.removeEventListener("pointerdown",t),this.wrapper.removeEventListener("pointermove",o),this.wrapper.removeEventListener("pointerup",e),this.wrapper.removeEventListener("pointercancel",e);});}getBuiltinSVG(){return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 120"
|
|
783
|
+
`,e=document.createElement("style");e.id=t,e.textContent=o,document.head.appendChild(e);}};u.injected=false;var v=u,E=v;var R=1;function B(){return R++}var L=16;function O(a){let t=a.length;if(t===0)return [];if(t<=3)return [a.slice()];if(t===4)return [a.slice(0,2),a.slice(2)];let o=[],e=0;for(;t-e>4;)o.push(a.slice(e,e+3)),e+=3;return t-e===4?(o.push(a.slice(e,e+2)),o.push(a.slice(e+2))):o.push(a.slice(e)),o}var T=class{constructor(t,o,e){this.progressBar=null;this.timerStart=null;this.closeTimeout=null;this.isDragging=false;this.dragOffsetX=0;this.dragOffsetY=0;this.dragWidth=0;this.dragHeight=0;this.isHovered=false;this.isFocusLost=false;this.isClosed=false;this.cleanupFns=[];this.id=t,this.onRemove=e;let s={message:o.message,autoClose:o.autoClose??5e3,position:o.position??"bottom-right",type:o.type??"default",theme:o.theme??"light",style:o.style,className:o.className,typeSpeed:o.typeSpeed??30,robotVariant:o.robotVariant??"",hideProgressBar:o.hideProgressBar??false,pauseOnFocusLoss:o.pauseOnFocusLoss??true,draggable:o.draggable??true,nearScreen:o.nearScreen??true,pauseOnHover:o.pauseOnHover??true,rtl:o.rtl??false,transition:o.transition??"bounce",buttons:o.buttons,onOpen:o.onOpen,onClose:o.onClose};this.options=s;let r=s.position.includes("left"),i;s.nearScreen?i=r?"left":"right":i=r?"right":"left",this.currentRobotSide=i,this.autoCloseDuration=typeof s.autoClose=="number"?s.autoClose:s.autoClose?5e3:0,this.remainingTime=this.autoCloseDuration,this.wrapper=this.buildWrapper(),this.robotEl=this.buildRobot(),this.messageBox=this.buildMessageBox(),this.messageText=this.messageBox.querySelector(".robot-toast-text"),this.progressBar=this.messageBox.querySelector(".robot-toast-progress-bar"),s.message===""&&this.messageBox.classList.add("robot-toast-empty"),this.assembleLayout(),document.body.appendChild(this.wrapper),s.draggable&&this.initDrag(),s.pauseOnFocusLoss&&this.initFocusWatcher(),s.pauseOnHover&&this.initHoverWatcher(),requestAnimationFrame(()=>this.playEntrance());}close(){this.isClosed||(this.isClosed=true,this.cancelTimer(),this.cleanupFns.forEach(t=>t()),this.cleanupFns=[],this.playExit(()=>{this.wrapper.parentNode&&this.wrapper.parentNode.removeChild(this.wrapper),this.options.onClose?.(),this.onRemove(this.id);}));}shiftVertical(t){this.options.position.startsWith("bottom")?this.wrapper.style.bottom=`${t}px`:this.wrapper.style.top=`${t}px`;}getWrapperHeight(){return this.wrapper.getBoundingClientRect().height||90}buildWrapper(){let t=document.createElement("div"),o=["robot-toast-wrapper",`robot-toast-${this.options.position}`];this.options.rtl&&o.push("robot-toast-rtl"),t.className=o.join(" ");let e=this.options.type==="error"||this.options.type==="warning";return t.setAttribute("role",e?"alert":"status"),t.setAttribute("aria-live",e?"assertive":"polite"),t.setAttribute("aria-atomic","true"),t}resolveVariant(){let t=this.options.robotVariant;if(!t||t==="none")return "hidden";if(t==="default")return "default";let o=[".svg",".png",".jpg",".jpeg",".gif",".webp"];return t.startsWith("data:")||o.some(r=>t.toLowerCase().endsWith(r))?"image":"hidden"}buildRobot(){let t=document.createElement("div");t.className="robot-toast-robot";let o=this.resolveVariant();if(o==="hidden")return t.style.display="none",t;if(o==="default")return t.innerHTML=this.getBuiltinSVG(),t;let e=document.createElement("img");return e.src=this.options.robotVariant,e.alt="Robot",e.setAttribute("width","65"),e.setAttribute("height","70"),e.style.cssText="width:100%;height:100%;object-fit:contain;display:block;",e.onerror=()=>{t.innerHTML=this.getBuiltinSVG();},t.appendChild(e),t}buildMessageBox(){let t=document.createElement("div"),o=!!(this.options.className||this.options.style),e=["robot-toast-message",`robot-toast-type-${this.options.type}`,`robot-toast-theme-${this.options.theme}`];o&&e.push("robot-toast-custom-surface"),this.options.className&&e.push(...this.options.className.split(/\s+/).filter(Boolean));let s=e.filter(Boolean);t.className=s.join(" "),t.style.cursor=this.options.draggable?"grab":"default",this.options.style&&Object.entries(this.options.style).forEach(([p,w])=>{let f=p.replace(/-([a-z])/g,d=>d[1].toUpperCase());t.style[f]=w;});let r=document.createElement("div");r.className="robot-toast-body";let i=document.createElement("div");i.className="robot-toast-text",r.appendChild(i);let n=document.createElement("button");if(n.className="robot-toast-close",n.innerHTML='<svg viewBox="0 0 14 14" width="12" height="12" aria-hidden="true" focusable="false"><path d="M1 1 L13 13 M13 1 L1 13" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',n.title="Dismiss",n.type="button",n.setAttribute("aria-label","Dismiss notification"),n.addEventListener("click",p=>{p.stopPropagation(),this.close();}),r.appendChild(n),t.appendChild(r),this.options.buttons&&this.options.buttons.length>0){let p=document.createElement("div");p.className="robot-toast-footer",O(this.options.buttons).forEach(f=>{let d=document.createElement("div");d.className="robot-toast-row",d.setAttribute("data-count",String(f.length)),f.forEach(y=>d.appendChild(this.buildButton(y))),p.appendChild(d);}),t.appendChild(p);}let b=document.createElement("div");b.className="robot-toast-progress-container",this.options.hideProgressBar&&(b.style.display="none");let m=document.createElement("div");return m.className="robot-toast-progress-bar",b.appendChild(m),t.appendChild(b),t}buildButton(t){let o=document.createElement("button");return o.type="button",o.className=t.className?`robot-toast-btn ${t.className}`:"robot-toast-btn",o.textContent=t.label,t.style&&Object.entries(t.style).forEach(([e,s])=>{let r=e.replace(/-([a-z])/g,i=>i[1].toUpperCase());o.style[r]=s;}),o.addEventListener("click",e=>{e.stopPropagation();try{t.onClick(e);}catch(s){console.error("[robot-toast] button onClick threw:",s);}this.close();}),o}assembleLayout(){let{rtl:t}=this.options;this.wrapper.innerHTML="",(t?this.currentRobotSide==="right":this.currentRobotSide==="left")?(this.wrapper.appendChild(this.robotEl),this.wrapper.appendChild(this.messageBox)):(this.wrapper.appendChild(this.messageBox),this.wrapper.appendChild(this.robotEl));}playEntrance(){this.wrapper.classList.add("robot-toast-visible");let t=this.resolveVariant()==="hidden",o=this.options.message==="",e=()=>{if(o){this.options.onOpen?.(),this.afterTypingComplete();return}let s=this.options.transition==="bounce"?"message-enter":`message-enter-${this.options.transition}`;this.messageBox.classList.add(s);let r=()=>{this.messageBox.removeEventListener("animationend",r),this.messageBox.classList.remove(s),this.messageBox.style.opacity="1",this.messageBox.style.transform="none",this.options.onOpen?.(),this.startTyping();};this.messageBox.addEventListener("animationend",r,{once:true});};if(t)e();else {let s=this.currentRobotSide==="left"?"left":"right",r=this.options.transition!=="bounce"?`-${this.options.transition}`:"",i=`robot-enter-${s}${r}`;this.robotEl.classList.add(i);let n=()=>{this.robotEl.removeEventListener("animationend",n),this.robotEl.style.opacity="1",this.robotEl.classList.remove(i),this.robotEl.classList.add("robot-idle"),e();};this.robotEl.addEventListener("animationend",n,{once:true});}}playExit(t){let o=this.resolveVariant()==="hidden",e=this.options.message==="",s=()=>{if(this.messageBox.removeEventListener("animationend",s),o)this.wrapper.classList.remove("robot-toast-visible"),setTimeout(t,260);else {this.robotEl.classList.remove("robot-idle","robot-snap-left","robot-snap-right");let r=this.currentRobotSide==="left"?"left":"right",i=this.options.transition!=="bounce"?`-${this.options.transition}`:"",n=`robot-exit-${r}${i}`;this.robotEl.classList.add(n);let b=()=>{this.robotEl.removeEventListener("animationend",b),this.wrapper.classList.remove("robot-toast-visible"),setTimeout(t,260);};this.robotEl.addEventListener("animationend",b,{once:true});}};e?s():(this.messageBox.classList.add("message-exit"),this.messageBox.addEventListener("animationend",s,{once:true}));}startTyping(){let{message:t,typeSpeed:o}=this.options,e=this.messageText;if(o===0){e.textContent=t,this.afterTypingComplete();return}let s=0,r=true;this.cleanupFns.push(()=>{r=false;});let i=()=>{r&&(s<t.length?(e.textContent+=t.charAt(s++),setTimeout(i,o)):this.afterTypingComplete());};i();}afterTypingComplete(){this.autoCloseDuration>0&&!this.options.hideProgressBar&&this.progressBar&&(this.progressBar.style.animationDuration=`${this.autoCloseDuration}ms`,this.progressBar.offsetWidth,this.progressBar.classList.add("robot-toast-progress-auto"),(this.isHovered||this.isFocusLost)&&this.progressBar.classList.add("robot-toast-progress-paused")),!this.isHovered&&!this.isFocusLost&&this.startTimer();}startTimer(){this.autoCloseDuration<=0||this.remainingTime<=0||(this.timerStart=Date.now(),this.closeTimeout=setTimeout(()=>this.close(),this.remainingTime));}pauseTimer(){if(this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null,this.timerStart!==null)){let t=Date.now()-this.timerStart;this.remainingTime=Math.max(0,this.remainingTime-t),this.timerStart=null;}this.progressBar?.classList.add("robot-toast-progress-paused");}resumeTimer(){this.isHovered||this.isFocusLost||this.isDragging||(this.progressBar?.classList.remove("robot-toast-progress-paused"),this.startTimer());}cancelTimer(){this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null);}initHoverWatcher(){let t=()=>{this.isHovered=true,this.pauseTimer();},o=()=>{this.isHovered=false,this.resumeTimer();};this.wrapper.addEventListener("mouseenter",t),this.wrapper.addEventListener("mouseleave",o),this.cleanupFns.push(()=>{this.wrapper.removeEventListener("mouseenter",t),this.wrapper.removeEventListener("mouseleave",o);});}initFocusWatcher(){let t=()=>{this.isFocusLost=true,this.pauseTimer();},o=()=>{this.isFocusLost=false,this.resumeTimer();};window.addEventListener("blur",t),window.addEventListener("focus",o),this.cleanupFns.push(()=>{window.removeEventListener("blur",t),window.removeEventListener("focus",o);});}initDrag(){this.messageBox.style.cursor="grab";let t=s=>{if(s.target.closest(".robot-toast-close, .robot-toast-btn")||s.button!==void 0&&s.button!==0)return;s.preventDefault(),this.isDragging=true,this.pauseTimer();let r=this.wrapper.getBoundingClientRect();this.wrapper.classList.add("robot-toast-dragging"),this.wrapper.style.top=`${r.top}px`,this.wrapper.style.left=`${r.left}px`,this.wrapper.style.right="auto",this.wrapper.style.bottom="auto",this.wrapper.style.transform="none",this.dragWidth=r.width,this.dragHeight=r.height,this.dragOffsetX=s.clientX-r.left,this.dragOffsetY=s.clientY-r.top,this.messageBox.style.cursor="grabbing",this.wrapper.setPointerCapture(s.pointerId);},o=s=>{if(!this.isDragging)return;s.preventDefault();let r=window.innerWidth-this.dragWidth,i=window.innerHeight-this.dragHeight,n=Math.max(0,Math.min(s.clientX-this.dragOffsetX,r)),b=Math.max(0,Math.min(s.clientY-this.dragOffsetY,i));this.wrapper.style.left=`${n}px`,this.wrapper.style.top=`${b}px`;},e=s=>{if(!this.isDragging)return;this.isDragging=false,this.wrapper.classList.remove("robot-toast-dragging"),this.messageBox.style.cursor="grab";let r=this.wrapper.getBoundingClientRect(),i=r.top,n=r.left+r.width/2,b=window.innerWidth/2,m=n<b,p=this.options.nearScreen?m?"left":"right":m?"right":"left",w=m?20:window.innerWidth-this.dragWidth-20,f=Math.max(20,Math.min(i,window.innerHeight-this.dragHeight-20));if(this.wrapper.style.transition="left 0.45s cubic-bezier(0.34,1.56,0.64,1), top 0.4s cubic-bezier(0.34,1.56,0.64,1)",this.wrapper.style.left=`${w}px`,this.wrapper.style.top=`${f}px`,p!==this.currentRobotSide){this.currentRobotSide=p;let y=p==="left";this.robotEl.style.order=y?"0":"1",this.messageBox.style.order=y?"1":"0";let k=p==="left"?"robot-snap-left":"robot-snap-right";this.robotEl.classList.remove("robot-idle","robot-snap-left","robot-snap-right"),this.robotEl.classList.add(k),this.robotEl.addEventListener("animationend",()=>{this.robotEl.style.opacity="1",this.robotEl.classList.remove(k),this.robotEl.classList.add("robot-idle");},{once:true});}setTimeout(()=>{this.wrapper.style.transition="";},500),this.resumeTimer();};this.wrapper.addEventListener("pointerdown",t),this.wrapper.addEventListener("pointermove",o),this.wrapper.addEventListener("pointerup",e),this.wrapper.addEventListener("pointercancel",e),this.cleanupFns.push(()=>{this.wrapper.removeEventListener("pointerdown",t),this.wrapper.removeEventListener("pointermove",o),this.wrapper.removeEventListener("pointerup",e),this.wrapper.removeEventListener("pointercancel",e);});}getBuiltinSVG(){return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 120"
|
|
783
784
|
width="100%" height="100%" role="img" aria-label="Robot">
|
|
784
785
|
<defs>
|
|
785
786
|
<linearGradient id="rtGrad${this.id}" x1="0" y1="0" x2="1" y2="1">
|
|
@@ -827,5 +828,5 @@
|
|
|
827
828
|
fill="url(#rtAccent${this.id})" stroke="#2B3A55" stroke-width="1.5"/>
|
|
828
829
|
<rect x="54" y="110" width="16" height="10" rx="5"
|
|
829
830
|
fill="url(#rtAccent${this.id})" stroke="#2B3A55" stroke-width="1.5"/>
|
|
830
|
-
</svg>`}},h=class h{constructor(){this.activeToasts=[];this.queue=[];this.globalLimit=0;new
|
|
831
|
+
</svg>`}},h=class h{constructor(){this.activeToasts=[];this.queue=[];this.globalLimit=0;new E;}static getInstance(){return h._instance||(h._instance=new h),h._instance}show(t){if(typeof document>"u")return -1;let o=B(),e=t.limit??this.globalLimit;return e>0&&this.activeToasts.length>=e?(this.queue.push({options:t,id:o}),o):(this.spawnToast(t,o),o)}closeAll(){this.queue=[],[...this.activeToasts].forEach(t=>t.close());}closeById(t){let o=this.activeToasts.find(e=>e.id===t);o&&o.close(),this.queue=this.queue.filter(e=>e.id!==t);}spawnToast(t,o){let e=new T(o,t,r=>this.handleRemoved(r));t.newestOnTop??false?this.activeToasts.unshift(e):this.activeToasts.push(e),this.restack();}handleRemoved(t){if(this.activeToasts=this.activeToasts.filter(o=>o.id!==t),this.restack(),this.queue.length>0){let o=this.queue.shift();setTimeout(()=>this.spawnToast(o.options,o.id),120);}}restack(){let t={};this.activeToasts.forEach(o=>{let e=o.options.position;t[e]||(t[e]=[]),t[e].push(o);}),Object.keys(t).forEach(o=>{let e=t[o],s=20;e.forEach(r=>{r.shiftVertical(s),s+=r.getWrapperHeight()+L;});});}};h._instance=null;var c=h;function x(a=5e3){return new Promise((t,o)=>{if(typeof window>"u"){o(new Error("[RobotToast] Cannot run outside of a browser environment."));return}if(window.RobotToast){t(window.RobotToast);return}let e=Date.now(),s=setInterval(()=>{if(window.RobotToast){clearInterval(s),t(window.RobotToast);return}Date.now()-e>=a&&(clearInterval(s),o(new Error(`[RobotToast] Failed to load within ${a}ms.`)));},80);})}async function S(a){try{return (await x()).show(a)}catch(t){return console.error("[RobotToast] showRobotToast failed:",t),-1}}async function A(){try{(await x()).closeAll();}catch(a){console.error("[RobotToast] closeAllRobotToasts failed:",a);}}async function C(){return x()}var I=["top-right","top-left","top-center","bottom-right","bottom-left","bottom-center"],P=["default","info","success","warning","error"],N=["light","dark","colored"],Y=["bounce","slide","zoom","flip"];function g(a){return typeof a=="string"?{message:a}:a}function l(a){return typeof window>"u"?-1:c.getInstance().show(g(a))}l.success=a=>l({...g(a),type:"success"});l.error=a=>l({...g(a),type:"error"});l.info=a=>l({...g(a),type:"info"});l.warning=a=>l({...g(a),type:"warning"});l.closeAll=()=>{typeof window>"u"||c.getInstance().closeAll();};l.closeById=a=>{typeof window>"u"||c.getInstance().closeById(a);};l.promise=(a,t)=>{if(typeof window>"u")return a;let o=typeof t.loading=="string"?{message:t.loading}:{message:"",...t.loading},e=l({autoClose:false,hideProgressBar:true,...o,typeSpeed:o.typeSpeed??0}),s=(r,i)=>{let n=typeof r=="string"?{message:r}:{message:"",...r};return {type:i,...n}};return a.then(r=>{l.closeById(e);let i=typeof t.success=="function"?t.success(r):t.success;return l(s(i,"success")),r},r=>{l.closeById(e);let i=typeof t.error=="function"?t.error(r):t.error;throw l(s(i,"error")),r})};function D(){if(typeof window>"u"||window.__robotToastLoaded)return;window.__robotToastLoaded=true;let a={show:t=>c.getInstance().show(t),closeAll:()=>c.getInstance().closeAll(),closeById:t=>c.getInstance().closeById(t),getInstance:()=>c.getInstance()};window.RobotToast=a;}D();exports.RobotToast=c;exports.RobotToastManager=c;exports.TOAST_POSITIONS=I;exports.TOAST_THEMES=N;exports.TOAST_TRANSITIONS=Y;exports.TOAST_TYPES=P;exports.closeAllRobotToasts=A;exports.ensureRobotToastReady=x;exports.getRobotToastInstance=C;exports.showRobotToast=S;exports.toast=l;//# sourceMappingURL=index.js.map
|
|
831
832
|
//# sourceMappingURL=index.js.map
|