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 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 Tailwind CSS support**
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 Tailwind CSS styling
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
- ## Recomendations
15
- - There were some problems in old versions so I will suggest you to use the latest version. If you are not on latest versions then update it otherwise you may face some problems.
16
- - If you face any problem in the latest version then tell me your problem [@SaadNasir-git](https://github.com/SaadNasir-git).
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
+ ![react-confirm-lite sample](https://res.cloudinary.com/dhcqn5bmq/image/upload/v1766778602/Screencastfrom2025-12-2700-42-14-ezgif.com-optimize_od1ht2.gif)
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 | ✅ Tailwind CSS | ❌ None | ✅ Toast style |
26
+ | Built-in styling | ✅ Multiple color schemes | ❌ None | ✅ Toast style |
23
27
  | Promise-based | ✅ | ✅ | ✅ |
24
28
  | Zero dependencies | ✅ | ✅ | ✅ |
25
29
  | Queue system | ✅ | ❌ | ❌ |
26
- | Fully customizeable | ✅ | | |
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're using **Tailwind CSS** and want a **simple, lightweight** confirm dialog with **no configuration needed**, `react-confirm-lite` is perfect. You can also build custom confirm dialogs from scratch with ease.
31
-
32
- ![react-confirm-lite Sample](https://res.cloudinary.com/dhcqn5bmq/image/upload/v1765971775/Screencastfrom2025-12-1716-38-30-ezgif.com-optimize_ydzrow.gif)
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: import
46
- ```ts
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
- ### Step 3: Use ConfirmContainer in your jsx or tsx file
52
+
53
+ ### Step 3: Add ConfirmContainer to your component tree:
50
54
  ```jsx
51
- return (
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
- or
67
- ```ts
68
- const main = async () => {
69
- const isConfirmed = await confirm({
70
- title: "Delete Item",
71
- message:'Are you sure?',
72
- cancelText:'no',
73
- okText:'yes',
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
- ## Complete Example
75
+
76
+ ### Complete Example:
82
77
 
83
78
  ```tsx
84
- 'use client' //If you are using nextjs then add this line
85
- import { confirm, ConfirmContainer } from 'react-confirm-lite'
79
+ import { confirm, ConfirmContainer } from 'react-confirm-lite';
86
80
 
87
- export default function Page() {
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
- // Perform deletion
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
- - light
112
- - dark
113
- - blue
114
- - red
115
- - green
116
- - purple
99
+ ## Advanced Usage
117
100
 
118
- You can customize it by giving classes like this
119
- ```jsx
120
- <ConfirmContainer classes={{button:'text-sm' , cancel:'bg-white-100' , ok:'bg-red-500' , message:'text-gray-600' , overlay:'bg-white-100' , title:'text-2xl' , wrapper:'bg-blue-500'}}/>
121
- ```
122
- If you want more customization then you can pass children like this
123
- ```jsx
124
- return (
125
- <div>
126
- <ConfirmContainer animationDuration={1000}>
127
- {({ isVisible, confirm, handleCancel, handleOk }) => (
128
- <div className={`bg-white rounded-lg shadow-xl p-6 w-full max-w-md mx-4 ${!isVisible ? 'ease-out duration-1000 opacity-0' : 'ease-in duration-1000 opacity-100'}
129
- `}>
130
- <h2 className="text-lg font-medium text-gray-900 mb-2 text-center">
131
- {confirm.title}
132
- </h2>
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
- ## Using with Next.js and want to add the ConfirmContainer in layout.tsx
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
- 'use client'
165
- import { ConfirmContainer } from "react-confirm-lite"
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
- ## TypeScript Support
198
-
199
- Fully typed with TypeScript. Includes types for all props and the confirm function.
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/70",
208
- wrapper: "rounded-xl border-2",
209
- title: "font-bold text-xl",
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-2 rounded-lg",
212
- cancel: "bg-gray-200 hover:bg-gray-300",
213
- ok: "bg-green-600 hover:bg-green-700 text-white"
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={`dialog ${isVisible ? 'show' : 'hide'}`}>
221
- <div className="icon">⚠️</div>
222
- <h3>{confirm.title}</h3>
223
- <p>{confirm.message}</p>
224
- <div className="buttons">
225
- <button onClick={handleCancel}>{confirm.cancelText || 'No'}</button>
226
- <button onClick={handleOk}>{confirm.okText || 'Yes'}</button>
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 and returns a promise that resolves to `true` (confirmed) or `false` (cancelled).
233
+ Displays a confirmation dialog. Returns a promise that resolves to `true` if confirmed, `false` if cancelled.
237
234
 
238
- **Parameters:**
239
- - `message`: String or object with `title` and `message` properties
240
- **Examples:**
235
+ **String usage:**
241
236
  ```ts
242
- // Simple string
243
- await confirm('Are you sure?')
237
+ await confirm('Simple message');
238
+ // Equivalent to: { title: 'Confirm', message: 'Simple message' }
239
+ ```
244
240
 
245
- // With custom title
241
+ **Object usage:**
242
+ ```ts
246
243
  await confirm({
247
244
  title: 'Warning',
248
245
  message: 'This action cannot be undone',
249
- cancelText:'no',
250
- okText:'yes',
251
- colorSchema:'dark'
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
- - ConfirmInput
258
- - ConfirmOptions
259
- - ConfirmClasses
260
- - ColorSchema
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 showing?
265
- Make sure you've added `<ConfirmContainer />` to your component tree.
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 confirms overlapping?
268
- The library includes a built-in queue system to handle multiple confirm requests.
292
+ ### Multiple dialogs overlapping?
293
+ - The library has a built-in queue system that handles multiple confirm requests sequentially
269
294
 
270
- ### Custom styling not working?
271
- When using the `classes` prop, make sure your CSS classes have higher specificity or use `!important` if needed.
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
- ### Rendering again and again
274
- Yes this problem I were noticed in the early versions but I have fixed it. So, make sure that you have the latest version of this.
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
- ### Dialog closing after some time
277
- If you are making your custom dialog then you can face this problem so make sure that you have added animationDuration like this
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
- ### Custom styling does not working
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
- ```tsx
283
- <ConfirmContainer animationDuration={0}>
284
- {/*Your code*/}
285
- </ConfirmContainer>
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
- My name is **Saad Nasir**. I am a full stack web developer and I am alone who is working on this so please contribute with me to make it more better.
354
+ **Saad Nasir** - Full Stack Developer
291
355
  - GitHub: [@SaadNasir-git](https://github.com/SaadNasir-git)
292
- - Facebook: [@Saad Nasir](https://www.facebook.com/profile.php?id=61583190691187)
293
- ## Contributing
356
+ - For support: Open an issue on GitHub
357
+
358
+ ## License
294
359
 
295
- Contributions are welcome! Please feel free to submit a Pull Request.
360
+ MIT © Saad Nasir
296
361
 
362
+ ---
297
363
 
298
364
  ![npm version](https://img.shields.io/npm/v/react-confirm-lite)
299
365
  ![bundle size](https://img.shields.io/bundlephobia/minzip/react-confirm-lite)
300
366
  ![npm downloads](https://img.shields.io/npm/dm/react-confirm-lite)
301
367
  ![license](https://img.shields.io/npm/l/react-confirm-lite)
302
368
  ![typescript](https://img.shields.io/badge/types-TypeScript-blue)
303
- ![react](https://img.shields.io/badge/react-%3E%3D16.8-blue)
304
- ![maintenance](https://img.shields.io/badge/maintained-yes-brightgreen)
369
+ ![react](https://img.shields.io/badge/react-%3E%3D18-blue)
370
+ ![next.js](https://img.shields.io/badge/next.js-15+-black)
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.3",
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
- "main": "dist/index.js",
6
- "module": "dist/index.mjs",
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.mjs",
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
- "test": "echo \"Error: no test specified\" && exit 1",
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
- "files": [
28
- "dist"
29
- ],
30
- "keywords": [
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
- "@rollup/plugin-commonjs": "^29.0.0",
51
- "@rollup/plugin-node-resolve": "^16.0.3",
52
- "@rollup/plugin-terser": "^0.4.4",
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
- "peerDependencies": {
62
- "react": ">=16.8.0",
63
- "react-dom": ">=16.8.0"
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
@@ -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]}