react-confirm-lite 1.2.3 → 1.2.5
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 +272 -196
- package/dist/LICENSE +21 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +229 -1
- package/dist/index.js.map +1 -1
- package/package.json +27 -50
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Saad Nasir
|
|
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,35 +1,38 @@
|
|
|
1
1
|
# react-confirm-lite
|
|
2
2
|
|
|
3
|
-
**A lightweight, promise-based confirm dialog for React with built-in
|
|
3
|
+
**A lightweight, promise-based confirm dialog for React with built-in styling**
|
|
4
4
|
|
|
5
5
|
✨ **Features:**
|
|
6
6
|
- Promise-based API like window.confirm
|
|
7
|
-
- Built-in
|
|
7
|
+
- Built-in styling with multiple color schemes
|
|
8
8
|
- Zero dependencies
|
|
9
9
|
- Fully customizable
|
|
10
10
|
- TypeScript support
|
|
11
11
|
- Queue system for multiple dialogs
|
|
12
|
+
- Works with Next.js App Router (no 'use client' needed)
|
|
13
|
+
- Automatic CSS injection (no separate imports needed)
|
|
12
14
|
---
|
|
13
15
|
|
|
14
|
-
##
|
|
15
|
-
-
|
|
16
|
-
- If you face any
|
|
16
|
+
## Recommendations
|
|
17
|
+
- Always use the latest version for bug fixes and improvements
|
|
18
|
+
- If you face any issues, please report them on [GitHub](https://github.com/SaadNasir-git/react-confirm-lite/issues)
|
|
19
|
+
|
|
20
|
+

|
|
17
21
|
|
|
18
22
|
## Quick Comparison
|
|
19
23
|
|
|
20
24
|
| Feature | react-confirm-lite | react-confirm | react-confirm-toast |
|
|
21
25
|
|---------|-------------------|---------------|---------------------|
|
|
22
|
-
| Built-in styling | ✅
|
|
26
|
+
| Built-in styling | ✅ Multiple color schemes | ❌ None | ✅ Toast style |
|
|
23
27
|
| Promise-based | ✅ | ✅ | ✅ |
|
|
24
28
|
| Zero dependencies | ✅ | ✅ | ✅ |
|
|
25
29
|
| Queue system | ✅ | ❌ | ❌ |
|
|
26
|
-
|
|
|
30
|
+
| Automatic CSS | ✅ No separate imports | ❌ | ❌ |
|
|
31
|
+
| Next.js App Router | ✅ Works out of the box | ❌ Needs 'use client' | ✅ |
|
|
27
32
|
|
|
28
33
|
## Why Choose react-confirm-lite?
|
|
29
34
|
|
|
30
|
-
If you
|
|
31
|
-
|
|
32
|
-

|
|
35
|
+
If you want a **simple, lightweight** confirm dialog that **just works** without any configuration, `react-confirm-lite` is perfect. No separate CSS imports, no 'use client' directives needed in Next.js App Router, and fully customizable when you need it.
|
|
33
36
|
|
|
34
37
|
## 🔗 Live Demo
|
|
35
38
|
|
|
@@ -42,263 +45,336 @@ If you're using **Tailwind CSS** and want a **simple, lightweight** confirm dial
|
|
|
42
45
|
npm install react-confirm-lite
|
|
43
46
|
```
|
|
44
47
|
|
|
45
|
-
### Step 2:
|
|
46
|
-
```
|
|
47
|
-
import { confirm, ConfirmContainer } from 'react-confirm-lite'
|
|
48
|
+
### Step 2: Import in your component:
|
|
49
|
+
```tsx
|
|
50
|
+
import { confirm, ConfirmContainer } from 'react-confirm-lite';
|
|
48
51
|
```
|
|
49
|
-
|
|
52
|
+
|
|
53
|
+
### Step 3: Add ConfirmContainer to your component tree:
|
|
50
54
|
```jsx
|
|
51
|
-
|
|
55
|
+
function App() {
|
|
56
|
+
return (
|
|
52
57
|
<>
|
|
53
58
|
<ConfirmContainer />
|
|
59
|
+
{/* Your app content */}
|
|
54
60
|
</>
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
### Step 4: Use confirm function
|
|
58
|
-
```ts
|
|
59
|
-
const main = async () => {
|
|
60
|
-
const isConfirmed = await confirm('Are you sure');
|
|
61
|
-
if (isConfirmed) {
|
|
62
|
-
console.log('you are confirmed')
|
|
63
|
-
}
|
|
64
|
-
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
65
63
|
```
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
colorSchema:'dark'
|
|
75
|
-
});
|
|
76
|
-
if (isConfirmed) {
|
|
77
|
-
console.log('you are confirmed')
|
|
78
|
-
}
|
|
64
|
+
|
|
65
|
+
### Step 4: Use the confirm function:
|
|
66
|
+
```tsx
|
|
67
|
+
const handleAction = async () => {
|
|
68
|
+
const isConfirmed = await confirm('Are you sure?');
|
|
69
|
+
if (isConfirmed) {
|
|
70
|
+
// Perform action
|
|
71
|
+
console.log('Confirmed!');
|
|
79
72
|
}
|
|
73
|
+
};
|
|
80
74
|
```
|
|
81
|
-
|
|
75
|
+
|
|
76
|
+
### Complete Example:
|
|
82
77
|
|
|
83
78
|
```tsx
|
|
84
|
-
|
|
85
|
-
import { confirm, ConfirmContainer } from 'react-confirm-lite'
|
|
79
|
+
import { confirm, ConfirmContainer } from 'react-confirm-lite';
|
|
86
80
|
|
|
87
|
-
|
|
81
|
+
function App() {
|
|
88
82
|
const handleDelete = async () => {
|
|
89
|
-
const isConfirmed = await confirm('Are you sure you want to delete?')
|
|
83
|
+
const isConfirmed = await confirm('Are you sure you want to delete this item?');
|
|
90
84
|
if (isConfirmed) {
|
|
91
|
-
//
|
|
92
|
-
console.log('Item deleted')
|
|
85
|
+
// Delete logic here
|
|
86
|
+
console.log('Item deleted');
|
|
93
87
|
}
|
|
94
|
-
}
|
|
88
|
+
};
|
|
95
89
|
|
|
96
90
|
return (
|
|
97
91
|
<div>
|
|
98
92
|
<button onClick={handleDelete}>Delete Item</button>
|
|
99
93
|
<ConfirmContainer />
|
|
100
94
|
</div>
|
|
101
|
-
)
|
|
95
|
+
);
|
|
102
96
|
}
|
|
103
97
|
```
|
|
104
|
-
## How to customize
|
|
105
|
-
If you just want to change the colorSchema then you can do this
|
|
106
|
-
```jsx
|
|
107
|
-
<ConfirmContainer defaultColorSchema='light'/>
|
|
108
|
-
```
|
|
109
|
-
There are multiple color schemas which are
|
|
110
98
|
|
|
111
|
-
|
|
112
|
-
- dark
|
|
113
|
-
- blue
|
|
114
|
-
- red
|
|
115
|
-
- green
|
|
116
|
-
- purple
|
|
99
|
+
## Advanced Usage
|
|
117
100
|
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
<p className="text-gray-500 text-center mb-6">
|
|
135
|
-
{confirm.message}
|
|
136
|
-
</p>
|
|
137
|
-
|
|
138
|
-
<div className="flex gap-3 w-full">
|
|
139
|
-
<button
|
|
140
|
-
className="flex-1 py-2 px-4 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors"
|
|
141
|
-
onClick={handleCancel}
|
|
142
|
-
>
|
|
143
|
-
{confirm.cancelText || 'Cancel'}
|
|
144
|
-
</button>
|
|
145
|
-
<button
|
|
146
|
-
className="flex-1 py-2 px-4 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"
|
|
147
|
-
onClick={handleOk}
|
|
148
|
-
>
|
|
149
|
-
{confirm.okText || 'Ok'}
|
|
150
|
-
</button>
|
|
151
|
-
</div>
|
|
152
|
-
</div>
|
|
153
|
-
)}
|
|
154
|
-
</ConfirmContainer>
|
|
155
|
-
</div>
|
|
156
|
-
)
|
|
101
|
+
### Custom Options:
|
|
102
|
+
```tsx
|
|
103
|
+
const handleCustomConfirm = async () => {
|
|
104
|
+
const isConfirmed = await confirm({
|
|
105
|
+
title: "Delete Item",
|
|
106
|
+
message: "This action cannot be undone. Are you sure?",
|
|
107
|
+
cancelText: 'No, keep it',
|
|
108
|
+
okText: 'Yes, delete',
|
|
109
|
+
colorSchema: 'red',
|
|
110
|
+
isDestructive: true
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (isConfirmed) {
|
|
114
|
+
// Delete item
|
|
115
|
+
}
|
|
116
|
+
};
|
|
157
117
|
```
|
|
158
|
-
Use `isVisible` parameter if you want your custom animation.
|
|
159
118
|
|
|
160
|
-
|
|
161
|
-
If you will directly add the ConfirmContainer in layout.tsx then it will throw an error this problem can be solve easily.
|
|
162
|
-
Make the client side component and then add the ConfirmContainer in this client side component like this.
|
|
119
|
+
### Custom Color Scheme:
|
|
163
120
|
```jsx
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const ClientSideConfirm = () => {
|
|
168
|
-
return (
|
|
169
|
-
<>
|
|
170
|
-
<ConfirmContainer />
|
|
171
|
-
</>
|
|
172
|
-
)
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export default ClientSideConfirm
|
|
121
|
+
<ConfirmContainer defaultColorSchema="light" />
|
|
122
|
+
// Available options: 'light', 'dark', 'blue', 'red', 'green', 'purple'
|
|
176
123
|
```
|
|
177
|
-
and then simply use this component in layout.tsx
|
|
178
|
-
|
|
179
|
-
## Installation
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
npm install react-confirm-lite
|
|
183
|
-
# or
|
|
184
|
-
yarn add react-confirm-lite
|
|
185
|
-
# or
|
|
186
|
-
pnpm add react-confirm-lite
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## Props
|
|
190
|
-
|
|
191
|
-
### ConfirmContainer
|
|
192
|
-
- `animationDuration` (optional): Animation duration in milliseconds. Default: `300`
|
|
193
|
-
- `defaultColorSchema` (optional): To change color schema. Default: `dark`
|
|
194
|
-
- `classes` (optional): Custom CSS classes for styling
|
|
195
|
-
- `children` (optional): Render prop for complete customization
|
|
196
124
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
## More Examples
|
|
202
|
-
|
|
203
|
-
### Custom Styling with Classes
|
|
204
|
-
```tsx
|
|
205
|
-
<ConfirmContainer
|
|
125
|
+
### Custom Styling:
|
|
126
|
+
```jsx
|
|
127
|
+
<ConfirmContainer
|
|
206
128
|
classes={{
|
|
207
|
-
overlay: "bg-black/
|
|
208
|
-
wrapper: "rounded-xl
|
|
209
|
-
title: "font-bold
|
|
129
|
+
overlay: "bg-black/50",
|
|
130
|
+
wrapper: "rounded-xl shadow-2xl",
|
|
131
|
+
title: "text-2xl font-bold",
|
|
210
132
|
message: "text-gray-600",
|
|
211
|
-
button: "px-6 py-
|
|
212
|
-
cancel: "
|
|
213
|
-
ok: "bg-
|
|
133
|
+
button: "px-6 py-3 rounded-lg font-medium",
|
|
134
|
+
cancel: "border border-gray-300 hover:bg-gray-50",
|
|
135
|
+
ok: "bg-blue-600 hover:bg-blue-700 text-white"
|
|
214
136
|
}}
|
|
215
137
|
/>
|
|
216
138
|
```
|
|
139
|
+
|
|
140
|
+
### Fully Custom UI with Render Prop:
|
|
217
141
|
```jsx
|
|
218
|
-
<ConfirmContainer>
|
|
142
|
+
<ConfirmContainer animationDuration={500}>
|
|
219
143
|
{({ isVisible, confirm, handleCancel, handleOk }) => (
|
|
220
|
-
<div className={`
|
|
221
|
-
<div className="
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
144
|
+
<div className={`modal ${isVisible ? 'show' : 'hide'}`}>
|
|
145
|
+
<div className="modal-content">
|
|
146
|
+
<h2>{confirm.title}</h2>
|
|
147
|
+
<p>{confirm.message}</p>
|
|
148
|
+
<div className="modal-actions">
|
|
149
|
+
<button onClick={handleCancel}>
|
|
150
|
+
{confirm.cancelText || 'Cancel'}
|
|
151
|
+
</button>
|
|
152
|
+
<button onClick={handleOk}>
|
|
153
|
+
{confirm.okText || 'OK'}
|
|
154
|
+
</button>
|
|
155
|
+
</div>
|
|
227
156
|
</div>
|
|
228
157
|
</div>
|
|
229
158
|
)}
|
|
230
159
|
</ConfirmContainer>
|
|
231
160
|
```
|
|
161
|
+
|
|
162
|
+
## Next.js App Router Support
|
|
163
|
+
|
|
164
|
+
Works automatically! No 'use client' directive needed for the library. The library handles everything internally.
|
|
165
|
+
|
|
166
|
+
### Server Components Example:
|
|
167
|
+
```tsx
|
|
168
|
+
// app/layout.tsx
|
|
169
|
+
import { ConfirmContainer } from 'react-confirm-lite';
|
|
170
|
+
|
|
171
|
+
export default function RootLayout({
|
|
172
|
+
children,
|
|
173
|
+
}: {
|
|
174
|
+
children: React.ReactNode;
|
|
175
|
+
}) {
|
|
176
|
+
return (
|
|
177
|
+
<html lang="en">
|
|
178
|
+
<body>
|
|
179
|
+
{children}
|
|
180
|
+
<ConfirmContainer />
|
|
181
|
+
</body>
|
|
182
|
+
</html>
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
```tsx
|
|
187
|
+
// app/page.tsx (server component)
|
|
188
|
+
import { confirm } from 'react-confirm-lite';
|
|
189
|
+
|
|
190
|
+
export default async function Page() {
|
|
191
|
+
// Server-side logic here
|
|
192
|
+
|
|
193
|
+
return (
|
|
194
|
+
<form action={async () => {
|
|
195
|
+
'use server';
|
|
196
|
+
const isConfirmed = await confirm('Are you sure?');
|
|
197
|
+
if (isConfirmed) {
|
|
198
|
+
// Server action
|
|
199
|
+
}
|
|
200
|
+
}}>
|
|
201
|
+
<button>Submit</button>
|
|
202
|
+
</form>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Client Component Example:
|
|
208
|
+
```tsx
|
|
209
|
+
'use client';
|
|
210
|
+
import { confirm, ConfirmContainer } from 'react-confirm-lite';
|
|
211
|
+
|
|
212
|
+
export default function ClientComponent() {
|
|
213
|
+
const handleClick = async () => {
|
|
214
|
+
const result = await confirm('Confirm action?');
|
|
215
|
+
if (result) {
|
|
216
|
+
// Handle confirmation
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
return (
|
|
221
|
+
<div>
|
|
222
|
+
<button onClick={handleClick}>Click me</button>
|
|
223
|
+
<ConfirmContainer />
|
|
224
|
+
</div>
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
232
229
|
## API Reference
|
|
233
230
|
|
|
234
231
|
### `confirm(message: string | ConfirmOptions): Promise<boolean>`
|
|
235
232
|
|
|
236
|
-
Displays a confirmation dialog
|
|
233
|
+
Displays a confirmation dialog. Returns a promise that resolves to `true` if confirmed, `false` if cancelled.
|
|
237
234
|
|
|
238
|
-
**
|
|
239
|
-
- `message`: String or object with `title` and `message` properties
|
|
240
|
-
**Examples:**
|
|
235
|
+
**String usage:**
|
|
241
236
|
```ts
|
|
242
|
-
|
|
243
|
-
|
|
237
|
+
await confirm('Simple message');
|
|
238
|
+
// Equivalent to: { title: 'Confirm', message: 'Simple message' }
|
|
239
|
+
```
|
|
244
240
|
|
|
245
|
-
|
|
241
|
+
**Object usage:**
|
|
242
|
+
```ts
|
|
246
243
|
await confirm({
|
|
247
244
|
title: 'Warning',
|
|
248
245
|
message: 'This action cannot be undone',
|
|
249
|
-
cancelText:'
|
|
250
|
-
okText:'
|
|
251
|
-
colorSchema:'
|
|
252
|
-
|
|
246
|
+
cancelText: 'Cancel',
|
|
247
|
+
okText: 'Delete',
|
|
248
|
+
colorSchema: 'red',
|
|
249
|
+
isDestructive: true
|
|
250
|
+
});
|
|
253
251
|
```
|
|
254
|
-
## Types
|
|
255
|
-
You can also import types which I think you may need some times these are following:
|
|
256
252
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
253
|
+
### `ConfirmContainer` Props:
|
|
254
|
+
|
|
255
|
+
| Prop | Type | Default | Description |
|
|
256
|
+
|------|------|---------|-------------|
|
|
257
|
+
| `defaultColorSchema` | `ColorSchema` | `'dark'` | Default color scheme |
|
|
258
|
+
| `animationDuration` | `number` | `300` | Animation duration in ms |
|
|
259
|
+
| `classes` | `ConfirmClasses` | `{}` | Custom CSS classes |
|
|
260
|
+
| `children` | Render function | - | For complete UI customization |
|
|
261
|
+
|
|
262
|
+
### Types:
|
|
263
|
+
```ts
|
|
264
|
+
type ColorSchema = 'light' | 'dark' | 'blue' | 'red' | 'green' | 'purple';
|
|
265
|
+
|
|
266
|
+
interface ConfirmClasses {
|
|
267
|
+
overlay?: string;
|
|
268
|
+
wrapper?: string;
|
|
269
|
+
title?: string;
|
|
270
|
+
message?: string;
|
|
271
|
+
button?: string;
|
|
272
|
+
cancel?: string;
|
|
273
|
+
ok?: string;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
interface ConfirmOptions {
|
|
277
|
+
title?: string;
|
|
278
|
+
message: string;
|
|
279
|
+
cancelText?: string;
|
|
280
|
+
okText?: string;
|
|
281
|
+
colorSchema?: ColorSchema;
|
|
282
|
+
isDestructive?: boolean;
|
|
283
|
+
}
|
|
284
|
+
```
|
|
261
285
|
|
|
262
286
|
## Troubleshooting
|
|
263
287
|
|
|
264
|
-
### Dialog not
|
|
265
|
-
Make sure
|
|
288
|
+
### ❌ Dialog not appearing?
|
|
289
|
+
- Make sure `<ConfirmContainer />` is rendered in your component tree
|
|
290
|
+
- Check that you're not conditionally rendering it in a way that unmounts it
|
|
266
291
|
|
|
267
|
-
### Multiple
|
|
268
|
-
The library
|
|
292
|
+
### ❌ Multiple dialogs overlapping?
|
|
293
|
+
- The library has a built-in queue system that handles multiple confirm requests sequentially
|
|
269
294
|
|
|
270
|
-
###
|
|
271
|
-
|
|
295
|
+
### ❌ Styling not working?
|
|
296
|
+
- If using custom classes, ensure they have proper CSS specificity
|
|
297
|
+
- Try using `!important` flag for custom styles if needed
|
|
298
|
+
- Make sure you're on the latest version
|
|
272
299
|
|
|
273
|
-
###
|
|
274
|
-
|
|
300
|
+
### ❌ Animation issues with custom UI?
|
|
301
|
+
- When using the `children` render prop, use the `isVisible` prop for animations
|
|
302
|
+
- Set appropriate `animationDuration` to match your CSS transitions
|
|
275
303
|
|
|
276
|
-
###
|
|
277
|
-
|
|
304
|
+
### ❌ Next.js hydration errors?
|
|
305
|
+
- The library is designed to work with Next.js App Router
|
|
306
|
+
- If using in a layout, ensure it's placed after dynamic content
|
|
278
307
|
|
|
279
|
-
|
|
280
|
-
This problem exists in old version so, make sure that you are using the latest version and if you are on latest version but it is not working yet then use !important flag in your css file
|
|
308
|
+
## Features in Detail
|
|
281
309
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
310
|
+
### 🎨 Multiple Color Schemes
|
|
311
|
+
Six built-in color schemes: light, dark, blue, red, green, purple. Set globally or per confirm dialog.
|
|
312
|
+
|
|
313
|
+
### 🔄 Queue System
|
|
314
|
+
Multiple confirm requests are queued and shown one at a time, preventing overlapping dialogs.
|
|
315
|
+
|
|
316
|
+
### 🎯 Zero Configuration
|
|
317
|
+
Works out of the box with default styling. No CSS imports needed.
|
|
318
|
+
|
|
319
|
+
### 🔧 Fully Customizable
|
|
320
|
+
From simple class overrides to complete UI replacement with render props.
|
|
321
|
+
|
|
322
|
+
### 📱 Responsive Design
|
|
323
|
+
Built-in responsive styling that works on all screen sizes.
|
|
324
|
+
|
|
325
|
+
### 🔒 Type Safety
|
|
326
|
+
Full TypeScript support with comprehensive type definitions.
|
|
327
|
+
|
|
328
|
+
## Performance
|
|
329
|
+
|
|
330
|
+
- **Zero dependencies**: Only React as a peer dependency
|
|
331
|
+
- **Tree-shakeable**: Only imports what you use
|
|
332
|
+
- **Small bundle size**: ~5KB gzipped (including styles)
|
|
333
|
+
- **Optimized renders**: Minimal re-renders with React.memo
|
|
334
|
+
|
|
335
|
+
## Migration from Older Versions
|
|
336
|
+
|
|
337
|
+
If you're upgrading from version <1.3.0:
|
|
338
|
+
|
|
339
|
+
1. **'use client' not needed**: The library handles this internally
|
|
340
|
+
2. **Simpler API**: Same functions, better internals
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
## Contributing
|
|
344
|
+
|
|
345
|
+
Contributions are welcome! Please:
|
|
346
|
+
|
|
347
|
+
1. Fork the repository
|
|
348
|
+
2. Create a feature branch
|
|
349
|
+
3. Add tests for your changes
|
|
350
|
+
4. Submit a pull request
|
|
287
351
|
|
|
288
352
|
## Author
|
|
289
353
|
|
|
290
|
-
|
|
354
|
+
**Saad Nasir** - Full Stack Developer
|
|
291
355
|
- GitHub: [@SaadNasir-git](https://github.com/SaadNasir-git)
|
|
292
|
-
-
|
|
293
|
-
|
|
356
|
+
- For support: Open an issue on GitHub
|
|
357
|
+
|
|
358
|
+
## License
|
|
294
359
|
|
|
295
|
-
|
|
360
|
+
MIT © Saad Nasir
|
|
296
361
|
|
|
362
|
+
---
|
|
297
363
|
|
|
298
364
|

|
|
299
365
|

|
|
300
366
|

|
|
301
367
|

|
|
302
368
|

|
|
303
|
-

|
|
370
|
+

|
|
371
|
+
|
|
372
|
+
## Support
|
|
373
|
+
|
|
374
|
+
If you find this library helpful, please consider:
|
|
375
|
+
- ⭐ Starring the repository on GitHub
|
|
376
|
+
- 📢 Sharing with your network
|
|
377
|
+
- 🐛 Reporting issues you encounter
|
|
378
|
+
- 💡 Suggesting new features
|
|
379
|
+
|
|
380
|
+
Happy coding! 🚀
|
package/dist/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Saad Nasir
|
|
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/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
1
3
|
import { ReactNode } from 'react';
|
|
2
4
|
|
|
3
5
|
type ColorSchema = 'light' | 'dark' | 'blue' | 'red' | 'green' | 'purple';
|
|
@@ -40,9 +42,8 @@ type Props = {
|
|
|
40
42
|
colorSchema: ColorSchema;
|
|
41
43
|
}) => ReactNode;
|
|
42
44
|
};
|
|
43
|
-
declare const ConfirmContainer: ({ classes, animationDuration, defaultColorSchema, children }: Props) => any;
|
|
45
|
+
declare const ConfirmContainer: ({ classes, animationDuration, defaultColorSchema, children }: Props) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
44
46
|
|
|
45
47
|
declare function confirm(input: ConfirmInput): Promise<boolean>;
|
|
46
48
|
|
|
47
|
-
export { ConfirmContainer, confirm };
|
|
48
|
-
export type { ColorSchema, ConfirmClasses, ConfirmInput, ConfirmOptions };
|
|
49
|
+
export { type ColorSchema, type ConfirmClasses, ConfirmContainer, type ConfirmInput, type ConfirmOptions, confirm };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,230 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),o=require("react");function r(e,o,r,a){return new(r||(r=Promise))(function(c,t){function n(e){try{s(a.next(e))}catch(e){t(e)}}function l(e){try{s(a.throw(e))}catch(e){t(e)}}function s(e){var o;e.done?c(e.value):(o=e.value,o instanceof r?o:new r(function(e){e(o)})).then(n,l)}s((a=a.apply(e,o||[])).next())})}function a(e,o){var r,a,c,t={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},n=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return n.next=l(0),n.throw=l(1),n.return=l(2),"function"==typeof Symbol&&(n[Symbol.iterator]=function(){return this}),n;function l(l){return function(s){return function(l){if(r)throw new TypeError("Generator is already executing.");for(;n&&(n=0,l[0]&&(t=0)),t;)try{if(r=1,a&&(c=2&l[0]?a.return:l[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,l[1])).done)return c;switch(a=0,c&&(l=[2&l[0],c.value]),l[0]){case 0:case 1:c=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,a=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(!(c=t.trys,(c=c.length>0&&c[c.length-1])||6!==l[0]&&2!==l[0])){t=0;continue}if(3===l[0]&&(!c||l[1]>c[0]&&l[1]<c[3])){t.label=l[1];break}if(6===l[0]&&t.label<c[1]){t.label=c[1],c=l;break}if(c&&t.label<c[2]){t.label=c[2],t.ops.push(l);break}c[2]&&t.ops.pop(),t.trys.pop();continue}l=o.call(e,t)}catch(e){l=[6,e],a=0}finally{r=c=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}function c(e,o,r){if(r||2===arguments.length)for(var a,c=0,t=o.length;c<t;c++)!a&&c in o||(a||(a=Array.prototype.slice.call(o,0,c)),a[c]=o[c]);return e.concat(a||Array.prototype.slice.call(o))}"function"==typeof SuppressedError&&SuppressedError;var t=[],n=new Set;function l(e){return new Promise(function(o){var r="string"==typeof e?{title:"Confirm",message:e,resolve:o}:{title:e.title||"Confirm",message:e.message,okText:e.okText,cancelText:e.cancelText,colorSchema:e.colorSchema,resolve:o};1===(t=c(c([],t,!0),[r],!1)).length&&s()})}function s(){n.forEach(function(e){return e(t)})}function i(e,o){void 0===o&&(o={});var r=o.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===r&&a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c),c.styleSheet?c.styleSheet.cssText=e:c.appendChild(document.createTextNode(e))}}i(".alert-overlay{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;align-items:center;animation:overlayFadeIn .3s ease-out forwards;backdrop-filter:blur(4px);bottom:0;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.alert-overlay-exit{animation:overlayFadeOut .3s ease-in forwards}.alert-wrapper{animation:modalSlideUp .4s cubic-bezier(.34,1.56,.64,1) forwards;border-radius:12px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04),0 0 0 1px rgba(0,0,0,.05);max-width:400px;opacity:0;padding:24px;transform:translateY(20px) scale(.98);width:90%}.alert-wrapper-exit{animation:modalSlideDown .3s ease-in forwards}.alert-title{font-size:18px;font-weight:600;line-height:1.4;margin:0 0 12px}.alert-message{font-size:14px;line-height:1.5;margin:0 0 24px}.alert-buttons{display:flex;gap:12px;justify-content:flex-end;margin-top:8px}.alert-button{border:none;border-radius:8px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;min-width:80px;padding:10px 20px;text-align:center;transition:all .2s ease}.alert-button:focus{outline-offset:2px}.alert-button:active{transform:translateY(1px)}");i("@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{0%{opacity:1}to{opacity:0}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalSlideDown{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(20px) scale(.98)}}@media (prefers-reduced-motion:reduce){.alert-button,.alert-overlay,.alert-wrapper{animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}.alert-overlay,.alert-wrapper{animation:none;opacity:1}.alert-wrapper{transform:none}}");function u(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];return e.filter(Boolean).join(" ")}i(".schema-light-overlay{background-color:rgba(0,0,0,.5)}.schema-light-wrapper{background-color:#fff;color:#111827}.schema-light-title{color:#111827}.schema-light-message{color:#6b7280}.schema-light-cancel{background-color:#f3f4f6;color:#374151;outline-color:#9ca3af}.schema-light-cancel:hover{background-color:#e5e7eb;transform:translateY(-1px)}.schema-light-cancel:active{background-color:#d1d5db}.schema-light-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-light-cancel-danger:hover{background-color:#fecaca}.schema-light-ok{background-color:#10b981;color:#fff;outline-color:#34d399}.schema-light-ok:hover{background-color:#059669;transform:translateY(-1px)}.schema-light-ok:active{background-color:#047857}.schema-light-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}.schema-light-ok-danger:hover{background-color:#dc2626}.schema-dark-overlay{background-color:rgba(0,0,0,.7)}.schema-dark-wrapper{background-color:#18181b;box-shadow:0 20px 25px -5px rgba(0,0,0,.3),0 10px 10px -5px rgba(0,0,0,.2),0 0 0 1px hsla(0,0%,100%,.1);color:#f4f4f5}.schema-dark-title{color:#f4f4f5}.schema-dark-message{color:#a1a1aa}.schema-dark-cancel{background-color:#27272a;color:#e4e4e7;outline-color:#71717a}.schema-dark-cancel:hover{background-color:#3f3f46;transform:translateY(-1px)}.schema-dark-cancel:active{background-color:#52525b}.schema-dark-cancel-danger{background-color:#7f1d1d;color:#fecaca;outline-color:#ef4444}.schema-dark-cancel-danger:hover{background-color:#991b1b}.schema-dark-ok{background-color:#10b981;color:#fff;outline-color:#34d399}.schema-dark-ok:hover{background-color:#059669;transform:translateY(-1px)}.schema-dark-ok:active{background-color:#047857}.schema-dark-ok-danger{background-color:#dc2626;color:#fff;outline-color:#ef4444}.schema-dark-ok-danger:hover{background-color:#b91c1c}.schema-blue-overlay{background-color:rgba(59,130,246,.3)}.schema-blue-wrapper{background-color:#eff6ff;box-shadow:0 20px 25px -5px rgba(59,130,246,.15),0 10px 10px -5px rgba(59,130,246,.1),0 0 0 1px rgba(59,130,246,.1);color:#1e3a8a}.schema-blue-title{color:#1e3a8a}.schema-blue-message{color:#3b82f6}.schema-blue-cancel{background-color:#dbeafe;color:#1e40af;outline-color:#60a5fa}.schema-blue-cancel:hover{background-color:#bfdbfe;transform:translateY(-1px)}.schema-blue-cancel:active{background-color:#93c5fd}.schema-blue-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-blue-ok{background-color:#3b82f6;color:#fff;outline-color:#60a5fa}.schema-blue-ok:hover{background-color:#2563eb;transform:translateY(-1px)}.schema-blue-ok:active{background-color:#1d4ed8}.schema-blue-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}.schema-red-overlay{background-color:rgba(220,38,38,.2)}.schema-red-wrapper{background-color:#fef2f2;box-shadow:0 20px 25px -5px rgba(220,38,38,.15),0 10px 10px -5px rgba(220,38,38,.1),0 0 0 1px rgba(220,38,38,.1);color:#7f1d1d}.schema-red-title{color:#7f1d1d}.schema-red-message{color:#ef4444}.schema-red-cancel{background-color:#fecaca;color:#991b1b;outline-color:#f87171}.schema-red-cancel:hover{background-color:#fca5a5;transform:translateY(-1px)}.schema-red-cancel:active{background-color:#f87171}.schema-red-ok{background-color:#dc2626;color:#fff;outline-color:#ef4444}.schema-red-ok:hover{background-color:#b91c1c;transform:translateY(-1px)}.schema-red-ok-danger,.schema-red-ok:active{background-color:#991b1b}.schema-red-ok-danger{color:#fff;outline-color:#dc2626}.schema-green-overlay{background-color:rgba(16,185,129,.2)}.schema-green-wrapper{background-color:#ecfdf5;box-shadow:0 20px 25px -5px rgba(16,185,129,.15),0 10px 10px -5px rgba(16,185,129,.1),0 0 0 1px rgba(16,185,129,.1);color:#064e3b}.schema-green-title{color:#064e3b}.schema-green-message{color:#10b981}.schema-green-cancel{background-color:#d1fae5;color:#047857;outline-color:#34d399}.schema-green-cancel:hover{background-color:#a7f3d0;transform:translateY(-1px)}.schema-green-cancel:active{background-color:#6ee7b7}.schema-green-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-green-ok{background-color:#10b981;color:#fff;outline-color:#34d399}.schema-green-ok:hover{background-color:#059669;transform:translateY(-1px)}.schema-green-ok:active{background-color:#047857}.schema-green-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}.schema-purple-overlay{background-color:rgba(139,92,246,.2)}.schema-purple-wrapper{background-color:#f5f3ff;box-shadow:0 20px 25px -5px rgba(139,92,246,.15),0 10px 10px -5px rgba(139,92,246,.1),0 0 0 1px rgba(139,92,246,.1);color:#5b21b6}.schema-purple-title{color:#5b21b6}.schema-purple-message{color:#8b5cf6}.schema-purple-cancel{background-color:#ede9fe;color:#6d28d9;outline-color:#a78bfa}.schema-purple-cancel:hover{background-color:#ddd6fe;transform:translateY(-1px)}.schema-purple-cancel:active{background-color:#c4b5fd}.schema-purple-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-purple-ok{background-color:#8b5cf6;color:#fff;outline-color:#a78bfa}.schema-purple-ok:hover{background-color:#7c3aed;transform:translateY(-1px)}.schema-purple-ok:active{background-color:#6d28d9}.schema-purple-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}");exports.ConfirmContainer=function(r){var a=r.classes,c=void 0===a?{}:a,l=r.animationDuration,i=void 0===l?300:l,f=r.defaultColorSchema,d=void 0===f?"dark":f,b=r.children,p=o.useState([]),m=p[0],h=p[1],g=o.useState(!1),k=g[0],x=g[1],v=o.useState(null),y=v[0],w=v[1],S=o.useState(!1),Y=S[0],C=S[1],j=o.useRef(null);o.useEffect(function(){var e;e=function(e){h(e)},n.add(e),e(t)},[]),o.useEffect(function(){m.length>0&&!y?w(m[0]):m.length>0&&y&&m[0]!==y?(requestAnimationFrame(function(){x(!1)}),setTimeout(function(){w(m[0])},i)):0===m.length&&y&&(requestAnimationFrame(function(){x(!1)}),setTimeout(function(){w(null)},i))},[m,i]),o.useEffect(function(){y?C(!0):y||C(!1),y&&!b?x(!0):y&&b&&requestAnimationFrame(function(){x(!0)})},[y,b]);var T=o.useCallback(function(e){var o,r;o=e,(r=t[0])&&(r.resolve(o),t=t.slice(1),s())},[]),N=o.useCallback(function(){return T(!1)},[T]),E=o.useCallback(function(){return T(!0)},[T]);if(!y&&!k)return null;if(!y)return null;if(y&&!Y)return null;var F=y.colorSchema||d;if(b)return b({isVisible:k,confirm:y,handleCancel:N,handleOk:E,colorSchema:F});var O="schema-".concat(F);return e.jsx("div",{ref:j,className:u("alert-overlay",k?"":"alert-overlay-exit","".concat(O,"-overlay"),c.overlay),children:e.jsxs("div",{className:u("alert-wrapper",k?"":"alert-wrapper-exit","".concat(O,"-wrapper"),c.wrapper),children:[e.jsx("h2",{className:u("alert-title","".concat(O,"-title"),c.title),children:y.title}),e.jsx("p",{className:u("alert-message","".concat(O,"-message"),c.message),children:y.message}),e.jsxs("div",{className:"alert-buttons",children:[e.jsx("button",{onClick:N,disabled:!k,className:u("alert-button alert-button-cancel","".concat(O,"-cancel"),y.isDestructive?"".concat(O,"-cancel-danger"):"",c.button,c.cancel),children:y.cancelText||"Cancel"}),e.jsx("button",{onClick:E,disabled:!k,className:u("alert-button alert-button-ok","".concat(O,"-ok"),y.isDestructive?"".concat(O,"-ok-danger"):"",c.button,c.ok),children:y.okText||"OK"})]})]})})},exports.confirm=function(e){return r(this,void 0,void 0,function(){return a(this,function(o){switch(o.label){case 0:return[4,l(e)];case 1:return[2,o.sent()]}})})};
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
3
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/confirm_store.ts
|
|
6
|
+
var confirms = [];
|
|
7
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
8
|
+
function addAlert(input) {
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
const alert = typeof input === "string" ? {
|
|
11
|
+
title: "Confirm",
|
|
12
|
+
message: input,
|
|
13
|
+
resolve
|
|
14
|
+
} : {
|
|
15
|
+
title: input.title || "Confirm",
|
|
16
|
+
message: input.message,
|
|
17
|
+
okText: input.okText,
|
|
18
|
+
cancelText: input.cancelText,
|
|
19
|
+
colorSchema: input.colorSchema,
|
|
20
|
+
resolve
|
|
21
|
+
};
|
|
22
|
+
confirms = [...confirms, alert];
|
|
23
|
+
if (confirms.length === 1) {
|
|
24
|
+
emit();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function closeAlert(result) {
|
|
29
|
+
const alert = confirms[0];
|
|
30
|
+
if (!alert) return;
|
|
31
|
+
alert.resolve(result);
|
|
32
|
+
confirms = confirms.slice(1);
|
|
33
|
+
emit();
|
|
34
|
+
}
|
|
35
|
+
function subscribe(listener) {
|
|
36
|
+
listeners.add(listener);
|
|
37
|
+
listener(confirms);
|
|
38
|
+
return () => listeners.delete(listener);
|
|
39
|
+
}
|
|
40
|
+
function emit() {
|
|
41
|
+
listeners.forEach((listener) => listener(confirms));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/confirm.css
|
|
45
|
+
var confirm_default = "/* confirm.css */\n.alert-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n animation: overlayFadeIn 0.3s ease-out forwards;\n}\n\n.alert-overlay-exit {\n animation: overlayFadeOut 0.3s ease-in forwards;\n}\n\n.alert-wrapper {\n width: 90%;\n max-width: 400px;\n border-radius: 12px;\n padding: 24px;\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n animation: modalSlideUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n opacity: 0;\n transform: translateY(20px) scale(0.98);\n}\n\n.alert-wrapper-exit {\n animation: modalSlideDown 0.3s ease-in forwards;\n}\n\n.alert-title {\n font-size: 18px;\n font-weight: 600;\n line-height: 1.4;\n margin: 0 0 12px 0;\n}\n\n.alert-message {\n font-size: 14px;\n line-height: 1.5;\n margin: 0 0 24px 0;\n}\n\n.alert-buttons {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n margin-top: 8px;\n}\n\n.alert-button {\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n border: none;\n cursor: pointer;\n font-family: inherit;\n transition: all 0.2s ease;\n min-width: 80px;\n text-align: center;\n}\n\n.alert-button:focus {\n outline-offset: 2px;\n}\n\n.alert-button:active {\n transform: translateY(1px);\n}";
|
|
46
|
+
|
|
47
|
+
// src/animations.css
|
|
48
|
+
var animations_default = "/* Animation Keyframes */\n@keyframes overlayFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes overlayFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalSlideUp {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalSlideDown {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateY(20px) scale(0.98);\n }\n}\n\n/* Accessibility: Reduce motion */\n@media (prefers-reduced-motion: reduce) {\n .alert-overlay,\n .alert-wrapper,\n .alert-button {\n animation-duration: 0.01ms;\n animation-iteration-count: 1;\n transition-duration: 0.01ms;\n }\n \n .alert-overlay {\n animation: none;\n opacity: 1;\n }\n \n .alert-wrapper {\n animation: none;\n opacity: 1;\n transform: none;\n }\n}";
|
|
49
|
+
|
|
50
|
+
// src/colorSchemas.css
|
|
51
|
+
var colorSchemas_default = "/* ========== LIGHT SCHEMA (Default) ========== */\n.schema-light-overlay {\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.schema-light-wrapper {\n background-color: #ffffff;\n color: #111827;\n}\n\n.schema-light-title {\n color: #111827;\n}\n\n.schema-light-message {\n color: #6b7280;\n}\n\n.schema-light-cancel {\n background-color: #f3f4f6;\n color: #374151;\n outline-color: #9ca3af;\n}\n\n.schema-light-cancel:hover {\n background-color: #e5e7eb;\n transform: translateY(-1px);\n}\n\n.schema-light-cancel:active {\n background-color: #d1d5db;\n}\n\n.schema-light-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-light-cancel-danger:hover {\n background-color: #fecaca;\n}\n\n.schema-light-ok {\n background-color: #10b981;\n color: #ffffff;\n outline-color: #34d399;\n}\n\n.schema-light-ok:hover {\n background-color: #059669;\n transform: translateY(-1px);\n}\n\n.schema-light-ok:active {\n background-color: #047857;\n}\n\n.schema-light-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n\n.schema-light-ok-danger:hover {\n background-color: #dc2626;\n}\n\n/* ========== DARK SCHEMA ========== */\n.schema-dark-overlay {\n background-color: rgba(0, 0, 0, 0.7);\n}\n\n.schema-dark-wrapper {\n background-color: #18181b;\n color: #f4f4f5;\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.3),\n 0 10px 10px -5px rgba(0, 0, 0, 0.2),\n 0 0 0 1px rgba(255, 255, 255, 0.1);\n}\n\n.schema-dark-title {\n color: #f4f4f5;\n}\n\n.schema-dark-message {\n color: #a1a1aa;\n}\n\n.schema-dark-cancel {\n background-color: #27272a;\n color: #e4e4e7;\n outline-color: #71717a;\n}\n\n.schema-dark-cancel:hover {\n background-color: #3f3f46;\n transform: translateY(-1px);\n}\n\n.schema-dark-cancel:active {\n background-color: #52525b;\n}\n\n.schema-dark-cancel-danger {\n background-color: #7f1d1d;\n color: #fecaca;\n outline-color: #ef4444;\n}\n\n.schema-dark-cancel-danger:hover {\n background-color: #991b1b;\n}\n\n.schema-dark-ok {\n background-color: #10b981;\n color: #ffffff;\n outline-color: #34d399;\n}\n\n.schema-dark-ok:hover {\n background-color: #059669;\n transform: translateY(-1px);\n}\n\n.schema-dark-ok:active {\n background-color: #047857;\n}\n\n.schema-dark-ok-danger {\n background-color: #dc2626;\n color: #ffffff;\n outline-color: #ef4444;\n}\n\n.schema-dark-ok-danger:hover {\n background-color: #b91c1c;\n}\n\n/* ========== BLUE SCHEMA ========== */\n.schema-blue-overlay {\n background-color: rgba(59, 130, 246, 0.3);\n}\n\n.schema-blue-wrapper {\n background-color: #eff6ff;\n color: #1e3a8a;\n box-shadow: \n 0 20px 25px -5px rgba(59, 130, 246, 0.15),\n 0 10px 10px -5px rgba(59, 130, 246, 0.1),\n 0 0 0 1px rgba(59, 130, 246, 0.1);\n}\n\n.schema-blue-title {\n color: #1e3a8a;\n}\n\n.schema-blue-message {\n color: #3b82f6;\n}\n\n.schema-blue-cancel {\n background-color: #dbeafe;\n color: #1e40af;\n outline-color: #60a5fa;\n}\n\n.schema-blue-cancel:hover {\n background-color: #bfdbfe;\n transform: translateY(-1px);\n}\n\n.schema-blue-cancel:active {\n background-color: #93c5fd;\n}\n\n.schema-blue-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-blue-ok {\n background-color: #3b82f6;\n color: #ffffff;\n outline-color: #60a5fa;\n}\n\n.schema-blue-ok:hover {\n background-color: #2563eb;\n transform: translateY(-1px);\n}\n\n.schema-blue-ok:active {\n background-color: #1d4ed8;\n}\n\n.schema-blue-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n\n/* ========== RED SCHEMA ========== */\n.schema-red-overlay {\n background-color: rgba(220, 38, 38, 0.2);\n}\n\n.schema-red-wrapper {\n background-color: #fef2f2;\n color: #7f1d1d;\n box-shadow: \n 0 20px 25px -5px rgba(220, 38, 38, 0.15),\n 0 10px 10px -5px rgba(220, 38, 38, 0.1),\n 0 0 0 1px rgba(220, 38, 38, 0.1);\n}\n\n.schema-red-title {\n color: #7f1d1d;\n}\n\n.schema-red-message {\n color: #ef4444;\n}\n\n.schema-red-cancel {\n background-color: #fecaca;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-red-cancel:hover {\n background-color: #fca5a5;\n transform: translateY(-1px);\n}\n\n.schema-red-cancel:active {\n background-color: #f87171;\n}\n\n.schema-red-ok {\n background-color: #dc2626;\n color: #ffffff;\n outline-color: #ef4444;\n}\n\n.schema-red-ok:hover {\n background-color: #b91c1c;\n transform: translateY(-1px);\n}\n\n.schema-red-ok:active {\n background-color: #991b1b;\n}\n\n.schema-red-ok-danger {\n background-color: #991b1b;\n color: #ffffff;\n outline-color: #dc2626;\n}\n\n/* ========== GREEN SCHEMA ========== */\n.schema-green-overlay {\n background-color: rgba(16, 185, 129, 0.2);\n}\n\n.schema-green-wrapper {\n background-color: #ecfdf5;\n color: #064e3b;\n box-shadow: \n 0 20px 25px -5px rgba(16, 185, 129, 0.15),\n 0 10px 10px -5px rgba(16, 185, 129, 0.1),\n 0 0 0 1px rgba(16, 185, 129, 0.1);\n}\n\n.schema-green-title {\n color: #064e3b;\n}\n\n.schema-green-message {\n color: #10b981;\n}\n\n.schema-green-cancel {\n background-color: #d1fae5;\n color: #047857;\n outline-color: #34d399;\n}\n\n.schema-green-cancel:hover {\n background-color: #a7f3d0;\n transform: translateY(-1px);\n}\n\n.schema-green-cancel:active {\n background-color: #6ee7b7;\n}\n\n.schema-green-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-green-ok {\n background-color: #10b981;\n color: #ffffff;\n outline-color: #34d399;\n}\n\n.schema-green-ok:hover {\n background-color: #059669;\n transform: translateY(-1px);\n}\n\n.schema-green-ok:active {\n background-color: #047857;\n}\n\n.schema-green-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n\n/* ========== PURPLE SCHEMA ========== */\n.schema-purple-overlay {\n background-color: rgba(139, 92, 246, 0.2);\n}\n\n.schema-purple-wrapper {\n background-color: #f5f3ff;\n color: #5b21b6;\n box-shadow: \n 0 20px 25px -5px rgba(139, 92, 246, 0.15),\n 0 10px 10px -5px rgba(139, 92, 246, 0.1),\n 0 0 0 1px rgba(139, 92, 246, 0.1);\n}\n\n.schema-purple-title {\n color: #5b21b6;\n}\n\n.schema-purple-message {\n color: #8b5cf6;\n}\n\n.schema-purple-cancel {\n background-color: #ede9fe;\n color: #6d28d9;\n outline-color: #a78bfa;\n}\n\n.schema-purple-cancel:hover {\n background-color: #ddd6fe;\n transform: translateY(-1px);\n}\n\n.schema-purple-cancel:active {\n background-color: #c4b5fd;\n}\n\n.schema-purple-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-purple-ok {\n background-color: #8b5cf6;\n color: #ffffff;\n outline-color: #a78bfa;\n}\n\n.schema-purple-ok:hover {\n background-color: #7c3aed;\n transform: translateY(-1px);\n}\n\n.schema-purple-ok:active {\n background-color: #6d28d9;\n}\n\n.schema-purple-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n";
|
|
52
|
+
|
|
53
|
+
// src/bundle-css.ts
|
|
54
|
+
var ALL_CSS = `${confirm_default}
|
|
55
|
+
${animations_default}
|
|
56
|
+
${colorSchemas_default}`;
|
|
57
|
+
var stylesInjected = false;
|
|
58
|
+
function ensureStyles() {
|
|
59
|
+
if (typeof document === "undefined") {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (stylesInjected) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const style = document.createElement("style");
|
|
66
|
+
style.setAttribute("data-react-confirm-lite", "");
|
|
67
|
+
style.textContent = ALL_CSS;
|
|
68
|
+
document.head.appendChild(style);
|
|
69
|
+
stylesInjected = true;
|
|
70
|
+
console.log("React Confirm Lite: Styles injected");
|
|
71
|
+
}
|
|
72
|
+
function cx(...classes) {
|
|
73
|
+
return classes.filter(Boolean).join(" ");
|
|
74
|
+
}
|
|
75
|
+
var ConfirmContainer = ({
|
|
76
|
+
classes = {},
|
|
77
|
+
animationDuration = 300,
|
|
78
|
+
defaultColorSchema = "dark",
|
|
79
|
+
children
|
|
80
|
+
}) => {
|
|
81
|
+
const [alerts, setAlerts] = useState([]);
|
|
82
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
83
|
+
const [currentAlert, setCurrentAlert] = useState(null);
|
|
84
|
+
const [isAnimating, setisAnimating] = useState(false);
|
|
85
|
+
const overlayRef = useRef(null);
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
subscribe((newAlerts) => {
|
|
88
|
+
setAlerts(newAlerts);
|
|
89
|
+
});
|
|
90
|
+
}, []);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
ensureStyles();
|
|
93
|
+
}, []);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (alerts.length > 0 && !currentAlert) {
|
|
96
|
+
setCurrentAlert(alerts[0]);
|
|
97
|
+
} else if (alerts.length > 0 && currentAlert && alerts[0] !== currentAlert) {
|
|
98
|
+
requestAnimationFrame(() => {
|
|
99
|
+
setIsVisible(false);
|
|
100
|
+
});
|
|
101
|
+
setTimeout(() => {
|
|
102
|
+
setCurrentAlert(alerts[0]);
|
|
103
|
+
}, animationDuration);
|
|
104
|
+
} else if (alerts.length === 0 && currentAlert) {
|
|
105
|
+
requestAnimationFrame(() => {
|
|
106
|
+
setIsVisible(false);
|
|
107
|
+
});
|
|
108
|
+
setTimeout(() => {
|
|
109
|
+
setCurrentAlert(null);
|
|
110
|
+
}, animationDuration);
|
|
111
|
+
}
|
|
112
|
+
}, [alerts, animationDuration]);
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
if (currentAlert) {
|
|
115
|
+
setisAnimating(true);
|
|
116
|
+
} else if (!currentAlert) {
|
|
117
|
+
setisAnimating(false);
|
|
118
|
+
}
|
|
119
|
+
if (currentAlert && !children) {
|
|
120
|
+
setIsVisible(true);
|
|
121
|
+
} else if (currentAlert && children) {
|
|
122
|
+
requestAnimationFrame(() => {
|
|
123
|
+
setIsVisible(true);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}, [currentAlert, children]);
|
|
127
|
+
const handleClose = useCallback((value) => {
|
|
128
|
+
closeAlert(value);
|
|
129
|
+
}, []);
|
|
130
|
+
const handleCancel = useCallback(() => handleClose(false), [handleClose]);
|
|
131
|
+
const handleOk = useCallback(() => handleClose(true), [handleClose]);
|
|
132
|
+
if (!currentAlert && !isVisible) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (!currentAlert) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
if (currentAlert && !isAnimating) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
const colorSchema = currentAlert.colorSchema || defaultColorSchema;
|
|
142
|
+
if (children) {
|
|
143
|
+
return children({
|
|
144
|
+
isVisible,
|
|
145
|
+
confirm: currentAlert,
|
|
146
|
+
handleCancel,
|
|
147
|
+
handleOk,
|
|
148
|
+
colorSchema
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const schemaClass = `schema-${colorSchema}`;
|
|
152
|
+
return /* @__PURE__ */ jsx(
|
|
153
|
+
"div",
|
|
154
|
+
{
|
|
155
|
+
ref: overlayRef,
|
|
156
|
+
className: cx(
|
|
157
|
+
"alert-overlay",
|
|
158
|
+
!isVisible ? "alert-overlay-exit" : "",
|
|
159
|
+
`${schemaClass}-overlay`,
|
|
160
|
+
classes.overlay
|
|
161
|
+
),
|
|
162
|
+
children: /* @__PURE__ */ jsxs(
|
|
163
|
+
"div",
|
|
164
|
+
{
|
|
165
|
+
className: cx(
|
|
166
|
+
"alert-wrapper",
|
|
167
|
+
!isVisible ? "alert-wrapper-exit" : "",
|
|
168
|
+
`${schemaClass}-wrapper`,
|
|
169
|
+
classes.wrapper
|
|
170
|
+
),
|
|
171
|
+
children: [
|
|
172
|
+
/* @__PURE__ */ jsx("h2", { className: cx(
|
|
173
|
+
"alert-title",
|
|
174
|
+
`${schemaClass}-title`,
|
|
175
|
+
classes.title
|
|
176
|
+
), children: currentAlert.title }),
|
|
177
|
+
/* @__PURE__ */ jsx("p", { className: cx(
|
|
178
|
+
"alert-message",
|
|
179
|
+
`${schemaClass}-message`,
|
|
180
|
+
classes.message
|
|
181
|
+
), children: currentAlert.message }),
|
|
182
|
+
/* @__PURE__ */ jsxs("div", { className: "alert-buttons", children: [
|
|
183
|
+
/* @__PURE__ */ jsx(
|
|
184
|
+
"button",
|
|
185
|
+
{
|
|
186
|
+
onClick: handleCancel,
|
|
187
|
+
disabled: !isVisible,
|
|
188
|
+
className: cx(
|
|
189
|
+
"alert-button alert-button-cancel",
|
|
190
|
+
`${schemaClass}-cancel`,
|
|
191
|
+
currentAlert.isDestructive ? `${schemaClass}-cancel-danger` : "",
|
|
192
|
+
classes.button,
|
|
193
|
+
classes.cancel
|
|
194
|
+
),
|
|
195
|
+
children: currentAlert.cancelText || "Cancel"
|
|
196
|
+
}
|
|
197
|
+
),
|
|
198
|
+
/* @__PURE__ */ jsx(
|
|
199
|
+
"button",
|
|
200
|
+
{
|
|
201
|
+
onClick: handleOk,
|
|
202
|
+
disabled: !isVisible,
|
|
203
|
+
className: cx(
|
|
204
|
+
"alert-button alert-button-ok",
|
|
205
|
+
`${schemaClass}-ok`,
|
|
206
|
+
currentAlert.isDestructive ? `${schemaClass}-ok-danger` : "",
|
|
207
|
+
classes.button,
|
|
208
|
+
classes.ok
|
|
209
|
+
),
|
|
210
|
+
children: currentAlert.okText || "OK"
|
|
211
|
+
}
|
|
212
|
+
)
|
|
213
|
+
] })
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
)
|
|
217
|
+
}
|
|
218
|
+
);
|
|
219
|
+
};
|
|
220
|
+
var confirmContainer_default = ConfirmContainer;
|
|
221
|
+
|
|
222
|
+
// src/confirm.ts
|
|
223
|
+
async function confirm(input) {
|
|
224
|
+
const result = await addAlert(input);
|
|
225
|
+
return result;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export { confirmContainer_default as ConfirmContainer, confirm };
|
|
2
229
|
//# sourceMappingURL=index.js.map
|
|
230
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../../src/confirm_store.ts","../node_modules/style-inject/dist/style-inject.es.js","../../src/confirmContainer.tsx","../../src/confirm.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import type { ConfirmOptions, ConfirmInput } from \"./types\";\n\ntype Listener = (alerts: ConfirmOptions[]) => void;\n\nlet confirms: ConfirmOptions[] = [];\nlet listeners = new Set<Listener>();\n\nexport function addAlert(input: ConfirmInput): Promise<boolean> {\n return new Promise((resolve) => {\n const alert: ConfirmOptions =\n typeof input === \"string\"\n ? {\n title: \"Confirm\",\n message: input,\n resolve\n }\n : {\n title: input.title || \"Confirm\",\n message: input.message,\n okText: input.okText,\n cancelText: input.cancelText,\n colorSchema: input.colorSchema,\n resolve\n };\n\n // Add to queue - don't replace!\n confirms = [...confirms, alert];\n \n // Only emit if this is the first/only alert\n if (confirms.length === 1) {\n emit();\n }\n });\n}\n\nexport function closeAlert(result: boolean) {\n const alert = confirms[0];\n if (!alert) return;\n\n // Resolve current alert\n alert.resolve(result);\n \n // Remove from queue\n confirms = confirms.slice(1);\n \n emit()\n}\n\nexport function subscribe(listener: Listener) {\n listeners.add(listener);\n listener(confirms);\n return () => listeners.delete(listener);\n}\n\nexport function emit() {\n listeners.forEach((listener) => listener(confirms));\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useEffect, useState, useCallback, useRef, type ReactNode } from \"react\";\nimport { subscribe, closeAlert } from \"./confirm_store\";\nimport type { ConfirmClasses, ConfirmOptions, ColorSchema } from \"./types\";\nimport \"./confirm.css\";\nimport './animations.css'\nimport './colorSchemas.css'\n\nfunction cx(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(\" \");\n}\n\ntype Props = {\n classes?: ConfirmClasses;\n animationDuration?: number;\n defaultColorSchema?: ColorSchema;\n children?: (props: {\n isVisible: boolean;\n confirm: ConfirmOptions;\n handleCancel: () => void;\n handleOk: () => void;\n colorSchema: ColorSchema;\n }) => ReactNode;\n};\n\nconst ConfirmContainer = ({\n classes = {},\n animationDuration = 300,\n defaultColorSchema = 'dark',\n children\n}: Props) => {\n const [alerts, setAlerts] = useState<ConfirmOptions[]>([]);\n const [isVisible, setIsVisible] = useState(false);\n const [currentAlert, setCurrentAlert] = useState<ConfirmOptions | null>(null);\n const [isAnimating, setisAnimating] = useState(false)\n const overlayRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n subscribe((newAlerts) => {\n setAlerts(newAlerts);\n });\n }, []);\n\n useEffect(() => {\n if (alerts.length > 0 && !currentAlert) {\n setCurrentAlert(alerts[0]);\n } else if (alerts.length > 0 && currentAlert && alerts[0] !== currentAlert) {\n requestAnimationFrame(() => {\n setIsVisible(false);\n });\n setTimeout(() => {\n setCurrentAlert(alerts[0]);\n }, animationDuration);\n } else if (alerts.length === 0 && currentAlert) {\n requestAnimationFrame(() => {\n setIsVisible(false);\n });\n setTimeout(() => {\n setCurrentAlert(null);\n }, animationDuration);\n }\n }, [alerts, animationDuration]);\n\n useEffect(() => {\n if (currentAlert) {\n setisAnimating(true)\n } else if (!currentAlert) {\n setisAnimating(false)\n }\n if (currentAlert && !children) {\n setIsVisible(true);\n } else if (currentAlert && children) {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }\n }, [currentAlert, children])\n\n const handleClose = useCallback((value: boolean) => {\n closeAlert(value);\n }, []);\n\n const handleCancel = useCallback(() => handleClose(false), [handleClose]);\n const handleOk = useCallback(() => handleClose(true), [handleClose]);\n\n if (!currentAlert && !isVisible) {\n return null;\n }\n\n if (!currentAlert) {\n return null\n }\n\n if (currentAlert && !isAnimating) {\n return null\n }\n\n const colorSchema = currentAlert.colorSchema || defaultColorSchema;\n\n if (children) {\n return children({\n isVisible,\n confirm: currentAlert,\n handleCancel,\n handleOk,\n colorSchema\n });\n }\n\n const schemaClass = `schema-${colorSchema}`;\n\n return (\n <div\n ref={overlayRef}\n className={cx(\n \"alert-overlay\",\n !isVisible ? \"alert-overlay-exit\" : '',\n `${schemaClass}-overlay`,\n classes.overlay\n )}\n >\n <div\n className={cx(\n \"alert-wrapper\",\n !isVisible ? \"alert-wrapper-exit\" : '',\n `${schemaClass}-wrapper`,\n classes.wrapper\n )}\n >\n <h2 className={cx(\n \"alert-title\",\n `${schemaClass}-title`,\n classes.title\n )}>\n {currentAlert.title}\n </h2>\n <p className={cx(\n \"alert-message\",\n `${schemaClass}-message`,\n classes.message\n )}>\n {currentAlert.message}\n </p>\n <div className=\"alert-buttons\">\n <button\n onClick={handleCancel}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-cancel\",\n `${schemaClass}-cancel`,\n currentAlert.isDestructive ? `${schemaClass}-cancel-danger` : '',\n classes.button,\n classes.cancel\n )}\n >\n {currentAlert.cancelText || 'Cancel'}\n </button>\n <button\n onClick={handleOk}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-ok\",\n `${schemaClass}-ok`,\n currentAlert.isDestructive ? `${schemaClass}-ok-danger` : '',\n classes.button,\n classes.ok\n )}\n >\n {currentAlert.okText || 'OK'}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ConfirmContainer;","import { addAlert } from \"./confirm_store\";\nimport type { ConfirmInput } from \"./types\";\n\nexport async function confirm(input: ConfirmInput): Promise<boolean> {\n const result = await addAlert(input);\n return result;\n}"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","_","label","sent","trys","ops","g","Object","create","Iterator","prototype","verb","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__spreadArray","to","from","pack","arguments","ar","i","l","Array","slice","concat","SuppressedError","confirms","listeners","Set","addAlert","input","alert","title","message","okText","cancelText","colorSchema","emit","forEach","listener","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","cx","classes","_i","filter","Boolean","join","_a","_b","_c","animationDuration","_d","defaultColorSchema","children","_e","useState","alerts","setAlerts","_f","isVisible","setIsVisible","_g","currentAlert","setCurrentAlert","_h","isAnimating","setisAnimating","overlayRef","useRef","useEffect","newAlerts","add","requestAnimationFrame","setTimeout","handleClose","useCallback","handleCancel","handleOk","confirm","schemaClass","_jsx","className","overlay","_jsxs","wrapper","onClick","disabled","isDestructive","button","cancel","ok"],"mappings":"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","x_google_ignoreList":[0,2]}
|
|
1
|
+
{"version":3,"sources":["../src/confirm_store.ts","../src/confirm.css","../src/animations.css","../src/colorSchemas.css","../src/bundle-css.ts","../src/confirmContainer.tsx","../src/confirm.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { ConfirmOptions, ConfirmInput } from \"./types\";\n\ntype Listener = (alerts: ConfirmOptions[]) => void;\n\nlet confirms: ConfirmOptions[] = [];\nlet listeners = new Set<Listener>();\n\nexport function addAlert(input: ConfirmInput): Promise<boolean> {\n return new Promise((resolve) => {\n const alert: ConfirmOptions =\n typeof input === \"string\"\n ? {\n title: \"Confirm\",\n message: input,\n resolve\n }\n : {\n title: input.title || \"Confirm\",\n message: input.message,\n okText: input.okText,\n cancelText: input.cancelText,\n colorSchema: input.colorSchema,\n resolve\n };\n\n // Add to queue - don't replace!\n confirms = [...confirms, alert];\n \n // Only emit if this is the first/only alert\n if (confirms.length === 1) {\n emit();\n }\n });\n}\n\nexport function closeAlert(result: boolean) {\n const alert = confirms[0];\n if (!alert) return;\n\n // Resolve current alert\n alert.resolve(result);\n \n // Remove from queue\n confirms = confirms.slice(1);\n \n emit()\n}\n\nexport function subscribe(listener: Listener) {\n listeners.add(listener);\n listener(confirms);\n return () => listeners.delete(listener);\n}\n\nexport function emit() {\n listeners.forEach((listener) => listener(confirms));\n}","/* confirm.css */\n.alert-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n animation: overlayFadeIn 0.3s ease-out forwards;\n}\n\n.alert-overlay-exit {\n animation: overlayFadeOut 0.3s ease-in forwards;\n}\n\n.alert-wrapper {\n width: 90%;\n max-width: 400px;\n border-radius: 12px;\n padding: 24px;\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n animation: modalSlideUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n opacity: 0;\n transform: translateY(20px) scale(0.98);\n}\n\n.alert-wrapper-exit {\n animation: modalSlideDown 0.3s ease-in forwards;\n}\n\n.alert-title {\n font-size: 18px;\n font-weight: 600;\n line-height: 1.4;\n margin: 0 0 12px 0;\n}\n\n.alert-message {\n font-size: 14px;\n line-height: 1.5;\n margin: 0 0 24px 0;\n}\n\n.alert-buttons {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n margin-top: 8px;\n}\n\n.alert-button {\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n border: none;\n cursor: pointer;\n font-family: inherit;\n transition: all 0.2s ease;\n min-width: 80px;\n text-align: center;\n}\n\n.alert-button:focus {\n outline-offset: 2px;\n}\n\n.alert-button:active {\n transform: translateY(1px);\n}","/* Animation Keyframes */\n@keyframes overlayFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes overlayFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalSlideUp {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalSlideDown {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateY(20px) scale(0.98);\n }\n}\n\n/* Accessibility: Reduce motion */\n@media (prefers-reduced-motion: reduce) {\n .alert-overlay,\n .alert-wrapper,\n .alert-button {\n animation-duration: 0.01ms;\n animation-iteration-count: 1;\n transition-duration: 0.01ms;\n }\n \n .alert-overlay {\n animation: none;\n opacity: 1;\n }\n \n .alert-wrapper {\n animation: none;\n opacity: 1;\n transform: none;\n }\n}","/* ========== LIGHT SCHEMA (Default) ========== */\n.schema-light-overlay {\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.schema-light-wrapper {\n background-color: #ffffff;\n color: #111827;\n}\n\n.schema-light-title {\n color: #111827;\n}\n\n.schema-light-message {\n color: #6b7280;\n}\n\n.schema-light-cancel {\n background-color: #f3f4f6;\n color: #374151;\n outline-color: #9ca3af;\n}\n\n.schema-light-cancel:hover {\n background-color: #e5e7eb;\n transform: translateY(-1px);\n}\n\n.schema-light-cancel:active {\n background-color: #d1d5db;\n}\n\n.schema-light-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-light-cancel-danger:hover {\n background-color: #fecaca;\n}\n\n.schema-light-ok {\n background-color: #10b981;\n color: #ffffff;\n outline-color: #34d399;\n}\n\n.schema-light-ok:hover {\n background-color: #059669;\n transform: translateY(-1px);\n}\n\n.schema-light-ok:active {\n background-color: #047857;\n}\n\n.schema-light-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n\n.schema-light-ok-danger:hover {\n background-color: #dc2626;\n}\n\n/* ========== DARK SCHEMA ========== */\n.schema-dark-overlay {\n background-color: rgba(0, 0, 0, 0.7);\n}\n\n.schema-dark-wrapper {\n background-color: #18181b;\n color: #f4f4f5;\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.3),\n 0 10px 10px -5px rgba(0, 0, 0, 0.2),\n 0 0 0 1px rgba(255, 255, 255, 0.1);\n}\n\n.schema-dark-title {\n color: #f4f4f5;\n}\n\n.schema-dark-message {\n color: #a1a1aa;\n}\n\n.schema-dark-cancel {\n background-color: #27272a;\n color: #e4e4e7;\n outline-color: #71717a;\n}\n\n.schema-dark-cancel:hover {\n background-color: #3f3f46;\n transform: translateY(-1px);\n}\n\n.schema-dark-cancel:active {\n background-color: #52525b;\n}\n\n.schema-dark-cancel-danger {\n background-color: #7f1d1d;\n color: #fecaca;\n outline-color: #ef4444;\n}\n\n.schema-dark-cancel-danger:hover {\n background-color: #991b1b;\n}\n\n.schema-dark-ok {\n background-color: #10b981;\n color: #ffffff;\n outline-color: #34d399;\n}\n\n.schema-dark-ok:hover {\n background-color: #059669;\n transform: translateY(-1px);\n}\n\n.schema-dark-ok:active {\n background-color: #047857;\n}\n\n.schema-dark-ok-danger {\n background-color: #dc2626;\n color: #ffffff;\n outline-color: #ef4444;\n}\n\n.schema-dark-ok-danger:hover {\n background-color: #b91c1c;\n}\n\n/* ========== BLUE SCHEMA ========== */\n.schema-blue-overlay {\n background-color: rgba(59, 130, 246, 0.3);\n}\n\n.schema-blue-wrapper {\n background-color: #eff6ff;\n color: #1e3a8a;\n box-shadow: \n 0 20px 25px -5px rgba(59, 130, 246, 0.15),\n 0 10px 10px -5px rgba(59, 130, 246, 0.1),\n 0 0 0 1px rgba(59, 130, 246, 0.1);\n}\n\n.schema-blue-title {\n color: #1e3a8a;\n}\n\n.schema-blue-message {\n color: #3b82f6;\n}\n\n.schema-blue-cancel {\n background-color: #dbeafe;\n color: #1e40af;\n outline-color: #60a5fa;\n}\n\n.schema-blue-cancel:hover {\n background-color: #bfdbfe;\n transform: translateY(-1px);\n}\n\n.schema-blue-cancel:active {\n background-color: #93c5fd;\n}\n\n.schema-blue-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-blue-ok {\n background-color: #3b82f6;\n color: #ffffff;\n outline-color: #60a5fa;\n}\n\n.schema-blue-ok:hover {\n background-color: #2563eb;\n transform: translateY(-1px);\n}\n\n.schema-blue-ok:active {\n background-color: #1d4ed8;\n}\n\n.schema-blue-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n\n/* ========== RED SCHEMA ========== */\n.schema-red-overlay {\n background-color: rgba(220, 38, 38, 0.2);\n}\n\n.schema-red-wrapper {\n background-color: #fef2f2;\n color: #7f1d1d;\n box-shadow: \n 0 20px 25px -5px rgba(220, 38, 38, 0.15),\n 0 10px 10px -5px rgba(220, 38, 38, 0.1),\n 0 0 0 1px rgba(220, 38, 38, 0.1);\n}\n\n.schema-red-title {\n color: #7f1d1d;\n}\n\n.schema-red-message {\n color: #ef4444;\n}\n\n.schema-red-cancel {\n background-color: #fecaca;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-red-cancel:hover {\n background-color: #fca5a5;\n transform: translateY(-1px);\n}\n\n.schema-red-cancel:active {\n background-color: #f87171;\n}\n\n.schema-red-ok {\n background-color: #dc2626;\n color: #ffffff;\n outline-color: #ef4444;\n}\n\n.schema-red-ok:hover {\n background-color: #b91c1c;\n transform: translateY(-1px);\n}\n\n.schema-red-ok:active {\n background-color: #991b1b;\n}\n\n.schema-red-ok-danger {\n background-color: #991b1b;\n color: #ffffff;\n outline-color: #dc2626;\n}\n\n/* ========== GREEN SCHEMA ========== */\n.schema-green-overlay {\n background-color: rgba(16, 185, 129, 0.2);\n}\n\n.schema-green-wrapper {\n background-color: #ecfdf5;\n color: #064e3b;\n box-shadow: \n 0 20px 25px -5px rgba(16, 185, 129, 0.15),\n 0 10px 10px -5px rgba(16, 185, 129, 0.1),\n 0 0 0 1px rgba(16, 185, 129, 0.1);\n}\n\n.schema-green-title {\n color: #064e3b;\n}\n\n.schema-green-message {\n color: #10b981;\n}\n\n.schema-green-cancel {\n background-color: #d1fae5;\n color: #047857;\n outline-color: #34d399;\n}\n\n.schema-green-cancel:hover {\n background-color: #a7f3d0;\n transform: translateY(-1px);\n}\n\n.schema-green-cancel:active {\n background-color: #6ee7b7;\n}\n\n.schema-green-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-green-ok {\n background-color: #10b981;\n color: #ffffff;\n outline-color: #34d399;\n}\n\n.schema-green-ok:hover {\n background-color: #059669;\n transform: translateY(-1px);\n}\n\n.schema-green-ok:active {\n background-color: #047857;\n}\n\n.schema-green-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n\n/* ========== PURPLE SCHEMA ========== */\n.schema-purple-overlay {\n background-color: rgba(139, 92, 246, 0.2);\n}\n\n.schema-purple-wrapper {\n background-color: #f5f3ff;\n color: #5b21b6;\n box-shadow: \n 0 20px 25px -5px rgba(139, 92, 246, 0.15),\n 0 10px 10px -5px rgba(139, 92, 246, 0.1),\n 0 0 0 1px rgba(139, 92, 246, 0.1);\n}\n\n.schema-purple-title {\n color: #5b21b6;\n}\n\n.schema-purple-message {\n color: #8b5cf6;\n}\n\n.schema-purple-cancel {\n background-color: #ede9fe;\n color: #6d28d9;\n outline-color: #a78bfa;\n}\n\n.schema-purple-cancel:hover {\n background-color: #ddd6fe;\n transform: translateY(-1px);\n}\n\n.schema-purple-cancel:active {\n background-color: #c4b5fd;\n}\n\n.schema-purple-cancel-danger {\n background-color: #fee2e2;\n color: #991b1b;\n outline-color: #f87171;\n}\n\n.schema-purple-ok {\n background-color: #8b5cf6;\n color: #ffffff;\n outline-color: #a78bfa;\n}\n\n.schema-purple-ok:hover {\n background-color: #7c3aed;\n transform: translateY(-1px);\n}\n\n.schema-purple-ok:active {\n background-color: #6d28d9;\n}\n\n.schema-purple-ok-danger {\n background-color: #ef4444;\n color: #ffffff;\n outline-color: #f87171;\n}\n","// Import CSS as text (tsup's loader will handle this)\nimport confirmCSS from './confirm.css';\nimport animationsCSS from './animations.css';\nimport colorSchemasCSS from './colorSchemas.css';\n\n// Combine all CSS\nconst ALL_CSS = `${confirmCSS}\\n${animationsCSS}\\n${colorSchemasCSS}`;\n\nlet stylesInjected = false;\n\nexport function ensureStyles() {\n if (typeof document === 'undefined') {\n return; // Server-side rendering\n }\n \n if (stylesInjected) {\n return; // Already injected\n }\n \n // Create and inject style tag\n const style = document.createElement('style');\n style.setAttribute('data-react-confirm-lite', '');\n style.textContent = ALL_CSS;\n document.head.appendChild(style);\n \n stylesInjected = true;\n \n console.log('React Confirm Lite: Styles injected');\n}","import { useEffect, useState, useCallback, useRef, type ReactNode } from \"react\";\nimport { subscribe, closeAlert } from \"./confirm_store\";\nimport type { ConfirmClasses, ConfirmOptions, ColorSchema } from \"./types\";\nimport \"./confirm.css\";\nimport './animations.css'\nimport './colorSchemas.css'\nimport { ensureStyles } from \"./bundle-css\";\n\nfunction cx(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(\" \");\n}\n\ntype Props = {\n classes?: ConfirmClasses;\n animationDuration?: number;\n defaultColorSchema?: ColorSchema;\n children?: (props: {\n isVisible: boolean;\n confirm: ConfirmOptions;\n handleCancel: () => void;\n handleOk: () => void;\n colorSchema: ColorSchema;\n }) => ReactNode;\n};\n\nconst ConfirmContainer = ({\n classes = {},\n animationDuration = 300,\n defaultColorSchema = 'dark',\n children\n}: Props) => {\n const [alerts, setAlerts] = useState<ConfirmOptions[]>([]);\n const [isVisible, setIsVisible] = useState(false);\n const [currentAlert, setCurrentAlert] = useState<ConfirmOptions | null>(null);\n const [isAnimating, setisAnimating] = useState(false)\n const overlayRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n subscribe((newAlerts) => {\n setAlerts(newAlerts);\n });\n }, []);\n\n useEffect(() => {\n ensureStyles();\n }, []);\n\n useEffect(() => {\n if (alerts.length > 0 && !currentAlert) {\n setCurrentAlert(alerts[0]);\n } else if (alerts.length > 0 && currentAlert && alerts[0] !== currentAlert) {\n requestAnimationFrame(() => {\n setIsVisible(false);\n });\n setTimeout(() => {\n setCurrentAlert(alerts[0]);\n }, animationDuration);\n } else if (alerts.length === 0 && currentAlert) {\n requestAnimationFrame(() => {\n setIsVisible(false);\n });\n setTimeout(() => {\n setCurrentAlert(null);\n }, animationDuration);\n }\n }, [alerts, animationDuration]);\n\n useEffect(() => {\n if (currentAlert) {\n setisAnimating(true)\n } else if (!currentAlert) {\n setisAnimating(false)\n }\n if (currentAlert && !children) {\n setIsVisible(true);\n } else if (currentAlert && children) {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }\n }, [currentAlert, children])\n\n const handleClose = useCallback((value: boolean) => {\n closeAlert(value);\n }, []);\n\n const handleCancel = useCallback(() => handleClose(false), [handleClose]);\n const handleOk = useCallback(() => handleClose(true), [handleClose]);\n\n if (!currentAlert && !isVisible) {\n return null;\n }\n\n if (!currentAlert) {\n return null\n }\n\n if (currentAlert && !isAnimating) {\n return null\n }\n\n const colorSchema = currentAlert.colorSchema || defaultColorSchema;\n\n if (children) {\n return children({\n isVisible,\n confirm: currentAlert,\n handleCancel,\n handleOk,\n colorSchema\n });\n }\n\n const schemaClass = `schema-${colorSchema}`;\n\n return (\n <div\n ref={overlayRef}\n className={cx(\n \"alert-overlay\",\n !isVisible ? \"alert-overlay-exit\" : '',\n `${schemaClass}-overlay`,\n classes.overlay\n )}\n >\n <div\n className={cx(\n \"alert-wrapper\",\n !isVisible ? \"alert-wrapper-exit\" : '',\n `${schemaClass}-wrapper`,\n classes.wrapper\n )}\n >\n <h2 className={cx(\n \"alert-title\",\n `${schemaClass}-title`,\n classes.title\n )}>\n {currentAlert.title}\n </h2>\n <p className={cx(\n \"alert-message\",\n `${schemaClass}-message`,\n classes.message\n )}>\n {currentAlert.message}\n </p>\n <div className=\"alert-buttons\">\n <button\n onClick={handleCancel}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-cancel\",\n `${schemaClass}-cancel`,\n currentAlert.isDestructive ? `${schemaClass}-cancel-danger` : '',\n classes.button,\n classes.cancel\n )}\n >\n {currentAlert.cancelText || 'Cancel'}\n </button>\n <button\n onClick={handleOk}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-ok\",\n `${schemaClass}-ok`,\n currentAlert.isDestructive ? `${schemaClass}-ok-danger` : '',\n classes.button,\n classes.ok\n )}\n >\n {currentAlert.okText || 'OK'}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ConfirmContainer;","import { addAlert } from \"./confirm_store\";\nimport type { ConfirmInput } from \"./types\";\n\nexport async function confirm(input: ConfirmInput): Promise<boolean> {\n const result = await addAlert(input);\n return result;\n}"]}
|
package/package.json
CHANGED
|
@@ -1,65 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-confirm-lite",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "A lightweight, promise-based confirm dialog for React, designed to be as easy to use as
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "https://github.com/SaadNasir-git/react-confirm-lite.git"
|
|
11
|
-
},
|
|
12
|
-
"homepage": "https://github.com/SaadNasir-git/react-confirm-lite#readme",
|
|
3
|
+
"version": "1.2.5",
|
|
4
|
+
"description": "A lightweight, promise-based confirm dialog for React, designed to be as easy to use as react-toastify, while remaining fully customizable.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
13
8
|
"exports": {
|
|
14
9
|
".": {
|
|
15
|
-
"import": "./dist/index.
|
|
16
|
-
"require": "./dist/index.js",
|
|
10
|
+
"import": "./dist/index.js",
|
|
17
11
|
"types": "./dist/index.d.ts"
|
|
18
12
|
}
|
|
19
13
|
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/SaadNasir-git/react-confirm-lite.git"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/SaadNasir-git/react-confirm-lite#readme",
|
|
20
23
|
"scripts": {
|
|
21
|
-
"
|
|
22
|
-
"rollup": "rollup -c --bundleConfigAsCjs",
|
|
23
|
-
"build": "npm run rollup",
|
|
24
|
+
"build": "tsup && cp LICENSE dist/",
|
|
24
25
|
"clean": "rm -rf dist",
|
|
26
|
+
"postbuild": "echo \"'use client';\" | cat - dist/index.js > temp && mv temp dist/index.js",
|
|
25
27
|
"prepack": "npm run clean && npm run build"
|
|
26
28
|
},
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"react-confirm-lite",
|
|
32
|
-
"npm react-confirm-lite",
|
|
33
|
-
"react confirm lite",
|
|
34
|
-
"react confirm",
|
|
35
|
-
"easy react confirmation dialog",
|
|
36
|
-
"react",
|
|
37
|
-
"confirm",
|
|
38
|
-
"confirm dialog",
|
|
39
|
-
"confirmation dialog",
|
|
40
|
-
"alert dialog",
|
|
41
|
-
"window.confirm",
|
|
42
|
-
"react-confirm",
|
|
43
|
-
"npm react-confirm",
|
|
44
|
-
"tailwindcss"
|
|
45
|
-
],
|
|
46
|
-
"author": "Saad Nasir",
|
|
47
|
-
"license": "MIT",
|
|
48
|
-
"type": "commonjs",
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"react": ">=18",
|
|
31
|
+
"react-dom": ">=18"
|
|
32
|
+
},
|
|
49
33
|
"devDependencies": {
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"
|
|
53
|
-
"@rollup/plugin-typescript": "^12.3.0",
|
|
54
|
-
"react": "^19.2.3",
|
|
55
|
-
"rollup-plugin-dts": "^6.3.0",
|
|
56
|
-
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
57
|
-
"rollup-plugin-postcss": "^4.0.2",
|
|
58
|
-
"tslib": "^2.8.1",
|
|
34
|
+
"@types/react": "^19.2.7",
|
|
35
|
+
"@types/react-dom": "^19.2.3",
|
|
36
|
+
"tsup": "^8.5.1",
|
|
59
37
|
"typescript": "^5.9.3"
|
|
60
38
|
},
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"author": "Saad Nasir",
|
|
41
|
+
"keywords": ["react-confirm" , "react-confirm-lite" , "react confirm lite" , "react confirm" , "confirm"]
|
|
65
42
|
}
|
package/dist/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as r,useRef as a,useEffect as c,useCallback as n}from"react";function t(e,o,r,a){return new(r||(r=Promise))(function(c,n){function t(e){try{i(a.next(e))}catch(e){n(e)}}function l(e){try{i(a.throw(e))}catch(e){n(e)}}function i(e){var o;e.done?c(e.value):(o=e.value,o instanceof r?o:new r(function(e){e(o)})).then(t,l)}i((a=a.apply(e,o||[])).next())})}function l(e,o){var r,a,c,n={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},t=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return t.next=l(0),t.throw=l(1),t.return=l(2),"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function l(l){return function(i){return function(l){if(r)throw new TypeError("Generator is already executing.");for(;t&&(t=0,l[0]&&(n=0)),n;)try{if(r=1,a&&(c=2&l[0]?a.return:l[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,l[1])).done)return c;switch(a=0,c&&(l=[2&l[0],c.value]),l[0]){case 0:case 1:c=l;break;case 4:return n.label++,{value:l[1],done:!1};case 5:n.label++,a=l[1],l=[0];continue;case 7:l=n.ops.pop(),n.trys.pop();continue;default:if(!(c=n.trys,(c=c.length>0&&c[c.length-1])||6!==l[0]&&2!==l[0])){n=0;continue}if(3===l[0]&&(!c||l[1]>c[0]&&l[1]<c[3])){n.label=l[1];break}if(6===l[0]&&n.label<c[1]){n.label=c[1],c=l;break}if(c&&n.label<c[2]){n.label=c[2],n.ops.push(l);break}c[2]&&n.ops.pop(),n.trys.pop();continue}l=o.call(e,n)}catch(e){l=[6,e],a=0}finally{r=c=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,i])}}}function i(e,o,r){if(r||2===arguments.length)for(var a,c=0,n=o.length;c<n;c++)!a&&c in o||(a||(a=Array.prototype.slice.call(o,0,c)),a[c]=o[c]);return e.concat(a||Array.prototype.slice.call(o))}"function"==typeof SuppressedError&&SuppressedError;var s=[],u=new Set;function d(e){return new Promise(function(o){var r="string"==typeof e?{title:"Confirm",message:e,resolve:o}:{title:e.title||"Confirm",message:e.message,okText:e.okText,cancelText:e.cancelText,colorSchema:e.colorSchema,resolve:o};1===(s=i(i([],s,!0),[r],!1)).length&&f()})}function f(){u.forEach(function(e){return e(s)})}function p(e,o){void 0===o&&(o={});var r=o.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===r&&a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c),c.styleSheet?c.styleSheet.cssText=e:c.appendChild(document.createTextNode(e))}}p(".alert-overlay{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;align-items:center;animation:overlayFadeIn .3s ease-out forwards;backdrop-filter:blur(4px);bottom:0;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.alert-overlay-exit{animation:overlayFadeOut .3s ease-in forwards}.alert-wrapper{animation:modalSlideUp .4s cubic-bezier(.34,1.56,.64,1) forwards;border-radius:12px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04),0 0 0 1px rgba(0,0,0,.05);max-width:400px;opacity:0;padding:24px;transform:translateY(20px) scale(.98);width:90%}.alert-wrapper-exit{animation:modalSlideDown .3s ease-in forwards}.alert-title{font-size:18px;font-weight:600;line-height:1.4;margin:0 0 12px}.alert-message{font-size:14px;line-height:1.5;margin:0 0 24px}.alert-buttons{display:flex;gap:12px;justify-content:flex-end;margin-top:8px}.alert-button{border:none;border-radius:8px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;min-width:80px;padding:10px 20px;text-align:center;transition:all .2s ease}.alert-button:focus{outline-offset:2px}.alert-button:active{transform:translateY(1px)}");p("@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{0%{opacity:1}to{opacity:0}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalSlideDown{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(20px) scale(.98)}}@media (prefers-reduced-motion:reduce){.alert-button,.alert-overlay,.alert-wrapper{animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}.alert-overlay,.alert-wrapper{animation:none;opacity:1}.alert-wrapper{transform:none}}");function b(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];return e.filter(Boolean).join(" ")}p(".schema-light-overlay{background-color:rgba(0,0,0,.5)}.schema-light-wrapper{background-color:#fff;color:#111827}.schema-light-title{color:#111827}.schema-light-message{color:#6b7280}.schema-light-cancel{background-color:#f3f4f6;color:#374151;outline-color:#9ca3af}.schema-light-cancel:hover{background-color:#e5e7eb;transform:translateY(-1px)}.schema-light-cancel:active{background-color:#d1d5db}.schema-light-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-light-cancel-danger:hover{background-color:#fecaca}.schema-light-ok{background-color:#10b981;color:#fff;outline-color:#34d399}.schema-light-ok:hover{background-color:#059669;transform:translateY(-1px)}.schema-light-ok:active{background-color:#047857}.schema-light-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}.schema-light-ok-danger:hover{background-color:#dc2626}.schema-dark-overlay{background-color:rgba(0,0,0,.7)}.schema-dark-wrapper{background-color:#18181b;box-shadow:0 20px 25px -5px rgba(0,0,0,.3),0 10px 10px -5px rgba(0,0,0,.2),0 0 0 1px hsla(0,0%,100%,.1);color:#f4f4f5}.schema-dark-title{color:#f4f4f5}.schema-dark-message{color:#a1a1aa}.schema-dark-cancel{background-color:#27272a;color:#e4e4e7;outline-color:#71717a}.schema-dark-cancel:hover{background-color:#3f3f46;transform:translateY(-1px)}.schema-dark-cancel:active{background-color:#52525b}.schema-dark-cancel-danger{background-color:#7f1d1d;color:#fecaca;outline-color:#ef4444}.schema-dark-cancel-danger:hover{background-color:#991b1b}.schema-dark-ok{background-color:#10b981;color:#fff;outline-color:#34d399}.schema-dark-ok:hover{background-color:#059669;transform:translateY(-1px)}.schema-dark-ok:active{background-color:#047857}.schema-dark-ok-danger{background-color:#dc2626;color:#fff;outline-color:#ef4444}.schema-dark-ok-danger:hover{background-color:#b91c1c}.schema-blue-overlay{background-color:rgba(59,130,246,.3)}.schema-blue-wrapper{background-color:#eff6ff;box-shadow:0 20px 25px -5px rgba(59,130,246,.15),0 10px 10px -5px rgba(59,130,246,.1),0 0 0 1px rgba(59,130,246,.1);color:#1e3a8a}.schema-blue-title{color:#1e3a8a}.schema-blue-message{color:#3b82f6}.schema-blue-cancel{background-color:#dbeafe;color:#1e40af;outline-color:#60a5fa}.schema-blue-cancel:hover{background-color:#bfdbfe;transform:translateY(-1px)}.schema-blue-cancel:active{background-color:#93c5fd}.schema-blue-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-blue-ok{background-color:#3b82f6;color:#fff;outline-color:#60a5fa}.schema-blue-ok:hover{background-color:#2563eb;transform:translateY(-1px)}.schema-blue-ok:active{background-color:#1d4ed8}.schema-blue-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}.schema-red-overlay{background-color:rgba(220,38,38,.2)}.schema-red-wrapper{background-color:#fef2f2;box-shadow:0 20px 25px -5px rgba(220,38,38,.15),0 10px 10px -5px rgba(220,38,38,.1),0 0 0 1px rgba(220,38,38,.1);color:#7f1d1d}.schema-red-title{color:#7f1d1d}.schema-red-message{color:#ef4444}.schema-red-cancel{background-color:#fecaca;color:#991b1b;outline-color:#f87171}.schema-red-cancel:hover{background-color:#fca5a5;transform:translateY(-1px)}.schema-red-cancel:active{background-color:#f87171}.schema-red-ok{background-color:#dc2626;color:#fff;outline-color:#ef4444}.schema-red-ok:hover{background-color:#b91c1c;transform:translateY(-1px)}.schema-red-ok-danger,.schema-red-ok:active{background-color:#991b1b}.schema-red-ok-danger{color:#fff;outline-color:#dc2626}.schema-green-overlay{background-color:rgba(16,185,129,.2)}.schema-green-wrapper{background-color:#ecfdf5;box-shadow:0 20px 25px -5px rgba(16,185,129,.15),0 10px 10px -5px rgba(16,185,129,.1),0 0 0 1px rgba(16,185,129,.1);color:#064e3b}.schema-green-title{color:#064e3b}.schema-green-message{color:#10b981}.schema-green-cancel{background-color:#d1fae5;color:#047857;outline-color:#34d399}.schema-green-cancel:hover{background-color:#a7f3d0;transform:translateY(-1px)}.schema-green-cancel:active{background-color:#6ee7b7}.schema-green-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-green-ok{background-color:#10b981;color:#fff;outline-color:#34d399}.schema-green-ok:hover{background-color:#059669;transform:translateY(-1px)}.schema-green-ok:active{background-color:#047857}.schema-green-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}.schema-purple-overlay{background-color:rgba(139,92,246,.2)}.schema-purple-wrapper{background-color:#f5f3ff;box-shadow:0 20px 25px -5px rgba(139,92,246,.15),0 10px 10px -5px rgba(139,92,246,.1),0 0 0 1px rgba(139,92,246,.1);color:#5b21b6}.schema-purple-title{color:#5b21b6}.schema-purple-message{color:#8b5cf6}.schema-purple-cancel{background-color:#ede9fe;color:#6d28d9;outline-color:#a78bfa}.schema-purple-cancel:hover{background-color:#ddd6fe;transform:translateY(-1px)}.schema-purple-cancel:active{background-color:#c4b5fd}.schema-purple-cancel-danger{background-color:#fee2e2;color:#991b1b;outline-color:#f87171}.schema-purple-ok{background-color:#8b5cf6;color:#fff;outline-color:#a78bfa}.schema-purple-ok:hover{background-color:#7c3aed;transform:translateY(-1px)}.schema-purple-ok:active{background-color:#6d28d9}.schema-purple-ok-danger{background-color:#ef4444;color:#fff;outline-color:#f87171}");var m=function(t){var l=t.classes,i=void 0===l?{}:l,d=t.animationDuration,p=void 0===d?300:d,m=t.defaultColorSchema,h=void 0===m?"dark":m,g=t.children,k=r([]),x=k[0],v=k[1],y=r(!1),w=y[0],S=y[1],Y=r(null),C=Y[0],T=Y[1],N=r(!1),F=N[0],O=N[1],j=a(null);c(function(){var e;e=function(e){v(e)},u.add(e),e(s)},[]),c(function(){x.length>0&&!C?T(x[0]):x.length>0&&C&&x[0]!==C?(requestAnimationFrame(function(){S(!1)}),setTimeout(function(){T(x[0])},p)):0===x.length&&C&&(requestAnimationFrame(function(){S(!1)}),setTimeout(function(){T(null)},p))},[x,p]),c(function(){C?O(!0):C||O(!1),C&&!g?S(!0):C&&g&&requestAnimationFrame(function(){S(!0)})},[C,g]);var z=n(function(e){var o,r;o=e,(r=s[0])&&(r.resolve(o),s=s.slice(1),f())},[]),A=n(function(){return z(!1)},[z]),D=n(function(){return z(!0)},[z]);if(!C&&!w)return null;if(!C)return null;if(C&&!F)return null;var E=C.colorSchema||h;if(g)return g({isVisible:w,confirm:C,handleCancel:A,handleOk:D,colorSchema:E});var I="schema-".concat(E);return e("div",{ref:j,className:b("alert-overlay",w?"":"alert-overlay-exit","".concat(I,"-overlay"),i.overlay),children:o("div",{className:b("alert-wrapper",w?"":"alert-wrapper-exit","".concat(I,"-wrapper"),i.wrapper),children:[e("h2",{className:b("alert-title","".concat(I,"-title"),i.title),children:C.title}),e("p",{className:b("alert-message","".concat(I,"-message"),i.message),children:C.message}),o("div",{className:"alert-buttons",children:[e("button",{onClick:A,disabled:!w,className:b("alert-button alert-button-cancel","".concat(I,"-cancel"),C.isDestructive?"".concat(I,"-cancel-danger"):"",i.button,i.cancel),children:C.cancelText||"Cancel"}),e("button",{onClick:D,disabled:!w,className:b("alert-button alert-button-ok","".concat(I,"-ok"),C.isDestructive?"".concat(I,"-ok-danger"):"",i.button,i.ok),children:C.okText||"OK"})]})]})})};function h(e){return t(this,void 0,void 0,function(){return l(this,function(o){switch(o.label){case 0:return[4,d(e)];case 1:return[2,o.sent()]}})})}export{m as ConfirmContainer,h as confirm};
|
|
2
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../node_modules/tslib/tslib.es6.js","../../src/confirm_store.ts","../node_modules/style-inject/dist/style-inject.es.js","../../src/confirmContainer.tsx","../../src/confirm.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import type { ConfirmOptions, ConfirmInput } from \"./types\";\n\ntype Listener = (alerts: ConfirmOptions[]) => void;\n\nlet confirms: ConfirmOptions[] = [];\nlet listeners = new Set<Listener>();\n\nexport function addAlert(input: ConfirmInput): Promise<boolean> {\n return new Promise((resolve) => {\n const alert: ConfirmOptions =\n typeof input === \"string\"\n ? {\n title: \"Confirm\",\n message: input,\n resolve\n }\n : {\n title: input.title || \"Confirm\",\n message: input.message,\n okText: input.okText,\n cancelText: input.cancelText,\n colorSchema: input.colorSchema,\n resolve\n };\n\n // Add to queue - don't replace!\n confirms = [...confirms, alert];\n \n // Only emit if this is the first/only alert\n if (confirms.length === 1) {\n emit();\n }\n });\n}\n\nexport function closeAlert(result: boolean) {\n const alert = confirms[0];\n if (!alert) return;\n\n // Resolve current alert\n alert.resolve(result);\n \n // Remove from queue\n confirms = confirms.slice(1);\n \n emit()\n}\n\nexport function subscribe(listener: Listener) {\n listeners.add(listener);\n listener(confirms);\n return () => listeners.delete(listener);\n}\n\nexport function emit() {\n listeners.forEach((listener) => listener(confirms));\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useEffect, useState, useCallback, useRef, type ReactNode } from \"react\";\nimport { subscribe, closeAlert } from \"./confirm_store\";\nimport type { ConfirmClasses, ConfirmOptions, ColorSchema } from \"./types\";\nimport \"./confirm.css\";\nimport './animations.css'\nimport './colorSchemas.css'\n\nfunction cx(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(\" \");\n}\n\ntype Props = {\n classes?: ConfirmClasses;\n animationDuration?: number;\n defaultColorSchema?: ColorSchema;\n children?: (props: {\n isVisible: boolean;\n confirm: ConfirmOptions;\n handleCancel: () => void;\n handleOk: () => void;\n colorSchema: ColorSchema;\n }) => ReactNode;\n};\n\nconst ConfirmContainer = ({\n classes = {},\n animationDuration = 300,\n defaultColorSchema = 'dark',\n children\n}: Props) => {\n const [alerts, setAlerts] = useState<ConfirmOptions[]>([]);\n const [isVisible, setIsVisible] = useState(false);\n const [currentAlert, setCurrentAlert] = useState<ConfirmOptions | null>(null);\n const [isAnimating, setisAnimating] = useState(false)\n const overlayRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n subscribe((newAlerts) => {\n setAlerts(newAlerts);\n });\n }, []);\n\n useEffect(() => {\n if (alerts.length > 0 && !currentAlert) {\n setCurrentAlert(alerts[0]);\n } else if (alerts.length > 0 && currentAlert && alerts[0] !== currentAlert) {\n requestAnimationFrame(() => {\n setIsVisible(false);\n });\n setTimeout(() => {\n setCurrentAlert(alerts[0]);\n }, animationDuration);\n } else if (alerts.length === 0 && currentAlert) {\n requestAnimationFrame(() => {\n setIsVisible(false);\n });\n setTimeout(() => {\n setCurrentAlert(null);\n }, animationDuration);\n }\n }, [alerts, animationDuration]);\n\n useEffect(() => {\n if (currentAlert) {\n setisAnimating(true)\n } else if (!currentAlert) {\n setisAnimating(false)\n }\n if (currentAlert && !children) {\n setIsVisible(true);\n } else if (currentAlert && children) {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }\n }, [currentAlert, children])\n\n const handleClose = useCallback((value: boolean) => {\n closeAlert(value);\n }, []);\n\n const handleCancel = useCallback(() => handleClose(false), [handleClose]);\n const handleOk = useCallback(() => handleClose(true), [handleClose]);\n\n if (!currentAlert && !isVisible) {\n return null;\n }\n\n if (!currentAlert) {\n return null\n }\n\n if (currentAlert && !isAnimating) {\n return null\n }\n\n const colorSchema = currentAlert.colorSchema || defaultColorSchema;\n\n if (children) {\n return children({\n isVisible,\n confirm: currentAlert,\n handleCancel,\n handleOk,\n colorSchema\n });\n }\n\n const schemaClass = `schema-${colorSchema}`;\n\n return (\n <div\n ref={overlayRef}\n className={cx(\n \"alert-overlay\",\n !isVisible ? \"alert-overlay-exit\" : '',\n `${schemaClass}-overlay`,\n classes.overlay\n )}\n >\n <div\n className={cx(\n \"alert-wrapper\",\n !isVisible ? \"alert-wrapper-exit\" : '',\n `${schemaClass}-wrapper`,\n classes.wrapper\n )}\n >\n <h2 className={cx(\n \"alert-title\",\n `${schemaClass}-title`,\n classes.title\n )}>\n {currentAlert.title}\n </h2>\n <p className={cx(\n \"alert-message\",\n `${schemaClass}-message`,\n classes.message\n )}>\n {currentAlert.message}\n </p>\n <div className=\"alert-buttons\">\n <button\n onClick={handleCancel}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-cancel\",\n `${schemaClass}-cancel`,\n currentAlert.isDestructive ? `${schemaClass}-cancel-danger` : '',\n classes.button,\n classes.cancel\n )}\n >\n {currentAlert.cancelText || 'Cancel'}\n </button>\n <button\n onClick={handleOk}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-ok\",\n `${schemaClass}-ok`,\n currentAlert.isDestructive ? `${schemaClass}-ok-danger` : '',\n classes.button,\n classes.ok\n )}\n >\n {currentAlert.okText || 'OK'}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ConfirmContainer;","import { addAlert } from \"./confirm_store\";\nimport type { ConfirmInput } from \"./types\";\n\nexport async function confirm(input: ConfirmInput): Promise<boolean> {\n const result = await addAlert(input);\n return result;\n}"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","_","label","sent","trys","ops","g","Object","create","Iterator","prototype","verb","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__spreadArray","to","from","pack","arguments","ar","i","l","Array","slice","concat","SuppressedError","confirms","listeners","Set","addAlert","input","alert","title","message","okText","cancelText","colorSchema","emit","forEach","listener","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","cx","classes","_i","filter","Boolean","join","ConfirmContainer","_a","_b","_c","animationDuration","_d","defaultColorSchema","children","_e","useState","alerts","setAlerts","_f","isVisible","setIsVisible","_g","currentAlert","setCurrentAlert","_h","isAnimating","setisAnimating","overlayRef","useRef","useEffect","newAlerts","add","requestAnimationFrame","setTimeout","handleClose","useCallback","handleCancel","handleOk","confirm","schemaClass","_jsx","className","overlay","_jsxs","wrapper","onClick","disabled","isDestructive","button","cancel","ok"],"mappings":"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","x_google_ignoreList":[0,2]}
|