react-confirm-lite 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,219 @@
1
+ # react-confirm-lite
2
+
3
+ A **lightweight, promise-based confirm dialog for React**.
4
+ Works like `window.confirm`, but modern, async, customizable, and framework-friendly.
5
+
6
+ ✔ Promise-based API
7
+ ✔ Built-in CSS (no Tailwind required)
8
+ ✔ Fully customizable
9
+ ✔ Works with Next.js, Vite, CRA
10
+
11
+ ---
12
+
13
+ ![react-confirm-lite Sample](https://res.cloudinary.com/dhcqn5bmq/image/upload/v1765971775/Screencastfrom2025-12-1716-38-30-ezgif.com-optimize_ydzrow.gif)
14
+
15
+ ## How to use
16
+ ### Step 1: import
17
+ ```ts
18
+ import { confirm, ConfirmContainer } from 'react-confirm-lite'
19
+ ```
20
+ ### Step 2: Use ConfirmContainer in your jsx or tsx file
21
+ ```jsx
22
+ return (
23
+ <>
24
+ <ConfirmContainer />
25
+ </>
26
+ )
27
+ ```
28
+ ### Step 3: Use confirm function
29
+ ```ts
30
+ const main = async () => {
31
+ const isConfirmed = await confirm('Are you sure');
32
+ if (isConfirmed) {
33
+ console.log('you are confirmed')
34
+ }
35
+ }
36
+ ```
37
+ or
38
+ ```ts
39
+ const main = async () => {
40
+ const isConfirmed = await confirm({title:'Alert', message:'Are you sure'});
41
+ if (isConfirmed) {
42
+ console.log('you are confirmed')
43
+ }
44
+ }
45
+ ```
46
+ ## How to customize
47
+ You can customize it by giving classes like this
48
+ ```jsx
49
+ <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'}}/>
50
+ ```
51
+ If you want more customization then you can pass children like this
52
+ ```jsx
53
+ return (
54
+ <div>
55
+ <ConfirmContainer animationDuration={200}>
56
+ {({ isVisible, confirm, handleCancel, handleOk }) => (
57
+ <div className={`
58
+ bg-white rounded-lg shadow-xl p-6 w-full max-w-md mx-4 ease-out ${isVisible
59
+ ? 'opacity-100 translate-y-0 scale-100'
60
+ : 'opacity-0 translate-y-4 scale-95'
61
+ }
62
+ `}>
63
+ <h2 className="text-lg font-medium text-gray-900 mb-2 text-center">
64
+ {confirm.title}
65
+ </h2>
66
+
67
+ <p className="text-gray-500 text-center mb-6">
68
+ {confirm.message}
69
+ </p>
70
+
71
+ <div className="flex gap-3 w-full">
72
+ <button
73
+ className="flex-1 py-2 px-4 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors"
74
+ onClick={handleCancel}
75
+ >
76
+ Cancel
77
+ </button>
78
+ <button
79
+ className="flex-1 py-2 px-4 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"
80
+ onClick={handleOk}
81
+ >
82
+ Confirm
83
+ </button>
84
+ </div>
85
+ </div>
86
+ )}
87
+ </ConfirmContainer>
88
+ </div>
89
+ )
90
+ ```
91
+ You can simply add the
92
+ ```jsx
93
+ <ConfirmContainer/>
94
+ ```
95
+ In layout.tsx If using nextjs and can use it in main.tsx or jsx if you are using react
96
+
97
+ ## Installation
98
+
99
+ ```bash
100
+ npm install react-confirm-lite
101
+ # or
102
+ yarn add react-confirm-lite
103
+ # or
104
+ pnpm add react-confirm-lite
105
+ ```
106
+
107
+ ## Complete Example
108
+
109
+ ```tsx
110
+ 'use client'
111
+ import { confirm, ConfirmContainer } from 'react-confirm-lite'
112
+
113
+ export default function Page() {
114
+ const handleDelete = async () => {
115
+ const isConfirmed = await confirm('Are you sure you want to delete?')
116
+ if (isConfirmed) {
117
+ // Perform deletion
118
+ console.log('Item deleted')
119
+ }
120
+ }
121
+
122
+ return (
123
+ <div>
124
+ <button onClick={handleDelete}>Delete Item</button>
125
+ <ConfirmContainer />
126
+ </div>
127
+ )
128
+ }
129
+ ```
130
+
131
+ ## Props
132
+
133
+ ### ConfirmContainer
134
+ - `animationDuration` (optional): Animation duration in milliseconds. Default: `300`
135
+ - `classes` (optional): Custom CSS classes for styling
136
+ - `children` (optional): Render prop for complete customization
137
+
138
+ ## TypeScript Support
139
+
140
+ Fully typed with TypeScript. Includes types for all props and the confirm function.
141
+
142
+ ## More Examples
143
+
144
+ ### Custom Styling with Classes
145
+ ```tsx
146
+ <ConfirmContainer
147
+ classes={{
148
+ overlay: "bg-black/70",
149
+ wrapper: "rounded-xl border-2",
150
+ title: "font-bold text-xl",
151
+ message: "text-gray-600",
152
+ button: "px-6 py-2 rounded-lg",
153
+ cancel: "bg-gray-200 hover:bg-gray-300",
154
+ ok: "bg-green-600 hover:bg-green-700 text-white"
155
+ }}
156
+ />
157
+ ```
158
+ ```jsx
159
+ <ConfirmContainer>
160
+ {({ isVisible, confirm, handleCancel, handleOk }) => (
161
+ <div className={`dialog ${isVisible ? 'show' : 'hide'}`}>
162
+ <div className="icon">⚠️</div>
163
+ <h3>{confirm.title}</h3>
164
+ <p>{confirm.message}</p>
165
+ <div className="buttons">
166
+ <button onClick={handleCancel}>No</button>
167
+ <button onClick={handleOk}>Yes</button>
168
+ </div>
169
+ </div>
170
+ )}
171
+ </ConfirmContainer>
172
+ ```
173
+ ## API Reference
174
+
175
+ ### `confirm(message: string | ConfirmOptions): Promise<boolean>`
176
+
177
+ Displays a confirmation dialog and returns a promise that resolves to `true` (confirmed) or `false` (cancelled).
178
+
179
+ **Parameters:**
180
+ - `message`: String or object with `title` and `message` properties
181
+ **Examples:**
182
+ ```ts
183
+ // Simple string
184
+ await confirm('Are you sure?')
185
+
186
+ // With custom title
187
+ await confirm({
188
+ title: 'Warning',
189
+ message: 'This action cannot be undone'
190
+ })
191
+ ```
192
+
193
+ ## Troubleshooting
194
+
195
+ ### Dialog not showing?
196
+ Make sure you've added `<ConfirmContainer />` to your component tree.
197
+
198
+ ### Multiple confirms overlapping?
199
+ The library includes a built-in queue system to handle multiple confirm requests.
200
+
201
+ ### Custom styling not working?
202
+ When using the `classes` prop, make sure your CSS classes have higher specificity or use `!important` if needed.
203
+
204
+ ## License
205
+
206
+ MIT © Saad Nasir
207
+
208
+ ## Author
209
+
210
+ **Saad Nasir**
211
+ - GitHub: [@SaadNasir-git](https://github.com/SaadNasir-git)
212
+ - Facebook: [@Saad Nasir](https://www.facebook.com/profile.php?id=61583190691187)
213
+ ## Contributing
214
+
215
+ Contributions are welcome! Please feel free to submit a Pull Request.
216
+
217
+
218
+ ![npm version](https://img.shields.io/npm/v/react-confirm-lite)
219
+ ![bundle size](https://img.shields.io/bundlephobia/minzip/react-confirm-lite)
@@ -0,0 +1,35 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ type ConfirmClasses = {
4
+ wrapper?: string;
5
+ title?: string;
6
+ message?: string;
7
+ button?: string;
8
+ cancel?: string;
9
+ ok?: string;
10
+ };
11
+ type ConfirmInput = string | {
12
+ title?: string;
13
+ message: string;
14
+ };
15
+ type ConfirmOptions = {
16
+ title: string;
17
+ message: string;
18
+ resolve: (value: boolean) => void;
19
+ };
20
+
21
+ type Props = {
22
+ classes?: ConfirmClasses;
23
+ animationDuration?: number;
24
+ children?: (props: {
25
+ isVisible: boolean;
26
+ confirm: ConfirmOptions;
27
+ handleCancel: () => void;
28
+ handleOk: () => void;
29
+ }) => ReactNode;
30
+ };
31
+ declare const ConfirmContainer: ({ classes, animationDuration, children }: Props) => any;
32
+
33
+ declare function confirm(input: ConfirmInput): Promise<boolean>;
34
+
35
+ export { ConfirmContainer, confirm };
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=[],r=new Set;function a(e){return new Promise(function(t){var r,a="string"==typeof e?{title:"Confirm",message:e,resolve:t}:{title:null!==(r=e.title)&&void 0!==r?r:"Confirm",message:e.message,resolve:t};n=[a],o()})}function o(){r.forEach(function(e){return e(n)})}function i(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.filter(Boolean).join(" ")}function c(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function c(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,c)}l((r=r.apply(e,t||[])).next())})}function l(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=c(0),i.throw=c(1),i.return=c(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(l){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==c[0]&&2!==c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}"function"==typeof SuppressedError&&SuppressedError;var s=!1;exports.ConfirmContainer=function(a){var c=a.classes,l=void 0===c?{}:c,s=a.animationDuration,u=void 0===s?300:s,f=a.children,v=t.useState([]),d=v[0],m=v[1],h=t.useState(!1),p=h[0],b=h[1],y=t.useState(null),k=y[0],w=y[1],x=t.useRef(null),g=t.useRef(!1);t.useEffect(function(){var e;e=function(e){m(e)},r.add(e),e(n)},[]),t.useEffect(function(){if(d.length>0&&!k)w(d[0]),requestAnimationFrame(function(){b(!0)});else if(0===d.length&&k){b(!1);var e=setTimeout(function(){w(null)},u);return function(){return clearTimeout(e)}}},[d,k,u]);var j=t.useCallback(function(e){var t,r;t=e,(r=n[0])&&(r.resolve(t),n=[],o())},[]),C=t.useCallback(function(){return j(!1)},[j]),E=t.useCallback(function(){return j(!0)},[j]);return t.useEffect(function(){if(f&&k&&!g.current){var e=setTimeout(function(){for(var e=0,t=document.querySelectorAll("button");e<t.length;e++){var n=t[e];n.classList.contains("cancel")?n.addEventListener("click",C):n.classList.contains("ok")&&n.addEventListener("click",E)}g.current=!0},0);return function(){clearTimeout(e);for(var t=0,n=document.querySelectorAll("button");t<n.length;t++){var r=n[t];r.classList.contains("cancel")?r.removeEventListener("click",C):r.classList.contains("ok")&&r.removeEventListener("click",E)}g.current=!1}}},[f,k,C,E]),k?f?f({isVisible:p,confirm:k,handleCancel:C,handleOk:E}):e.jsx("div",{ref:x,className:i("alert-overlay",p?"":"alert-overlay-exit",l.overlay),children:e.jsxs("div",{className:i("alert-wrapper",p?"":"alert-wrapper-exit",l.wrapper),children:[e.jsx("h2",{className:i("alert-title",l.title),children:k.title}),e.jsx("p",{className:i("alert-message",l.message),children:k.message}),e.jsxs("div",{className:"alert-buttons",children:[e.jsx("button",{onClick:C,disabled:!p,className:i("alert-button alert-button-cancel",l.button,l.cancel),children:"Cancel"}),e.jsx("button",{onClick:E,disabled:!p,className:i("alert-button alert-button-ok",l.button,l.ok),children:"OK"})]})]})}):null},exports.confirm=function(e){return c(this,void 0,void 0,function(){return l(this,function(t){switch(t.label){case 0:return s?[4,new Promise(function(e){return setTimeout(e,50)})]:[3,2];case 1:return t.sent(),[3,0];case 2:s=!0,t.label=3;case 3:return t.trys.push([3,,5,6]),[4,a(e)];case 4:return[2,t.sent()];case 5:return setTimeout(function(){s=!1},400),[7];case 6:return[2]}})})};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/confirm_store.ts","../../src/confirmContainer.tsx","../node_modules/tslib/tslib.es6.js","../../src/confirm.ts"],"sourcesContent":["import type { ConfirmOptions, Input } from \"./types\";\n\ntype Listener = (alerts: ConfirmOptions[]) => void;\n\nlet confirms: ConfirmOptions[] = [];\nlet listeners = new Set<Listener>();\n\nexport function addAlert(input: Input): 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 resolve\n };\n\n confirms = [alert];\n emit();\n });\n}\n\nexport function closeAlert(result: boolean) {\n const alert = confirms[0];\n if (!alert) return;\n\n alert.resolve(result);\n confirms = [];\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}\n","import { useEffect, useState, useCallback, useRef, type ReactNode } from \"react\";\nimport { subscribe, closeAlert } from \"./confirm_store\";\nimport type { ConfirmClasses, ConfirmOptions } from \"./types\";\nimport \"./index.css\";\n\nfunction cx(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(\" \");\n}\n\ntype Props = {\n classes?: ConfirmClasses;\n animationDuration?: number;\n children?: (props: {\n isVisible: boolean;\n confirm: ConfirmOptions;\n handleCancel: () => void;\n handleOk: () => void;\n }) => ReactNode;\n};\n\nconst ConfirmContainer = ({ classes = {}, animationDuration = 300, children }: Props) => {\n const [alerts, setAlerts] = useState<ConfirmOptions[]>([]);\n const [isVisible, setIsVisible] = useState(false);\n const [currentAlert, setCurrentAlert] = useState<ConfirmOptions | null>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n const eventListenersAddedRef = useRef(false);\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 requestAnimationFrame(() => {\n setIsVisible(true);\n });\n } else if (alerts.length === 0 && currentAlert) {\n setIsVisible(false);\n const timer = setTimeout(() => {\n setCurrentAlert(null);\n }, animationDuration);\n\n return () => clearTimeout(timer);\n }\n }, [alerts, currentAlert, animationDuration]);\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 // Add event listeners when children change or component mounts\n useEffect(() => {\n if (!children || !currentAlert || eventListenersAddedRef.current) {\n return;\n }\n\n const addEventListeners = () => {\n const buttons = document.querySelectorAll('button');\n for (const button of buttons) {\n if (button.classList.contains('cancel')) { // Fixed typo: 'cancle' -> 'cancel'\n button.addEventListener('click', handleCancel);\n } else if (button.classList.contains('ok')) {\n button.addEventListener('click', handleOk);\n }\n }\n eventListenersAddedRef.current = true;\n };\n\n // Small delay to ensure children are rendered\n const timer = setTimeout(addEventListeners, 0);\n\n return () => {\n clearTimeout(timer);\n // Cleanup function to remove listeners\n const buttons = document.querySelectorAll('button');\n for (const button of buttons) {\n if (button.classList.contains('cancel')) {\n button.removeEventListener('click', handleCancel);\n } else if (button.classList.contains('ok')) {\n button.removeEventListener('click', handleOk);\n }\n }\n eventListenersAddedRef.current = false;\n };\n }, [children, currentAlert, handleCancel, handleOk]);\n\n // Don't render anything if no alert\n if (!currentAlert) {\n return null;\n }\n\n if (children) {\n return children({\n isVisible,\n confirm: currentAlert,\n handleCancel,\n handleOk\n })\n }\n\n return (\n <div\n ref={overlayRef}\n className={cx(\n \"alert-overlay\",\n !isVisible ? \"alert-overlay-exit\" : '',\n classes.overlay\n )}\n >\n <div\n className={cx(\n \"alert-wrapper\",\n !isVisible ? \"alert-wrapper-exit\" : '',\n classes.wrapper\n )}\n >\n <h2 className={cx(\"alert-title\", classes.title)}>\n {currentAlert.title}\n </h2>\n <p className={cx(\"alert-message\", classes.message)}>\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 classes.button,\n classes.cancel\n )}\n >\n Cancel\n </button>\n <button\n onClick={handleOk}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-ok\",\n classes.button,\n classes.ok\n )}\n >\n OK\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ConfirmContainer;","/******************************************************************************\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 { addAlert } from \"./confirm_store\";\nimport type { ConfirmInput } from \"./types\";\n\nlet isConfirming = false;\n\nexport async function confirm(input: ConfirmInput): Promise<boolean> {\n while (isConfirming) {\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n \n isConfirming = true;\n try {\n const result = await addAlert(input);\n return result;\n } finally {\n setTimeout(() => {\n isConfirming = false;\n }, 400);\n }\n}"],"names":["confirms","listeners","Set","addAlert","input","Promise","resolve","alert","title","message","_a","emit","forEach","listener","cx","classes","_i","arguments","length","filter","Boolean","join","__awaiter","thisArg","_arguments","P","generator","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","push","SuppressedError","isConfirming","_b","_c","animationDuration","children","_d","useState","alerts","setAlerts","_e","isVisible","setIsVisible","_f","currentAlert","setCurrentAlert","overlayRef","useRef","eventListenersAddedRef","useEffect","newAlerts","add","requestAnimationFrame","timer_1","setTimeout","clearTimeout","handleClose","useCallback","handleCancel","handleOk","current","timer","buttons_1","document","querySelectorAll","button","classList","contains","addEventListener","buttons_2","removeEventListener","confirm","_jsx","ref","className","overlay","_jsxs","wrapper","onClick","disabled","cancel","ok"],"mappings":"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","x_google_ignoreList":[2]}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useState as n,useRef as r,useEffect as o,useCallback as a}from"react";var i=[],c=new Set;function l(e){return new Promise(function(t){var n,r="string"==typeof e?{title:"Confirm",message:e,resolve:t}:{title:null!==(n=e.title)&&void 0!==n?n:"Confirm",message:e.message,resolve:t};i=[r],u()})}function u(){c.forEach(function(e){return e(i)})}function s(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.filter(Boolean).join(" ")}var f=function(l){var f=l.classes,v=void 0===f?{}:f,d=l.animationDuration,m=void 0===d?300:d,p=l.children,h=n([]),b=h[0],y=h[1],w=n(!1),g=w[0],k=w[1],x=n(null),E=x[0],L=x[1],N=r(null),S=r(!1);o(function(){var e;e=function(e){y(e)},c.add(e),e(i)},[]),o(function(){if(b.length>0&&!E)L(b[0]),requestAnimationFrame(function(){k(!0)});else if(0===b.length&&E){k(!1);var e=setTimeout(function(){L(null)},m);return function(){return clearTimeout(e)}}},[b,E,m]);var T=a(function(e){var t,n;t=e,(n=i[0])&&(n.resolve(t),i=[],u())},[]),C=a(function(){return T(!1)},[T]),j=a(function(){return T(!0)},[T]);return o(function(){if(p&&E&&!S.current){var e=setTimeout(function(){for(var e=0,t=document.querySelectorAll("button");e<t.length;e++){var n=t[e];n.classList.contains("cancel")?n.addEventListener("click",C):n.classList.contains("ok")&&n.addEventListener("click",j)}S.current=!0},0);return function(){clearTimeout(e);for(var t=0,n=document.querySelectorAll("button");t<n.length;t++){var r=n[t];r.classList.contains("cancel")?r.removeEventListener("click",C):r.classList.contains("ok")&&r.removeEventListener("click",j)}S.current=!1}}},[p,E,C,j]),E?p?p({isVisible:g,confirm:E,handleCancel:C,handleOk:j}):e("div",{ref:N,className:s("alert-overlay",g?"":"alert-overlay-exit",v.overlay),children:t("div",{className:s("alert-wrapper",g?"":"alert-wrapper-exit",v.wrapper),children:[e("h2",{className:s("alert-title",v.title),children:E.title}),e("p",{className:s("alert-message",v.message),children:E.message}),t("div",{className:"alert-buttons",children:[e("button",{onClick:C,disabled:!g,className:s("alert-button alert-button-cancel",v.button,v.cancel),children:"Cancel"}),e("button",{onClick:j,disabled:!g,className:s("alert-button alert-button-ok",v.button,v.ok),children:"OK"})]})]})}):null};function v(e,t,n,r){return new(n||(n=Promise))(function(o,a){function i(e){try{l(r.next(e))}catch(e){a(e)}}function c(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,c)}l((r=r.apply(e,t||[])).next())})}function d(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=c(0),i.throw=c(1),i.return=c(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(l){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}"function"==typeof SuppressedError&&SuppressedError;var m=!1;function p(e){return v(this,void 0,void 0,function(){return d(this,function(t){switch(t.label){case 0:return m?[4,new Promise(function(e){return setTimeout(e,50)})]:[3,2];case 1:return t.sent(),[3,0];case 2:m=!0,t.label=3;case 3:return t.trys.push([3,,5,6]),[4,l(e)];case 4:return[2,t.sent()];case 5:return setTimeout(function(){m=!1},400),[7];case 6:return[2]}})})}export{f as ConfirmContainer,p as confirm};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../src/confirm_store.ts","../../src/confirmContainer.tsx","../node_modules/tslib/tslib.es6.js","../../src/confirm.ts"],"sourcesContent":["import type { ConfirmOptions, Input } from \"./types\";\n\ntype Listener = (alerts: ConfirmOptions[]) => void;\n\nlet confirms: ConfirmOptions[] = [];\nlet listeners = new Set<Listener>();\n\nexport function addAlert(input: Input): 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 resolve\n };\n\n confirms = [alert];\n emit();\n });\n}\n\nexport function closeAlert(result: boolean) {\n const alert = confirms[0];\n if (!alert) return;\n\n alert.resolve(result);\n confirms = [];\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}\n","import { useEffect, useState, useCallback, useRef, type ReactNode } from \"react\";\nimport { subscribe, closeAlert } from \"./confirm_store\";\nimport type { ConfirmClasses, ConfirmOptions } from \"./types\";\nimport \"./index.css\";\n\nfunction cx(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(\" \");\n}\n\ntype Props = {\n classes?: ConfirmClasses;\n animationDuration?: number;\n children?: (props: {\n isVisible: boolean;\n confirm: ConfirmOptions;\n handleCancel: () => void;\n handleOk: () => void;\n }) => ReactNode;\n};\n\nconst ConfirmContainer = ({ classes = {}, animationDuration = 300, children }: Props) => {\n const [alerts, setAlerts] = useState<ConfirmOptions[]>([]);\n const [isVisible, setIsVisible] = useState(false);\n const [currentAlert, setCurrentAlert] = useState<ConfirmOptions | null>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n const eventListenersAddedRef = useRef(false);\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 requestAnimationFrame(() => {\n setIsVisible(true);\n });\n } else if (alerts.length === 0 && currentAlert) {\n setIsVisible(false);\n const timer = setTimeout(() => {\n setCurrentAlert(null);\n }, animationDuration);\n\n return () => clearTimeout(timer);\n }\n }, [alerts, currentAlert, animationDuration]);\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 // Add event listeners when children change or component mounts\n useEffect(() => {\n if (!children || !currentAlert || eventListenersAddedRef.current) {\n return;\n }\n\n const addEventListeners = () => {\n const buttons = document.querySelectorAll('button');\n for (const button of buttons) {\n if (button.classList.contains('cancel')) { // Fixed typo: 'cancle' -> 'cancel'\n button.addEventListener('click', handleCancel);\n } else if (button.classList.contains('ok')) {\n button.addEventListener('click', handleOk);\n }\n }\n eventListenersAddedRef.current = true;\n };\n\n // Small delay to ensure children are rendered\n const timer = setTimeout(addEventListeners, 0);\n\n return () => {\n clearTimeout(timer);\n // Cleanup function to remove listeners\n const buttons = document.querySelectorAll('button');\n for (const button of buttons) {\n if (button.classList.contains('cancel')) {\n button.removeEventListener('click', handleCancel);\n } else if (button.classList.contains('ok')) {\n button.removeEventListener('click', handleOk);\n }\n }\n eventListenersAddedRef.current = false;\n };\n }, [children, currentAlert, handleCancel, handleOk]);\n\n // Don't render anything if no alert\n if (!currentAlert) {\n return null;\n }\n\n if (children) {\n return children({\n isVisible,\n confirm: currentAlert,\n handleCancel,\n handleOk\n })\n }\n\n return (\n <div\n ref={overlayRef}\n className={cx(\n \"alert-overlay\",\n !isVisible ? \"alert-overlay-exit\" : '',\n classes.overlay\n )}\n >\n <div\n className={cx(\n \"alert-wrapper\",\n !isVisible ? \"alert-wrapper-exit\" : '',\n classes.wrapper\n )}\n >\n <h2 className={cx(\"alert-title\", classes.title)}>\n {currentAlert.title}\n </h2>\n <p className={cx(\"alert-message\", classes.message)}>\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 classes.button,\n classes.cancel\n )}\n >\n Cancel\n </button>\n <button\n onClick={handleOk}\n disabled={!isVisible}\n className={cx(\n \"alert-button alert-button-ok\",\n classes.button,\n classes.ok\n )}\n >\n OK\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ConfirmContainer;","/******************************************************************************\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 { addAlert } from \"./confirm_store\";\nimport type { ConfirmInput } from \"./types\";\n\nlet isConfirming = false;\n\nexport async function confirm(input: ConfirmInput): Promise<boolean> {\n while (isConfirming) {\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n \n isConfirming = true;\n try {\n const result = await addAlert(input);\n return result;\n } finally {\n setTimeout(() => {\n isConfirming = false;\n }, 400);\n }\n}"],"names":["confirms","listeners","Set","addAlert","input","Promise","resolve","alert","title","message","_a","emit","forEach","listener","cx","classes","_i","arguments","length","filter","Boolean","join","ConfirmContainer","_b","_c","animationDuration","children","_d","useState","alerts","setAlerts","_e","isVisible","setIsVisible","_f","currentAlert","setCurrentAlert","overlayRef","useRef","eventListenersAddedRef","useEffect","newAlerts","add","requestAnimationFrame","timer_1","setTimeout","clearTimeout","handleClose","useCallback","value","result","handleCancel","handleOk","current","timer","buttons_1","document","querySelectorAll","button","classList","contains","addEventListener","buttons_2","removeEventListener","confirm","_jsx","ref","className","overlay","_jsxs","wrapper","onClick","disabled","cancel","ok","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","step","next","e","rejected","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","push","SuppressedError","isConfirming"],"mappings":"+HAIA,IAAIA,EAA6B,GAC7BC,EAAY,IAAIC,IAEd,SAAUC,EAASC,GACvB,OAAO,IAAIC,QAAQ,SAACC,SACZC,EACa,iBAAVH,EACH,CACAI,MAAO,UACPC,QAASL,EACTE,QAAOA,GAEP,CACAE,cAAOE,EAAAN,EAAMI,qBAAS,UACtBC,QAASL,EAAMK,QACfH,QAAOA,GAGbN,EAAW,CAACO,GACZI,GACF,EACF,UAiBgBA,IACdV,EAAUW,QAAQ,SAACC,GAAa,OAAAA,EAASb,EAAT,EAClC,CCvCA,SAASc,QAAG,IAAAC,EAAA,GAAAC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAD,EAAAC,GAAAC,UAAAD,GACV,OAAOD,EAAQI,OAAOC,SAASC,KAAK,IACtC,CAaA,IAAMC,EAAmB,SAACZ,GAAE,IAAAa,EAAAb,EAAAK,QAAAA,OAAO,IAAAQ,EAAG,CAAA,IAAIC,EAAAd,EAAAe,kBAAAA,OAAiB,IAAAD,EAAG,IAAGA,EAAEE,EAAQhB,EAAAgB,SACnEC,EAAsBC,EAA2B,IAAhDC,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAClBI,EAA4BH,GAAS,GAApCI,EAASD,EAAA,GAAEE,EAAYF,EAAA,GACxBG,EAAkCN,EAAgC,MAAjEO,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAC9BG,EAAaC,EAAuB,MACpCC,EAAyBD,GAAO,GAEtCE,EAAU,WDSN,IAAoB3B,ICRZ,SAAC4B,GACTX,EAAUW,EACZ,EDOFxC,EAAUyC,IAAI7B,GACdA,EAASb,ECPT,EAAG,IAEHwC,EAAU,WACR,GAAIX,EAAOX,OAAS,IAAMiB,EACxBC,EAAgBP,EAAO,IACvBc,sBAAsB,WACpBV,GAAa,EACf,QACK,GAAsB,IAAlBJ,EAAOX,QAAgBiB,EAAc,CAC9CF,GAAa,GACb,IAAMW,EAAQC,WAAW,WACvBT,EAAgB,KAClB,EAAGX,GAEH,OAAO,WAAM,OAAAqB,aAAaF,EAAb,CACf,CACF,EAAG,CAACf,EAAQM,EAAcV,IAE1B,IAAMsB,EAAcC,EAAY,SAACC,GDtB7B,IAAqBC,EACnB3C,EADmB2C,ECuBZD,GDtBP1C,EAAQP,EAAS,MAGvBO,EAAMD,QAAQ4C,GACdlD,EAAW,GACXW,ICkBA,EAAG,IAEGwC,EAAeH,EAAY,WAAM,OAAAD,GAAY,EAAZ,EAAoB,CAACA,IACtDK,EAAWJ,EAAY,WAAM,OAAAD,GAAY,EAAZ,EAAmB,CAACA,IAuCvD,OApCAP,EAAU,WACR,GAAKd,GAAaS,IAAgBI,EAAuBc,QAAzD,CAIA,IAaMC,EAAQT,WAbY,WAExB,IADA,IACqB7B,EAAA,EAAAuC,EADLC,SAASC,iBAAiB,UACrBzC,WAAAA,IAAS,CAAzB,IAAM0C,EAAMH,EAAAvC,GACX0C,EAAOC,UAAUC,SAAS,UAC5BF,EAAOG,iBAAiB,QAASV,GACxBO,EAAOC,UAAUC,SAAS,OACnCF,EAAOG,iBAAiB,QAAST,EAErC,CACAb,EAAuBc,SAAU,CACnC,EAG4C,GAE5C,OAAO,WACLP,aAAaQ,GAGb,IADA,IACqBtC,EAAA,EAAA8C,EADLN,SAASC,iBAAiB,UACrBzC,WAAAA,IAAS,CAAzB,IAAM0C,EAAMI,EAAA9C,GACX0C,EAAOC,UAAUC,SAAS,UAC5BF,EAAOK,oBAAoB,QAASZ,GAC3BO,EAAOC,UAAUC,SAAS,OACnCF,EAAOK,oBAAoB,QAASX,EAExC,CACAb,EAAuBc,SAAU,CACnC,CA7BA,CA8BF,EAAG,CAAC3B,EAAUS,EAAcgB,EAAcC,IAGrCjB,EAIDT,EACKA,EAAS,CACdM,UAASA,EACTgC,QAAS7B,EACTgB,aAAYA,EACZC,SAAQA,IAKVa,EAAA,MAAA,CACEC,IAAK7B,EACL8B,UAAWrD,EACT,gBACCkB,EAAmC,GAAvB,qBACbjB,EAAQqD,kBAGVC,EAAA,MAAA,CACEF,UAAWrD,EACT,gBACCkB,EAAmC,GAAvB,qBACbjB,EAAQuD,mBAGVL,EAAA,KAAA,CAAIE,UAAWrD,EAAG,cAAeC,EAAQP,OAAMkB,SAC5CS,EAAa3B,QAEhByD,EAAA,IAAA,CAAGE,UAAWrD,EAAG,gBAAiBC,EAAQN,SAAQiB,SAC/CS,EAAa1B,UAEhB4D,EAAA,MAAA,CAAKF,UAAU,gBAAezC,SAAA,CAC5BuC,EAAA,SAAA,CACEM,QAASpB,EACTqB,UAAWxC,EACXmC,UAAWrD,EACT,mCACAC,EAAQ2C,OACR3C,EAAQ0D,QACT/C,SAAA,WAIHuC,EAAA,SAAA,CACEM,QAASnB,EACToB,UAAWxC,EACXmC,UAAWrD,EACT,+BACAC,EAAQ2C,OACR3C,EAAQ2D,IACThD,SAAA,eArDF,IA6DX,ECzCO,SAASiD,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIzE,UAAU,SAAUC,EAAS0E,GAC/C,SAASC,EAAUhC,GAAS,IAAMiC,EAAKH,EAAUI,KAAKlC,GAAS,CAAE,MAAOmC,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASpC,GAAS,IAAMiC,EAAKH,EAAiB,MAAE9B,GAAS,CAAE,MAAOmC,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKhC,GAJlB,IAAeD,EAIaC,EAAOoC,KAAOhF,EAAQ4C,EAAOD,QAJ1CA,EAIyDC,EAAOD,MAJhDA,aAAiB6B,EAAI7B,EAAQ,IAAI6B,EAAE,SAAUxE,GAAWA,EAAQ2C,EAAQ,IAIjBsC,KAAKN,EAAWI,EAAW,CAC7GH,GAAMH,EAAYA,EAAUS,MAAMZ,EAASC,GAAc,KAAKM,OAClE,EACJ,CAEO,SAASM,EAAYb,EAASc,GACjC,IAAsGC,EAAGC,EAAGC,EAAxGC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPH,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGI,KAAM,GAAIC,IAAK,IAAeC,EAAIC,OAAOC,QAA4B,mBAAbC,SAA0BA,SAAWF,QAAQG,WACtL,OAAOJ,EAAEhB,KAAOqB,EAAK,GAAIL,EAAS,MAAIK,EAAK,GAAIL,EAAU,OAAIK,EAAK,GAAsB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOC,IAAM,GAAIR,EAC1J,SAASK,EAAKI,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAInB,EAAG,MAAM,IAAIoB,UAAU,mCAC3B,KAAOZ,IAAMA,EAAI,EAAGW,EAAG,KAAOhB,EAAI,IAAKA,OACnC,GAAIH,EAAI,EAAGC,IAAMC,EAAY,EAARiB,EAAG,GAASlB,EAAU,OAAIkB,EAAG,GAAKlB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEmB,KAAKpB,GAAI,GAAKA,EAAET,SAAWU,EAAIA,EAAEmB,KAAKpB,EAAGkB,EAAG,KAAKxB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGiB,EAAK,CAAS,EAARA,EAAG,GAAQjB,EAAE5C,QACzB6D,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjB,EAAIiB,EAAI,MACxB,KAAK,EAAc,OAAXhB,EAAEC,QAAgB,CAAE9C,MAAO6D,EAAG,GAAIxB,MAAM,GAChD,KAAK,EAAGQ,EAAEC,QAASH,EAAIkB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKhB,EAAEI,IAAIe,MAAOnB,EAAEG,KAAKgB,MAAO,SACxC,QACI,KAAMpB,EAAIC,EAAEG,MAAMJ,EAAIA,EAAE3E,OAAS,GAAK2E,EAAEA,EAAE3E,OAAS,KAAkB,IAAV4F,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEhB,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVgB,EAAG,MAAcjB,GAAMiB,EAAG,GAAKjB,EAAE,IAAMiB,EAAG,GAAKjB,EAAE,IAAM,CAAEC,EAAEC,MAAQe,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYhB,EAAEC,MAAQF,EAAE,GAAI,CAAEC,EAAEC,MAAQF,EAAE,GAAIA,EAAIiB,EAAI,KAAO,CACpE,GAAIjB,GAAKC,EAAEC,MAAQF,EAAE,GAAI,CAAEC,EAAEC,MAAQF,EAAE,GAAIC,EAAEI,IAAIgB,KAAKJ,GAAK,KAAO,CAC9DjB,EAAE,IAAIC,EAAEI,IAAIe,MAChBnB,EAAEG,KAAKgB,MAAO,SAEtBH,EAAKpB,EAAKsB,KAAKpC,EAASkB,EAC5B,CAAE,MAAOV,GAAK0B,EAAK,CAAC,EAAG1B,GAAIQ,EAAI,CAAG,CAAC,QAAWD,EAAIE,EAAI,CAAG,CACzD,GAAY,EAARiB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE7D,MAAO6D,EAAG,GAAKA,EAAG,QAAK,EAAQxB,MAAM,EAC9E,CAtBgDJ,CAAK,CAAC0B,EAAGC,GAAK,CAAG,CAuBrE,CAkLkD,mBAApBM,iBAAiCA,gBCrU/D,IAAIC,GAAe,EAEb,SAAgBpD,EAAQ5D,kGACrBgH,EACL,CAAA,EAAM,IAAI/G,QAAQ,SAAAC,GAAW,OAAAuC,WAAWvC,EAAS,GAApB,IADZ,CAAA,EAAA,iBACjBI,EAAAsF,oBAGFoB,GAAe,mBAEE,6BAAA,CAAA,EAAMjH,EAASC,WAC9B,MAAA,CAAA,EADeM,EAAAsF,sBAGfnD,WAAW,WACTuE,GAAe,CACjB,EAAG,8BAEN","x_google_ignoreList":[2]}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "react-confirm-lite",
3
+ "version": "1.0.0",
4
+ "description": "A lightweight, promise-based confirm dialog for React with built-in Tailwind CSS support",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "sideEffects": false,
16
+ "scripts": {
17
+ "test": "echo \"Error: no test specified\" && exit 1",
18
+ "rollup": "rollup -c --bundleConfigAsCjs",
19
+ "build": "npm run rollup",
20
+ "clean": "rm -rf dist",
21
+ "prepack": "npm run clean && npm run build"
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "keywords": [
27
+ "react",
28
+ "confirm",
29
+ "dialog",
30
+ "modal",
31
+ "promise",
32
+ "async",
33
+ "tailwind",
34
+ "confirmation",
35
+ "alert",
36
+ "window.confirm",
37
+ "react-confirm",
38
+ "npm react-confirm"
39
+ ],
40
+ "author": "Saad Nasir",
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://github.com/SaadNasir-git/react-confirm-lite.git"
45
+ },
46
+ "engines": {
47
+ "node": ">=14.0.0",
48
+ "npm": ">=6.0.0"
49
+ },
50
+ "devDependencies": {
51
+ "@rollup/plugin-commonjs": "^29.0.0",
52
+ "@rollup/plugin-node-resolve": "^16.0.3",
53
+ "@rollup/plugin-terser": "^0.4.4",
54
+ "@rollup/plugin-typescript": "^12.3.0",
55
+ "react": "^19.2.3",
56
+ "rollup-plugin-dts": "^6.3.0",
57
+ "rollup-plugin-peer-deps-external": "^2.2.4",
58
+ "rollup-plugin-postcss": "^4.0.2",
59
+ "tslib": "^2.8.1",
60
+ "typescript": "^5.9.3"
61
+ },
62
+ "peerDependencies": {
63
+ "react": ">=18.0.0",
64
+ "react-dom": ">=18.0.0"
65
+ }
66
+ }